diff --git a/cmd/inbox/main.go b/cmd/inbox/main.go deleted file mode 100644 index 2f0a3e6..0000000 --- a/cmd/inbox/main.go +++ /dev/null @@ -1,11 +0,0 @@ -package main - -import ( - "os" - - inboxcli "ai-workflow-skill/packages/inbox-runtime/cli/inbox" -) - -func main() { - os.Exit(inboxcli.Execute(os.Args[1:], os.Stdout, os.Stderr)) -} diff --git a/cmd/orch/main.go b/cmd/orch/main.go deleted file mode 100644 index a294cbd..0000000 --- a/cmd/orch/main.go +++ /dev/null @@ -1,11 +0,0 @@ -package main - -import ( - "os" - - orchcli "ai-workflow-skill/packages/orch-runtime/cli/orch" -) - -func main() { - os.Exit(orchcli.Execute(os.Args[1:], os.Stdout, os.Stderr)) -} diff --git a/cmd/orchd/main.go b/cmd/orchd/main.go deleted file mode 100644 index 430e0c8..0000000 --- a/cmd/orchd/main.go +++ /dev/null @@ -1,11 +0,0 @@ -package main - -import ( - "os" - - "ai-workflow-skill/packages/orchd-runtime/server" -) - -func main() { - os.Exit(server.Execute(os.Args[1:], os.Stderr)) -} diff --git a/docs/implementation-roadmap.md b/docs/implementation-roadmap.md index 4e0bfb0..09fe02a 100644 --- a/docs/implementation-roadmap.md +++ b/docs/implementation-roadmap.md @@ -30,8 +30,8 @@ As of now: - the original five `docs/tests/orch-skill/` cases also include recorded real subagent-forward runs captured on `2026-03-19`, with spawned leader and worker agents using the packaged `skills/orch/` and `skills/inbox/` bundles - a council-review skill forward-test plan directory now exists under `docs/tests/council-review-skill/`, with a shared execution contract and nine council workflow scenarios covering end-to-end flow, unanimous-only defaults, timeout/before-tally errors, explicit minority reporting, invalid report filters, strict tally semantics, malformed reviewer JSON, and target-file inputs - an execution-roadmap workflow now exists under `docs/roadmaps/active/` and `docs/roadmaps/archive/` for agent-level work traces and completion archives -- a forward-looking web product monorepo plan now exists under `docs/web-product-monorepo.md`, defining the recommended React frontend, `chi` HTTP service, `cmd/orchd` entrypoint, and shared application/query layering for future web work -- the Phase 1 web-product skeleton is now in place, including root `pnpm` workspace files, a standalone React app under `apps/web`, an initial OpenAPI/events contract under `api/`, and a new `cmd/orchd` HTTP service backed by `internal/app`, `internal/query`, and `internal/httpapi` +- a forward-looking web product monorepo plan now exists under `docs/web-product-monorepo.md`, defining the recommended React frontend, `chi` HTTP service, and the package-owned `orchd` runtime path for future web work +- the Phase 1 web-product skeleton is now in place, including root `pnpm` workspace files, a standalone React app under `apps/web`, an initial OpenAPI/events contract under `api/`, and the package-owned `orchd` backend runtime - `orchd` now serves a minimal read-only web API with `chi`, including `/health`, runs list/detail, run task list, blocked-task list, and thread detail endpoints backed by the existing SQLite state - HTTP tests now cover the initial read-only `orchd` slice, and the new frontend workspace builds successfully with `pnpm run web:build` - Phase 2 frontend work has now started by bootstrapping `apps/web` with copied-in `cadence-ui` tokens and foundational components for button, input, textarea, dialog, form, tabs, card, badge, and alert, with the shared token stylesheet loaded from the frontend entrypoint @@ -116,12 +116,10 @@ Goal: Recommended shape: -- `cmd/inbox` -- `cmd/orch` -- `internal/db` -- `internal/store` -- `internal/protocol` -- `internal/cli` +- `packages/coord-core` +- `packages/inbox-runtime` +- `packages/orch-runtime` +- compatibility shims only at the root if still needed temporarily Definition of done: @@ -393,10 +391,7 @@ Add: - `apps/web` - `api/openapi.yaml` - `api/events.md` -- `cmd/orchd` -- `internal/app` -- `internal/query` -- `internal/httpapi` +- `packages/orchd-runtime` Definition of done: @@ -412,10 +407,10 @@ Completed so far: - root `package.json`, `pnpm-workspace.yaml`, and `pnpm-lock.yaml` now define the monorepo JS workspace - `apps/web` now contains a Vite + React + TypeScript + TanStack Router + TanStack Query frontend shell -- `cmd/orchd` now opens the shared SQLite database, applies migrations, and serves a `chi` router with graceful shutdown handling -- `internal/query` now exposes run list/detail, run tasks, blocked-task, and thread-detail read models for the web surface -- `internal/app` now provides a thin web-service boundary over the new read service -- `internal/httpapi` now owns HTTP routing, JSON/error helpers, and the initial read-only endpoints +- `packages/orchd-runtime/cmd/orchd` now opens the shared SQLite database, applies migrations, and serves a `chi` router with graceful shutdown handling +- `packages/orchd-runtime/internal/query` now exposes run list/detail, run tasks, blocked-task, and thread-detail read models for the web surface +- `packages/orchd-runtime/internal/app` now provides a thin web-service boundary over the new read service +- `packages/orchd-runtime/internal/httpapi` now owns HTTP routing, JSON/error helpers, and the initial read-only endpoints - `api/openapi.yaml` now documents the implemented read-only endpoints and response shapes - `api/events.md` now captures the planned SSE contract for the next realtime slice - `go test ./...` covers the new HTTP slice, and `pnpm run web:build` succeeds for the frontend workspace @@ -494,16 +489,16 @@ Completed so far: - the repository-level migration design is captured in `docs/skill-workspace-monorepo.md` - the target package split now distinguishes `coord-core`, runtime packages, skill bundles, and support apps - the migration plan now defines phased extraction for `coord-core`, `inbox-runtime`, `orch-runtime`, `orchd-runtime`, and `repo-memory-runtime` -- root `go.work` now includes the current root module plus the initial runtime package module roots under `packages/` -- `pnpm-workspace.yaml` now includes `packages/*`, and root `package.json` now exposes monorepo bundle planning and validation scripts +- root `go.work` now includes the package-owned runtime module roots under `packages/` +- `pnpm-workspace.yaml` now includes `packages/*`, and root `package.json` now exposes monorepo bundle planning, validation, and Go package test scripts - initial module roots now exist for `packages/coord-core`, `packages/inbox-runtime`, `packages/orch-runtime`, `packages/orchd-runtime`, and `packages/repo-memory-runtime` - `scripts/skill-bundles.json` now records the first package-oriented skill bundle metadata, including the future `repo-memory` runtime mapping - `scripts/package_skill_runtimes.sh` now provides a declarative bundle plan/validate scaffold that targets package paths rather than hardcoded root runtime paths - `packages/coord-core/db` now owns the shared SQLite open, pragmas, migrations, and coordination schema files - `packages/coord-core/protocol` now owns the shared JSON and CLI error helpers used across the coordination stack - `packages/coord-core/store` now owns the shared inbox, orch, and council store logic plus its coordination-domain tests -- root coordination runtimes under `cmd/`, `internal/cli/`, `internal/app/`, `internal/httpapi/`, and `internal/query/` now import `coord-core` instead of depending on root `internal/db`, `internal/store`, or root `internal/protocol` -- `go test ./...` still passes for the root module, and `go test ./...` passes inside `packages/coord-core` +- package-owned coordination runtimes now depend on `packages/coord-core` instead of root `internal/db`, `internal/store`, or root `internal/protocol` +- package-oriented Go validation now runs through the workspace runtime packages, and `packages/coord-core` passes `go test ./...` - `packages/inbox-runtime/cmd/inbox` plus `packages/inbox-runtime/internal/cli/inbox` now provide a package-owned inbox runtime and pass `go test ./...` - `packages/orch-runtime/cmd/orch` plus `packages/orch-runtime/internal/cli/orch` now provide a package-owned orch runtime and pass `go test ./...` - `scripts/skill-bundles.json` now marks `inbox`, `orch`, and `council-review` as ready package-backed bundles @@ -513,8 +508,8 @@ Completed so far: - `packages/repo-memory-runtime/cmd/briefdb` plus its package-local `internal/brief` and `internal/store` now provide a package-owned repo-memory runtime and pass `go test ./...` - `skills/repo-memory/` now exists with `SKILL.md`, `agents/openai.yaml`, and a bundled `assets/briefdb` binary produced by the declarative packaging flow - `docs/tests/repo-memory-skill/` now exists with a README plus an initial forward-test case covering search-before-add and durable entry retrieval through the bundled skill -- root `cmd/inbox`, `cmd/orch`, and `cmd/orchd` now act as compatibility shims that invoke package-owned runtimes instead of root-owned runtime implementations - legacy root runtime implementation directories under `internal/` have been removed now that package-owned runtimes and package-backed skill bundles are in place +- legacy root `cmd/` compatibility shims have also been removed, so package-owned runtimes under `packages/*/cmd/*` are now the only maintained Go entrypoints Remaining: diff --git a/docs/roadmaps/archive/remove-root-cmd-compat-shims.md b/docs/roadmaps/archive/remove-root-cmd-compat-shims.md new file mode 100644 index 0000000..26cd86a --- /dev/null +++ b/docs/roadmaps/archive/remove-root-cmd-compat-shims.md @@ -0,0 +1,60 @@ +# Remove Root Cmd Compatibility Shims + +## Status + +- `completed` + +## Owner + +- Codex + +## Started At + +- `2026-03-20` + +## Goal + +- Remove the legacy root `cmd/` compatibility shims now that package-owned runtimes are the source of truth, and clean up the remaining current docs and test indexes that still point at deleted root runtime paths. + +## Scope + +- remove root `cmd/inbox`, `cmd/orch`, and `cmd/orchd` +- update current docs and test-plan indexes that still reference removed root runtime paths +- keep package-owned runtime workflows and skill packaging validated after the cleanup + +## Checklist + +- [x] inspect remaining references to root `cmd/` and deleted root `internal/` runtime paths +- [x] update current docs and test indexes to point at package-owned runtime paths +- [x] remove the root `cmd/` files and any now-unneeded root shim wiring +- [x] validate package-owned runtime and skill packaging workflows after the cleanup +- [x] update roadmap state and archive this workstream if complete + +## Files + +- `docs/roadmaps/archive/remove-root-cmd-compat-shims.md` +- `cmd/` +- `docs/implementation-roadmap.md` +- `docs/tests/` +- `docs/skill-workspace-monorepo.md` +- `docs/web-product-monorepo.md` +- `go.mod` + +## Decisions + +- treat archived roadmaps as historical records; fix only current source-of-truth docs and current test indexes unless a broken archived reference blocks real workflows + +## Blockers + +- none + +## Next Step + +- continue routine feature work on top of the package-owned runtime workspace without recreating root-owned Go entrypoints + +## Completion Summary + +- updated the current inbox and orch test-plan indexes so they now point at package-owned runtime test files instead of deleted root `internal/cli/*` paths +- removed the root `cmd/` compatibility shims and the now-unneeded root Go module files so package-owned runtimes under `packages/*/cmd/*` are the only maintained Go entrypoints +- added a root `pnpm run go:test` script that validates package-owned Go runtimes directly, replacing reliance on a root Go module +- synchronized the current implementation and web monorepo docs with the package-owned runtime layout after the cleanup diff --git a/docs/skill-workspace-monorepo.md b/docs/skill-workspace-monorepo.md index d6576b2..92ee8f1 100644 --- a/docs/skill-workspace-monorepo.md +++ b/docs/skill-workspace-monorepo.md @@ -143,7 +143,7 @@ This package owns the inbox worker-facing runtime. It should contain: - `cmd/inbox/main.go` -- CLI command wiring currently under `internal/cli/inbox` +- package-local CLI command wiring under `internal/cli/inbox` - inbox-specific packaging tests It depends on `coord-core`. @@ -155,7 +155,7 @@ This package owns the orch leader-facing runtime. It should contain: - `cmd/orch/main.go` -- CLI command wiring currently under `internal/cli/orch` +- package-local CLI command wiring under `internal/cli/orch` - worktree-specific runtime helpers currently owned only by orch It depends on `coord-core`. @@ -170,9 +170,9 @@ This package owns the HTTP and read-model runtime for the operator web surface. It should contain: - `cmd/orchd/main.go` -- current `internal/httpapi` -- current `internal/query` -- current `internal/app/web.go` +- package-local `internal/httpapi` +- package-local `internal/query` +- package-local `internal/app/web.go` It depends on `coord-core`. @@ -446,6 +446,9 @@ This migration does not require: - moving every support app into `packages/` - forcing every skill to own its own runtime package when runtime reuse is intentional +The migration does remove root runtime ownership once package-owned runtimes are in place. +Root `cmd/` and root `internal/` are not part of the long-term target shape. + ## Success Criteria The migration is complete when: diff --git a/docs/tests/inbox/README.md b/docs/tests/inbox/README.md index 19c5e52..da44949 100644 --- a/docs/tests/inbox/README.md +++ b/docs/tests/inbox/README.md @@ -62,7 +62,7 @@ Unless a case says otherwise: ## Relationship To Automated Tests -The current best executable reference is [internal/cli/inbox/integration_test.go](../../../internal/cli/inbox/integration_test.go). +The current best executable reference is [integration_test.go](../../../packages/inbox-runtime/internal/cli/inbox/integration_test.go). When this Markdown plan is expanded: diff --git a/docs/tests/inbox/ROADMAP.md b/docs/tests/inbox/ROADMAP.md index 4f2d40d..5f2cda0 100644 --- a/docs/tests/inbox/ROADMAP.md +++ b/docs/tests/inbox/ROADMAP.md @@ -118,12 +118,12 @@ Allowed status values in this roadmap: The Markdown test-plan set starts at zero, but these automated tests already exist and should be used as source material when writing the docs: -- [integration_test.go](../../../internal/cli/inbox/integration_test.go#L12) `TestInboxLifecycle` -- [integration_test.go](../../../internal/cli/inbox/integration_test.go#L176) `TestInboxFailLifecycle` -- [integration_test.go](../../../internal/cli/inbox/integration_test.go#L243) `TestInboxRenewWaitReplyAndCancel` -- [integration_test.go](../../../internal/cli/inbox/integration_test.go#L392) `TestInboxWatchListUnreadAndAppend` -- [integration_test.go](../../../internal/cli/inbox/integration_test.go#L549) `TestInboxUnreadReadCursor` -- [integration_test.go](../../../internal/cli/inbox/integration_test.go#L639) `TestInboxJSONErrorsAndExitCodes` +- [integration_test.go](../../../packages/inbox-runtime/internal/cli/inbox/integration_test.go#L12) `TestInboxLifecycle` +- [integration_test.go](../../../packages/inbox-runtime/internal/cli/inbox/integration_test.go#L176) `TestInboxFailLifecycle` +- [integration_test.go](../../../packages/inbox-runtime/internal/cli/inbox/integration_test.go#L243) `TestInboxRenewWaitReplyAndCancel` +- [integration_test.go](../../../packages/inbox-runtime/internal/cli/inbox/integration_test.go#L392) `TestInboxWatchListUnreadAndAppend` +- [integration_test.go](../../../packages/inbox-runtime/internal/cli/inbox/integration_test.go#L549) `TestInboxUnreadReadCursor` +- [integration_test.go](../../../packages/inbox-runtime/internal/cli/inbox/integration_test.go#L639) `TestInboxJSONErrorsAndExitCodes` These tests do not remove the need for the Markdown plan. They only reduce discovery work. diff --git a/docs/tests/orch/README.md b/docs/tests/orch/README.md index 6ee48e2..67c538f 100644 --- a/docs/tests/orch/README.md +++ b/docs/tests/orch/README.md @@ -65,7 +65,7 @@ Unless a case says otherwise: ## Relationship To Automated Tests -The current best executable reference is [internal/cli/orch/integration_test.go](../../../internal/cli/orch/integration_test.go). +The current best executable reference is [integration_test.go](../../../packages/orch-runtime/internal/cli/orch/integration_test.go). When this Markdown plan expands: diff --git a/docs/tests/orch/ROADMAP.md b/docs/tests/orch/ROADMAP.md index 7771ab3..0bf0269 100644 --- a/docs/tests/orch/ROADMAP.md +++ b/docs/tests/orch/ROADMAP.md @@ -123,47 +123,47 @@ Allowed status values in this roadmap: The Markdown test-plan set starts at zero, but these automated tests already exist and should be used as source material when writing the docs: -- [integration_test.go](../../../internal/cli/orch/integration_test.go#L12) `TestOrchRunDispatchReconcileLifecycle` -- [integration_test.go](../../../internal/cli/orch/integration_test.go#L184) `TestOrchDependencyBlockedAndAnswerFlow` -- [integration_test.go](../../../internal/cli/orch/integration_test.go#L458) `TestOrchDispatchRejectsNonReadyTask` -- [integration_test.go](../../../internal/cli/orch/integration_test.go#L512) `TestOrchDispatchCreatesStrictWorktree` -- [integration_test.go](../../../internal/cli/orch/integration_test.go#L631) `TestOrchStrictWorktreeRejectsDirtyRepoWithoutBaseRef` -- [integration_test.go](../../../internal/cli/orch/integration_test.go#L680) `TestOrchStrictWorktreeAllowsExplicitBaseRefOnDirtyRepo` -- [integration_test.go](../../../internal/cli/orch/integration_test.go#L733) `TestOrchDispatchAutoEnablesWorktreeForCodeLikeTask` -- [integration_test.go](../../../internal/cli/orch/integration_test.go#L782) `TestOrchDispatchDoesNotAutoEnableWorktreeForNonCodeTask` -- [integration_test.go](../../../internal/cli/orch/integration_test.go#L829) `TestOrchWaitWakesOnBlockedEvent` -- [integration_test.go](../../../internal/cli/orch/integration_test.go#L944) `TestOrchWaitTimesOutWithoutMatchingEvent` -- [integration_test.go](../../../internal/cli/orch/integration_test.go#L981) `TestOrchRetryCreatesNewAttempt` -- [integration_test.go](../../../internal/cli/orch/integration_test.go#L1079) `TestOrchReassignCancelsOldThreadAndDispatchesNewAttempt` -- [integration_test.go](../../../internal/cli/orch/integration_test.go#L1186) `TestOrchCancelTaskAndRun` -- [integration_test.go](../../../internal/cli/orch/integration_test.go#L1315) `TestOrchCleanupRemovesCompletedWorktree` -- [integration_test.go](../../../internal/cli/orch/integration_test.go#L1402) `TestOrchCouncilStartDispatchesThreeReviewers` -- [integration_test.go](../../../internal/cli/orch/integration_test.go#L1545) `TestOrchCouncilWaitWakesWhenAllReviewersComplete` -- [integration_test.go](../../../internal/cli/orch/integration_test.go#L1678) `TestOrchCouncilWaitTimesOutWhenReviewersIncomplete` -- [integration_test.go](../../../internal/cli/orch/integration_test.go#L1715) `TestOrchCouncilTallyGroupsReviewerFindingsNormal` -- [integration_test.go](../../../internal/cli/orch/integration_test.go#L1813) `TestOrchCouncilTallyStrictKeepsDistinctProposals` -- [integration_test.go](../../../internal/cli/orch/integration_test.go#L1873) `TestOrchCouncilReportDefaultShowsConsensusAndMajority` -- [integration_test.go](../../../internal/cli/orch/integration_test.go#L1950) `TestOrchCouncilReportShowAllIncludesMinority` -- [integration_test.go](../../../internal/cli/orch/integration_test.go#L1979) `TestOrchCouncilReportJSONShape` -- [command_contracts_core_test.go](../../../internal/cli/orch/command_contracts_core_test.go) `TestOrchRunShowReturnsRunSummaryAndTaskCounts` -- [command_contracts_core_test.go](../../../internal/cli/orch/command_contracts_core_test.go) `TestOrchRunShowRejectsMissingRun` -- [command_contracts_core_test.go](../../../internal/cli/orch/command_contracts_core_test.go) `TestOrchTaskAddRejectsInvalidAcceptanceJSON` -- [command_contracts_core_test.go](../../../internal/cli/orch/command_contracts_core_test.go) `TestOrchTaskAddRejectsInvalidPriority` -- [command_contracts_core_test.go](../../../internal/cli/orch/command_contracts_core_test.go) `TestOrchReadyOrdersByPriorityAndRespectsLimit` -- [command_contracts_edges_test.go](../../../internal/cli/orch/command_contracts_edges_test.go) `TestOrchAnswerAcceptsPayloadJSONWithoutBody` -- [command_contracts_edges_test.go](../../../internal/cli/orch/command_contracts_edges_test.go) `TestOrchAnswerRejectsEmptyBodyAndPayload` -- [command_contracts_edges_test.go](../../../internal/cli/orch/command_contracts_edges_test.go) `TestOrchCleanupRejectsAttemptWithoutTask` -- [command_contracts_edges_test.go](../../../internal/cli/orch/command_contracts_edges_test.go) `TestOrchCleanupReturnsNoMatchingWorkWhenFiltersMiss` -- [command_contracts_remaining_test.go](../../../internal/cli/orch/command_contracts_remaining_test.go) `TestOrchRunInitCreatesNewRun` -- [command_contracts_remaining_test.go](../../../internal/cli/orch/command_contracts_remaining_test.go) `TestOrchDispatchCreatesAttemptAndThreadForReadyTask` -- [command_contracts_remaining_test.go](../../../internal/cli/orch/command_contracts_remaining_test.go) `TestOrchBlockedListsLatestQuestionForBlockedTask` -- [command_contracts_remaining_test.go](../../../internal/cli/orch/command_contracts_remaining_test.go) `TestOrchStatusReturnsRunSummaryAndTaskList` -- [command_contracts_remaining_test.go](../../../internal/cli/orch/command_contracts_remaining_test.go) `TestOrchReconcileMapsFailedThreadToTerminalTaskState` -- [command_contracts_remaining_test.go](../../../internal/cli/orch/command_contracts_remaining_test.go) `TestOrchWorkflowStrictWorktreeDispatchToCleanup` -- [command_contracts_remaining_test.go](../../../internal/cli/orch/command_contracts_remaining_test.go) `TestOrchWorkflowCouncilReviewEndToEnd` -- [council_report_contracts_test.go](../../../internal/cli/orch/council_report_contracts_test.go) `TestOrchCouncilReportRejectsBeforeTally` -- [council_report_contracts_test.go](../../../internal/cli/orch/council_report_contracts_test.go) `TestOrchCouncilReportRejectsInvalidShow` -- [council_report_contracts_test.go](../../../internal/cli/orch/council_report_contracts_test.go) `TestOrchCouncilReportDefaultsToConsensusForOnlyUnanimousRun` +- [integration_test.go](../../../packages/orch-runtime/internal/cli/orch/integration_test.go#L12) `TestOrchRunDispatchReconcileLifecycle` +- [integration_test.go](../../../packages/orch-runtime/internal/cli/orch/integration_test.go#L184) `TestOrchDependencyBlockedAndAnswerFlow` +- [integration_test.go](../../../packages/orch-runtime/internal/cli/orch/integration_test.go#L458) `TestOrchDispatchRejectsNonReadyTask` +- [integration_test.go](../../../packages/orch-runtime/internal/cli/orch/integration_test.go#L512) `TestOrchDispatchCreatesStrictWorktree` +- [integration_test.go](../../../packages/orch-runtime/internal/cli/orch/integration_test.go#L631) `TestOrchStrictWorktreeRejectsDirtyRepoWithoutBaseRef` +- [integration_test.go](../../../packages/orch-runtime/internal/cli/orch/integration_test.go#L680) `TestOrchStrictWorktreeAllowsExplicitBaseRefOnDirtyRepo` +- [integration_test.go](../../../packages/orch-runtime/internal/cli/orch/integration_test.go#L733) `TestOrchDispatchAutoEnablesWorktreeForCodeLikeTask` +- [integration_test.go](../../../packages/orch-runtime/internal/cli/orch/integration_test.go#L782) `TestOrchDispatchDoesNotAutoEnableWorktreeForNonCodeTask` +- [integration_test.go](../../../packages/orch-runtime/internal/cli/orch/integration_test.go#L829) `TestOrchWaitWakesOnBlockedEvent` +- [integration_test.go](../../../packages/orch-runtime/internal/cli/orch/integration_test.go#L944) `TestOrchWaitTimesOutWithoutMatchingEvent` +- [integration_test.go](../../../packages/orch-runtime/internal/cli/orch/integration_test.go#L981) `TestOrchRetryCreatesNewAttempt` +- [integration_test.go](../../../packages/orch-runtime/internal/cli/orch/integration_test.go#L1079) `TestOrchReassignCancelsOldThreadAndDispatchesNewAttempt` +- [integration_test.go](../../../packages/orch-runtime/internal/cli/orch/integration_test.go#L1186) `TestOrchCancelTaskAndRun` +- [integration_test.go](../../../packages/orch-runtime/internal/cli/orch/integration_test.go#L1315) `TestOrchCleanupRemovesCompletedWorktree` +- [integration_test.go](../../../packages/orch-runtime/internal/cli/orch/integration_test.go#L1402) `TestOrchCouncilStartDispatchesThreeReviewers` +- [integration_test.go](../../../packages/orch-runtime/internal/cli/orch/integration_test.go#L1545) `TestOrchCouncilWaitWakesWhenAllReviewersComplete` +- [integration_test.go](../../../packages/orch-runtime/internal/cli/orch/integration_test.go#L1678) `TestOrchCouncilWaitTimesOutWhenReviewersIncomplete` +- [integration_test.go](../../../packages/orch-runtime/internal/cli/orch/integration_test.go#L1715) `TestOrchCouncilTallyGroupsReviewerFindingsNormal` +- [integration_test.go](../../../packages/orch-runtime/internal/cli/orch/integration_test.go#L1813) `TestOrchCouncilTallyStrictKeepsDistinctProposals` +- [integration_test.go](../../../packages/orch-runtime/internal/cli/orch/integration_test.go#L1873) `TestOrchCouncilReportDefaultShowsConsensusAndMajority` +- [integration_test.go](../../../packages/orch-runtime/internal/cli/orch/integration_test.go#L1950) `TestOrchCouncilReportShowAllIncludesMinority` +- [integration_test.go](../../../packages/orch-runtime/internal/cli/orch/integration_test.go#L1979) `TestOrchCouncilReportJSONShape` +- [command_contracts_core_test.go](../../../packages/orch-runtime/internal/cli/orch/command_contracts_core_test.go) `TestOrchRunShowReturnsRunSummaryAndTaskCounts` +- [command_contracts_core_test.go](../../../packages/orch-runtime/internal/cli/orch/command_contracts_core_test.go) `TestOrchRunShowRejectsMissingRun` +- [command_contracts_core_test.go](../../../packages/orch-runtime/internal/cli/orch/command_contracts_core_test.go) `TestOrchTaskAddRejectsInvalidAcceptanceJSON` +- [command_contracts_core_test.go](../../../packages/orch-runtime/internal/cli/orch/command_contracts_core_test.go) `TestOrchTaskAddRejectsInvalidPriority` +- [command_contracts_core_test.go](../../../packages/orch-runtime/internal/cli/orch/command_contracts_core_test.go) `TestOrchReadyOrdersByPriorityAndRespectsLimit` +- [command_contracts_edges_test.go](../../../packages/orch-runtime/internal/cli/orch/command_contracts_edges_test.go) `TestOrchAnswerAcceptsPayloadJSONWithoutBody` +- [command_contracts_edges_test.go](../../../packages/orch-runtime/internal/cli/orch/command_contracts_edges_test.go) `TestOrchAnswerRejectsEmptyBodyAndPayload` +- [command_contracts_edges_test.go](../../../packages/orch-runtime/internal/cli/orch/command_contracts_edges_test.go) `TestOrchCleanupRejectsAttemptWithoutTask` +- [command_contracts_edges_test.go](../../../packages/orch-runtime/internal/cli/orch/command_contracts_edges_test.go) `TestOrchCleanupReturnsNoMatchingWorkWhenFiltersMiss` +- [command_contracts_remaining_test.go](../../../packages/orch-runtime/internal/cli/orch/command_contracts_remaining_test.go) `TestOrchRunInitCreatesNewRun` +- [command_contracts_remaining_test.go](../../../packages/orch-runtime/internal/cli/orch/command_contracts_remaining_test.go) `TestOrchDispatchCreatesAttemptAndThreadForReadyTask` +- [command_contracts_remaining_test.go](../../../packages/orch-runtime/internal/cli/orch/command_contracts_remaining_test.go) `TestOrchBlockedListsLatestQuestionForBlockedTask` +- [command_contracts_remaining_test.go](../../../packages/orch-runtime/internal/cli/orch/command_contracts_remaining_test.go) `TestOrchStatusReturnsRunSummaryAndTaskList` +- [command_contracts_remaining_test.go](../../../packages/orch-runtime/internal/cli/orch/command_contracts_remaining_test.go) `TestOrchReconcileMapsFailedThreadToTerminalTaskState` +- [command_contracts_remaining_test.go](../../../packages/orch-runtime/internal/cli/orch/command_contracts_remaining_test.go) `TestOrchWorkflowStrictWorktreeDispatchToCleanup` +- [command_contracts_remaining_test.go](../../../packages/orch-runtime/internal/cli/orch/command_contracts_remaining_test.go) `TestOrchWorkflowCouncilReviewEndToEnd` +- [council_report_contracts_test.go](../../../packages/orch-runtime/internal/cli/orch/council_report_contracts_test.go) `TestOrchCouncilReportRejectsBeforeTally` +- [council_report_contracts_test.go](../../../packages/orch-runtime/internal/cli/orch/council_report_contracts_test.go) `TestOrchCouncilReportRejectsInvalidShow` +- [council_report_contracts_test.go](../../../packages/orch-runtime/internal/cli/orch/council_report_contracts_test.go) `TestOrchCouncilReportDefaultsToConsensusForOnlyUnanimousRun` These tests do not remove the need for the Markdown plan. They only reduce discovery work. diff --git a/docs/web-product-monorepo.md b/docs/web-product-monorepo.md index 38358d7..9d6f42c 100644 --- a/docs/web-product-monorepo.md +++ b/docs/web-product-monorepo.md @@ -20,7 +20,7 @@ The recommended direction is: - keep a single monorepo - add a standalone frontend app under `apps/web` -- add a standalone HTTP backend entrypoint under `cmd/orchd` +- add a standalone HTTP backend entrypoint, now owned under `packages/orchd-runtime/cmd/orchd` - keep the current Go repository as the backend source of truth - evolve the backend by introducing shared application services and UI-oriented query layers - avoid building the web backend by shelling out to the existing CLIs @@ -113,9 +113,9 @@ Recommended stack: The frontend should consume only HTTP APIs and event streams from the backend. It should never read SQLite directly and should not depend on CLI output parsing. -### `cmd/orchd` +### `packages/orchd-runtime` -The backend HTTP service should start as a new Go binary under `cmd/orchd`. +The backend HTTP service should live in a package-owned runtime with its Go binary under `packages/orchd-runtime/cmd/orchd`. Responsibilities: @@ -124,9 +124,9 @@ Responsibilities: - load the same database as the CLI tools - use shared application services rather than reimplementing logic -The existing `cmd/orch` and `cmd/inbox` binaries should remain available as operator and debugging tools. +The existing orch and inbox runtimes should remain available as operator and debugging tools through their package-owned binaries under `packages/orch-runtime/cmd/orch` and `packages/inbox-runtime/cmd/inbox`. -### `internal/app` +### `packages/orchd-runtime/internal/app` This package should become the shared application-service layer. @@ -142,7 +142,7 @@ It should own business actions that currently sit mostly in CLI command handlers Both CLI commands and HTTP handlers should call into this layer. -### `internal/query` +### `packages/orchd-runtime/internal/query` This package should hold read models specifically shaped for the web UI. @@ -156,7 +156,7 @@ Examples: These should be query-oriented models rather than raw database table mirrors. -### `internal/httpapi` +### `packages/orchd-runtime/internal/httpapi` This package should hold the web transport layer. @@ -257,9 +257,9 @@ The current project already has strong backend assets: The backend should therefore evolve in-place: 1. keep the current store and schema as the persistence foundation -2. extract shared application actions into `internal/app` -3. add UI-oriented read models in `internal/query` -4. add `cmd/orchd` and `internal/httpapi` +2. extract shared application actions into the orchd runtime app layer +3. add UI-oriented read models in the orchd runtime query layer +4. add the orchd runtime package and its HTTP transport layer 5. attach the React frontend after the API contract stabilizes This is safer than first attempting a large repo split or backend rewrite. @@ -325,10 +325,10 @@ The goal is to avoid rewriting product boundaries just because the storage engin Add: - `apps/web` -- `cmd/orchd` -- `internal/httpapi` -- `internal/app` -- `internal/query` +- `packages/orchd-runtime/cmd/orchd` +- `packages/orchd-runtime/internal/httpapi` +- `packages/orchd-runtime/internal/app` +- `packages/orchd-runtime/internal/query` - `api/openapi.yaml` - `api/events.md` - root JS workspace files such as `package.json` and `pnpm-workspace.yaml` @@ -409,10 +409,10 @@ The current codebase should be adapted incrementally. Recommended rules: -- keep `cmd/orch` and `cmd/inbox` working while the HTTP layer is introduced +- keep the package-owned `orch` and `inbox` binaries working while the HTTP layer is introduced - move business logic out of command handlers only when the shared service abstraction is clear - do not rewrite `store` just to match HTTP names -- let the frontend shape drive `internal/query`, not the table layout alone +- let the frontend shape drive the orchd runtime query layer, not the table layout alone - avoid introducing duplicate orchestration logic between CLI and HTTP ## Immediate Recommended Next Step @@ -420,7 +420,7 @@ Recommended rules: If the project begins this web-product milestone, the first implementation slice should be: 1. scaffold the monorepo workspace files and `apps/web` -2. add `cmd/orchd` with a `chi` router and a minimal health or runs endpoint +2. add the `orchd` runtime package with a `chi` router and a minimal health or runs endpoint 3. introduce the first shared application or query boundary rather than letting handlers call storage ad hoc 4. write the initial API contract in `api/openapi.yaml` diff --git a/go.mod b/go.mod deleted file mode 100644 index d08da4d..0000000 --- a/go.mod +++ /dev/null @@ -1,33 +0,0 @@ -module ai-workflow-skill - -go 1.26 - -require ( - ai-workflow-skill/packages/inbox-runtime v0.0.0 - ai-workflow-skill/packages/orch-runtime v0.0.0 - ai-workflow-skill/packages/orchd-runtime v0.0.0 - github.com/go-chi/chi/v5 v5.2.5 - github.com/spf13/cobra v1.10.1 - modernc.org/sqlite v1.40.1 -) - -require ( - github.com/dustin/go-humanize v1.0.1 // indirect - github.com/google/uuid v1.6.0 // indirect - github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect - github.com/ncruces/go-strftime v0.1.9 // indirect - github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect - github.com/spf13/pflag v1.0.9 // indirect - golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect - golang.org/x/sys v0.36.0 // indirect - modernc.org/libc v1.66.10 // indirect - modernc.org/mathutil v1.7.1 // indirect - modernc.org/memory v1.11.0 // indirect -) - -replace ai-workflow-skill/packages/inbox-runtime => ./packages/inbox-runtime - -replace ai-workflow-skill/packages/orch-runtime => ./packages/orch-runtime - -replace ai-workflow-skill/packages/orchd-runtime => ./packages/orchd-runtime diff --git a/go.work b/go.work index b301e1f..3dd0362 100644 --- a/go.work +++ b/go.work @@ -1,7 +1,6 @@ go 1.26 use ( - . ./packages/coord-core ./packages/inbox-runtime ./packages/orch-runtime diff --git a/go.work.sum b/go.work.sum index 9c79a75..06014ed 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1,2 +1,6 @@ +github.com/go-chi/chi/v5 v5.2.5/go.mod h1:X7Gx4mteadT3eDOMTsXzmI4/rwUpOwBHLpAfupzFJP0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/mattn/go-sqlite3 v1.14.37 h1:3DOZp4cXis1cUIpCfXLtmlGolNLp2VEqhiB/PARNBIg= github.com/mattn/go-sqlite3 v1.14.37/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= +github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +modernc.org/sqlite v1.40.1/go.mod h1:9fjQZ0mB1LLP0GYrp39oOJXx/I2sxEnZtzCmEQIKvGE= diff --git a/package.json b/package.json index e9997f4..6b6a5e3 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "private": true, "packageManager": "pnpm@10.25.0", "scripts": { + "go:test": "bash ./scripts/test_go_packages.sh", "skills:bundle": "bash ./scripts/package_skill_runtimes.sh package", "skills:bundle:plan": "bash ./scripts/package_skill_runtimes.sh plan", "skills:bundle:validate": "bash ./scripts/package_skill_runtimes.sh validate", diff --git a/packages/coord-core/go.mod b/packages/coord-core/go.mod index 8426105..d1daac3 100644 --- a/packages/coord-core/go.mod +++ b/packages/coord-core/go.mod @@ -6,3 +6,15 @@ require ( github.com/google/uuid v1.6.0 modernc.org/sqlite v1.40.1 ) + +require ( + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/ncruces/go-strftime v0.1.9 // indirect + github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect + golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect + golang.org/x/sys v0.36.0 // indirect + modernc.org/libc v1.66.10 // indirect + modernc.org/mathutil v1.7.1 // indirect + modernc.org/memory v1.11.0 // indirect +) diff --git a/go.sum b/packages/coord-core/go.sum similarity index 79% rename from go.sum rename to packages/coord-core/go.sum index 056a4f3..86155cd 100644 --- a/go.sum +++ b/packages/coord-core/go.sum @@ -1,25 +1,15 @@ -github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/go-chi/chi/v5 v5.2.5 h1:Eg4myHZBjyvJmAFjFvWgrqDTXFyOzjj7YIm3L3mu6Ug= -github.com/go-chi/chi/v5 v5.2.5/go.mod h1:X7Gx4mteadT3eDOMTsXzmI4/rwUpOwBHLpAfupzFJP0= github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e h1:ijClszYn+mADRFY17kjQEVQ1XRhq2/JR1M3sGqeJoxs= github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= -github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4= github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= -github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= -github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= -github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o= golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= @@ -31,8 +21,6 @@ golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= modernc.org/cc/v4 v4.26.5 h1:xM3bX7Mve6G8K8b+T11ReenJOT+BmVqQj0FY5T4+5Y4= modernc.org/cc/v4 v4.26.5/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0= modernc.org/ccgo/v4 v4.28.1 h1:wPKYn5EC/mYTqBO373jKjvX2n+3+aK7+sICCv4Fjy1A= diff --git a/packages/inbox-runtime/go.mod b/packages/inbox-runtime/go.mod index c186850..53e88c1 100644 --- a/packages/inbox-runtime/go.mod +++ b/packages/inbox-runtime/go.mod @@ -2,6 +2,9 @@ module ai-workflow-skill/packages/inbox-runtime go 1.26 +require github.com/spf13/cobra v1.10.1 + require ( - github.com/spf13/cobra v1.10.1 + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/spf13/pflag v1.0.9 // indirect ) diff --git a/packages/inbox-runtime/go.sum b/packages/inbox-runtime/go.sum new file mode 100644 index 0000000..e613680 --- /dev/null +++ b/packages/inbox-runtime/go.sum @@ -0,0 +1,10 @@ +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= +github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= +github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/packages/orch-runtime/go.mod b/packages/orch-runtime/go.mod index e0b79b7..62a4eed 100644 --- a/packages/orch-runtime/go.mod +++ b/packages/orch-runtime/go.mod @@ -2,6 +2,9 @@ module ai-workflow-skill/packages/orch-runtime go 1.26 +require github.com/spf13/cobra v1.10.1 + require ( - github.com/spf13/cobra v1.10.1 + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/spf13/pflag v1.0.9 // indirect ) diff --git a/packages/orch-runtime/go.sum b/packages/orch-runtime/go.sum new file mode 100644 index 0000000..e613680 --- /dev/null +++ b/packages/orch-runtime/go.sum @@ -0,0 +1,10 @@ +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= +github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= +github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/packages/orch-runtime/internal/cli/orch/test_helpers_test.go b/packages/orch-runtime/internal/cli/orch/test_helpers_test.go index 2136652..8f49d56 100644 --- a/packages/orch-runtime/internal/cli/orch/test_helpers_test.go +++ b/packages/orch-runtime/internal/cli/orch/test_helpers_test.go @@ -63,7 +63,7 @@ func inboxCommandPath() string { panic("unable to determine orch test helper path") } - return filepath.Join(filepath.Dir(file), "..", "..", "..", "..", "..", "cmd", "inbox") + return filepath.Join(filepath.Dir(file), "..", "..", "..", "..", "..", "packages", "inbox-runtime", "cmd", "inbox") } func mustDecodeJSON(t *testing.T, raw string, target any) { diff --git a/packages/orchd-runtime/go.sum b/packages/orchd-runtime/go.sum new file mode 100644 index 0000000..a4ac04e --- /dev/null +++ b/packages/orchd-runtime/go.sum @@ -0,0 +1,2 @@ +github.com/go-chi/chi/v5 v5.2.5 h1:Eg4myHZBjyvJmAFjFvWgrqDTXFyOzjj7YIm3L3mu6Ug= +github.com/go-chi/chi/v5 v5.2.5/go.mod h1:X7Gx4mteadT3eDOMTsXzmI4/rwUpOwBHLpAfupzFJP0= diff --git a/packages/repo-memory-runtime/go.mod b/packages/repo-memory-runtime/go.mod index 64b0825..31aab21 100644 --- a/packages/repo-memory-runtime/go.mod +++ b/packages/repo-memory-runtime/go.mod @@ -3,5 +3,3 @@ module ai-workflow-skill/packages/repo-memory-runtime go 1.26 require github.com/mattn/go-sqlite3 v1.14.37 - -require github.com/mattn/go-sqlite3 v1.14.37 diff --git a/packages/repo-memory-runtime/go.sum b/packages/repo-memory-runtime/go.sum new file mode 100644 index 0000000..9c79a75 --- /dev/null +++ b/packages/repo-memory-runtime/go.sum @@ -0,0 +1,2 @@ +github.com/mattn/go-sqlite3 v1.14.37 h1:3DOZp4cXis1cUIpCfXLtmlGolNLp2VEqhiB/PARNBIg= +github.com/mattn/go-sqlite3 v1.14.37/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= diff --git a/scripts/test_go_packages.sh b/scripts/test_go_packages.sh new file mode 100644 index 0000000..259ef9a --- /dev/null +++ b/scripts/test_go_packages.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +set -euo pipefail + +readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +readonly REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" + +main() { + local tested=0 + local package_dir + + for package_dir in "${REPO_ROOT}"/packages/*; do + if [[ ! -d "${package_dir}" || ! -f "${package_dir}/go.mod" ]]; then + continue + fi + + printf 'testing %s\n' "${package_dir#${REPO_ROOT}/}" + ( + cd "${package_dir}" + go test ./... + ) + tested=1 + done + + if [[ "${tested}" -eq 0 ]]; then + printf 'no Go runtime packages found under packages/\n' >&2 + exit 1 + fi +} + +main "$@" diff --git a/skills/council-review/assets/orch b/skills/council-review/assets/orch index 38a16ae..23313be 100755 Binary files a/skills/council-review/assets/orch and b/skills/council-review/assets/orch differ diff --git a/skills/inbox/assets/inbox b/skills/inbox/assets/inbox index 0ffcc0f..d9b6351 100755 Binary files a/skills/inbox/assets/inbox and b/skills/inbox/assets/inbox differ diff --git a/skills/orch/assets/orch b/skills/orch/assets/orch index 38a16ae..23313be 100755 Binary files a/skills/orch/assets/orch and b/skills/orch/assets/orch differ diff --git a/skills/repo-memory/assets/briefdb b/skills/repo-memory/assets/briefdb index 2bae6df..e6b3fb8 100755 Binary files a/skills/repo-memory/assets/briefdb and b/skills/repo-memory/assets/briefdb differ