@chorus-aidlc/chorus 0.14.0 → 0.14.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-build-manifest.json +459 -424
- package/.next/standalone/.next/app-path-routes-manifest.json +49 -45
- package/.next/standalone/.next/build-manifest.json +5 -5
- package/.next/standalone/.next/prerender-manifest.json +33 -33
- package/.next/standalone/.next/routes-manifest.json +8 -0
- package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/settings/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +2 -2
- package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
- package/.next/standalone/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin/companies/new.html +2 -2
- package/.next/standalone/.next/server/app/admin/companies/new.rsc +2 -2
- package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin/companies.html +2 -2
- package/.next/standalone/.next/server/app/admin/companies.rsc +2 -2
- package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin.html +2 -2
- package/.next/standalone/.next/server/app/admin.rsc +2 -2
- package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agent-connections/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/comments/route.js +1 -1
- package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/control/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/execution-state/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/executions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/executions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/pending-turns/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/resume/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/resume/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/transcript/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/transcript/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/turn-advance/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js +1 -1
- package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/events/notifications/route.js +1 -1
- package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/events/route.js +1 -1
- package/.next/standalone/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route.js +1 -0
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route_client-reference-manifest.js +1 -0
- package/.next/standalone/.next/server/app/api/ideas/conversational/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/conversational/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mcp/route.js +4 -4
- package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/me/assignments/route.js +1 -1
- package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mentionables/route.js +1 -1
- package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/preferences/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/read-all/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-visits/pin/route.js +1 -0
- package/.next/standalone/.next/server/app/api/project-visits/pin/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/project-visits/pin/route_client-reference-manifest.js +1 -0
- package/.next/standalone/.next/server/app/api/project-visits/route.js +1 -0
- package/.next/standalone/.next/server/app/api/project-visits/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/project-visits/route_client-reference-manifest.js +1 -0
- package/.next/standalone/.next/server/app/api/project-visits/visit/route.js +1 -0
- package/.next/standalone/.next/server/app/api/project-visits/visit/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/project-visits/visit/route_client-reference-manifest.js +1 -0
- package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/references/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/references/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/session/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/index.html +2 -2
- package/.next/standalone/.next/server/app/index.rsc +2 -2
- package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/admin.html +2 -2
- package/.next/standalone/.next/server/app/login/admin.rsc +2 -2
- package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/callback.html +2 -2
- package/.next/standalone/.next/server/app/login/callback.rsc +2 -2
- package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/pick-workspace.html +2 -2
- package/.next/standalone/.next/server/app/login/pick-workspace.rsc +2 -2
- package/.next/standalone/.next/server/app/login.html +2 -2
- package/.next/standalone/.next/server/app/login.rsc +2 -2
- package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/onboarding.html +2 -2
- package/.next/standalone/.next/server/app/onboarding.rsc +3 -3
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects.html +2 -2
- package/.next/standalone/.next/server/app/projects.rsc +4 -4
- package/.next/standalone/.next/server/app/settings.html +2 -2
- package/.next/standalone/.next/server/app/settings.rsc +4 -4
- package/.next/standalone/.next/server/app-paths-manifest.json +49 -45
- package/.next/standalone/.next/server/chunks/1114.js +1 -1
- package/.next/standalone/.next/server/chunks/1173.js +1 -1
- package/.next/standalone/.next/server/chunks/1286.js +3 -2
- package/.next/standalone/.next/server/chunks/1318.js +1 -0
- package/.next/standalone/.next/server/chunks/1559.js +2 -2
- package/.next/standalone/.next/server/chunks/2463.js +1 -0
- package/.next/standalone/.next/server/chunks/2618.js +1 -1
- package/.next/standalone/.next/server/chunks/2961.js +1 -1
- package/.next/standalone/.next/server/chunks/3219.js +1 -1
- package/.next/standalone/.next/server/chunks/3407.js +1 -0
- package/.next/standalone/.next/server/chunks/3419.js +1 -1
- package/.next/standalone/.next/server/chunks/457.js +1 -0
- package/.next/standalone/.next/server/chunks/4827.js +1 -1
- package/.next/standalone/.next/server/chunks/{1343.js → 5201.js} +2 -2
- package/.next/standalone/.next/server/chunks/5245.js +1 -1
- package/.next/standalone/.next/server/chunks/595.js +1 -0
- package/.next/standalone/.next/server/chunks/6113.js +1 -1
- package/.next/standalone/.next/server/chunks/6207.js +1 -1
- package/.next/standalone/.next/server/chunks/6449.js +1 -0
- package/.next/standalone/.next/server/chunks/{8577.js → 6506.js} +3 -3
- package/.next/standalone/.next/server/chunks/6515.js +6 -0
- package/.next/standalone/.next/server/chunks/7364.js +1 -1
- package/.next/standalone/.next/server/chunks/7368.js +1 -1
- package/.next/standalone/.next/server/chunks/7530.js +1 -1
- package/.next/standalone/.next/server/chunks/7762.js +1 -1
- package/.next/standalone/.next/server/chunks/8454.js +1 -1
- package/.next/standalone/.next/server/chunks/920.js +1 -1
- package/.next/standalone/.next/server/chunks/9213.js +1 -1
- package/.next/standalone/.next/server/chunks/9378.js +1 -1
- package/.next/standalone/.next/server/chunks/951.js +1 -0
- package/.next/standalone/.next/server/instrumentation.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/.next/standalone/.next/server/middleware-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/404.html +2 -2
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/XTQkt8fOQEK4mZkZTFQ_E/_buildManifest.js +1 -0
- package/.next/standalone/.next/static/chunks/11595.fbbfc784ff9ee566.js +1 -0
- package/.next/standalone/.next/static/chunks/13867-a95a4555fcb7b13b.js +1 -0
- package/.next/standalone/.next/static/chunks/24537-7d71bf10329d1be1.js +1 -0
- package/.next/standalone/.next/static/chunks/27030-19cd50b9d47b3be6.js +1 -0
- package/.next/standalone/.next/static/chunks/28680-f9c5e04f67982cb6.js +1 -0
- package/.next/standalone/.next/static/chunks/31308-bb4a97b3f39c22dd.js +1 -0
- package/.next/standalone/.next/static/chunks/32331-87ae9bc7517c7947.js +1 -0
- package/.next/standalone/.next/static/chunks/33277-9926b461045318b3.js +10 -0
- package/.next/standalone/.next/static/chunks/33456.b67f1146831e9f2b.js +1 -0
- package/.next/standalone/.next/static/chunks/37035-514bbb31cd13bda1.js +1 -0
- package/.next/standalone/.next/static/chunks/38526-7ffc4b7351c15bc4.js +1 -0
- package/.next/standalone/.next/static/chunks/{42605-029b5426175cdee9.js → 39479-5af3460208d8cc56.js} +1 -1
- package/.next/standalone/.next/static/chunks/4860.3491d748fdde968e.js +1 -0
- package/.next/standalone/.next/static/chunks/51603-7fa00971493ae223.js +1 -0
- package/.next/standalone/.next/static/chunks/73510-c338cef00ca3cfaf.js +1 -0
- package/.next/standalone/.next/static/chunks/78917-a297b76c6daa9f5d.js +1 -0
- package/.next/standalone/.next/static/chunks/84219-09970ab1b85c61f0.js +1 -0
- package/.next/standalone/.next/static/chunks/86155-c9b7c2c08d3fa80e.js +1 -0
- package/.next/standalone/.next/static/chunks/99373.827383575665ce2f.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-12d81eedb519461c.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-2af5f2f159c8e32b.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-996b8a87b4b986f1.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-77771ef395e19922.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-c231207c3674aa54.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/{page-2b13a2224c3b6d6d.js → page-c62c7d7cf9833060.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-d098269dcaa06de7.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-7948aa8db4813091.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-8eea1e0cea60758f.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-658f31ac6a28ec82.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/page-6df01fa989cca27b.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-7fbf5bc58d3dd5b0.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/admin/login/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/admin/session/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/api-keys/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/me/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/comments/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/repoint/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/events/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/health/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/wake-preview/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/conversational/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/mcp/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/mentionables/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-groups/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-visits/pin/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-visits/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-visits/visit/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/resource-graph/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/references/[uuid]/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/references/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/search/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/session/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/onboarding/page-b178eb3215360d91.js +1 -0
- package/.next/standalone/.next/static/chunks/{webpack-9dda6192665a5c8d.js → webpack-567d9ffe31a0a5ee.js} +1 -1
- package/.next/standalone/.next/static/css/617133917710c831.css +1 -0
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/public/chorus-plugin/.claude-plugin/plugin.json +1 -1
- package/.next/standalone/public/chorus-plugin/bin/on-post-verify-task.sh +1 -1
- package/.next/standalone/public/chorus-plugin/bin/on-session-start.sh +29 -5
- package/.next/standalone/public/chorus-plugin/skills/brainstorm/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +23 -2
- package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +2 -2
- package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +32 -1
- package/.next/standalone/public/chorus-plugin/skills/openspec-aware/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/quick-dev/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/review/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/yolo/SKILL.md +2 -2
- package/.next/standalone/public/install-kiro.sh +350 -0
- package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus-code-reviewer.json +10 -0
- package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus-proposal-reviewer.json +10 -0
- package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus-task-reviewer.json +10 -0
- package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus.json +50 -0
- package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus.md +62 -0
- package/.next/standalone/public/kiro-plugin/.kiro/settings/mcp.json +12 -0
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-brainstorm/SKILL.md +158 -0
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-develop/SKILL.md +421 -0
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-idea/SKILL.md +332 -0
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-openspec-aware/SKILL.md +434 -0
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-proposal/SKILL.md +386 -0
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-quick-dev/SKILL.md +193 -0
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-review/SKILL.md +360 -0
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-yolo/SKILL.md +547 -0
- package/.next/standalone/public/kiro-plugin/.kiro/steering/chorus.md +404 -0
- package/.next/standalone/public/kiro-plugin/bin/chorus-api.sh +392 -0
- package/.next/standalone/public/kiro-plugin/bin/on-agent-spawn.sh +81 -0
- package/.next/standalone/public/kiro-plugin/bin/on-post-submit-for-verify.sh +68 -0
- package/.next/standalone/public/kiro-plugin/bin/on-post-submit-proposal.sh +76 -0
- package/.next/standalone/public/kiro-plugin/bin/on-post-verify-task.sh +119 -0
- package/.next/standalone/public/kiro-plugin/bin/on-stop.sh +45 -0
- package/.next/standalone/public/kiro-plugin/bin/test-syntax.sh +108 -0
- package/.next/standalone/public/skill/brainstorm-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/chorus/SKILL.md +8 -2
- package/.next/standalone/public/skill/code-reviewer-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/develop-chorus/SKILL.md +2 -2
- package/.next/standalone/public/skill/idea-chorus/SKILL.md +32 -1
- package/.next/standalone/public/skill/package.json +1 -1
- package/.next/standalone/public/skill/proposal-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/proposal-reviewer-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/quick-dev-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/review-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/task-reviewer-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/yolo-chorus/SKILL.md +3 -3
- package/README.ja.md +14 -11
- package/README.ko.md +14 -11
- package/README.md +14 -11
- package/README.zh.md +14 -11
- package/chorus.mjs +4 -0
- package/cli/client-args.mjs +19 -8
- package/cli/codex-session-map.mjs +9 -79
- package/cli/daemon-agent.mjs +12 -7
- package/cli/daemon-config.mjs +2 -2
- package/cli/daemon-install-config.mjs +213 -0
- package/cli/daemon-service.mjs +12 -7
- package/cli/daemon.mjs +68 -9
- package/cli/kiro-session-map.mjs +49 -0
- package/cli/kiro-spawner.mjs +409 -0
- package/cli/kiro-transcript.mjs +262 -0
- package/cli/lineage.mjs +20 -0
- package/cli/prompts.mjs +19 -2
- package/cli/session-map.mjs +126 -0
- package/cli/spawner-select.mjs +7 -1
- package/cli/waker.mjs +18 -3
- package/package.json +1 -1
- package/prisma/migrations/20260714091007_add_daemon_execution_direct_idea/migration.sql +2 -0
- package/prisma/migrations/20260718062756_add_project_visit/migration.sql +29 -0
- package/prisma/schema.prisma +30 -0
- package/.next/standalone/.next/server/chunks/1388.js +0 -1
- package/.next/standalone/.next/server/chunks/2382.js +0 -1
- package/.next/standalone/.next/server/chunks/3373.js +0 -1
- package/.next/standalone/.next/server/chunks/4797.js +0 -1
- package/.next/standalone/.next/server/chunks/5011.js +0 -1
- package/.next/standalone/.next/server/chunks/5891.js +0 -1
- package/.next/standalone/.next/server/chunks/7131.js +0 -6
- package/.next/standalone/.next/static/chunks/11595.c932231a36943893.js +0 -1
- package/.next/standalone/.next/static/chunks/20081-a2bf5c9f24d5d589.js +0 -1
- package/.next/standalone/.next/static/chunks/24537-7988a894f20f8dae.js +0 -1
- package/.next/standalone/.next/static/chunks/2709-8f25369aeb5701a4.js +0 -1
- package/.next/standalone/.next/static/chunks/33456.f1c7b6bd0a6a65e4.js +0 -1
- package/.next/standalone/.next/static/chunks/43111-7a4e08dc82bb3022.js +0 -1
- package/.next/standalone/.next/static/chunks/4860.9313590c6c8c8f56.js +0 -1
- package/.next/standalone/.next/static/chunks/4939-ff22e2b42ad57f7f.js +0 -1
- package/.next/standalone/.next/static/chunks/55963-b2804d30cfbbe669.js +0 -1
- package/.next/standalone/.next/static/chunks/56608-92ab6704b364eb17.js +0 -1
- package/.next/standalone/.next/static/chunks/75252-29e0e25cb5a94f7f.js +0 -10
- package/.next/standalone/.next/static/chunks/80350-0d34e756f4aebdfc.js +0 -1
- package/.next/standalone/.next/static/chunks/84169-affac07755ace386.js +0 -1
- package/.next/standalone/.next/static/chunks/9178-182934f9127eed4e.js +0 -1
- package/.next/standalone/.next/static/chunks/93346-1d4cd71b8713a8a6.js +0 -1
- package/.next/standalone/.next/static/chunks/96752-ad15cc38599f12e2.js +0 -1
- package/.next/standalone/.next/static/chunks/99373.9756d8f45fee79a7.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-00ff2f6753bb4603.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-5824e6affe244f83.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-21571e747883b956.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-f763dec99ba41f1c.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-f13281a5806b6b4b.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-6c577e521c61f718.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-078f21255acdf752.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-d37d5adabc60a16c.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-8212e69e806cab35.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/page-85665683f67eebc7.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-2ab18a236a0c7f7b.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/admin/login/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/admin/session/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agents/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/api-keys/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/me/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/comments/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/repoint/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/events/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/health/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/conversational/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/mcp/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/mentionables/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/project-groups/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/resource-graph/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/references/[uuid]/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/references/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/search/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/session/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/onboarding/page-455d693daccb65df.js +0 -1
- package/.next/standalone/.next/static/css/5f09fa856a63632f.css +0 -1
- package/.next/standalone/.next/static/sOwBl2wYTfQ3B0DrB18aB/_buildManifest.js +0 -1
- /package/.next/standalone/.next/static/{sOwBl2wYTfQ3B0DrB18aB → XTQkt8fOQEK4mZkZTFQ_E}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,434 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: chorus-openspec-aware
|
|
3
|
+
description: Opt-in OpenSpec-mode authoring for Chorus PM workflows in Kiro CLI. Detects the local `openspec` CLI, scaffolds `openspec/changes/<slug>/` on disk, and mirrors Markdown files into Chorus document drafts via the `chorus-api.sh` wrapper. Required reading for the chorus-proposal, chorus-develop, and chorus-yolo skills whenever the user has the `openspec` CLI installed.
|
|
4
|
+
license: AGPL-3.0
|
|
5
|
+
metadata:
|
|
6
|
+
author: chorus
|
|
7
|
+
version: "0.14.2"
|
|
8
|
+
category: project-management
|
|
9
|
+
mcp_server: chorus
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# OpenSpec-aware Authoring (Kiro CLI plugin)
|
|
13
|
+
|
|
14
|
+
This skill is a **shared sub-procedure** invoked by the Chorus stage skills (`/chorus-proposal`, `/chorus-develop`, `/chorus-yolo`) whenever the user wants spec-driven authoring through the [OpenSpec CLI](https://github.com/Fission-AI/OpenSpec). It is opt-in:
|
|
15
|
+
|
|
16
|
+
- Activates when **all three** signals hold (see §1): `CHORUS_OPENSPEC_MODE` is not `off`, an `openspec/` directory exists at the project root, and the `openspec` CLI is on `PATH`.
|
|
17
|
+
- Otherwise the calling skill falls back to its existing free-form behavior.
|
|
18
|
+
|
|
19
|
+
When you reach a point in proposal / develop / yolo where this skill is referenced, **read the value of `CHORUS_OPENSPEC_ACTIVE`** (see §1) and branch on it.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## §1. Detection
|
|
24
|
+
|
|
25
|
+
The Chorus `chorus` main agent's `agentSpawn` hook may compute `CHORUS_OPENSPEC_ACTIVE` once at spawn and write a `## OpenSpec Mode` section into your startup context. If you see that section, use its value; otherwise run the manual probe below. The value of `CHORUS_OPENSPEC_ACTIVE` is `1` only when **all three** of these hold:
|
|
26
|
+
|
|
27
|
+
1. `CHORUS_OPENSPEC_MODE` is **not** set to `off` (explicit opt-out wins).
|
|
28
|
+
2. The project root contains an `openspec/` directory (i.e. someone ran `openspec init` here).
|
|
29
|
+
3. The `openspec` CLI is on `PATH`.
|
|
30
|
+
|
|
31
|
+
Both signals (2) and (3) are required because the OpenSpec authoring path needs the working directory **and** the CLI — having one without the other leaves the workflow unrunnable. If signal (2) holds but (3) does not, surface a "OpenSpec repo detected — install with: `npm i -g @fission-ai/openspec`" hint to the user rather than silently choosing free-form.
|
|
32
|
+
|
|
33
|
+
### How to read the value
|
|
34
|
+
|
|
35
|
+
If your `agentSpawn` context includes it, you will see something like:
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
## OpenSpec Mode
|
|
39
|
+
|
|
40
|
+
CHORUS_OPENSPEC_ACTIVE=1 (openspec/ directory + openspec CLI both present)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
or:
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
## OpenSpec Mode
|
|
47
|
+
|
|
48
|
+
CHORUS_OPENSPEC_ACTIVE=0 (no openspec/ directory at /path/to/repo/openspec)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Branch:
|
|
52
|
+
|
|
53
|
+
- `CHORUS_OPENSPEC_ACTIVE=1` → follow §3 (OpenSpec authoring).
|
|
54
|
+
- `CHORUS_OPENSPEC_ACTIVE=0` → return to the calling skill's free-form path. **Do not** scaffold `openspec/changes/`. **Do not** add the slug line to the proposal description.
|
|
55
|
+
|
|
56
|
+
### Manual probe
|
|
57
|
+
|
|
58
|
+
If you did not see a `## OpenSpec Mode` section in your context (e.g. the `agentSpawn` hook did not inject it, or you are a subagent), compute the value yourself with the same three checks. Kiro CLI does not define a project-dir env var, so probe the current working directory:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
if [ "${CHORUS_OPENSPEC_MODE:-}" = "off" ]; then
|
|
62
|
+
CHORUS_OPENSPEC_ACTIVE=0
|
|
63
|
+
elif [ ! -d "$PWD/openspec" ]; then
|
|
64
|
+
CHORUS_OPENSPEC_ACTIVE=0
|
|
65
|
+
elif ! openspec --version >/dev/null 2>&1; then
|
|
66
|
+
CHORUS_OPENSPEC_ACTIVE=0
|
|
67
|
+
else
|
|
68
|
+
CHORUS_OPENSPEC_ACTIVE=1
|
|
69
|
+
fi
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## §2. ⛔ Two non-negotiable rules
|
|
75
|
+
|
|
76
|
+
Both are enforced at review time. Both have caused incidents in past releases.
|
|
77
|
+
|
|
78
|
+
### Rule 1 — Mirror via the wrapper, never re-type document content from agent output
|
|
79
|
+
|
|
80
|
+
Document/draft mirror calls (`chorus_pm_add_document_draft`, `chorus_pm_update_document_draft`, `chorus_pm_update_document`) **MUST** go through:
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
chorus-api.sh mcp-tool <tool_name> "$PAYLOAD"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
`chorus-api.sh` is installed alongside the hook scripts under the Kiro `chorus-bin/` directory and is on `PATH` — call it by name.
|
|
87
|
+
|
|
88
|
+
with `$PAYLOAD` built using `json_encode_file` (defined in §3.4). Calling these tools directly from the agent's MCP harness with a hand-typed `content` field is a **protocol violation** for OpenSpec mode and will fail review. Reasons:
|
|
89
|
+
|
|
90
|
+
1. **Token cost.** Re-typing a multi-thousand-line markdown body through the LLM burns input + output tokens for every draft. The wrapper streams bytes through `jq -Rs '.'` — content never enters LLM context. A typical 3-doc proposal mirror via the script costs roughly zero content-tokens; via direct MCP it routinely costs 20k+.
|
|
91
|
+
2. **Byte-equality.** `jq -Rs '.'` is a byte-faithful encoder: backslashes, quotes, newlines, code-fence content, zero-width chars all survive. LLM re-emission has a non-zero failure rate on long markdown — table alignment drifts, fence escapes get "fixed", long URLs wrap. The byte-equality guarantee (modulo trailing `\n`) holds **only** on the wrapper path.
|
|
92
|
+
3. **Single source of truth.** With the wrapper, the local `openspec/changes/<slug>/*.md` is authoritative and Chorus is a mirror. With agent re-typing, authority splits between local file and whatever the LLM happened to output — a future diff cannot tell which one is correct.
|
|
93
|
+
|
|
94
|
+
### Rule 2 — Halt on error via `chorus_check_response`
|
|
95
|
+
|
|
96
|
+
Every wrapper call must check three signals: wrapper exit code, `"error":` in body, empty body. Bare `RC=$?` is **insufficient** — the wrapper exits 0 on HTTP 401 (auth failure) with empty body, so a single-signal check silently misses the most common runtime failure. See §6 for the helper definition.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## §3. OpenSpec mode authoring
|
|
101
|
+
|
|
102
|
+
### 3.1 Pick a slug
|
|
103
|
+
|
|
104
|
+
`openspec/changes/<slug>/` is the local change folder. The slug must be:
|
|
105
|
+
|
|
106
|
+
- kebab-case (`add-export-csv`, not `addExportCsv` or `add_export_csv`),
|
|
107
|
+
- derived from the source Idea title,
|
|
108
|
+
- unique within `openspec/changes/`.
|
|
109
|
+
|
|
110
|
+
Record it for later steps:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
SLUG="add-export-csv"
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### 3.2 Scaffold the change folder
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
openspec new change "$SLUG" --description "<one-line idea summary>"
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
This creates `openspec/changes/$SLUG/` with `README.md` and `.openspec.yaml`. Then author by hand:
|
|
123
|
+
|
|
124
|
+
| Local file | Purpose | Mirror as `Document.type` |
|
|
125
|
+
|---|---|---|
|
|
126
|
+
| `proposal.md` | Why + What Changes + Capabilities + Impact | `prd` |
|
|
127
|
+
| `design.md` | Architecture, contracts, risks | `tech_design` |
|
|
128
|
+
| `specs/<capability>/spec.md` | Delta spec (`## ADDED Requirements` + Scenarios) | `spec` (one draft per capability) |
|
|
129
|
+
| `tasks.md` | OpenSpec tasks list | _(not mirrored — Chorus task drafts are source of truth)_ |
|
|
130
|
+
|
|
131
|
+
Use `openspec instructions <artifact> --change "$SLUG"` (artifacts: `proposal`, `specs`, `design`, `tasks`) for templates.
|
|
132
|
+
|
|
133
|
+
### 3.3 Spec file shape (verified against `openspec instructions specs`)
|
|
134
|
+
|
|
135
|
+
A delta spec lists one or more block headers — `## ADDED Requirements`, `## MODIFIED Requirements`, `## REMOVED Requirements`, `## RENAMED Requirements` — and within each, `### Requirement:` entries. Mix freely in the same file; only include the blocks you actually need.
|
|
136
|
+
|
|
137
|
+
#### `## ADDED Requirements`
|
|
138
|
+
|
|
139
|
+
Append a brand-new Requirement to the long-term spec.
|
|
140
|
+
|
|
141
|
+
```
|
|
142
|
+
## ADDED Requirements
|
|
143
|
+
|
|
144
|
+
### Requirement: <name>
|
|
145
|
+
<requirement text — use SHALL / MUST for normative behavior>
|
|
146
|
+
|
|
147
|
+
#### Scenario: <name>
|
|
148
|
+
- **WHEN** <condition>
|
|
149
|
+
- **THEN** <expected outcome>
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
#### `## MODIFIED Requirements`
|
|
153
|
+
|
|
154
|
+
**Whole-block replacement, not merge.** Whatever you write here completely replaces the existing same-named Requirement in the long-term spec — title, description, and *all* scenarios. Half-writing it deletes the rest.
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
## MODIFIED Requirements
|
|
158
|
+
|
|
159
|
+
### Requirement: <existing name>
|
|
160
|
+
<full updated requirement text>
|
|
161
|
+
|
|
162
|
+
#### Scenario: <name>
|
|
163
|
+
- **WHEN** <condition>
|
|
164
|
+
- **THEN** <expected outcome>
|
|
165
|
+
|
|
166
|
+
#### Scenario: <other name>
|
|
167
|
+
- **WHEN** <condition>
|
|
168
|
+
- **THEN** <expected outcome>
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
Always include every scenario you want the post-archive spec to have, even ones that were already present and unchanged.
|
|
172
|
+
|
|
173
|
+
#### `## REMOVED Requirements`
|
|
174
|
+
|
|
175
|
+
Delete a Requirement from the long-term spec. The block under the heading is just the requirement name(s) you're removing — no scenarios needed.
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
## REMOVED Requirements
|
|
179
|
+
|
|
180
|
+
### Requirement: <existing name>
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
#### `## RENAMED Requirements`
|
|
184
|
+
|
|
185
|
+
Rename a Requirement's title. Body and scenarios are preserved as-is in the long-term spec; use `MODIFIED` instead if you need to change anything besides the title.
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
## RENAMED Requirements
|
|
189
|
+
|
|
190
|
+
### Requirement: <old name> -> <new name>
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
**Critical formatting rules (verified):**
|
|
194
|
+
|
|
195
|
+
- Scenarios MUST use **exactly 4 hashtags** (`#### Scenario:`). 3 hashtags or a bullet list silently fail validation.
|
|
196
|
+
- Every `### Requirement:` under `ADDED` or `MODIFIED` MUST have at least one `#### Scenario:`.
|
|
197
|
+
- `MODIFIED` blocks MUST include the **full updated content** — they overwrite, not patch.
|
|
198
|
+
- Use `SHALL` / `MUST` for normative requirements; avoid `should` / `may`.
|
|
199
|
+
- The merge into `openspec/specs/<capability>/spec.md` happens at `openspec archive` time (§3.9), not at proposal time. While the proposal is in flight, Chorus only sees the delta file as one `spec` Document — there is no half-merged state for the skill to reason about.
|
|
200
|
+
|
|
201
|
+
Optional:
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
openspec validate "$SLUG"
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### 3.4 Helper: `json_encode_file`
|
|
208
|
+
|
|
209
|
+
Define once at the top of the authoring session. With `jq` available it streams the file into a JSON string; the fallback matches `chorus-api.sh`'s own escaping when `jq` is missing.
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
json_encode_file() {
|
|
213
|
+
local _path="$1"
|
|
214
|
+
if command -v jq >/dev/null 2>&1; then
|
|
215
|
+
jq -Rs '.' < "$_path"
|
|
216
|
+
else
|
|
217
|
+
local _content
|
|
218
|
+
_content=$(cat "$_path")
|
|
219
|
+
_content=${_content//\\/\\\\}
|
|
220
|
+
_content=${_content//\"/\\\"}
|
|
221
|
+
_content=${_content//$'\n'/\\n}
|
|
222
|
+
printf '"%s"' "$_content"
|
|
223
|
+
fi
|
|
224
|
+
}
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Round-trip: the Chorus backend appends a single `\n` to draft content on write, so server `content` is **byte-equal modulo a trailing newline**. Reviewers diffing local file vs server should ignore that one byte.
|
|
228
|
+
|
|
229
|
+
### 3.5 Create the proposal container with the slug provenance line
|
|
230
|
+
|
|
231
|
+
Use the regular `chorus_pm_create_proposal` MCP tool (no wrapper required for this single call — the description is short, the LLM-emitted version is fine). The description **must** carry exactly one line:
|
|
232
|
+
|
|
233
|
+
```
|
|
234
|
+
OpenSpec change slug: <slug>
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
- on its own line (no other text on that line),
|
|
238
|
+
- literal prefix `OpenSpec change slug: ` (capital O, capital S, single space after colon),
|
|
239
|
+
- no trailing punctuation,
|
|
240
|
+
- value matches the slug passed to `openspec new change`.
|
|
241
|
+
|
|
242
|
+
This line is machine-grep-able by future runs of this skill and by the §3.9 archive trigger.
|
|
243
|
+
|
|
244
|
+
### 3.6 Mirror each document draft via the wrapper
|
|
245
|
+
|
|
246
|
+
> **Rule 1 reminder:** these calls go through `chorus-api.sh`, not direct MCP. The agent must not retype the document body.
|
|
247
|
+
|
|
248
|
+
Define the halt-on-error helper from §6 once at the top, then run one call per file:
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
# chorus-api.sh is on PATH — no absolute path needed.
|
|
252
|
+
# PRD draft
|
|
253
|
+
CONTENT=$(json_encode_file "openspec/changes/$SLUG/proposal.md")
|
|
254
|
+
PAYLOAD=$(cat <<JSON
|
|
255
|
+
{
|
|
256
|
+
"proposalUuid": "$PROPOSAL_UUID",
|
|
257
|
+
"type": "prd",
|
|
258
|
+
"title": "PRD: $HUMAN_TITLE",
|
|
259
|
+
"content": $CONTENT
|
|
260
|
+
}
|
|
261
|
+
JSON
|
|
262
|
+
)
|
|
263
|
+
RESULT=$(chorus-api.sh mcp-tool chorus_pm_add_document_draft "$PAYLOAD")
|
|
264
|
+
RC=$?
|
|
265
|
+
chorus_check_response "chorus_pm_add_document_draft (prd)" "$RC" "$RESULT"
|
|
266
|
+
PRD_DRAFT_UUID=$(printf '%s' "$RESULT" | grep -o '"draftUuid"[[:space:]]*:[[:space:]]*"[^"]*"' | head -1 | sed 's/.*"\([^"]*\)"$/\1/')
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
Repeat with `type: "tech_design"` for `design.md`, and one call per capability with `type: "spec"` for each `specs/<capability>/spec.md`. Do **not** mirror `tasks.md` — Chorus task drafts (created via the `chorus_pm_add_task_draft` MCP tool, no wrapper needed) are the source of truth for tasks.
|
|
270
|
+
|
|
271
|
+
> Why parsing uses `printf '%s' "$RESULT" | grep` not `echo "$RESULT" | jq`: `echo` interprets backslash sequences inside the captured JSON, turning embedded `\n` into a real newline. `jq` then aborts with `Invalid string: control characters from U+0000 through U+001F must be escaped`. `printf '%s'` emits the captured bytes verbatim. Same pattern applies to all wrapper-result parsing in this skill.
|
|
272
|
+
|
|
273
|
+
### 3.7 Editing a draft after the first mirror
|
|
274
|
+
|
|
275
|
+
Local file changes propagate via `chorus_pm_update_document_draft` — same wrapper, same `json_encode_file`, same halt check.
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
CONTENT=$(json_encode_file "openspec/changes/$SLUG/proposal.md")
|
|
279
|
+
PAYLOAD=$(cat <<JSON
|
|
280
|
+
{
|
|
281
|
+
"proposalUuid": "$PROPOSAL_UUID",
|
|
282
|
+
"draftUuid": "$PRD_DRAFT_UUID",
|
|
283
|
+
"content": $CONTENT
|
|
284
|
+
}
|
|
285
|
+
JSON
|
|
286
|
+
)
|
|
287
|
+
RESULT=$(chorus-api.sh mcp-tool chorus_pm_update_document_draft "$PAYLOAD")
|
|
288
|
+
RC=$?
|
|
289
|
+
chorus_check_response "chorus_pm_update_document_draft" "$RC" "$RESULT"
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### 3.8 Editing a Document after proposal approval
|
|
293
|
+
|
|
294
|
+
Once the proposal is approved, drafts materialize into Documents with their own UUIDs. To keep `openspec/changes/$SLUG/` and the Chorus Document in sync, mirror file edits via `chorus_pm_update_document`:
|
|
295
|
+
|
|
296
|
+
```bash
|
|
297
|
+
CONTENT=$(json_encode_file "openspec/changes/$SLUG/specs/<capability>/spec.md")
|
|
298
|
+
PAYLOAD=$(cat <<JSON
|
|
299
|
+
{
|
|
300
|
+
"documentUuid": "$SPEC_DOCUMENT_UUID",
|
|
301
|
+
"content": $CONTENT
|
|
302
|
+
}
|
|
303
|
+
JSON
|
|
304
|
+
)
|
|
305
|
+
RESULT=$(chorus-api.sh mcp-tool chorus_pm_update_document "$PAYLOAD")
|
|
306
|
+
RC=$?
|
|
307
|
+
chorus_check_response "chorus_pm_update_document" "$RC" "$RESULT"
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
To re-derive `$SPEC_DOCUMENT_UUID` from a fresh shell, look it up via `chorus_get_documents` for the proposal's project and match by `title` + `type`. Re-derive `$SLUG` by grepping the proposal's `description` for `^OpenSpec change slug: `.
|
|
311
|
+
|
|
312
|
+
### 3.9 Archive after the last task is verified
|
|
313
|
+
|
|
314
|
+
When the **LAST** task of an OpenSpec-mode idea is admin-verified via `chorus_admin_verify_task`, the `chorus` main agent's `postToolUse` hook injects a reminder containing the literal substring `openspec archive <slug>` so you can act without re-reading the slug.
|
|
315
|
+
|
|
316
|
+
The hook is read-only; you (the agent) perform the archive:
|
|
317
|
+
|
|
318
|
+
1. **Run archive locally.** Use `--yes` for non-interactive mode. Do NOT pass `--skip-specs` (defeats the mirror-back) or `--no-validate` (lets malformed deltas corrupt cumulative specs).
|
|
319
|
+
|
|
320
|
+
```bash
|
|
321
|
+
openspec archive "$SLUG" --yes
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
This moves `openspec/changes/$SLUG/` under `openspec/changes/archive/<date>-<slug>/` and emits/updates `openspec/specs/<capability>/spec.md` for each capability. (Run `openspec archive --help` against your installed version to confirm the current flag set — flags can drift between releases.)
|
|
325
|
+
|
|
326
|
+
2. **Mirror each updated `openspec/specs/<capability>/spec.md` back** to the matching post-approval Chorus Document (§3.8 contract). `chorus_get_documents` only supports `projectUuid` + `type` server-side filters; filter by title client-side. One `chorus_pm_update_document` call per capability.
|
|
327
|
+
|
|
328
|
+
3. **Halt on any error** from `openspec archive` or `chorus_pm_update_document`. Print stderr verbatim, post a comment on the proposal recording the failure (`chorus_add_comment` with `targetType: "proposal"`, `targetUuid: <proposalUuid>`), then stop. No retry. Matches §6 "no silent errors." (Comment on the proposal, not the idea: the failure is in archiving proposal-derived specs, and proposals can be `inputType: "document"` with no idea attached.)
|
|
329
|
+
|
|
330
|
+
4. **Confirm success.** List `openspec/specs/<capability>/spec.md` files and verify they round-trip byte-equal (modulo trailing newline) with their Chorus Document counterparts.
|
|
331
|
+
|
|
332
|
+
**Strict opt-in:** if the verified task is not the last of its idea, OR the proposal description carries no `OpenSpec change slug: <slug>` line, OR the local shell has no `openspec` CLI, the hook exits 0 silently and no archive reminder is injected. Existing free-form behavior is preserved.
|
|
333
|
+
|
|
334
|
+
---
|
|
335
|
+
|
|
336
|
+
## §4. Fallback authoring (no openspec)
|
|
337
|
+
|
|
338
|
+
When detection puts the agent in fallback mode (`CHORUS_OPENSPEC_ACTIVE=0`), this skill is a **no-op**. Return to the calling skill's free-form path:
|
|
339
|
+
|
|
340
|
+
- No `openspec/changes/` folder is created or referenced.
|
|
341
|
+
- No `OpenSpec change slug: …` line is added to the proposal description.
|
|
342
|
+
- Document drafts are authored via direct MCP `chorus_pm_add_document_draft` calls with inline `content` — same as before this skill existed.
|
|
343
|
+
- Rule 1 (wrapper-only mirror) does not apply — there is no local file source of truth.
|
|
344
|
+
- The §3.9 archive hook does nothing (no slug → silent exit).
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## §5. Document type mapping (reference table)
|
|
349
|
+
|
|
350
|
+
| Local file | Chorus `Document.type` | Mirrored? |
|
|
351
|
+
|---|---|---|
|
|
352
|
+
| `openspec/changes/<slug>/proposal.md` | `prd` | yes |
|
|
353
|
+
| `openspec/changes/<slug>/design.md` | `tech_design` | yes |
|
|
354
|
+
| `openspec/changes/<slug>/specs/<capability>/spec.md` | `spec` | yes (one draft per capability) |
|
|
355
|
+
| `openspec/changes/<slug>/tasks.md` | _(not mapped)_ | **no** — Chorus task drafts are source of truth |
|
|
356
|
+
|
|
357
|
+
`prd`, `tech_design`, `spec` are pre-existing valid `Document.type` values — no schema change required.
|
|
358
|
+
|
|
359
|
+
---
|
|
360
|
+
|
|
361
|
+
## §6. Failure visibility — the `chorus_check_response` helper
|
|
362
|
+
|
|
363
|
+
There is a known wrapper edge case: when the server returns HTTP 4xx (e.g. 401 from a bad `CHORUS_API_KEY`), `chorus-api.sh mcp-tool` captures the JSON-RPC error body internally, pipes it through a `.result.content[]?` jq filter that produces no output when `.result` is absent, and exits 0 with empty stdout. A bare `RC=$?` check would not halt on this — the most common runtime failure mode would be invisible.
|
|
364
|
+
|
|
365
|
+
Define this helper **once** at the top of the authoring session and use it after every wrapper call:
|
|
366
|
+
|
|
367
|
+
```bash
|
|
368
|
+
chorus_check_response() {
|
|
369
|
+
local _tool="$1"
|
|
370
|
+
local _rc="$2"
|
|
371
|
+
local _body="$3"
|
|
372
|
+
local _has_error=0
|
|
373
|
+
local _is_empty=0
|
|
374
|
+
|
|
375
|
+
local _trimmed
|
|
376
|
+
_trimmed=$(printf '%s' "$_body" | tr -d ' \t\n\r')
|
|
377
|
+
[ -z "$_trimmed" ] && _is_empty=1
|
|
378
|
+
|
|
379
|
+
if [ "$_is_empty" -eq 0 ]; then
|
|
380
|
+
if command -v jq >/dev/null 2>&1; then
|
|
381
|
+
if printf '%s' "$_body" | jq -e 'try ([.. | objects | has("error")] | any) catch false' >/dev/null 2>&1; then
|
|
382
|
+
_has_error=1
|
|
383
|
+
fi
|
|
384
|
+
else
|
|
385
|
+
printf '%s' "$_body" | grep -qE '"error"[[:space:]]*:' && _has_error=1
|
|
386
|
+
fi
|
|
387
|
+
fi
|
|
388
|
+
|
|
389
|
+
if [ "$_rc" -ne 0 ] || [ "$_has_error" -eq 1 ] || [ "$_is_empty" -eq 1 ]; then
|
|
390
|
+
echo "ERROR: $_tool failed (exit=$_rc, error_in_body=$_has_error, empty_body=$_is_empty)" >&2
|
|
391
|
+
echo "Output: $_body" >&2
|
|
392
|
+
[ "$_rc" -ne 0 ] && exit "$_rc" || exit 1
|
|
393
|
+
fi
|
|
394
|
+
}
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
**Anti-patterns** — do **not**:
|
|
398
|
+
|
|
399
|
+
- Collapse to `|| true`.
|
|
400
|
+
- Redirect stderr to `/dev/null`.
|
|
401
|
+
- Bury the wrapper call inside a pipeline (masks `$?`).
|
|
402
|
+
- Skip capturing `$RESULT` into a variable; the helper needs the body.
|
|
403
|
+
- Use only `if [ "$RC" -ne 0 ]; then ...` — that misses the HTTP-error path.
|
|
404
|
+
|
|
405
|
+
**Minimal call site shape:**
|
|
406
|
+
|
|
407
|
+
```bash
|
|
408
|
+
RESULT=$(chorus-api.sh mcp-tool <tool_name> "$PAYLOAD")
|
|
409
|
+
RC=$?
|
|
410
|
+
chorus_check_response "<tool_name>" "$RC" "$RESULT"
|
|
411
|
+
# ...if we reach here, the call succeeded; parse RESULT and continue.
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
This is project-wide policy: no silent errors.
|
|
415
|
+
|
|
416
|
+
---
|
|
417
|
+
|
|
418
|
+
## §7. Quick reference checklist
|
|
419
|
+
|
|
420
|
+
When invoked from a stage skill (`/chorus-proposal` / `/chorus-develop` / `/chorus-yolo`):
|
|
421
|
+
|
|
422
|
+
1. Read `CHORUS_OPENSPEC_ACTIVE` from the `## OpenSpec Mode` section in your `agentSpawn` context (§1). If it isn't there, fall back to the manual probe in §1.
|
|
423
|
+
2. If `CHORUS_OPENSPEC_ACTIVE=0` → return to caller's free-form path (§4).
|
|
424
|
+
3. Otherwise:
|
|
425
|
+
a. Pick `$SLUG` (§3.1).
|
|
426
|
+
b. `openspec new change "$SLUG"` (§3.2).
|
|
427
|
+
c. Author `proposal.md`, `design.md`, `specs/<capability>/spec.md` (§3.2–§3.3). Mix `ADDED` / `MODIFIED` / `REMOVED` / `RENAMED` blocks as needed; remember `MODIFIED` overwrites the whole Requirement.
|
|
428
|
+
d. Optional: `openspec validate "$SLUG"`.
|
|
429
|
+
e. `chorus_pm_create_proposal` (direct MCP) with the `OpenSpec change slug: $SLUG` line in description (§3.5).
|
|
430
|
+
f. Define `json_encode_file`, `chorus_check_response` helpers. (`chorus-api.sh` is on PATH — no `$API` variable needed.)
|
|
431
|
+
g. For each row in §5 with "yes" — mirror via `chorus-api.sh mcp-tool chorus_pm_add_document_draft` (§3.6). Record each `$DRAFT_UUID`.
|
|
432
|
+
h. On any failed `chorus_check_response` — halt, surface the error, do NOT proceed.
|
|
433
|
+
4. Edits before approval → §3.7. Edits after approval → §3.8.
|
|
434
|
+
5. Last task verified → hook fires → run §3.9 archive flow.
|