From e4d22b33831c7087ebbc9bbdf36139c428b87bee Mon Sep 17 00:00:00 2001 From: toki Date: Mon, 1 Jun 2026 09:20:15 +0900 Subject: [PATCH] feat: update roadmap and migrate iop_console to packages/flutter --- .gitignore | 2 +- README.md | 8 +++--- .../rules/project/domain/client/rules.md | 8 +++--- .../project/domain/platform-common/rules.md | 2 +- agent-ops/rules/project/rules.md | 4 +-- agent-roadmap/current.md | 2 +- .../phase/control-plane-portal-ops/PHASE.md | 8 +++--- .../embeddable-iop-console-workbench.md | 26 +++++++++++-------- apps/client/README.md | 2 +- apps/client/pubspec.lock | 2 +- apps/client/pubspec.yaml | 2 +- .../iop_console/lib/iop_console.dart | 0 .../iop_console/lib/src/iop_agent_panel.dart | 0 .../lib/src/iop_console_shell.dart | 0 .../{ => flutter}/iop_console/pubspec.yaml | 2 +- 15 files changed, 36 insertions(+), 32 deletions(-) rename packages/{ => flutter}/iop_console/lib/iop_console.dart (100%) rename packages/{ => flutter}/iop_console/lib/src/iop_agent_panel.dart (100%) rename packages/{ => flutter}/iop_console/lib/src/iop_console_shell.dart (100%) rename packages/{ => flutter}/iop_console/pubspec.yaml (90%) diff --git a/.gitignore b/.gitignore index 5178dfa..818b231 100644 --- a/.gitignore +++ b/.gitignore @@ -22,7 +22,7 @@ apps/portal/.packages # Flutter/Dart package artifacts **/.dart_tool/ -packages/*/pubspec.lock +packages/**/pubspec.lock # BEGIN Agent-Ops managed gitignore !agent-task/ diff --git a/README.md b/README.md index acec463..7015b00 100644 --- a/README.md +++ b/README.md @@ -226,19 +226,19 @@ NomadCode - `mock` adapter와 dummy/TODO 구현은 개발 단계에서 정상적인 구성이다. - Ollama/vLLM 등 모델 runtime adapter는 단계적으로 확장한다. - Control Plane은 향후 여러 Edge 관리와 Client 제공을 위해 추가된다. -- `packages/iop_console`에는 공통 `agent_shell` 패키지를 사용하는 `IopConsoleShell`과 `IopAgentPanel` scaffold가 있다. 이 패키지는 IOP 운영/유지보수 agent 표면의 시작점이며, IOP 단독 앱과 NomadCode 같은 외부 소비자에 임베드되는 UI 모두에서 재사용 가능한 방향으로 둔다. +- `packages/flutter/iop_console`에는 공통 `agent_shell` 패키지를 사용하는 `IopConsoleShell`과 `IopAgentPanel` scaffold가 있다. 이 패키지는 IOP 운영/유지보수 agent 표면의 시작점이며, IOP 단독 앱과 NomadCode 같은 외부 소비자에 임베드되는 UI 모두에서 재사용 가능한 방향으로 둔다. 현재 앱 구성은 다음과 같다. | 경로 | 현재 의미 | |---|---| -| `apps/client` | IOP Client UI의 기준 구현인 Flutter 애플리케이션. `packages/iop_console`을 mount하며 Flutter Web 산출물이 compose `web` 서비스로 배포된다 | -| `packages/iop_console` | IOP-owned embeddable Flutter console package. 좌측 rail shell과 `agent_shell` 기반 IOP agent panel을 제공한다 | +| `apps/client` | IOP Client UI의 기준 구현인 Flutter 애플리케이션. `packages/flutter/iop_console`을 mount하며 Flutter Web 산출물이 compose `web` 서비스로 배포된다 | +| `packages/flutter/iop_console` | IOP-owned embeddable Flutter console package. 좌측 rail shell과 `agent_shell` 기반 IOP agent panel을 제공한다 | | `apps/node` | Edge에 연결되어 adapter execution을 수행하는 Node agent | | `apps/edge` | Node/domain agent registry, 설정 전달, bootstrap, routing, stream relay를 담당하는 Edge skeleton | | `apps/control-plane` | 여러 Edge를 연결하고 Client과 통신할 Go 기반 운영 제어 서버 스캐폴드 | | `apps/worker` | 현재 placeholder이며, Worker 구조는 우선 각 Go 서비스 내부 공통 모듈 방향으로 둔다 | -| `packages` | 설정, 인증, 정책, 작업, 관측성, 버전 등 공통 패키지 | +| `packages` | Go 공통 패키지와 언어별 재사용 패키지 root. Flutter 패키지는 `packages/flutter/` 아래에 둔다 | | `proto` | 앱 간 메시지 계약 원본과 생성물 | | `configs` | 현재 개발용 설정 예시 | diff --git a/agent-ops/rules/project/domain/client/rules.md b/agent-ops/rules/project/domain/client/rules.md index 8ca4eaf..edc758b 100644 --- a/agent-ops/rules/project/domain/client/rules.md +++ b/agent-ops/rules/project/domain/client/rules.md @@ -14,7 +14,7 @@ IOP의 공식 Flutter client UI/UX 영역이다. Control Plane HTTP/WS endpoint - `apps/client/lib/` — Flutter app source, build-time client config, proto-socket wire client, generated Dart proto 사용, client integration code - `apps/client/lib/src/integrations/` — client-side external integration host와 Mattermost-compatible push integration -- `packages/iop_console/` — IOP-owned embeddable Flutter console package, left-rail shell, agent panel widget +- `packages/flutter/iop_console/` — IOP-owned embeddable Flutter console package, left-rail shell, agent panel widget - `apps/client/test/` — Flutter widget/config/wire/integration 테스트 - `apps/client/web/` — Flutter Web shell과 web asset - `apps/client/assets/` — Flutter asset placeholder와 local-only Mattermost smoke credential mount 지점 @@ -35,7 +35,7 @@ IOP의 공식 Flutter client UI/UX 영역이다. Control Plane HTTP/WS endpoint - `apps/control-plane/` — Client가 연결하는 Control Plane server와 wire endpoint 구현 영역 - `apps/edge/` — Edge-local 실행 그룹과 node registry/operation 소유자 - `apps/node/` — adapter execution과 runtime session 소유자 -- `packages/` — Go 공통 설정/관측성/정책 helper 영역 +- `packages/*` — Go 공통 설정/관측성/정책 helper 영역. 단, `packages/flutter/iop_console/`은 client domain에 포함한다. - `proto/iop/` — protobuf 계약 원본 - `proto/gen/iop/` — Go protobuf 생성물 - `scripts/dev/` — repo 내부 개발 실행 helper 영역 @@ -61,7 +61,7 @@ IOP의 공식 Flutter client UI/UX 영역이다. Control Plane HTTP/WS endpoint - Dart protobuf binding은 `proto/iop/*.proto`에서 생성한다. proto 계약 변경 시 `make proto-dart` 산출물과 Go 생성물 갱신 여부를 함께 확인한다. - `apps/client/lib/gen/proto/iop/*.dart` 생성물은 사람이 직접 수정하지 않는다. - Mattermost/Nexo 연동은 `lib/src/integrations/` 아래 통합 모듈로 둔다. IOP client app shell을 NomadCode 전용 UX로 바꾸지 않는다. -- `packages/iop_console`은 IOP UI의 공개 Flutter widget/package 경계다. IOP 단독 앱은 이 package를 mount하고, 외부 소비자는 이 package 또는 동등한 IOP-owned widget boundary를 통해 조립한다. +- `packages/flutter/iop_console`은 IOP UI의 공개 Flutter widget/package 경계다. IOP 단독 앱은 이 package를 mount하고, 외부 소비자는 이 package 또는 동등한 IOP-owned widget boundary를 통해 조립한다. - `agent_shell`은 제품 중립 chat/agent interaction shell로만 사용한다. IOP client에는 IOP 운영/유지보수 capability와 panel widget을 담고, NomadCode의 workbench/right-rail layout은 가져오지 않는다. - IOP UI를 NomadCode에 제공해야 할 때는 IOP-owned widget/package 경계로 노출하고, NomadCode product shell 내부 구현을 IOP client에 복제하지 않는다. - client 변경 후에는 변경 범위에 맞게 `flutter test` 또는 `make client-test`를 확인한다. Web build, Dockerfile, compose 경로를 바꾸면 `make client-build-web` 또는 해당 build 경로를 확인한다. @@ -71,7 +71,7 @@ IOP의 공식 Flutter client UI/UX 영역이다. Control Plane HTTP/WS endpoint - **control-plane**: Control Plane은 `/client` WS endpoint, HTTP 상태 endpoint, Edge connection registry를 제공한다. Client는 이를 소비하는 UI/UX와 client-side wire wrapper를 소유한다. - **platform-common**: protobuf 원본 계약은 platform-common이 소유한다. Client는 해당 계약에서 생성된 Dart binding을 사용한다. - **agent-shell**: `agent_shell` sibling package는 공통 chat/agent shell widget과 message model만 제공한다. IOP-specific operation semantics와 Control Plane 연동은 client domain에 남긴다. -- **platform-common**: `packages/iop_console`은 Flutter UI package이므로 Go 공통 설정/proto/helper 패키지와 섞지 않는다. +- **platform-common**: `packages/flutter/iop_console`은 Flutter UI package이므로 Go 공통 설정/proto/helper 패키지와 섞지 않는다. - **NomadCode**: NomadCode는 IOP의 중요한 UI 소비자일 수 있지만, IOP client는 NomadCode 전용 navigation, workspace, web context UX를 소유하지 않는다. - **testing**: client test/build target, `scripts/dev/web.sh`, compose 기반 local dev 검증 기준은 testing domain rule을 따른다. - **edge/node**: Client는 Edge와 Node를 직접 제어하지 않고 Control Plane 표면을 통해 관찰/명령한다. diff --git a/agent-ops/rules/project/domain/platform-common/rules.md b/agent-ops/rules/project/domain/platform-common/rules.md index ec09a9b..59c3fa3 100644 --- a/agent-ops/rules/project/domain/platform-common/rules.md +++ b/agent-ops/rules/project/domain/platform-common/rules.md @@ -31,7 +31,7 @@ last_rule_updated_at: 2026-06-01 - `apps/edge/` — 실행 그룹 컨트롤러와 node registry - `apps/control-plane/` — 중앙 제어면 앱 구현 영역 - `apps/client/` — Flutter client app과 Dart protobuf 생성물 사용 영역 -- `packages/iop_console/` — Flutter client/console UI package이므로 client domain 소유 +- `packages/flutter/iop_console/` — Flutter client/console UI package이므로 client domain 소유 - `apps/worker/` — worker 앱 구현 예정 영역 ## 주요 구성 요소 diff --git a/agent-ops/rules/project/rules.md b/agent-ops/rules/project/rules.md index 78122f8..7c7a939 100644 --- a/agent-ops/rules/project/rules.md +++ b/agent-ops/rules/project/rules.md @@ -20,7 +20,7 @@ - `apps/control-plane/` — 여러 Edge를 연결하고 상태 조회/설정 변경/명령 전달/이벤트 수신/운영 제어 API 제공을 담당할 Go 기반 중앙 관리 서버이다. - `apps/client/` — Control Plane을 통해 Edge/Node 운영 상태를 보여주는 Flutter client이다. - `apps/worker/` — 비동기 작업 처리 예정 영역이다. 현재 placeholder이다. -- `packages/` — 설정, 인증, 이벤트 helper, host setup, 정책, 메타데이터, 작업, 관측성, 버전 등 공통 패키지이다. +- `packages/` — 설정, 인증, 이벤트 helper, host setup, 정책, 메타데이터, 작업, 관측성, 버전 등 Go 공통 패키지와 언어별 재사용 패키지 root이다. Flutter 재사용 패키지는 `packages/flutter/` 아래에 둔다. - `proto/iop/` — IOP 메시지 계약 원본이다. - `proto/gen/iop/` — protobuf 생성물이다. - `configs/` — 앱별 YAML 설정 예시이다. @@ -78,7 +78,7 @@ | `apps/edge/**` | edge | `agent-ops/rules/project/domain/edge/rules.md` | | `apps/control-plane/**` | control-plane | `agent-ops/rules/project/domain/control-plane/rules.md` | | `apps/client/**` | client | `agent-ops/rules/project/domain/client/rules.md` | -| `packages/iop_console/**` | client | `agent-ops/rules/project/domain/client/rules.md` | +| `packages/flutter/iop_console/**` | client | `agent-ops/rules/project/domain/client/rules.md` | | `packages/**` | platform-common | `agent-ops/rules/project/domain/platform-common/rules.md` | | `proto/**` | platform-common | `agent-ops/rules/project/domain/platform-common/rules.md` | | `configs/**` | platform-common | `agent-ops/rules/project/domain/platform-common/rules.md` | diff --git a/agent-roadmap/current.md b/agent-roadmap/current.md index 8f348d5..780c2ca 100644 --- a/agent-roadmap/current.md +++ b/agent-roadmap/current.md @@ -10,7 +10,7 @@ - [계획] Control Plane과 Client - Phase: `agent-roadmap/phase/control-plane-portal-ops/PHASE.md` - 경로: `agent-roadmap/phase/control-plane-portal-ops/milestones/control-plane-client.md` -- [계획] Embeddable IOP Console Workbench +- [진행중] Embeddable IOP Console Workbench - Phase: `agent-roadmap/phase/control-plane-portal-ops/PHASE.md` - 경로: `agent-roadmap/phase/control-plane-portal-ops/milestones/embeddable-iop-console-workbench.md` diff --git a/agent-roadmap/phase/control-plane-portal-ops/PHASE.md b/agent-roadmap/phase/control-plane-portal-ops/PHASE.md index 17585e8..43a00d0 100644 --- a/agent-roadmap/phase/control-plane-portal-ops/PHASE.md +++ b/agent-roadmap/phase/control-plane-portal-ops/PHASE.md @@ -37,14 +37,14 @@ - 경로: `agent-roadmap/archive/phase/control-plane-portal-ops/milestones/control-plane-edge-wire-baseline.md` - 요약: Control Plane과 Edge가 proto-socket 기반 IOP Wire Protocol로 연결되는 최소 통신 레일, status snapshot, node lifecycle event relay, service boundary를 완료하고 archive했다. +- [진행중] Embeddable IOP Console Workbench + - 경로: `agent-roadmap/phase/control-plane-portal-ops/milestones/embeddable-iop-console-workbench.md` + - 요약: `packages/flutter/iop_console` 패키지, left rail shell, agent panel, standalone app mount는 구현되었고, controller/config injection, 독립 package 검증, execution/logs 영역 정리가 남아 있다. + - [계획] Control Plane과 Client - 경로: `agent-roadmap/phase/control-plane-portal-ops/milestones/control-plane-client.md` - 요약: 여러 Edge를 연결하고 관찰하며 Edge 설정 변경, 명령 전달, 이벤트 수신을 담당하는 중앙 제어면과 Flutter client 운영면을 구축한다. -- [계획] Embeddable IOP Console Workbench - - 경로: `agent-roadmap/phase/control-plane-portal-ops/milestones/embeddable-iop-console-workbench.md` - - 요약: IOP standalone 앱은 application shell로 유지하고, 실제 IOP 관리 기능과 UI 위젯은 외부 host가 선택적으로 삽입할 수 있는 Flutter package로 분리한다. - - [계획] 정책, 이력, 감사 - 경로: `agent-roadmap/phase/control-plane-portal-ops/milestones/policy-history-audit.md` - 요약: 권한, 정책, 실행 이력, 감사 로그를 제품 운영에 필요한 수준으로 확장한다. diff --git a/agent-roadmap/phase/control-plane-portal-ops/milestones/embeddable-iop-console-workbench.md b/agent-roadmap/phase/control-plane-portal-ops/milestones/embeddable-iop-console-workbench.md index 2b2a681..13afda2 100644 --- a/agent-roadmap/phase/control-plane-portal-ops/milestones/embeddable-iop-console-workbench.md +++ b/agent-roadmap/phase/control-plane-portal-ops/milestones/embeddable-iop-console-workbench.md @@ -11,7 +11,7 @@ IOP standalone 앱은 application shell로 유지하되, 실제 IOP 관리 기 ## 상태 -[계획] +[진행중] ## 구현 잠금 @@ -33,23 +33,25 @@ IOP standalone 앱은 application shell로 유지하되, 실제 IOP 관리 기 IOP 운영 경험을 application shell에서 분리해, standalone 앱과 외부 host가 같은 관리 UI를 재사용할 수 있는 package 경계를 만든다. -- [ ] [console-package] IOP 관리 UI를 `MaterialApp`/global bootstrap 없이 import 가능한 Flutter package로 분리한다. 검증: package public export가 app shell 없이 widget/controller/rail item 단위로 소비 가능하다. -- [ ] [standalone-shell] `iop/apps/client`는 Firebase/SystemChrome/app bootstrap과 standalone theme/navigation만 담당하고, 실제 화면은 IOP console package를 감싸서 실행한다. 검증: standalone 앱에서 IOP console이 좌측 rail + center content 구조로 표시된다. -- [ ] [host-agnostic] IOP console package는 NomadCode, Project/Workspace, WebView 조작, product workflow 개념을 import하거나 전제하지 않는다. 검증: package dependency graph에 NomadCode 전용 package가 없다. +- [x] [console-package] IOP 관리 UI를 `MaterialApp`/global bootstrap 없이 import 가능한 `packages/flutter/iop_console` Flutter package로 분리하고, `IopConsoleShell`, `IopConsoleSection`, `IopAgentPanel`을 public export로 제공한다. 검증: package public export가 app shell 없이 widget/section 단위로 소비 가능하다. +- [x] [standalone-shell] `iop/apps/client`는 Firebase/SystemChrome/app bootstrap과 standalone theme를 담당하고, 실제 workbench shell은 IOP console package를 감싸서 실행한다. 검증: standalone 앱에서 IOP console이 좌측 rail + center content 구조로 표시되고 agent panel 진입 widget test가 있다. +- [x] [host-agnostic] IOP console package는 NomadCode, Project/Workspace, WebView 조작, product workflow 개념을 import하거나 전제하지 않는다. 검증: package dependency graph에 NomadCode 전용 package가 없다. +- [ ] [overview-boundary] Control Plane wire status overview는 현재 `apps/client/lib/main.dart`의 host-injected content로 남아 있다. 재사용 가능한 package widget으로 옮길지, standalone host content로 유지할지 경계를 확정한다. ### Epic: [workbench-layout] IOP left-rail workbench IOP standalone 화면은 좌측 icon rail을 기준으로 중앙 content를 전환하는 운영 workbench로 정리한다. -- [ ] [left-rail] IOP standalone layout은 좌측 icon rail과 center content host를 기본 구조로 둔다. -- [ ] [content-switch] Overview, Edge, Node, Runtime, Execution, Logs, Agent, Settings 같은 IOP 운영 영역은 rail item 선택에 따라 중앙 content를 전환한다. +- [x] [left-rail] IOP standalone layout은 좌측 icon rail과 center content host를 기본 구조로 둔다. +- [x] [content-switch] Overview, Edges, Nodes, Runtime, Maintenance, Agent, Settings 영역은 rail item 선택에 따라 중앙 content를 전환한다. +- [ ] [execution-logs] Execution/Logs 영역은 별도 rail item, Runtime 하위 화면, Maintenance 하위 화면 중 어디에 둘지 정리하고 표시 경로를 추가한다. - [ ] [stable-widgets] rail item, tooltip, selected state, content host는 host layout 크기에 따라 안정적으로 배치된다. 검증: desktop/mobile 또는 narrow/wide viewport에서 rail과 content가 겹치지 않는다. ### Epic: [agent-capability] IOP agent capability pack 공통 agent shell은 외부 package로 두고, IOP는 자신의 운영 capability만 제공한다. -- [ ] [agent-shell-link] IOP console package는 공통 `agent_shell` 계열 package를 통해 채팅형 agent surface를 열 수 있다. +- [x] [agent-shell-link] IOP console package는 공통 `agent_shell` 계열 package를 통해 채팅형 agent surface를 열 수 있다. - [ ] [iop-capabilities] IOP agent capability는 Edge/Node 상태, runtime/adapter/target, execution, logs, maintenance command 같은 IOP 책임 범위만 포함한다. - [ ] [capability-api] IOP capability pack은 host가 agent shell registry에 꽂을 수 있는 public API를 제공한다. 검증: IOP standalone과 외부 host가 같은 IOP capability pack을 등록할 수 있다. @@ -57,7 +59,7 @@ IOP standalone 화면은 좌측 icon rail을 기준으로 중앙 content를 전 NomadCode 같은 외부 host가 IOP UI를 optional feature로 넣거나 빼도 빌드 경계가 깨지지 않도록 한다. -- [ ] [public-widget] IOP package는 `IopConsole`, `IopConsoleController`, `IopRailItem` 또는 동등한 public entry를 제공한다. +- [x] [public-widget] IOP package는 `IopConsoleShell`, `IopConsoleSection`, `IopAgentPanel` public entry를 제공한다. - [ ] [config-injection] host는 Control Plane endpoint, auth/token reference, theme adapter, navigation callback을 주입하고 IOP package는 host 전역 상태를 직접 소유하지 않는다. - [ ] [optional-consumer] IOP package는 optional consumer인 NomadCode 없이도 단독으로 테스트되고 빌드된다. 검증: IOP repository 안에서 package test/analyze 경로가 독립적으로 통과한다. @@ -65,7 +67,7 @@ NomadCode 같은 외부 host가 IOP UI를 optional feature로 넣거나 빼도 - 상태: 없음 - 요청일: 없음 -- 완료 근거: 모든 기능 Task와 Task 안에 명시된 검증이 아직 충족되지 않았다. +- 완료 근거: `packages/flutter/iop_console` package boundary, left rail shell, standalone app mount, agent shell link는 구현되었으나 모든 기능 Task와 Task 안에 명시된 검증은 아직 충족되지 않았다. - 리뷰 필요: - [ ] 사용자가 완료 결과를 확인했다 - [ ] archive 이동을 승인했다 @@ -81,10 +83,12 @@ NomadCode 같은 외부 host가 IOP UI를 optional feature로 넣거나 빼도 ## 작업 컨텍스트 -- 관련 경로: `apps/client/`, `packages/`, `proto/iop/`, `apps/control-plane/` +- 관련 경로: `apps/client/`, `packages/flutter/iop_console/`, `proto/iop/`, `apps/control-plane/` - 표준선(선택): IOP는 범용 추론/자동화 운영 엔진이며 NomadCode 전용 Agent Shell이 아니다. - 표준선(선택): shared UI는 application shell이 아니라 package/widget/controller/capability 단위로 재사용한다. - 표준선(선택): IOP standalone은 좌측 icon rail + center content 구조를 기본 workbench로 둔다. +- 구현 근거: `49872ae feat(client): iop_console 패키지로 클라이언트 UI를 분리한다`에서 `packages/flutter/iop_console` package, `IopConsoleShell`, `IopAgentPanel`, `apps/client` mount와 widget test가 추가되었다. +- 현재 구현 상태: package 이름은 `iop_console`으로 확정되었고 최초 rail item은 Overview, Edges, Nodes, Runtime, Maintenance, Agent, Settings다. Execution/Logs, controller/config injection, 독립 package test/analyze는 남은 작업이다. - 선행 작업: Control Plane과 Client, Flutter-first Client 마이그레이션, Control Plane-Edge Wire Baseline - 후속 작업: NomadCode Workbench Shell and Optional IOP Composition, Multi-Edge 운영 -- 확인 필요: 후속 구현 계획에서 실제 package 이름과 최초 rail item 목록을 확정한다. +- 확인 필요: Execution/Logs의 화면 배치, Control Plane endpoint/auth/theme/navigation injection public API, package 독립 검증 경로를 확정한다. diff --git a/apps/client/README.md b/apps/client/README.md index 359bc4f..b369117 100644 --- a/apps/client/README.md +++ b/apps/client/README.md @@ -4,7 +4,7 @@ IOP(Inference Operations Platform)의 공식 Client UI 애플리케이션입니 ## Agent Shell 구성 -이 client는 IOP-owned Flutter package인 `packages/iop_console`을 path dependency로 사용합니다. `iop_console`은 workspace sibling package인 `agent_shell`을 사용해 `IopConsoleShell`과 `IopAgentPanel`을 제공하며, IOP 운영/유지보수 agent 화면을 단독 IOP 앱과 외부 임베딩 소비자에서 같은 위젯 경계로 조립하기 위한 시작점입니다. +이 client는 IOP-owned Flutter package인 `packages/flutter/iop_console`을 path dependency로 사용합니다. `iop_console`은 workspace sibling package인 `agent_shell`을 사용해 `IopConsoleShell`과 `IopAgentPanel`을 제공하며, IOP 운영/유지보수 agent 화면을 단독 IOP 앱과 외부 임베딩 소비자에서 같은 위젯 경계로 조립하기 위한 시작점입니다. IOP client는 NomadCode 전용 workbench layout을 소유하지 않습니다. IOP 쪽 책임은 Control Plane을 통해 Edge/Node 운영 상태와 유지보수 작업을 다루는 agent capability와 panel widget을 제공하는 것이고, NomadCode 같은 소비자는 `iop_console` 또는 향후 IOP console package를 자신의 shell 안에 선택적으로 mount합니다. diff --git a/apps/client/pubspec.lock b/apps/client/pubspec.lock index 2572038..a062487 100644 --- a/apps/client/pubspec.lock +++ b/apps/client/pubspec.lock @@ -170,7 +170,7 @@ packages: iop_console: dependency: "direct main" description: - path: "../../packages/iop_console" + path: "../../packages/flutter/iop_console" relative: true source: path version: "0.1.0" diff --git a/apps/client/pubspec.yaml b/apps/client/pubspec.yaml index 28f4b70..1f14083 100644 --- a/apps/client/pubspec.yaml +++ b/apps/client/pubspec.yaml @@ -48,7 +48,7 @@ dependencies: # IOP-owned embeddable console widgets. iop_console: - path: ../../packages/iop_console + path: ../../packages/flutter/iop_console protobuf: ^6.0.0 fixnum: ^1.1.1 diff --git a/packages/iop_console/lib/iop_console.dart b/packages/flutter/iop_console/lib/iop_console.dart similarity index 100% rename from packages/iop_console/lib/iop_console.dart rename to packages/flutter/iop_console/lib/iop_console.dart diff --git a/packages/iop_console/lib/src/iop_agent_panel.dart b/packages/flutter/iop_console/lib/src/iop_agent_panel.dart similarity index 100% rename from packages/iop_console/lib/src/iop_agent_panel.dart rename to packages/flutter/iop_console/lib/src/iop_agent_panel.dart diff --git a/packages/iop_console/lib/src/iop_console_shell.dart b/packages/flutter/iop_console/lib/src/iop_console_shell.dart similarity index 100% rename from packages/iop_console/lib/src/iop_console_shell.dart rename to packages/flutter/iop_console/lib/src/iop_console_shell.dart diff --git a/packages/iop_console/pubspec.yaml b/packages/flutter/iop_console/pubspec.yaml similarity index 90% rename from packages/iop_console/pubspec.yaml rename to packages/flutter/iop_console/pubspec.yaml index 4186819..48d378c 100644 --- a/packages/iop_console/pubspec.yaml +++ b/packages/flutter/iop_console/pubspec.yaml @@ -11,7 +11,7 @@ dependencies: sdk: flutter agent_shell: - path: ../../../agent-shell + path: ../../../../agent-shell dev_dependencies: flutter_test: