Extensions와 Integrations
두 가지 상태를 구분하세요
- 구현된 lane: generation-2 multi-declaration container의 packing, drop-folder install, Project-scoped exact catalog query와 authenticated read relay, presentation resolution port, Python worker execution이 저장소에 구현돼 있고 in-repo conformance test가 덮습니다. admitted Component는 host-owned
component.declarative@2body로 투영됩니다. - 공개 third-party admission — contract_only이고 fail closed: RFC-014는
implementationState: partial-foundation과 그 구현 근거를 기록하지만productAvailability: contract_only를 유지합니다. 외부 publisher의 공개 배포·admission과 package executable UI는 막혀 있습니다. RFC-016의 격리 rich-surface 구현도 RFC-014의 공개 publisher admission을 대신 열지 않습니다. 이 페이지의 catalog 동선과 Integration 예시는 전부 이 상태입니다.
@px.component는 companion metadata와 annotation-derived port를 등록합니다. portable Component container V1은 content/component.json 선언 하나를 읽고, generation-2 container는 한 release가 여러 Component를 나릅니다. 한 container의 다중 선언과 host presentation 계약은 Node presentation과 third-party UI가, 격리된 rich surface는 RFC-016이 소유합니다.
향후 필요한 기능은 Components에서 찾습니다. Component 외에 전용 editor, viewer, data adapter 또는 사용자 화면도 함께 제공할 때 그 전체 기능을 Extension으로 분류하고, 외부 제품·서비스를 연결하면 Integration으로 안내합니다.
계획된 Component catalog 동선
향후 Flow에 기능을 추가할 때는 Components에서 이름이나 작업 category로 검색합니다. Component 상세에는 해당 기능을 제공하는 package, publisher, version과 함께 제공되는 Extension 기능이 표시됩니다.
계획된 Extension contribution
| Contribution | 계획된 위치 | Flow Node가 생기는 시점 |
|---|---|---|
@px.component Component | Components | 향후 사용자가 Canvas에 배치할 때 |
| shared Function | Definitions → Functions | Function Reference Node로 배치할 때 |
| 전용 editor·viewer | 배치된 Component의 Open editor | RFC-016 surface가 resolve되고, 외부 publisher라면 RFC-014 공개 admission도 통과한 뒤 |
| data source·artifact adapter | Data sources 또는 해당 연결 화면 | 계획된 별도 Component를 배치한 경우에만 |
| standalone app surface | Apps | 계획된 Flow Node와 분리된 화면 entry |
| manual·example·template | Component 또는 Extension 도움말 | Canvas 구성을 바꾸지 않음 |
목표 catalog는 각 contribution을 역할에 맞는 화면에서 찾도록 구성합니다. 하나의 Python package/distribution이 여러 종류와 Component를 제공할 수 있으며, Components에는 @px.component companion metadata로 공개한 기능을 연결할 계획입니다.
Integration 예시
외부 구조 해석 제품을 연결하는 Integration은 다음과 같은 여러 Component를 한 Python package/distribution에서 제공할 수 있습니다.
| Component | Flow에서 하는 일 | 전용 UI 예시 |
|---|---|---|
| Model selector | 연결할 model reference 선택 | account·project·model picker |
| Load case picker | typed load case 선택 | 검색·다중 선택 |
| Run analysis | external solver 호출 | 실행 settings와 상태 |
| Result table | typed result를 표로 반환 | column·case filter |
| Model viewer | model과 result를 시각화 | 넓은 read-only viewer |
MIDAS Civil, SAP2000처럼 외부 API를 연결하는 package는 Integration으로 분류할 계획입니다. 향후 각 package 상세는 설치 이름, public import, 제공 Component와 필요한 credential·network capability를 안내합니다.
UI·문서 확장 예시
향후 Streamlit처럼 사용자 화면을 만드는 package는 Flow용 Component와 standalone app surface를 함께 제공할 수 있습니다. 목표 Components에는 Flow에 놓을 수 있는 parameter form, data grid 같은 Component가 표시되고, standalone 화면은 Apps에서 엽니다.
문서 작성 기능을 제공하는 Extension은 document editor Component, template과 export 기능을 함께 제공할 수 있습니다. 넓은 editor는 RFC-016 격리 surface를 사용하고, 외부 publisher package에서는 RFC-014 공개 admission이 닫힌 뒤 Component Node의 Open editor에서 엽니다.
계획된 Third-party Component 상세가 답해야 할 것
향후 Component 상세 페이지는 사용자가 한 번에 복사하고 확인할 수 있도록 같은 순서를 사용합니다.
- 기능 이름과 한 문장 설명
- Add to project와 설치 package/version
- Python import와
flow.node(...)최소 예제 - settings
- input
- result
- Studio 화면 위치
- compatibility, capability와 문제 해결
SDK로 Component를 제작하는 방법은 Component 만들기와 배포, 설치 후 사용하는 공통 흐름은 Components 사용하기에서 이어집니다.