From c6baac391c1c6c9d5a987b4cd0f33a718a609553 Mon Sep 17 00:00:00 2001 From: toki Date: Mon, 1 Jun 2026 10:03:55 +0900 Subject: [PATCH] refactor: migrate packages to packages/go/ structure --- README.md | 3 ++- .../rules/project/domain/client/rules.md | 2 +- .../project/domain/control-plane/rules.md | 2 +- agent-ops/rules/project/domain/edge/rules.md | 2 +- agent-ops/rules/project/domain/node/rules.md | 4 +-- .../project/domain/platform-common/rules.md | 26 +++++++++---------- .../rules/project/domain/testing/rules.md | 4 +-- agent-ops/rules/project/rules.md | 9 ++++--- agent-ops/skills/project/e2e-smoke/SKILL.md | 2 +- .../milestones/policy-history-audit.md | 2 +- .../sglang-provider-serving-validation.md | 2 +- .../knowledge-tool-validation-optimization.md | 2 +- apps/control-plane/cmd/control-plane/main.go | 2 +- apps/edge/cmd/edge/console.go | 2 +- apps/edge/cmd/edge/main.go | 6 ++--- apps/edge/cmd/edge/main_test.go | 4 +-- apps/edge/internal/bootstrap/module.go | 2 +- apps/edge/internal/bootstrap/runtime.go | 6 ++--- apps/edge/internal/bootstrap/runtime_test.go | 2 +- apps/edge/internal/controlplane/connector.go | 2 +- .../internal/controlplane/connector_test.go | 2 +- apps/edge/internal/input/a2a/server.go | 2 +- apps/edge/internal/input/a2a/server_test.go | 2 +- .../internal/input/a2a/task_store_test.go | 2 +- apps/edge/internal/input/manager.go | 2 +- apps/edge/internal/input/manager_test.go | 2 +- apps/edge/internal/node/mapper.go | 2 +- apps/edge/internal/node/mapper_test.go | 2 +- apps/edge/internal/node/store.go | 2 +- apps/edge/internal/node/store_test.go | 2 +- apps/edge/internal/openai/server.go | 2 +- apps/edge/internal/openai/server_test.go | 2 +- apps/edge/internal/opsconsole/console.go | 2 +- apps/edge/internal/opsconsole/events.go | 2 +- apps/edge/internal/opsconsole/events_test.go | 2 +- apps/edge/internal/service/service.go | 2 +- .../internal/transport/integration_test.go | 4 +-- apps/edge/internal/transport/server.go | 2 +- apps/edge/internal/transport/server_test.go | 2 +- apps/node/README.md | 2 +- apps/node/cmd/node/main.go | 6 ++--- apps/node/cmd/node/main_test.go | 2 +- .../adapters/cli/antigravity_print.go | 2 +- .../cli/antigravity_print_blackbox_test.go | 2 +- apps/node/internal/adapters/cli/cli.go | 2 +- .../adapters/cli/cli_internal_test.go | 2 +- apps/node/internal/adapters/cli/codex_exec.go | 2 +- .../adapters/cli/codex_exec_blackbox_test.go | 2 +- .../adapters/cli/lifecycle_blackbox_test.go | 2 +- apps/node/internal/adapters/cli/oneshot.go | 2 +- .../adapters/cli/oneshot_blackbox_test.go | 2 +- .../internal/adapters/cli/opencode_sse.go | 2 +- .../cli/opencode_sse_blackbox_test.go | 2 +- apps/node/internal/adapters/cli/persistent.go | 2 +- .../cli/persistent_execute_blackbox_test.go | 2 +- .../adapters/cli/persistent_output_filter.go | 2 +- .../cli/persistent_output_filter_test.go | 2 +- .../internal/adapters/cli/status/status.go | 2 +- .../adapters/cli/status/status_test.go | 2 +- apps/node/internal/adapters/factory.go | 2 +- apps/node/internal/adapters/ollama/ollama.go | 2 +- .../internal/adapters/ollama/ollama_test.go | 2 +- apps/node/internal/adapters/vllm/vllm.go | 2 +- apps/node/internal/adapters/vllm/vllm_test.go | 2 +- apps/node/internal/bootstrap/module.go | 6 ++--- apps/node/internal/bootstrap/module_test.go | 2 +- .../internal/transport/integration_test.go | 2 +- apps/node/internal/transport/session.go | 2 +- packages/{ => go}/auth/auth.go | 0 packages/{ => go}/config/config.go | 0 packages/{ => go}/config/config_test.go | 2 +- packages/{ => go}/events/events.go | 0 packages/{ => go}/hostsetup/setup.go | 0 packages/{ => go}/hostsetup/setup_test.go | 0 packages/{ => go}/hostsetup/systemd.go | 0 packages/{ => go}/hostsetup/templates.go | 0 packages/{ => go}/jobs/jobs.go | 0 packages/{ => go}/metadata/metadata.go | 0 .../{ => go}/observability/observability.go | 0 .../observability/observability_test.go | 2 +- packages/{ => go}/policy/engine.go | 0 packages/{ => go}/version/version.go | 0 82 files changed, 99 insertions(+), 97 deletions(-) rename packages/{ => go}/auth/auth.go (100%) rename packages/{ => go}/config/config.go (100%) rename packages/{ => go}/config/config_test.go (99%) rename packages/{ => go}/events/events.go (100%) rename packages/{ => go}/hostsetup/setup.go (100%) rename packages/{ => go}/hostsetup/setup_test.go (100%) rename packages/{ => go}/hostsetup/systemd.go (100%) rename packages/{ => go}/hostsetup/templates.go (100%) rename packages/{ => go}/jobs/jobs.go (100%) rename packages/{ => go}/metadata/metadata.go (100%) rename packages/{ => go}/observability/observability.go (100%) rename packages/{ => go}/observability/observability_test.go (98%) rename packages/{ => go}/policy/engine.go (100%) rename packages/{ => go}/version/version.go (100%) diff --git a/README.md b/README.md index 7015b00..7a4f209 100644 --- a/README.md +++ b/README.md @@ -238,7 +238,8 @@ NomadCode | `apps/edge` | Node/domain agent registry, 설정 전달, bootstrap, routing, stream relay를 담당하는 Edge skeleton | | `apps/control-plane` | 여러 Edge를 연결하고 Client과 통신할 Go 기반 운영 제어 서버 스캐폴드 | | `apps/worker` | 현재 placeholder이며, Worker 구조는 우선 각 Go 서비스 내부 공통 모듈 방향으로 둔다 | -| `packages` | Go 공통 패키지와 언어별 재사용 패키지 root. Flutter 패키지는 `packages/flutter/` 아래에 둔다 | +| `packages/go` | 설정, 인증, 정책, 작업, 관측성, 버전 등 Go 공통 패키지 | +| `packages/flutter` | Flutter 재사용 패키지 root. 현재 `iop_console` package를 둔다 | | `proto` | 앱 간 메시지 계약 원본과 생성물 | | `configs` | 현재 개발용 설정 예시 | diff --git a/agent-ops/rules/project/domain/client/rules.md b/agent-ops/rules/project/domain/client/rules.md index edc758b..d26b644 100644 --- a/agent-ops/rules/project/domain/client/rules.md +++ b/agent-ops/rules/project/domain/client/rules.md @@ -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/flutter/iop_console/`은 client domain에 포함한다. +- `packages/go/**` — Go 공통 설정/관측성/정책 helper 영역. - `proto/iop/` — protobuf 계약 원본 - `proto/gen/iop/` — Go protobuf 생성물 - `scripts/dev/` — repo 내부 개발 실행 helper 영역 diff --git a/agent-ops/rules/project/domain/control-plane/rules.md b/agent-ops/rules/project/domain/control-plane/rules.md index 29a8d0c..4817fb2 100644 --- a/agent-ops/rules/project/domain/control-plane/rules.md +++ b/agent-ops/rules/project/domain/control-plane/rules.md @@ -23,7 +23,7 @@ last_rule_updated_at: 2026-06-01 - `apps/client/` — Control Plane을 소비하는 Flutter client UI/UX 영역 - `apps/node/` — 실제 adapter execution과 runtime session의 소유자 - `apps/worker/` — 비동기 작업 처리 예정 영역 -- `packages/` — 여러 앱이 공유하는 공통 패키지 +- `packages/go/` — 여러 앱이 공유하는 Go 공통 패키지 - `proto/` — 메시지 계약 원본과 생성물 - `configs/` — 앱별 설정 예시와 공통 설정 계약 확인 영역 diff --git a/agent-ops/rules/project/domain/edge/rules.md b/agent-ops/rules/project/domain/edge/rules.md index 265062c..676ad52 100644 --- a/agent-ops/rules/project/domain/edge/rules.md +++ b/agent-ops/rules/project/domain/edge/rules.md @@ -30,7 +30,7 @@ last_rule_updated_at: 2026-06-01 - `apps/control-plane/` — 여러 Edge 연결 관리와 운영 제어 API 제공 영역 - `apps/client/` — Control Plane을 소비하는 Flutter client UI/UX 영역 - `apps/worker/` — 비동기 작업 처리 예정 영역 -- `packages/` — 공통 설정/관측성/인증 패키지 +- `packages/go/` — 공통 설정/관측성/인증 Go 패키지 - `proto/` — 메시지 계약 원본과 생성물 ## 주요 구성 요소 diff --git a/agent-ops/rules/project/domain/node/rules.md b/agent-ops/rules/project/domain/node/rules.md index 0457891..80c90f0 100644 --- a/agent-ops/rules/project/domain/node/rules.md +++ b/agent-ops/rules/project/domain/node/rules.md @@ -27,7 +27,7 @@ Edge에 연결되어 실제 adapter execution을 수행하는 IOP 노드 에이 - `apps/edge/` — Node를 관리하는 실행 그룹 컨트롤러 영역 - `apps/control-plane/` — 여러 Edge 연결 관리와 운영 제어 API 제공 영역 - `apps/worker/` — 비동기 작업 처리 예정 영역 -- `packages/` — 여러 앱이 공유하는 공통 패키지 +- `packages/go/` — 여러 앱이 공유하는 Go 공통 패키지 - `proto/` — 앱 간 메시지 계약 ## 주요 구성 요소 @@ -77,7 +77,7 @@ Edge에 연결되어 실제 adapter execution을 수행하는 IOP 노드 에이 ## 다른 도메인과의 경계 - **edge**: edge는 node 연결 등록, adapter/runtime 설정 전달, 라우팅 진입, stream relay를 담당한다. node는 edge가 보낸 실행/취소/명령 요청을 처리하고 이벤트와 명령 응답을 돌려준다. -- **platform-common**: node는 `packages/config`, `packages/events`, `packages/observability`, `proto/gen/iop` 등을 사용하지만 공통 타입/설정/event helper 자체의 소유자는 platform-common이다. +- **platform-common**: node는 `packages/go/config`, `packages/go/events`, `packages/go/observability`, `proto/gen/iop` 등을 사용하지만 공통 타입/설정/event helper 자체의 소유자는 platform-common이다. - **control-plane**: control-plane은 Node가 아니라 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 59c3fa3..eb71397 100644 --- a/agent-ops/rules/project/domain/platform-common/rules.md +++ b/agent-ops/rules/project/domain/platform-common/rules.md @@ -12,15 +12,15 @@ last_rule_updated_at: 2026-06-01 ## 포함 경로 -- `packages/auth/` — mTLS 인증 설정 helper -- `packages/config/` — 앱 설정 struct, 기본값, YAML 로딩 -- `packages/events/` — 공통 EdgeNodeEvent 생성 helper와 lifecycle 상수 -- `packages/hostsetup/` — edge/node systemd 설치 준비와 기본 설정 템플릿 -- `packages/jobs/` — 작업 상태와 작업 메타데이터 타입 -- `packages/metadata/` — 공통 metadata map helper -- `packages/observability/` — zap logger와 Prometheus health/metrics 서버 -- `packages/policy/` — 정책 엔진 인터페이스와 passthrough 구현 -- `packages/version/` — 앱 버전 상수 +- `packages/go/auth/` — mTLS 인증 설정 helper +- `packages/go/config/` — 앱 설정 struct, 기본값, YAML 로딩 +- `packages/go/events/` — 공통 EdgeNodeEvent 생성 helper와 lifecycle 상수 +- `packages/go/hostsetup/` — edge/node systemd 설치 준비와 기본 설정 템플릿 +- `packages/go/jobs/` — 작업 상태와 작업 메타데이터 타입 +- `packages/go/metadata/` — 공통 metadata map helper +- `packages/go/observability/` — zap logger와 Prometheus health/metrics 서버 +- `packages/go/policy/` — 정책 엔진 인터페이스와 passthrough 구현 +- `packages/go/version/` — 앱 버전 상수 - `proto/iop/` — protobuf 메시지 계약 원본 - `proto/gen/iop/` — protobuf 생성물 - `configs/` — 앱별 설정 예시 @@ -57,7 +57,7 @@ last_rule_updated_at: 2026-06-01 - 공통 패키지는 특정 앱의 내부 패키지를 import하지 않는다. - 설정 struct 필드 변경 시 YAML tag, mapstructure tag, default, `configs/*.yaml` 예시를 함께 확인한다. -- host setup 기본 템플릿을 바꿀 때는 `packages/hostsetup`의 `EdgeSpec`/`NodeSpec`, 기본 경로, systemd unit, 관련 CLI `setup` 옵션과 함께 확인한다. +- host setup 기본 템플릿을 바꿀 때는 `packages/go/hostsetup`의 `EdgeSpec`/`NodeSpec`, 기본 경로, systemd unit, 관련 CLI `setup` 옵션과 함께 확인한다. - protobuf 계약 변경은 `proto/iop/*.proto`에서 시작하고 `make proto`로 Go 생성물을 갱신한다. - Client가 소비하는 proto 계약을 변경하면 `make proto-dart`로 `apps/client/lib/gen/proto/iop/*.dart` 생성물도 갱신한다. - 생성 파일(`proto/gen/iop/*.pb.go`)은 사람이 직접 편집하지 않는다. @@ -66,7 +66,7 @@ last_rule_updated_at: 2026-06-01 - `RunRequest`, `ExecutionSpec`, `NodeCommandRequest`, `CLIProfileConfig`, job/history 계열 계약을 변경할 때 내부 실행 용어는 `target`을 우선하고, `model`은 외부 호환 경계인지 확인한다. - Control Plane hello 계열 proto는 Edge/Node scheduling 계약으로 확장하지 않는다. - Control Plane-Edge status proto는 Edge-owned snapshot을 표현한다. Node address, token, direct scheduling 필드를 싣지 않는다. -- `packages/config/**`, `packages/events/**`, `packages/hostsetup/**`, `configs/**`, `proto/iop/**`처럼 edge-node 실행 설정, setup, lifecycle event, 메시지 계약에 영향을 주는 작업을 한 뒤에는 `testing` domain rule의 작업 후 검증 기준을 따른다. +- `packages/go/config/**`, `packages/go/events/**`, `packages/go/hostsetup/**`, `configs/**`, `proto/iop/**`처럼 edge-node 실행 설정, setup, lifecycle event, 메시지 계약에 영향을 주는 작업을 한 뒤에는 `testing` domain rule의 작업 후 검증 기준을 따른다. ## 다른 도메인과의 경계 @@ -76,10 +76,10 @@ last_rule_updated_at: 2026-06-01 ## 금지 사항 -- `packages`에서 `apps/*/internal` 패키지를 import하지 않는다. +- `packages/go`에서 `apps/*/internal` 패키지를 import하지 않는다. - 앱 하나만을 위한 임시 타입을 충분한 근거 없이 공통 패키지로 승격하지 않는다. - edge fanout bus, web UI state, control-plane session 관리처럼 특정 앱의 운영 상태를 공통 패키지로 끌어올리지 않는다. - 내부 실행 계약을 확장하면서 `model` 중심 명명을 되살리지 않는다. 외부 API 호환이 필요한 경우 경계와 변환 위치를 명시한다. - protobuf 생성물을 직접 수정하지 않는다. - Client Dart protobuf 생성물을 proto 원본과 불일치하게 두지 않는다. -- 설정 파일만 바꾸고 `packages/config`의 로딩/default와 불일치하게 두지 않는다. +- 설정 파일만 바꾸고 `packages/go/config`의 로딩/default와 불일치하게 두지 않는다. diff --git a/agent-ops/rules/project/domain/testing/rules.md b/agent-ops/rules/project/domain/testing/rules.md index 8dfe7a0..a4336a6 100644 --- a/agent-ops/rules/project/domain/testing/rules.md +++ b/agent-ops/rules/project/domain/testing/rules.md @@ -27,7 +27,7 @@ last_rule_updated_at: 2026-06-01 - `apps/edge/` — edge 실행 구현의 소유자는 edge 도메인이다. testing 도메인은 작업 후 검증 기준만 정의한다. - `apps/control-plane/` — Control Plane 구현의 소유자는 control-plane 도메인이다. testing 도메인은 작업 후 검증 기준만 정의한다. - `apps/client/` — Flutter client 구현과 client test 파일의 소유자는 client 도메인이다. testing 도메인은 작업 후 검증 기준만 정의한다. -- `packages/` 및 `proto/` — 공통 계약의 소유자는 platform-common 도메인이다. testing 도메인은 해당 변경 후 필요한 검증 기준만 정의한다. +- `packages/go/` 및 `proto/` — 공통 계약의 소유자는 platform-common 도메인이다. testing 도메인은 해당 변경 후 필요한 검증 기준만 정의한다. ## 주요 구성 요소 @@ -49,7 +49,7 @@ last_rule_updated_at: 2026-06-01 - 테스트는 테스트 파일 변경 여부가 아니라 작업 영향 범위로 결정한다. - 사용자 실행 파이프라인에 닿는 작업을 한 경우, 작업 완료 후 일반 Go 테스트와 변경 범위에 맞는 full-cycle 실제 구동을 검증한다. repo 내부 edge-node 진단에는 `scripts/dev/edge.sh` + `scripts/dev/node.sh`를 사용할 수 있지만, field 사용자 기본 UX는 bootstrap 명령으로 확인한다. -- 사용자 실행 파이프라인에는 `scripts/dev/**`, `scripts/e2e-*.sh`, `Makefile`, `docker-compose.yml`, `apps/*/cmd/**`, `apps/*/internal/bootstrap/**`, edge-node transport/service/registry/input surface, Control Plane wire endpoint, client wire surface, adapter 실행/stream/cancel/status 경로, `configs/**`, `packages/config/**`, `packages/hostsetup/**`, 관련 protobuf 계약 변경이 포함된다. +- 사용자 실행 파이프라인에는 `scripts/dev/**`, `scripts/e2e-*.sh`, `Makefile`, `docker-compose.yml`, `apps/*/cmd/**`, `apps/*/internal/bootstrap/**`, edge-node transport/service/registry/input surface, Control Plane wire endpoint, client wire surface, adapter 실행/stream/cancel/status 경로, `configs/**`, `packages/go/config/**`, `packages/go/hostsetup/**`, 관련 protobuf 계약 변경이 포함된다. - edge-node 개발 진단 흐름 검증은 `scripts/dev/edge.sh`와 `scripts/dev/node.sh`를 별도 프로세스로 직접 실행하고, edge console prompt에 명령을 한 줄씩 입력한 뒤 기대 출력이 도착한 것을 확인하고 다음 입력으로 넘어간다. - 메시지 검증 기준은 edge console에서 같은 session으로 메시지 2회를 보내고, 각 요청마다 `[edge] sent`, `[node-*-event] start`, 비어 있지 않은 `[node-*-message]`, `[node-*-event] complete`가 edge 화면에 표시되는 것이다. - 완료 이벤트만으로 정상 판정하지 않는다. node 로컬 출력에 생성된 `[node-message]` payload가 edge console의 `[node-*-message]` 출력에 모두 표시되어야 하며, complete event는 모든 message payload가 edge에 도착한 뒤의 마감 신호로 본다. diff --git a/agent-ops/rules/project/rules.md b/agent-ops/rules/project/rules.md index 7c7a939..d5c5881 100644 --- a/agent-ops/rules/project/rules.md +++ b/agent-ops/rules/project/rules.md @@ -20,7 +20,8 @@ - `apps/control-plane/` — 여러 Edge를 연결하고 상태 조회/설정 변경/명령 전달/이벤트 수신/운영 제어 API 제공을 담당할 Go 기반 중앙 관리 서버이다. - `apps/client/` — Control Plane을 통해 Edge/Node 운영 상태를 보여주는 Flutter client이다. - `apps/worker/` — 비동기 작업 처리 예정 영역이다. 현재 placeholder이다. -- `packages/` — 설정, 인증, 이벤트 helper, host setup, 정책, 메타데이터, 작업, 관측성, 버전 등 Go 공통 패키지와 언어별 재사용 패키지 root이다. Flutter 재사용 패키지는 `packages/flutter/` 아래에 둔다. +- `packages/go/` — 설정, 인증, 이벤트 helper, host setup, 정책, 메타데이터, 작업, 관측성, 버전 등 Go 공통 패키지이다. +- `packages/flutter/` — Flutter 재사용 패키지 root이다. 현재 `packages/flutter/iop_console`이 IOP-owned console package이다. - `proto/iop/` — IOP 메시지 계약 원본이다. - `proto/gen/iop/` — protobuf 생성물이다. - `configs/` — 앱별 YAML 설정 예시이다. @@ -57,7 +58,7 @@ - 바이너리 배포 UX는 repo checkout 위치에 묶이지 않아야 한다. `iop-edge`/`iop-node`는 아무 작업 디렉터리에서 실행 가능해야 하며, 로컬/dev bundle에서는 Edge 설정을 바이너리와 같은 디렉터리의 `edge.yaml` 같은 구조화된 config에 모으는 방향을 우선한다. Node 쪽은 별도 사용자 config 파일이 아니라 Edge가 제공하는 bootstrap으로 연결한다. - Edge-Node 내부 통신은 TCP 기반 protobuf 메시지 흐름을 우선한다. 브라우저/앱 표면이 필요한 경계는 proto-socket WebSocket/WSS를 사용할 수 있다. gRPC 도입, Edge-Node 기본 transport의 WebSocket 전환, actor/FSM/plugin framework 도입은 금지한다. - protobuf 계약 변경 시 `proto/iop/*.proto`를 먼저 수정하고 `make proto`로 `proto/gen/iop/*.pb.go`를 갱신한다. 생성 파일은 직접 수정하지 않는다. -- Edge/Node 앱 설정 구조 변경 시 `packages/config`의 struct/default와 `configs/*.yaml` 예시를 함께 확인한다. Control Plane 로컬 설정 구조 변경 시 `apps/control-plane`의 config loader와 `configs/control-plane.yaml` 예시를 함께 확인한다. +- Edge/Node 앱 설정 구조 변경 시 `packages/go/config`의 struct/default와 `configs/*.yaml` 예시를 함께 확인한다. Control Plane 로컬 설정 구조 변경 시 `apps/control-plane`의 config loader와 `configs/control-plane.yaml` 예시를 함께 확인한다. - 테스트는 변경 범위에 맞춰 `go test ./...` 또는 대상 패키지 테스트를 실행한다. - 사용자 실행 파이프라인에 닿는 작업을 한 경우, 작업 완료 후 `agent-ops/rules/project/domain/testing/rules.md`의 검증 기준을 따른다. - field/bootstrap 작업은 `testing` domain rule을 따르고, 실제 local 환경값이 필요하면 `agent-test/local/rules.md`를 따른다. @@ -78,8 +79,8 @@ | `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/flutter/iop_console/**` | client | `agent-ops/rules/project/domain/client/rules.md` | -| `packages/**` | platform-common | `agent-ops/rules/project/domain/platform-common/rules.md` | +| `packages/flutter/**` | client | `agent-ops/rules/project/domain/client/rules.md` | +| `packages/go/**` | 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` | | `scripts/dev/**` | testing | `agent-ops/rules/project/domain/testing/rules.md` | diff --git a/agent-ops/skills/project/e2e-smoke/SKILL.md b/agent-ops/skills/project/e2e-smoke/SKILL.md index 0192601..62c7f52 100644 --- a/agent-ops/skills/project/e2e-smoke/SKILL.md +++ b/agent-ops/skills/project/e2e-smoke/SKILL.md @@ -14,7 +14,7 @@ repo 내부 edge-node 진단이 필요할 때 `scripts/dev/edge.sh`와 `scripts/ - 사용자 실행 파이프라인에 닿는 작업을 완료한 뒤 검증 단계에 들어갈 때 - `scripts/dev/**`, `Makefile`, `apps/*/cmd/**`, `apps/*/internal/bootstrap/**`, edge-node transport/service/registry, adapter 실행/stream/cancel/status 경로를 변경했을 때 -- `configs/**`, `packages/config/**`, 관련 protobuf 계약 변경이 edge-node 실행 방식에 영향을 줄 때 +- `configs/**`, `packages/go/config/**`, 관련 protobuf 계약 변경이 edge-node 실행 방식에 영향을 줄 때 - `make test-e2e` 또는 보조 E2E smoke 스크립트를 만들거나 갱신할 때 ## 입력 diff --git a/agent-roadmap/phase/control-plane-portal-ops/milestones/policy-history-audit.md b/agent-roadmap/phase/control-plane-portal-ops/milestones/policy-history-audit.md index ceed919..4d534ca 100644 --- a/agent-roadmap/phase/control-plane-portal-ops/milestones/policy-history-audit.md +++ b/agent-roadmap/phase/control-plane-portal-ops/milestones/policy-history-audit.md @@ -60,7 +60,7 @@ ## 작업 컨텍스트 -- 관련 경로: `apps/edge`, `apps/node`, `apps/control-plane`, `packages/auth`, `packages/jobs` +- 관련 경로: `apps/edge`, `apps/node`, `apps/control-plane`, `packages/go/auth`, `packages/go/jobs` - 표준선(선택): Edge는 로컬 실행 이력 원본을 유지하고, Control Plane은 필요한 범위에서 조회/집계한다. - 선행 작업: 원격 터미널 브리지 POC, Agent Bootstrap과 OTO 등록, Control Plane과 Client - 후속 작업: Multi-Edge 운영 diff --git a/agent-roadmap/phase/inference-provider-extension/milestones/sglang-provider-serving-validation.md b/agent-roadmap/phase/inference-provider-extension/milestones/sglang-provider-serving-validation.md index 0fa2a35..9c656cc 100644 --- a/agent-roadmap/phase/inference-provider-extension/milestones/sglang-provider-serving-validation.md +++ b/agent-roadmap/phase/inference-provider-extension/milestones/sglang-provider-serving-validation.md @@ -63,7 +63,7 @@ Ollama 실테스트에서 안정화한 모델 조회, non-streaming/streaming ch ## 작업 컨텍스트 -- 관련 경로: `apps/edge`, `apps/node`, `packages/config`, `proto/iop`, `configs`, `bin/edge.sh`, `bin/node.sh`, `agent-test/local/edge-smoke.md`, `agent-test/local/node-smoke.md`, `agent-test/local/platform-common-smoke.md` +- 관련 경로: `apps/edge`, `apps/node`, `packages/go/config`, `proto/iop`, `configs`, `bin/edge.sh`, `bin/node.sh`, `agent-test/local/edge-smoke.md`, `agent-test/local/node-smoke.md`, `agent-test/local/platform-common-smoke.md` - 표준선(선택): 내부 실행 계약은 `adapter + target`을 유지하고, OpenAI-compatible API는 외부 호환 입력 표면으로 둔다. - 표준선(선택): Ollama provider에서 안정화한 field smoke 기준을 SGLang provider에도 그대로 적용한다. - 선행 작업: Ollama 실테스트와 후속 안정화 diff --git a/agent-roadmap/phase/knowledge-tool-optimization-extension/milestones/knowledge-tool-validation-optimization.md b/agent-roadmap/phase/knowledge-tool-optimization-extension/milestones/knowledge-tool-validation-optimization.md index 9bc9ad2..00bbe56 100644 --- a/agent-roadmap/phase/knowledge-tool-optimization-extension/milestones/knowledge-tool-validation-optimization.md +++ b/agent-roadmap/phase/knowledge-tool-optimization-extension/milestones/knowledge-tool-validation-optimization.md @@ -59,7 +59,7 @@ NomadCode는 이 계층의 소비자 중 하나이며, 이 Milestone은 특정 A ## 작업 컨텍스트 -- 관련 경로: `apps/edge`, `apps/node`, `apps/control-plane`, `packages/policy`, `packages/observability`, `proto/iop`, `README.md`, `agent-roadmap/archive/phase/serving-routing-optimization/milestones/model-serving-load-routing.md` +- 관련 경로: `apps/edge`, `apps/node`, `apps/control-plane`, `packages/go/policy`, `packages/go/observability`, `proto/iop`, `README.md`, `agent-roadmap/archive/phase/serving-routing-optimization/milestones/model-serving-load-routing.md` - 표준선(선택): 기본 모델 serving/load routing이 먼저 안정화된 뒤 최적화 계층을 붙인다. - 선행 작업: Ollama 서빙 안정화, Control Plane과 Client 운영 - 후속 작업: 정책/이력/감사와 품질 기반 routing/fallback 고도화 diff --git a/apps/control-plane/cmd/control-plane/main.go b/apps/control-plane/cmd/control-plane/main.go index 73919f7..9f16d6e 100644 --- a/apps/control-plane/cmd/control-plane/main.go +++ b/apps/control-plane/cmd/control-plane/main.go @@ -16,7 +16,7 @@ import ( "gopkg.in/yaml.v3" "iop/apps/control-plane/internal/wire" - "iop/packages/observability" + "iop/packages/go/observability" ) var cfgFile string diff --git a/apps/edge/cmd/edge/console.go b/apps/edge/cmd/edge/console.go index 99579d0..217776c 100644 --- a/apps/edge/cmd/edge/console.go +++ b/apps/edge/cmd/edge/console.go @@ -5,7 +5,7 @@ import ( "io" "iop/apps/edge/internal/opsconsole" - "iop/packages/config" + "iop/packages/go/config" ) func runConsole(ctx context.Context, cfg *config.EdgeConfig, in io.Reader, out io.Writer) error { diff --git a/apps/edge/cmd/edge/main.go b/apps/edge/cmd/edge/main.go index 3ea3f9a..7be0a7c 100644 --- a/apps/edge/cmd/edge/main.go +++ b/apps/edge/cmd/edge/main.go @@ -25,9 +25,9 @@ import ( "iop/apps/edge/internal/bootstrap" "iop/apps/edge/internal/node" - "iop/packages/config" - "iop/packages/hostsetup" - "iop/packages/version" + "iop/packages/go/config" + "iop/packages/go/hostsetup" + "iop/packages/go/version" ) var cfgFile string diff --git a/apps/edge/cmd/edge/main_test.go b/apps/edge/cmd/edge/main_test.go index b7896c0..ed82707 100644 --- a/apps/edge/cmd/edge/main_test.go +++ b/apps/edge/cmd/edge/main_test.go @@ -10,8 +10,8 @@ import ( "testing" "gopkg.in/yaml.v3" - "iop/packages/config" - "iop/packages/version" + "iop/packages/go/config" + "iop/packages/go/version" ) func TestRootCmdIncludesOperationalCommands(t *testing.T) { diff --git a/apps/edge/internal/bootstrap/module.go b/apps/edge/internal/bootstrap/module.go index 1d0a11a..d2ba034 100644 --- a/apps/edge/internal/bootstrap/module.go +++ b/apps/edge/internal/bootstrap/module.go @@ -5,7 +5,7 @@ import ( "go.uber.org/fx" - "iop/packages/config" + "iop/packages/go/config" ) func Module(cfg *config.EdgeConfig) fx.Option { diff --git a/apps/edge/internal/bootstrap/runtime.go b/apps/edge/internal/bootstrap/runtime.go index de4aaea..057879b 100644 --- a/apps/edge/internal/bootstrap/runtime.go +++ b/apps/edge/internal/bootstrap/runtime.go @@ -14,9 +14,9 @@ import ( edgenode "iop/apps/edge/internal/node" edgeservice "iop/apps/edge/internal/service" "iop/apps/edge/internal/transport" - "iop/packages/config" - "iop/packages/observability" - "iop/packages/version" + "iop/packages/go/config" + "iop/packages/go/observability" + "iop/packages/go/version" ) // Runtime is the shared edge runtime assembly used by both `serve` and diff --git a/apps/edge/internal/bootstrap/runtime_test.go b/apps/edge/internal/bootstrap/runtime_test.go index 9eea5e7..c8dd4bf 100644 --- a/apps/edge/internal/bootstrap/runtime_test.go +++ b/apps/edge/internal/bootstrap/runtime_test.go @@ -10,7 +10,7 @@ import ( "testing" "time" - "iop/packages/config" + "iop/packages/go/config" ) func newTestConfig() *config.EdgeConfig { diff --git a/apps/edge/internal/controlplane/connector.go b/apps/edge/internal/controlplane/connector.go index a283223..70de1a8 100644 --- a/apps/edge/internal/controlplane/connector.go +++ b/apps/edge/internal/controlplane/connector.go @@ -15,7 +15,7 @@ import ( edgeevents "iop/apps/edge/internal/events" edgeservice "iop/apps/edge/internal/service" - "iop/packages/config" + "iop/packages/go/config" iop "iop/proto/gen/iop" ) diff --git a/apps/edge/internal/controlplane/connector_test.go b/apps/edge/internal/controlplane/connector_test.go index a81be5f..0a99efa 100644 --- a/apps/edge/internal/controlplane/connector_test.go +++ b/apps/edge/internal/controlplane/connector_test.go @@ -12,7 +12,7 @@ import ( edgeevents "iop/apps/edge/internal/events" edgeservice "iop/apps/edge/internal/service" - "iop/packages/config" + "iop/packages/go/config" iop "iop/proto/gen/iop" ) diff --git a/apps/edge/internal/input/a2a/server.go b/apps/edge/internal/input/a2a/server.go index a3b7156..a075593 100644 --- a/apps/edge/internal/input/a2a/server.go +++ b/apps/edge/internal/input/a2a/server.go @@ -13,7 +13,7 @@ import ( "go.uber.org/zap" edgeservice "iop/apps/edge/internal/service" - "iop/packages/config" + "iop/packages/go/config" ) type runService interface { diff --git a/apps/edge/internal/input/a2a/server_test.go b/apps/edge/internal/input/a2a/server_test.go index 910d8cb..4b6776d 100644 --- a/apps/edge/internal/input/a2a/server_test.go +++ b/apps/edge/internal/input/a2a/server_test.go @@ -12,7 +12,7 @@ import ( "iop/apps/edge/internal/input/a2a" edgeservice "iop/apps/edge/internal/service" - "iop/packages/config" + "iop/packages/go/config" iop "iop/proto/gen/iop" ) diff --git a/apps/edge/internal/input/a2a/task_store_test.go b/apps/edge/internal/input/a2a/task_store_test.go index 187c38d..e28b3a7 100644 --- a/apps/edge/internal/input/a2a/task_store_test.go +++ b/apps/edge/internal/input/a2a/task_store_test.go @@ -9,7 +9,7 @@ import ( "iop/apps/edge/internal/input/a2a" edgeservice "iop/apps/edge/internal/service" - "iop/packages/config" + "iop/packages/go/config" iop "iop/proto/gen/iop" ) diff --git a/apps/edge/internal/input/manager.go b/apps/edge/internal/input/manager.go index 9bad880..8cd0573 100644 --- a/apps/edge/internal/input/manager.go +++ b/apps/edge/internal/input/manager.go @@ -9,7 +9,7 @@ import ( edgea2a "iop/apps/edge/internal/input/a2a" edgeopenai "iop/apps/edge/internal/openai" edgeservice "iop/apps/edge/internal/service" - "iop/packages/config" + "iop/packages/go/config" ) // Manager owns the lifecycle of all Edge inbound input servers (OpenAI-compatible and A2A). diff --git a/apps/edge/internal/input/manager_test.go b/apps/edge/internal/input/manager_test.go index b55b1ae..49c88bd 100644 --- a/apps/edge/internal/input/manager_test.go +++ b/apps/edge/internal/input/manager_test.go @@ -6,7 +6,7 @@ import ( edgeinput "iop/apps/edge/internal/input" edgeservice "iop/apps/edge/internal/service" - "iop/packages/config" + "iop/packages/go/config" "go.uber.org/zap" ) diff --git a/apps/edge/internal/node/mapper.go b/apps/edge/internal/node/mapper.go index c16bf0c..74ed2b7 100644 --- a/apps/edge/internal/node/mapper.go +++ b/apps/edge/internal/node/mapper.go @@ -5,7 +5,7 @@ import ( "google.golang.org/protobuf/types/known/structpb" - "iop/packages/config" + "iop/packages/go/config" iop "iop/proto/gen/iop" ) diff --git a/apps/edge/internal/node/mapper_test.go b/apps/edge/internal/node/mapper_test.go index 3b81221..5b00a88 100644 --- a/apps/edge/internal/node/mapper_test.go +++ b/apps/edge/internal/node/mapper_test.go @@ -4,7 +4,7 @@ import ( "testing" edgenode "iop/apps/edge/internal/node" - "iop/packages/config" + "iop/packages/go/config" ) func TestBuildConfigPayload_OllamaEnabled(t *testing.T) { diff --git a/apps/edge/internal/node/store.go b/apps/edge/internal/node/store.go index 7363d52..3ed6bf7 100644 --- a/apps/edge/internal/node/store.go +++ b/apps/edge/internal/node/store.go @@ -5,7 +5,7 @@ import ( "sync" "github.com/google/uuid" - "iop/packages/config" + "iop/packages/go/config" ) // NodeRecord is the pre-registered node definition stored in edge. diff --git a/apps/edge/internal/node/store_test.go b/apps/edge/internal/node/store_test.go index 610d1ed..ab1ed32 100644 --- a/apps/edge/internal/node/store_test.go +++ b/apps/edge/internal/node/store_test.go @@ -4,7 +4,7 @@ import ( "testing" edgenode "iop/apps/edge/internal/node" - "iop/packages/config" + "iop/packages/go/config" ) func TestLoadFromConfig_Success(t *testing.T) { diff --git a/apps/edge/internal/openai/server.go b/apps/edge/internal/openai/server.go index 3810ad8..14cea85 100644 --- a/apps/edge/internal/openai/server.go +++ b/apps/edge/internal/openai/server.go @@ -16,7 +16,7 @@ import ( "go.uber.org/zap" edgeservice "iop/apps/edge/internal/service" - "iop/packages/config" + "iop/packages/go/config" ) type runService interface { diff --git a/apps/edge/internal/openai/server_test.go b/apps/edge/internal/openai/server_test.go index 957da57..aca0e5c 100644 --- a/apps/edge/internal/openai/server_test.go +++ b/apps/edge/internal/openai/server_test.go @@ -10,7 +10,7 @@ import ( "time" edgeservice "iop/apps/edge/internal/service" - "iop/packages/config" + "iop/packages/go/config" iop "iop/proto/gen/iop" ) diff --git a/apps/edge/internal/opsconsole/console.go b/apps/edge/internal/opsconsole/console.go index ef9634b..2f0e3c5 100644 --- a/apps/edge/internal/opsconsole/console.go +++ b/apps/edge/internal/opsconsole/console.go @@ -10,7 +10,7 @@ import ( "iop/apps/edge/internal/bootstrap" edgeservice "iop/apps/edge/internal/service" - "iop/packages/config" + "iop/packages/go/config" ) // TargetState holds the current console target: node selection, adapter execution diff --git a/apps/edge/internal/opsconsole/events.go b/apps/edge/internal/opsconsole/events.go index acf697b..18dfe9a 100644 --- a/apps/edge/internal/opsconsole/events.go +++ b/apps/edge/internal/opsconsole/events.go @@ -10,7 +10,7 @@ import ( "go.uber.org/zap" edgenode "iop/apps/edge/internal/node" - eventpkg "iop/packages/events" + eventpkg "iop/packages/go/events" iop "iop/proto/gen/iop" ) diff --git a/apps/edge/internal/opsconsole/events_test.go b/apps/edge/internal/opsconsole/events_test.go index cae1a8b..99befa8 100644 --- a/apps/edge/internal/opsconsole/events_test.go +++ b/apps/edge/internal/opsconsole/events_test.go @@ -7,7 +7,7 @@ import ( "time" edgenode "iop/apps/edge/internal/node" - eventpkg "iop/packages/events" + eventpkg "iop/packages/go/events" iop "iop/proto/gen/iop" ) diff --git a/apps/edge/internal/service/service.go b/apps/edge/internal/service/service.go index 9e2c09c..2f64b9b 100644 --- a/apps/edge/internal/service/service.go +++ b/apps/edge/internal/service/service.go @@ -11,7 +11,7 @@ import ( edgeevents "iop/apps/edge/internal/events" edgenode "iop/apps/edge/internal/node" - eventpkg "iop/packages/events" + eventpkg "iop/packages/go/events" iop "iop/proto/gen/iop" ) diff --git a/apps/edge/internal/transport/integration_test.go b/apps/edge/internal/transport/integration_test.go index 9aa79ee..32355ba 100644 --- a/apps/edge/internal/transport/integration_test.go +++ b/apps/edge/internal/transport/integration_test.go @@ -14,8 +14,8 @@ import ( edgenode "iop/apps/edge/internal/node" "iop/apps/edge/internal/transport" - "iop/packages/config" - eventpkg "iop/packages/events" + "iop/packages/go/config" + eventpkg "iop/packages/go/events" iop "iop/proto/gen/iop" ) diff --git a/apps/edge/internal/transport/server.go b/apps/edge/internal/transport/server.go index 0e7f527..85de918 100644 --- a/apps/edge/internal/transport/server.go +++ b/apps/edge/internal/transport/server.go @@ -12,7 +12,7 @@ import ( "google.golang.org/protobuf/proto" edgenode "iop/apps/edge/internal/node" - "iop/packages/events" + "iop/packages/go/events" iop "iop/proto/gen/iop" ) diff --git a/apps/edge/internal/transport/server_test.go b/apps/edge/internal/transport/server_test.go index 68e6375..a4c0a53 100644 --- a/apps/edge/internal/transport/server_test.go +++ b/apps/edge/internal/transport/server_test.go @@ -7,7 +7,7 @@ import ( "google.golang.org/protobuf/proto" edgenode "iop/apps/edge/internal/node" - "iop/packages/config" + "iop/packages/go/config" iop "iop/proto/gen/iop" ) diff --git a/apps/node/README.md b/apps/node/README.md index 88f4c57..54fda11 100644 --- a/apps/node/README.md +++ b/apps/node/README.md @@ -1,7 +1,7 @@ # node — Node Agent 디바이스당 1개 실행되는 IOP 노드 에이전트. -Edge에 연결되어 `adapter + target` 실행을 수행하고, TCP/protobuf 소켓을 통해 요청, 명령, 이벤트 스트림을 처리한다. mTLS helper는 `packages/auth`에 있지만 현재 Edge-Node transport에는 아직 연결하지 않았다. +Edge에 연결되어 `adapter + target` 실행을 수행하고, TCP/protobuf 소켓을 통해 요청, 명령, 이벤트 스트림을 처리한다. mTLS helper는 `packages/go/auth`에 있지만 현재 Edge-Node transport에는 아직 연결하지 않았다. ## 내부 구조 (Hexagonal Architecture) diff --git a/apps/node/cmd/node/main.go b/apps/node/cmd/node/main.go index f2eb2e0..9e01db8 100644 --- a/apps/node/cmd/node/main.go +++ b/apps/node/cmd/node/main.go @@ -9,9 +9,9 @@ import ( "gopkg.in/yaml.v3" "iop/apps/node/internal/bootstrap" - "iop/packages/config" - "iop/packages/hostsetup" - "iop/packages/version" + "iop/packages/go/config" + "iop/packages/go/hostsetup" + "iop/packages/go/version" ) var cfgFile string diff --git a/apps/node/cmd/node/main_test.go b/apps/node/cmd/node/main_test.go index 181c5d4..6316754 100644 --- a/apps/node/cmd/node/main_test.go +++ b/apps/node/cmd/node/main_test.go @@ -6,7 +6,7 @@ import ( "strings" "testing" - "iop/packages/version" + "iop/packages/go/version" ) func TestRootCmdIncludesOperationalCommands(t *testing.T) { diff --git a/apps/node/internal/adapters/cli/antigravity_print.go b/apps/node/internal/adapters/cli/antigravity_print.go index 22aef7b..904c6fa 100644 --- a/apps/node/internal/adapters/cli/antigravity_print.go +++ b/apps/node/internal/adapters/cli/antigravity_print.go @@ -7,7 +7,7 @@ import ( "regexp" "iop/apps/node/internal/runtime" - "iop/packages/config" + "iop/packages/go/config" ) var antigravityConversationPatterns = []*regexp.Regexp{ diff --git a/apps/node/internal/adapters/cli/antigravity_print_blackbox_test.go b/apps/node/internal/adapters/cli/antigravity_print_blackbox_test.go index fa7a4f1..9be0a99 100644 --- a/apps/node/internal/adapters/cli/antigravity_print_blackbox_test.go +++ b/apps/node/internal/adapters/cli/antigravity_print_blackbox_test.go @@ -12,7 +12,7 @@ import ( clipkg "iop/apps/node/internal/adapters/cli" "iop/apps/node/internal/adapters/cli/internal/testutil" noderuntime "iop/apps/node/internal/runtime" - "iop/packages/config" + "iop/packages/go/config" ) func TestCLIExecuteAntigravityPrintResumesLogicalSession(t *testing.T) { diff --git a/apps/node/internal/adapters/cli/cli.go b/apps/node/internal/adapters/cli/cli.go index 13ea0c1..4f97842 100644 --- a/apps/node/internal/adapters/cli/cli.go +++ b/apps/node/internal/adapters/cli/cli.go @@ -21,7 +21,7 @@ import ( "iop/apps/node/internal/adapters/cli/status" "iop/apps/node/internal/runtime" - "iop/packages/config" + "iop/packages/go/config" ) const Name = "cli" diff --git a/apps/node/internal/adapters/cli/cli_internal_test.go b/apps/node/internal/adapters/cli/cli_internal_test.go index 9e0d309..5dc2fd8 100644 --- a/apps/node/internal/adapters/cli/cli_internal_test.go +++ b/apps/node/internal/adapters/cli/cli_internal_test.go @@ -9,7 +9,7 @@ import ( "iop/apps/node/internal/adapters/cli/status" "iop/apps/node/internal/runtime" - "iop/packages/config" + "iop/packages/go/config" ) // --- driveJSONLines tests --- diff --git a/apps/node/internal/adapters/cli/codex_exec.go b/apps/node/internal/adapters/cli/codex_exec.go index 4793f3d..7b91e20 100644 --- a/apps/node/internal/adapters/cli/codex_exec.go +++ b/apps/node/internal/adapters/cli/codex_exec.go @@ -7,7 +7,7 @@ import ( "regexp" "iop/apps/node/internal/runtime" - "iop/packages/config" + "iop/packages/go/config" ) var ( diff --git a/apps/node/internal/adapters/cli/codex_exec_blackbox_test.go b/apps/node/internal/adapters/cli/codex_exec_blackbox_test.go index 159a96f..0c94492 100644 --- a/apps/node/internal/adapters/cli/codex_exec_blackbox_test.go +++ b/apps/node/internal/adapters/cli/codex_exec_blackbox_test.go @@ -12,7 +12,7 @@ import ( clipkg "iop/apps/node/internal/adapters/cli" "iop/apps/node/internal/adapters/cli/internal/testutil" noderuntime "iop/apps/node/internal/runtime" - "iop/packages/config" + "iop/packages/go/config" ) func TestCLIStartSkipsCodexExecPersistentStartup(t *testing.T) { diff --git a/apps/node/internal/adapters/cli/lifecycle_blackbox_test.go b/apps/node/internal/adapters/cli/lifecycle_blackbox_test.go index 47fa8b8..b8721c1 100644 --- a/apps/node/internal/adapters/cli/lifecycle_blackbox_test.go +++ b/apps/node/internal/adapters/cli/lifecycle_blackbox_test.go @@ -14,7 +14,7 @@ import ( "iop/apps/node/internal/adapters/cli/internal/testutil" "iop/apps/node/internal/adapters/cli/status" noderuntime "iop/apps/node/internal/runtime" - "iop/packages/config" + "iop/packages/go/config" ) func TestCLIStartPersistentReturnsErrorWhenProcessExitsDuringStartup(t *testing.T) { diff --git a/apps/node/internal/adapters/cli/oneshot.go b/apps/node/internal/adapters/cli/oneshot.go index 53660ad..15a79f0 100644 --- a/apps/node/internal/adapters/cli/oneshot.go +++ b/apps/node/internal/adapters/cli/oneshot.go @@ -11,7 +11,7 @@ import ( "time" "iop/apps/node/internal/runtime" - "iop/packages/config" + "iop/packages/go/config" ) func (c *CLI) executeOneShot(ctx context.Context, spec runtime.ExecutionSpec, profile config.CLIProfileConf, sink runtime.EventSink) error { diff --git a/apps/node/internal/adapters/cli/oneshot_blackbox_test.go b/apps/node/internal/adapters/cli/oneshot_blackbox_test.go index cf6586a..e6f89ad 100644 --- a/apps/node/internal/adapters/cli/oneshot_blackbox_test.go +++ b/apps/node/internal/adapters/cli/oneshot_blackbox_test.go @@ -11,7 +11,7 @@ import ( clipkg "iop/apps/node/internal/adapters/cli" "iop/apps/node/internal/adapters/cli/internal/testutil" noderuntime "iop/apps/node/internal/runtime" - "iop/packages/config" + "iop/packages/go/config" ) func TestCLIExecuteOneShotPassesPromptAsArg(t *testing.T) { diff --git a/apps/node/internal/adapters/cli/opencode_sse.go b/apps/node/internal/adapters/cli/opencode_sse.go index 53d3a4b..fcb5e96 100644 --- a/apps/node/internal/adapters/cli/opencode_sse.go +++ b/apps/node/internal/adapters/cli/opencode_sse.go @@ -18,7 +18,7 @@ import ( "go.uber.org/zap" "iop/apps/node/internal/runtime" - "iop/packages/config" + "iop/packages/go/config" ) // opencodeSSESession tracks a logical session backed by an OpenCode server. diff --git a/apps/node/internal/adapters/cli/opencode_sse_blackbox_test.go b/apps/node/internal/adapters/cli/opencode_sse_blackbox_test.go index 6cc4d87..7e1a6ce 100644 --- a/apps/node/internal/adapters/cli/opencode_sse_blackbox_test.go +++ b/apps/node/internal/adapters/cli/opencode_sse_blackbox_test.go @@ -17,7 +17,7 @@ import ( clipkg "iop/apps/node/internal/adapters/cli" "iop/apps/node/internal/adapters/cli/internal/testutil" noderuntime "iop/apps/node/internal/runtime" - "iop/packages/config" + "iop/packages/go/config" ) // opencodeFakeServer is a minimal stand-in for the OpenCode HTTP/SSE server. diff --git a/apps/node/internal/adapters/cli/persistent.go b/apps/node/internal/adapters/cli/persistent.go index 265677a..94d5a4e 100644 --- a/apps/node/internal/adapters/cli/persistent.go +++ b/apps/node/internal/adapters/cli/persistent.go @@ -15,7 +15,7 @@ import ( "go.uber.org/zap" "iop/apps/node/internal/runtime" - "iop/packages/config" + "iop/packages/go/config" ) const ( diff --git a/apps/node/internal/adapters/cli/persistent_execute_blackbox_test.go b/apps/node/internal/adapters/cli/persistent_execute_blackbox_test.go index c0a0ae0..a9cbbf2 100644 --- a/apps/node/internal/adapters/cli/persistent_execute_blackbox_test.go +++ b/apps/node/internal/adapters/cli/persistent_execute_blackbox_test.go @@ -14,7 +14,7 @@ import ( clipkg "iop/apps/node/internal/adapters/cli" "iop/apps/node/internal/adapters/cli/internal/testutil" noderuntime "iop/apps/node/internal/runtime" - "iop/packages/config" + "iop/packages/go/config" ) func TestCLIExecutePersistentWaitsForSlowFirstOutput(t *testing.T) { diff --git a/apps/node/internal/adapters/cli/persistent_output_filter.go b/apps/node/internal/adapters/cli/persistent_output_filter.go index de083d0..fa7fde7 100644 --- a/apps/node/internal/adapters/cli/persistent_output_filter.go +++ b/apps/node/internal/adapters/cli/persistent_output_filter.go @@ -7,7 +7,7 @@ import ( "unicode" "iop/apps/node/internal/adapters/cli/status" - "iop/packages/config" + "iop/packages/go/config" ) type persistentOutputFilter interface { diff --git a/apps/node/internal/adapters/cli/persistent_output_filter_test.go b/apps/node/internal/adapters/cli/persistent_output_filter_test.go index 5520903..dfc4c1a 100644 --- a/apps/node/internal/adapters/cli/persistent_output_filter_test.go +++ b/apps/node/internal/adapters/cli/persistent_output_filter_test.go @@ -4,7 +4,7 @@ import ( "strings" "testing" - "iop/packages/config" + "iop/packages/go/config" ) func TestClaudeTUIOutputFilterExtractsAssistantMessageOnly(t *testing.T) { diff --git a/apps/node/internal/adapters/cli/status/status.go b/apps/node/internal/adapters/cli/status/status.go index 9a98973..4ffade4 100644 --- a/apps/node/internal/adapters/cli/status/status.go +++ b/apps/node/internal/adapters/cli/status/status.go @@ -6,7 +6,7 @@ import ( "path/filepath" "iop/apps/node/internal/runtime" - "iop/packages/config" + "iop/packages/go/config" ) // UsageStatus represents the parsed usage limits of a CLI target. diff --git a/apps/node/internal/adapters/cli/status/status_test.go b/apps/node/internal/adapters/cli/status/status_test.go index a12051d..13dbf53 100644 --- a/apps/node/internal/adapters/cli/status/status_test.go +++ b/apps/node/internal/adapters/cli/status/status_test.go @@ -5,7 +5,7 @@ import ( "strings" "testing" - "iop/packages/config" + "iop/packages/go/config" ) func TestNewChecker_CodexUsesProfileCommand(t *testing.T) { diff --git a/apps/node/internal/adapters/factory.go b/apps/node/internal/adapters/factory.go index 2c11cea..cc5bb4f 100644 --- a/apps/node/internal/adapters/factory.go +++ b/apps/node/internal/adapters/factory.go @@ -10,7 +10,7 @@ import ( "iop/apps/node/internal/adapters/mock" "iop/apps/node/internal/adapters/ollama" "iop/apps/node/internal/adapters/vllm" - "iop/packages/config" + "iop/packages/go/config" iop "iop/proto/gen/iop" ) diff --git a/apps/node/internal/adapters/ollama/ollama.go b/apps/node/internal/adapters/ollama/ollama.go index 0c7c5f7..f59a5bc 100644 --- a/apps/node/internal/adapters/ollama/ollama.go +++ b/apps/node/internal/adapters/ollama/ollama.go @@ -15,7 +15,7 @@ import ( "go.uber.org/zap" "iop/apps/node/internal/runtime" - "iop/packages/config" + "iop/packages/go/config" ) const Name = "ollama" diff --git a/apps/node/internal/adapters/ollama/ollama_test.go b/apps/node/internal/adapters/ollama/ollama_test.go index 807c306..1cdbe6f 100644 --- a/apps/node/internal/adapters/ollama/ollama_test.go +++ b/apps/node/internal/adapters/ollama/ollama_test.go @@ -12,7 +12,7 @@ import ( "go.uber.org/zap" noderuntime "iop/apps/node/internal/runtime" - "iop/packages/config" + "iop/packages/go/config" ) type fakeSink struct { diff --git a/apps/node/internal/adapters/vllm/vllm.go b/apps/node/internal/adapters/vllm/vllm.go index 41e202b..575107f 100644 --- a/apps/node/internal/adapters/vllm/vllm.go +++ b/apps/node/internal/adapters/vllm/vllm.go @@ -14,7 +14,7 @@ import ( "go.uber.org/zap" "iop/apps/node/internal/runtime" - "iop/packages/config" + "iop/packages/go/config" ) const Name = "vllm" diff --git a/apps/node/internal/adapters/vllm/vllm_test.go b/apps/node/internal/adapters/vllm/vllm_test.go index b01db6f..4ecb504 100644 --- a/apps/node/internal/adapters/vllm/vllm_test.go +++ b/apps/node/internal/adapters/vllm/vllm_test.go @@ -9,7 +9,7 @@ import ( "go.uber.org/zap" - "iop/packages/config" + "iop/packages/go/config" ) func TestVllmCapabilitiesQueryModels(t *testing.T) { diff --git a/apps/node/internal/bootstrap/module.go b/apps/node/internal/bootstrap/module.go index 96cb744..c9c9923 100644 --- a/apps/node/internal/bootstrap/module.go +++ b/apps/node/internal/bootstrap/module.go @@ -16,9 +16,9 @@ import ( "iop/apps/node/internal/router" "iop/apps/node/internal/store" "iop/apps/node/internal/transport" - "iop/packages/config" - "iop/packages/events" - "iop/packages/observability" + "iop/packages/go/config" + "iop/packages/go/events" + "iop/packages/go/observability" iop "iop/proto/gen/iop" ) diff --git a/apps/node/internal/bootstrap/module_test.go b/apps/node/internal/bootstrap/module_test.go index 8821795..e55507a 100644 --- a/apps/node/internal/bootstrap/module_test.go +++ b/apps/node/internal/bootstrap/module_test.go @@ -15,7 +15,7 @@ import ( "google.golang.org/protobuf/types/known/structpb" "iop/apps/node/internal/bootstrap" - "iop/packages/config" + "iop/packages/go/config" iop "iop/proto/gen/iop" ) diff --git a/apps/node/internal/transport/integration_test.go b/apps/node/internal/transport/integration_test.go index 3465ac1..1c02b77 100644 --- a/apps/node/internal/transport/integration_test.go +++ b/apps/node/internal/transport/integration_test.go @@ -13,7 +13,7 @@ import ( toki "git.toki-labs.com/toki/proto-socket/go" "iop/apps/node/internal/transport" - eventpkg "iop/packages/events" + eventpkg "iop/packages/go/events" iop "iop/proto/gen/iop" ) diff --git a/apps/node/internal/transport/session.go b/apps/node/internal/transport/session.go index ba1482b..77ab6fd 100644 --- a/apps/node/internal/transport/session.go +++ b/apps/node/internal/transport/session.go @@ -8,7 +8,7 @@ import ( "go.uber.org/zap" "google.golang.org/protobuf/proto" - "iop/packages/events" + "iop/packages/go/events" iop "iop/proto/gen/iop" ) diff --git a/packages/auth/auth.go b/packages/go/auth/auth.go similarity index 100% rename from packages/auth/auth.go rename to packages/go/auth/auth.go diff --git a/packages/config/config.go b/packages/go/config/config.go similarity index 100% rename from packages/config/config.go rename to packages/go/config/config.go diff --git a/packages/config/config_test.go b/packages/go/config/config_test.go similarity index 99% rename from packages/config/config_test.go rename to packages/go/config/config_test.go index 5949bea..a3e767f 100644 --- a/packages/config/config_test.go +++ b/packages/go/config/config_test.go @@ -6,7 +6,7 @@ import ( "strings" "testing" - "iop/packages/config" + "iop/packages/go/config" ) func TestLoadEdge_EdgeIdentity(t *testing.T) { diff --git a/packages/events/events.go b/packages/go/events/events.go similarity index 100% rename from packages/events/events.go rename to packages/go/events/events.go diff --git a/packages/hostsetup/setup.go b/packages/go/hostsetup/setup.go similarity index 100% rename from packages/hostsetup/setup.go rename to packages/go/hostsetup/setup.go diff --git a/packages/hostsetup/setup_test.go b/packages/go/hostsetup/setup_test.go similarity index 100% rename from packages/hostsetup/setup_test.go rename to packages/go/hostsetup/setup_test.go diff --git a/packages/hostsetup/systemd.go b/packages/go/hostsetup/systemd.go similarity index 100% rename from packages/hostsetup/systemd.go rename to packages/go/hostsetup/systemd.go diff --git a/packages/hostsetup/templates.go b/packages/go/hostsetup/templates.go similarity index 100% rename from packages/hostsetup/templates.go rename to packages/go/hostsetup/templates.go diff --git a/packages/jobs/jobs.go b/packages/go/jobs/jobs.go similarity index 100% rename from packages/jobs/jobs.go rename to packages/go/jobs/jobs.go diff --git a/packages/metadata/metadata.go b/packages/go/metadata/metadata.go similarity index 100% rename from packages/metadata/metadata.go rename to packages/go/metadata/metadata.go diff --git a/packages/observability/observability.go b/packages/go/observability/observability.go similarity index 100% rename from packages/observability/observability.go rename to packages/go/observability/observability.go diff --git a/packages/observability/observability_test.go b/packages/go/observability/observability_test.go similarity index 98% rename from packages/observability/observability_test.go rename to packages/go/observability/observability_test.go index 2aba7b4..107da59 100644 --- a/packages/observability/observability_test.go +++ b/packages/go/observability/observability_test.go @@ -6,7 +6,7 @@ import ( "strings" "testing" - "iop/packages/observability" + "iop/packages/go/observability" ) func TestNewLoggerWithFile_EmptyPathFallsBackToStderr(t *testing.T) { diff --git a/packages/policy/engine.go b/packages/go/policy/engine.go similarity index 100% rename from packages/policy/engine.go rename to packages/go/policy/engine.go diff --git a/packages/version/version.go b/packages/go/version/version.go similarity index 100% rename from packages/version/version.go rename to packages/go/version/version.go