From 4d5da983655edb631e2fb7aaecc22a8a828b8f76 Mon Sep 17 00:00:00 2001 From: toki Date: Thu, 21 May 2026 18:42:36 +0900 Subject: [PATCH] update domain rules and add roadmap --- agent-ops/roadmap/ROADMAP.md | 43 +++++++++++++++ agent-ops/roadmap/current.md | 9 +++ .../roadmap/milestones/M01-server-skeleton.md | 55 +++++++++++++++++++ .../roadmap/milestones/M02-workflow-core.md | 48 ++++++++++++++++ .../milestones/M03-external-integration.md | 52 ++++++++++++++++++ agent-ops/rules/project/domain/core/rules.md | 9 +++ .../rules/project/domain/mobile/rules.md | 8 ++- agent-ops/rules/project/domain/web/rules.md | 9 ++- .../project/domain/workspace-ops/rules.md | 13 ++++- agent-ops/rules/project/rules.md | 13 ++++- services/core/README.md | 30 ---------- 11 files changed, 253 insertions(+), 36 deletions(-) create mode 100644 agent-ops/roadmap/ROADMAP.md create mode 100644 agent-ops/roadmap/current.md create mode 100644 agent-ops/roadmap/milestones/M01-server-skeleton.md create mode 100644 agent-ops/roadmap/milestones/M02-workflow-core.md create mode 100644 agent-ops/roadmap/milestones/M03-external-integration.md diff --git a/agent-ops/roadmap/ROADMAP.md b/agent-ops/roadmap/ROADMAP.md new file mode 100644 index 0000000..06607cb --- /dev/null +++ b/agent-ops/roadmap/ROADMAP.md @@ -0,0 +1,43 @@ +# NomadCode 로드맵 + +## 전체 목표 + +NomadCode는 모바일 앱, 웹 콘솔, core 서비스, 공유 계약, agent-operation 규칙을 하나의 원레포로 묶어 AI-assisted development workflow를 조율하는 프로젝트다. + +현재 로드맵은 기존 `services/core/README.md`의 단계별 다음 작업을 `agent-ops/roadmap/` 구조로 옮긴 것이다. 범위는 우선 core 백엔드 오케스트레이션의 서버 골격, workflow 안정화, 외부 통합 준비에 둔다. + +## 현재 위치 + +- 현재 Phase: Phase 1. Server Skeleton +- 기본 Milestone: M01 Server Skeleton +- 상태: 진행 중 + +## Phase 개요 + +### Phase 1. Server Skeleton + +서버 실행 골격, task 저장 구조, 로컬 모델 호출 기반 비동기 job 실행, Adapter stub을 구성한다. + +### Phase 2. Workflow Core + +task 상태 전이와 enqueue / running / completed / failed 흐름을 안정화하고 retry, timeout, notification event의 기본 구조를 정리한다. + +### Phase 3. External Integration + +Plane, Mattermost, Agent Integrator, IOP 연결을 실제 통합 흐름으로 확장한다. + +## Milestone 인덱스 + +| Milestone | Phase | 상태 | 문서 | +|-----------|-------|------|------| +| M01 Server Skeleton | Phase 1. Server Skeleton | 진행 중 | `agent-ops/roadmap/milestones/M01-server-skeleton.md` | +| M02 Workflow Core | Phase 2. Workflow Core | 계획 | `agent-ops/roadmap/milestones/M02-workflow-core.md` | +| M03 External Integration | Phase 3. External Integration | 계획 | `agent-ops/roadmap/milestones/M03-external-integration.md` | + +## 로딩 정책 + +- 일반 기능 작업에서는 이 전체 로드맵을 매번 읽지 않는다. +- 기능 추가, 구조 변경, 스킬 추가/수정, 문서 구조 변경 작업에서는 먼저 `agent-ops/roadmap/current.md`를 읽는다. +- 요청이 기본 Milestone 범위에 맞으면 기본 Milestone 문서를 같은 세션에서 1회 읽는다. +- 요청이 기본 Milestone과 맞지 않으면 `current.md`의 진행 중인 Milestone 목록에서 가장 관련 있는 Milestone 문서를 같은 세션에서 1회 읽는다. +- Phase 전환, Milestone 추가/수정, 전체 로드맵 갱신 요청에서만 `agent-ops/roadmap/ROADMAP.md`를 읽는다. diff --git a/agent-ops/roadmap/current.md b/agent-ops/roadmap/current.md new file mode 100644 index 0000000..b2a5652 --- /dev/null +++ b/agent-ops/roadmap/current.md @@ -0,0 +1,9 @@ +# 현재 로드맵 컨텍스트 + +- 현재 Phase: Phase 1. Server Skeleton +- 기본 Milestone: M01 Server Skeleton +- 기본 Milestone 파일: agent-ops/roadmap/milestones/M01-server-skeleton.md + +## 진행 중인 Milestone + +- M01 Server Skeleton: agent-ops/roadmap/milestones/M01-server-skeleton.md diff --git a/agent-ops/roadmap/milestones/M01-server-skeleton.md b/agent-ops/roadmap/milestones/M01-server-skeleton.md new file mode 100644 index 0000000..cd65990 --- /dev/null +++ b/agent-ops/roadmap/milestones/M01-server-skeleton.md @@ -0,0 +1,55 @@ +# M01 Server Skeleton + +## 목표 + +core 서비스의 서버 실행 골격을 구성하고, task 저장 구조와 로컬 모델 호출 기반 비동기 job 실행 흐름을 마련한다. 외부 통합은 실제 호출 전 단계의 Adapter stub까지 둔다. + +## 단계 + +- Phase: Phase 1. Server Skeleton + +## 상태 + +- 진행 중 + +## 범위 + +- 서버 실행 골격 구성 +- task 저장 구조 구성 +- 로컬 모델 호출 기반 비동기 job 실행 +- Adapter stub 생성 + +## 필수 기능 + +- Go HTTP server 실행 골격 +- health / readiness endpoint +- task 생성, 조회, 목록, enqueue API +- PostgreSQL 기반 task 저장 +- goose migration과 sqlc 기반 DB query 생성 구조 +- River 기반 task job +- 모델 호출 경로 +- Plane Adapter stub +- Mattermost Adapter stub + +## 완료 기준 + +- core 서버를 로컬에서 실행할 수 있다. +- task 생성부터 조회, enqueue까지 기본 API 흐름이 동작한다. +- DB migration과 sqlc query 생성 흐름이 정리되어 있다. +- River job이 task를 처리하는 기본 경로를 가진다. +- Plane과 Mattermost는 실제 API 호출 전 stub 경계로 분리되어 있다. + +## 범위 제외 + +- 실제 Plane API 호출 +- 실제 Mattermost 메시지 발송 +- IOP native protocol 연동 +- Agent Integrator 연동 +- 복잡한 권한 정책 +- 복잡한 workflow DSL + +## 작업 컨텍스트 + +- 이전 출처: `services/core/README.md`의 `## 단계별 다음 작업` +- 주요 작업 영역: `services/core/` +- 검증 기준: core 변경은 `go test ./...` 또는 `bin/test`를 우선 사용한다. diff --git a/agent-ops/roadmap/milestones/M02-workflow-core.md b/agent-ops/roadmap/milestones/M02-workflow-core.md new file mode 100644 index 0000000..b723943 --- /dev/null +++ b/agent-ops/roadmap/milestones/M02-workflow-core.md @@ -0,0 +1,48 @@ +# M02 Workflow Core + +## 목표 + +task 상태 전이를 정리하고 enqueue / running / completed / failed 흐름을 안정화한다. retry, timeout, notification event의 기본 구조를 추가해 core workflow의 운영 기준을 만든다. + +## 단계 + +- Phase: Phase 2. Workflow Core + +## 상태 + +- 계획 + +## 범위 + +- task 상태 전이 정리 +- enqueue / running / completed / failed 흐름 안정화 +- retry / timeout 기본 구조 추가 +- notification event 구조 정리 + +## 필수 기능 + +- task lifecycle 상태 모델 점검 +- scheduler와 workflow service의 상태 전이 책임 정리 +- 실패 task 처리 기준 +- retry와 timeout의 최소 정책 +- notification event 모델과 발행 지점 + +## 완료 기준 + +- task가 enqueue 이후 running, completed, failed 상태로 일관되게 전이된다. +- 실패와 timeout이 관찰 가능한 상태로 남는다. +- retry 정책의 최소 동작 방식이 구현되거나 명확히 문서화된다. +- notification event가 workflow 상태 변화와 연결된다. + +## 범위 제외 + +- 실제 외부 협업 도구로 notification 발송 +- 복잡한 workflow DSL +- 고급 권한 정책 +- multi-tenant 운영 정책 + +## 작업 컨텍스트 + +- 이전 출처: `services/core/README.md`의 `## 단계별 다음 작업` +- 주요 작업 영역: `services/core/internal/workflow/`, `services/core/internal/scheduler/`, `services/core/internal/notification/` +- 검증 기준: scheduler, persistence, adapter behavior를 크게 바꾸면 관련 테스트를 함께 갱신한다. diff --git a/agent-ops/roadmap/milestones/M03-external-integration.md b/agent-ops/roadmap/milestones/M03-external-integration.md new file mode 100644 index 0000000..dbe0948 --- /dev/null +++ b/agent-ops/roadmap/milestones/M03-external-integration.md @@ -0,0 +1,52 @@ +# M03 External Integration + +## 목표 + +Plane, Mattermost, Agent Integrator, IOP 연결을 stub 또는 호환 호출 경로에서 실제 통합 흐름으로 확장한다. + +## 단계 + +- Phase: Phase 3. External Integration + +## 상태 + +- 계획 + +## 범위 + +- Plane issue 생성 / comment / status update 구현 +- Mattermost 메시지 발송 구현 +- Agent Integrator 호출 구조 추가 +- IOP 호출 구조 추가 +- IOP OpenAI-compatible API 경로 정리 +- IOP A2A JSON-RPC 경로 정리 + +## 필수 기능 + +- Plane issue 생성, comment, status update adapter 구현 +- Mattermost 메시지 발송 adapter 구현 +- Agent Integrator 호출 경계 정의 +- IOP OpenAI-compatible API를 단순 모델/chat completion 호환 호출에 사용 +- IOP A2A JSON-RPC 경로를 외부 agent 작업 위임과 task 상태, artifact, cancel 흐름 공유에 사용 + +## 완료 기준 + +- core가 Plane에 issue, comment, status update를 요청할 수 있다. +- core가 Mattermost에 메시지를 발송할 수 있다. +- Agent Integrator 또는 그 대체 연결 지점이 명확히 정의되어 있다. +- IOP compatible 호출 경로가 core workflow와 연결된다. +- 외부 provider별 세부 구현이 adapter 경계 밖으로 새지 않는다. + +## 범위 제외 + +- Outline / Forgejo / Nextcloud 연동 +- MCP 서버 +- Web Agent UI +- Flutter 앱 기능 구현 +- IOP native protocol의 상세 구현은 별도 확정 전까지 제외한다. + +## 작업 컨텍스트 + +- 이전 출처: `services/core/README.md`의 `## 단계별 다음 작업` +- 주요 작업 영역: `services/core/internal/adapters/`, `services/core/internal/scheduler/`, `services/core/internal/workflow/` +- 확인 필요: IOP native protocol과 Agent Integrator의 최종 계약은 구현 전 별도 확인이 필요하다. diff --git a/agent-ops/rules/project/domain/core/rules.md b/agent-ops/rules/project/domain/core/rules.md index d2f4af2..ea6752f 100644 --- a/agent-ops/rules/project/domain/core/rules.md +++ b/agent-ops/rules/project/domain/core/rules.md @@ -8,13 +8,18 @@ NomadCode의 백엔드 오케스트레이션 도메인이다. workflow, scheduli - `services/core/cmd/` — 서버 실행 entrypoint. - `services/core/internal/agent/` — agent 모델과 실행 단위. +- `services/core/internal/config/` — 환경 변수 기반 core 설정 로딩. +- `services/core/internal/model/` — 모델 호출 추상 인터페이스와 입출력 타입. - `services/core/internal/workflow/` — workflow 모델과 서비스. - `services/core/internal/scheduler/` — River 기반 작업 스케줄링과 job 정의. +- `services/core/internal/notification/` — task notification 모델과 발행 서비스. - `services/core/internal/http/` — HTTP router, handlers, middleware. - `services/core/internal/db/` — SQLC 생성 코드, DB pool, persistence 모델. - `services/core/internal/storage/` — 저장소 abstraction. - `services/core/internal/adapters/` — OpenAI, A2A, Mattermost, Plane 등 외부 통합. - `services/core/migrations/`, `services/core/queries/`, `services/core/sqlc.yaml` — DB schema/query 계약. +- `services/core/go.mod`, `services/core/go.sum` — core Go module dependency boundary. +- `services/core/README.md`, `services/core/goose.env.example` — core 실행/운영 문서와 설정 예시. - `services/core/bin/`, `services/core/Makefile`, `services/core/Dockerfile`, `services/core/docker-compose.yml` — backend-local 개발/배포 도구. ## 제외 경로 @@ -27,8 +32,11 @@ NomadCode의 백엔드 오케스트레이션 도메인이다. workflow, scheduli - `internal/http/router.go` — HTTP route 조립. - `internal/http/handlers.go` — API handler. +- `internal/config/config.go` — 환경 변수 기반 설정 로딩. +- `internal/model/model.go` — 모델 client interface와 generation DTO. - `internal/scheduler/river.go` — River scheduler 연결. - `internal/scheduler/jobs.go` — background job 정의. +- `internal/notification/service.go` — task 완료 notification 발행. - `internal/adapters/openai/client.go` — OpenAI integration. - `internal/adapters/a2a/client.go` — A2A integration. - `internal/db/tasks.sql.go` — SQLC generated query boundary. @@ -38,6 +46,7 @@ NomadCode의 백엔드 오케스트레이션 도메인이다. workflow, scheduli - Go package 경계는 `internal/` 단위로 유지한다. - DB 변경은 migration, query, generated code, test를 함께 갱신한다. - 외부 서비스 호출은 `internal/adapters/` 아래에 격리한다. +- 환경 변수 기본값과 alias는 `internal/config`에서 관리하고 README의 실행 예시와 어긋나지 않게 유지한다. - scheduler 변경은 가능한 한 job 단위 테스트를 추가한다. - HTTP API 변경은 web/mobile 영향과 contracts 반영 필요성을 함께 판단한다. diff --git a/agent-ops/rules/project/domain/mobile/rules.md b/agent-ops/rules/project/domain/mobile/rules.md index c7bbe2b..39cbba4 100644 --- a/agent-ops/rules/project/domain/mobile/rules.md +++ b/agent-ops/rules/project/domain/mobile/rules.md @@ -10,7 +10,8 @@ NomadCode의 Flutter 모바일/데스크톱 클라이언트 도메인이다. 앱 - `apps/mobile/lib/services/` — auth, notification, background handlers. - `apps/mobile/test/` — Flutter widget/service tests. - `apps/mobile/android/`, `apps/mobile/ios/`, `apps/mobile/macos/`, `apps/mobile/linux/`, `apps/mobile/windows/`, `apps/mobile/web/` — platform-specific runner/config. -- `apps/mobile/pubspec.yaml`, `apps/mobile/analysis_options.yaml` — Dart/Flutter dependencies and analysis. +- `apps/mobile/pubspec.yaml`, `apps/mobile/pubspec.lock`, `apps/mobile/analysis_options.yaml` — Dart/Flutter dependencies and analysis. +- `apps/mobile/README.md`, `apps/mobile/push-notification-todo.md` — mobile 운영 메모와 push notification 작업 메모. ## 제외 경로 @@ -24,12 +25,16 @@ NomadCode의 Flutter 모바일/데스크톱 클라이언트 도메인이다. 앱 - `lib/services/mattermost_auth_service.dart` — Mattermost auth flow. - `lib/services/push_notification_service.dart` — foreground/background notification setup. - `lib/services/push_notification_background.dart` — background message handler. +- `android/app/src/main/java/com/tokilabs/mattermost/MattermostFirebaseMessagingService.kt` — Android FCM 수신과 Flutter EventChannel bridge. +- `android/app/src/main/java/com/tokilabs/mattermost/NotificationReplyBroadcastReceiver.java` — Android inline reply 처리. +- `android/app/src/main/java/com/tokilabs/mattermost/helpers/` — Android notification, DB, network helper. - `test/widget_test.dart` — baseline widget test. ## 유지할 패턴 - platform-specific permission/capability 변경은 해당 platform 디렉터리와 Dart service 변경을 같이 확인한다. - Firebase Messaging 변경은 foreground, background, permission flow를 함께 검토한다. +- Android native push 변경은 Kotlin/Java receiver/service, manifest, Dart bridge 영향을 함께 확인한다. - public API 호출을 추가하면 contracts/core 영향 여부를 확인한다. - `flutter test`를 기본 검증으로 사용한다. - 현재 baseline의 `avoid_print` info는 별도 cleanup 작업으로 다루고, 기능 변경과 섞지 않는다. @@ -44,6 +49,7 @@ NomadCode의 Flutter 모바일/데스크톱 클라이언트 도메인이다. 앱 ## 금지 사항 - Android/iOS/macOS 권한 변경을 Dart service 변경 없이 단독으로 넣지 않는다. +- Android native notification helper 변경을 FCM service와 reply/dismiss receiver 영향 검토 없이 단독으로 넣지 않는다. - Firebase 초기화/handler 변경을 테스트나 수동 검증 메모 없이 마무리하지 않는다. - generated/platform build output을 의도 없이 커밋하지 않는다. - mobile 내부에 별도 `agent-ops` scaffold를 다시 만들지 않는다. diff --git a/agent-ops/rules/project/domain/web/rules.md b/agent-ops/rules/project/domain/web/rules.md index b8728f4..eb93405 100644 --- a/agent-ops/rules/project/domain/web/rules.md +++ b/agent-ops/rules/project/domain/web/rules.md @@ -13,7 +13,8 @@ NomadCode의 브라우저 운영 콘솔 도메인이다. 프로젝트/agent work - `apps/web/src/stores/` — Zustand 기반 client state. - `apps/web/src/api/` — backend API client. - `apps/web/src/styles/` — global style. -- `apps/web/package.json`, `apps/web/vite.config.ts`, `apps/web/tsconfig.json` — web build/tooling. +- `apps/web/index.html`, `apps/web/.env.example` — Vite HTML entry와 환경 변수 예시. +- `apps/web/package.json`, `apps/web/package-lock.json`, `apps/web/vite.config.ts`, `apps/web/tsconfig.json` — web build/tooling. ## 제외 경로 @@ -23,13 +24,18 @@ NomadCode의 브라우저 운영 콘솔 도메인이다. 프로젝트/agent work ## 주요 구성 요소 +- `src/app/App.tsx` — QueryClient와 router provider 조립. - `src/app/router.tsx` — web route 구성. - `src/layout/AppShell.tsx` — 전체 shell. - `src/layout/AgentSidebar.tsx` — agent context/sidebar 영역. - `src/routes/AgentPage.tsx` — agent workspace page. - `src/routes/ProjectsPage.tsx` — project workspace page. +- `src/routes/SettingsPage.tsx` — integration settings page. - `src/stores/agentStore.ts` — agent interaction state. +- `src/stores/layoutStore.ts` — shell navigation/sidebar state. +- `src/stores/projectStore.ts` — project workspace state. - `src/api/client.ts` — API 호출 공통 client. +- `src/components/settings/IntegrationStatus.tsx` — integration 상태 표시와 테스트 액션 UI. ## 유지할 패턴 @@ -37,6 +43,7 @@ NomadCode의 브라우저 운영 콘솔 도메인이다. 프로젝트/agent work - API 호출 형태가 바뀌면 `src/api`를 먼저 갱신하고, 필요 시 contracts/core 변경을 같은 작업에 포함한다. - shell/navigation 변경은 모바일 viewport도 함께 고려한다. - 새 UI 상태는 route-local state와 shared store 중 책임 범위를 먼저 판단한다. +- settings/integration UI는 실제 API 연결 여부와 placeholder 동작을 구분한다. - `npm run check`가 통과하도록 TypeScript type을 유지한다. ## 다른 도메인과의 경계 diff --git a/agent-ops/rules/project/domain/workspace-ops/rules.md b/agent-ops/rules/project/domain/workspace-ops/rules.md index 85834f3..e0ff6a8 100644 --- a/agent-ops/rules/project/domain/workspace-ops/rules.md +++ b/agent-ops/rules/project/domain/workspace-ops/rules.md @@ -2,16 +2,20 @@ ## 목적 / 책임 -NomadCode 원레포 운영 도메인이다. 루트 helper, 문서, ignore 정책, 원레포 구조, agent-ops project rules를 관리한다. +NomadCode 원레포 운영 도메인이다. 루트 helper, 문서, ignore 정책, 원레포 구조, agent entry 파일, agent-ops project rules와 roadmap을 관리한다. ## 포함 경로 - `bin/` — root test/build/lint/dev helper. - `docs/` — architecture and operations documents. - `README.md` — workspace overview. +- `AGENTS.md`, `CLAUDE.md`, `GEMINI.md` — root agent entry instructions. +- `opencode.json` — agent/tooling configuration. - `.gitignore` — workspace-level ignore policy. +- `agent-ops/.version` — agent-ops framework/version marker. +- `agent-ops/bin/` — agent-ops 초기화, sync, entry file helper. - `agent-ops/rules/project/` — project/domain rules. -- `agent-ops/skills/project/` — project-specific repeatable skills. +- `agent-ops/roadmap/` — project roadmap, current milestone pointer, milestone documents. ## 제외 경로 @@ -26,12 +30,17 @@ NomadCode 원레포 운영 도메인이다. 루트 helper, 문서, ignore 정책 - `bin/build` — build entrypoint. - `bin/dev` — development entrypoint 안내. - `docs/monorepo.md` — monorepo layout 설명. +- `AGENTS.md`, `CLAUDE.md`, `GEMINI.md` — agent별 루트 진입 규칙. - `agent-ops/rules/project/rules.md` — 프로젝트 전체 agent routing. +- `agent-ops/roadmap/ROADMAP.md` — 전체 Phase와 Milestone index. +- `agent-ops/roadmap/current.md` — 현재 Phase와 기본 Milestone pointer. +- `agent-ops/bin/sync.sh` — agent-ops 동기화 helper. ## 유지할 패턴 - root helper는 누락된 도구를 친절하게 skip하거나 명확히 실패한다. - 공통 agent-ops 영역과 프로젝트 특화 영역을 섞지 않는다. +- roadmap은 `agent-ops/roadmap/`에 두고, 서비스별 README에 Phase 계획을 중복 유지하지 않는다. - `.gitignore`에는 private rules만 제외하고, `agent-task/archive/**`는 AI ignore/permission 파일에서 제어한다. - 원레포 구조 변경은 README와 docs를 함께 갱신한다. diff --git a/agent-ops/rules/project/rules.md b/agent-ops/rules/project/rules.md index f4ebb8f..0646d34 100644 --- a/agent-ops/rules/project/rules.md +++ b/agent-ops/rules/project/rules.md @@ -17,7 +17,7 @@ NomadCode는 AI 병렬 작업 운용을 위한 원레포다. 백엔드 오케스 - `packages/contracts/` — 서비스와 클라이언트가 공유하는 API/schema 계약. - `bin/` — 원레포 공통 test/build/lint/dev entrypoint. - `docs/` — 아키텍처와 운영 문서. -- `agent-ops/` — 에이전트 공통 규칙, project/domain rules, 반복 작업 skill. +- `agent-ops/` — 에이전트 공통 규칙, project/domain rules, roadmap, 반복 작업 skill. ## 기술 스택 @@ -44,7 +44,7 @@ NomadCode는 AI 병렬 작업 운용을 위한 원레포다. 백엔드 오케스 | `apps/web/**` | web | `agent-ops/rules/project/domain/web/rules.md` | | `apps/mobile/**` | mobile | `agent-ops/rules/project/domain/mobile/rules.md` | | `packages/contracts/**` | contracts | `agent-ops/rules/project/domain/contracts/rules.md` | -| `bin/**`, `docs/**`, `README.md`, `.gitignore` | workspace-ops | `agent-ops/rules/project/domain/workspace-ops/rules.md` | +| `bin/**`, `docs/**`, `README.md`, `.gitignore`, `AGENTS.md`, `CLAUDE.md`, `GEMINI.md`, `opencode.json`, `agent-ops/.version`, `agent-ops/bin/**`, `agent-ops/roadmap/**`, `agent-ops/rules/project/**` | workspace-ops | `agent-ops/rules/project/domain/workspace-ops/rules.md` | ## 스킬 라우팅 @@ -57,6 +57,15 @@ NomadCode는 AI 병렬 작업 운용을 위한 원레포다. 백엔드 오케스 | 코드 리뷰 | `agent-ops/skills/common/code-review/SKILL.md` | | 커밋/푸시 | `agent-ops/skills/common/commit-push/SKILL.md` | +## 마일스톤 컨텍스트 로딩 + +- 기능 추가, 구조 변경, 스킬 추가/수정, 문서 구조 변경 작업을 수행할 때는 `agent-ops/roadmap/current.md`를 먼저 읽는다. +- 요청이 기본 Milestone 범위에 맞으면 기본 Milestone 문서를 같은 세션에서 1회 읽는다. +- 요청이 기본 Milestone과 맞지 않으면 `current.md`의 진행 중인 Milestone 목록에서 가장 관련 있는 Milestone 문서를 같은 세션에서 1회 읽는다. +- 진행 중인 Milestone에도 맞지 않으면 `agent-ops/roadmap/ROADMAP.md`의 Milestone 인덱스를 확인하고 사용자에게 진행/전환 여부를 확인한다. +- `agent-ops/roadmap/ROADMAP.md`는 로드맵 생성/갱신, Phase 전환, Milestone 추가/수정 요청이 있을 때만 읽는다. +- 작업 요청이 선택된 Milestone의 목표 또는 범위 제외 항목과 충돌하면 구현 전에 사용자에게 알리고 방향을 확인한다. + ## 주의사항 - `agent-task/archive/**`는 읽지 않는다. 필요 시 사용자가 명시적으로 요청했을 때만 본다. diff --git a/services/core/README.md b/services/core/README.md index acdd333..223c49a 100644 --- a/services/core/README.md +++ b/services/core/README.md @@ -32,36 +32,6 @@ NomadCode Core는 사용자 요청을 작업 단위로 받고, 작업 상태를 - 복잡한 권한 정책 - 복잡한 workflow DSL -## 단계별 다음 작업 - -### Phase 1. Server Skeleton - -현재 스캐폴드 단계입니다. - -목표: -- 서버 실행 골격 구성 -- task 저장 구조 구성 -- 로컬 모델 호출 기반 비동기 job 실행 -- Adapter stub 생성 - -### Phase 2. Workflow Core - -목표: -- task 상태 전이 정리 -- enqueue / running / completed / failed 흐름 안정화 -- retry / timeout 기본 구조 추가 -- notification event 구조 정리 - -### Phase 3. External Integration - -목표: -- Plane issue 생성 / comment / status update 구현 -- Mattermost 메시지 발송 구현 -- Agent Integrator 호출 구조 추가 -- IOP 호출 구조 추가 -- IOP의 OpenAI-compatible API 경로는 단순 모델/chat completion 호환 호출에 사용 -- IOP의 A2A JSON-RPC 경로는 Core가 Edge 실행 그룹이나 외부 agent에게 작업을 위임하고 task 상태/artifact/cancel 흐름을 공유할 때 사용 - ## 실행 방법 로컬 실행은 현재 개발 호스트의 Go와 `code-server` compose에 붙은 PostgreSQL/Redis가 있다는 전제로 진행합니다. local 기본 `DATABASE_URL`은 `postgres://nomadcode:nomadcode@code-server-postgres:5432/nomadcode-core-local?sslmode=disable` 이고, local 기본 `REDIS_URL`은 `redis://code-server-redis:6379/3`, `REDIS_KEY_PREFIX`는 `nomadcode-core:local` 입니다. dev 배포는 Docker Compose로 실행하며, 같은 `code-server-postgres` Postgres와 `code-server-redis` Redis를 사용합니다. dev DB명은 `nomad-core-dev` 이고, dev 기본 `REDIS_URL`은 `redis://code-server-redis:6379/4`, `REDIS_KEY_PREFIX`는 `nomadcode-core:dev` 입니다. `AUTH_PASSWORD`를 설정하면 `/readyz`와 `/api/*`에 HTTP Basic Auth가 적용됩니다. 모델 호출의 장기 대상은 IOP Edge의 OpenAI-compatible input surface이며, 현재 core model client는 Responses API 형식을 사용합니다. fallback 기본값은 direct Ollama `MODEL_BASE_URL=http://192.168.0.91:11434`, `MODEL_NAME=qwen3.6:35b-a3b-bf16`, `MODEL_CONTEXT_SIZE=262144`, `MODEL_TIMEOUT_SEC=300` 입니다. A2A agent 호출 endpoint는 `A2A_EDGE_URL`로 설정하고, 기존 `A2A_AGENT_URL`도 fallback alias로 받습니다. bearer token은 `A2A_TOKEN`, timeout은 `A2A_TIMEOUT_SEC`로 설정합니다.