@chorus-aidlc/chorus 0.14.0 → 0.14.1
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 +425 -412
- package/.next/standalone/.next/app-path-routes-manifest.json +43 -42
- package/.next/standalone/.next/build-manifest.json +5 -5
- package/.next/standalone/.next/prerender-manifest.json +39 -39
- package/.next/standalone/.next/routes-manifest.json +8 -0
- 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_client-reference-manifest.js +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 +1 -1
- 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_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js +1 -1
- 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_client-reference-manifest.js +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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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/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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- package/.next/standalone/.next/server/app/login.html +2 -2
- package/.next/standalone/.next/server/app/login.rsc +1 -1
- 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 +2 -2
- 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 +3 -3
- package/.next/standalone/.next/server/app/settings.html +2 -2
- package/.next/standalone/.next/server/app/settings.rsc +3 -3
- package/.next/standalone/.next/server/app-paths-manifest.json +43 -42
- 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/1559.js +2 -2
- package/.next/standalone/.next/server/chunks/2382.js +1 -1
- 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/3419.js +1 -1
- 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/6113.js +1 -1
- package/.next/standalone/.next/server/chunks/{8577.js → 6506.js} +3 -3
- package/.next/standalone/.next/server/chunks/{7131.js → 6515.js} +2 -2
- 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/8062.js +1 -0
- package/.next/standalone/.next/server/chunks/8204.js +1 -0
- 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/chunks/9979.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/chunks/11595.7784dfe509c100a4.js +1 -0
- package/.next/standalone/.next/static/chunks/21188-43211c9e40bf0d63.js +10 -0
- package/.next/standalone/.next/static/chunks/24537-ef5b301140cf3a58.js +1 -0
- package/.next/standalone/.next/static/chunks/27030-3ae1d0e29245b23e.js +1 -0
- package/.next/standalone/.next/static/chunks/28680-dff79c4467712199.js +1 -0
- package/.next/standalone/.next/static/chunks/32331-87ae9bc7517c7947.js +1 -0
- package/.next/standalone/.next/static/chunks/33456.3bd7ba05bd39259b.js +1 -0
- package/.next/standalone/.next/static/chunks/38526-7ffc4b7351c15bc4.js +1 -0
- package/.next/standalone/.next/static/chunks/4860.4803e40814d50dd0.js +1 -0
- package/.next/standalone/.next/static/chunks/51603-7fa00971493ae223.js +1 -0
- package/.next/standalone/.next/static/chunks/78917-c0a9a11fe437a752.js +1 -0
- package/.next/standalone/.next/static/chunks/84169-5beb288902aea242.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.0457580c532530bc.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-e5202e9b7669576c.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-d9323dc8b6c974f7.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-20054b1cec8ed1d2.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-c83c5d1b4599e737.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-d37d5adabc60a16c.js → page-278d30ee1dd7e315.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/{page-8212e69e806cab35.js → page-5a22db5f8504e61d.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/page-47a17dbadfbc75ad.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-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/admin/login/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/admin/session/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/api-keys/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/me/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/comments/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/repoint/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/events/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/health/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/wake-preview/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/conversational/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/mcp/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/mentionables/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-groups/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/resource-graph/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/references/[uuid]/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/references/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/search/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/session/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/onboarding/page-ece3f647133d446e.js +1 -0
- package/.next/standalone/.next/static/chunks/{webpack-9dda6192665a5c8d.js → webpack-96be8d6bd0d3d25f.js} +1 -1
- 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/skills/brainstorm/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +7 -1
- package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +1 -1
- 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 +1 -1
- 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 +391 -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 +7 -1
- package/.next/standalone/public/skill/code-reviewer-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/develop-chorus/SKILL.md +1 -1
- 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 +1 -1
- package/README.ja.md +4 -1
- package/README.ko.md +4 -1
- package/README.md +4 -1
- package/README.zh.md +4 -1
- 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/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/schema.prisma +8 -0
- package/.next/standalone/.next/server/chunks/1388.js +0 -1
- package/.next/standalone/.next/server/chunks/3373.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/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/4860.9313590c6c8c8f56.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/96752-ad15cc38599f12e2.js +0 -1
- package/.next/standalone/.next/static/chunks/99373.9756d8f45fee79a7.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/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/{sOwBl2wYTfQ3B0DrB18aB → C9o43aSSZ0ebgki6mQ0-b}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{sOwBl2wYTfQ3B0DrB18aB → C9o43aSSZ0ebgki6mQ0-b}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# chorus-api.sh — Lightweight REST API wrapper for Chorus session management
|
|
3
|
+
# Used by hook scripts to communicate with Chorus backend.
|
|
4
|
+
#
|
|
5
|
+
# Environment variables:
|
|
6
|
+
# CHORUS_URL — Chorus base URL (e.g., http://localhost:8637)
|
|
7
|
+
# CHORUS_API_KEY — Agent API key (cho_xxx)
|
|
8
|
+
# CHORUS_STATE_DIR — optional override for the session-state directory
|
|
9
|
+
#
|
|
10
|
+
# State file: $CHORUS_STATE_DIR/state.json (gitignored). Runtime-agnostic:
|
|
11
|
+
# under Kiro CLI (which does not set CLAUDE_PROJECT_DIR) state defaults to a
|
|
12
|
+
# stable per-user location (~/.kiro/.chorus) instead of the launch cwd, so a
|
|
13
|
+
# hook-triggered MCP call never litters a stray .chorus/ dir into whatever
|
|
14
|
+
# directory `kiro` happened to be started from.
|
|
15
|
+
|
|
16
|
+
set -euo pipefail
|
|
17
|
+
|
|
18
|
+
# ===== Configuration =====
|
|
19
|
+
|
|
20
|
+
CHORUS_URL="${CHORUS_URL:-}"
|
|
21
|
+
CHORUS_API_KEY="${CHORUS_API_KEY:-}"
|
|
22
|
+
STATE_DIR="${CHORUS_STATE_DIR:-${CLAUDE_PROJECT_DIR:-$HOME/.kiro}/.chorus}"
|
|
23
|
+
STATE_FILE="${STATE_DIR}/state.json"
|
|
24
|
+
|
|
25
|
+
# ===== Helpers =====
|
|
26
|
+
|
|
27
|
+
die() {
|
|
28
|
+
echo "ERROR: $*" >&2
|
|
29
|
+
exit 1
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
require_env() {
|
|
33
|
+
[ -n "$CHORUS_URL" ] || die "CHORUS_URL is not set"
|
|
34
|
+
[ -n "$CHORUS_API_KEY" ] || die "CHORUS_API_KEY is not set"
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
# Make an authenticated API request to Chorus
|
|
38
|
+
# Usage: api_call METHOD PATH [DATA]
|
|
39
|
+
api_call() {
|
|
40
|
+
local method="$1"
|
|
41
|
+
local path="$2"
|
|
42
|
+
local data="${3:-}"
|
|
43
|
+
|
|
44
|
+
local args=(
|
|
45
|
+
-s -S
|
|
46
|
+
-X "$method"
|
|
47
|
+
-H "Authorization: Bearer ${CHORUS_API_KEY}"
|
|
48
|
+
-H "Content-Type: application/json"
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
if [ -n "$data" ]; then
|
|
52
|
+
args+=(-d "$data")
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
local response
|
|
56
|
+
response=$(curl "${args[@]}" "${CHORUS_URL}${path}" 2>&1) || {
|
|
57
|
+
echo "CURL_ERROR: Failed to reach ${CHORUS_URL}${path}" >&2
|
|
58
|
+
return 1
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
echo "$response"
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
# Ensure state directory and file exist
|
|
65
|
+
ensure_state() {
|
|
66
|
+
mkdir -p "$STATE_DIR"
|
|
67
|
+
if [ ! -f "$STATE_FILE" ]; then
|
|
68
|
+
echo '{}' > "$STATE_FILE"
|
|
69
|
+
fi
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
# ===== State Management =====
|
|
73
|
+
|
|
74
|
+
state_get() {
|
|
75
|
+
local key="$1"
|
|
76
|
+
ensure_state
|
|
77
|
+
if command -v jq &>/dev/null; then
|
|
78
|
+
jq -r --arg k "$key" '.[$k] // empty' "$STATE_FILE"
|
|
79
|
+
else
|
|
80
|
+
# Fallback: simple grep-based extraction
|
|
81
|
+
grep -o "\"${key}\":\"[^\"]*\"" "$STATE_FILE" 2>/dev/null | cut -d'"' -f4
|
|
82
|
+
fi
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
state_set() {
|
|
86
|
+
local key="$1"
|
|
87
|
+
local value="$2"
|
|
88
|
+
ensure_state
|
|
89
|
+
# Use flock to serialize concurrent state writes (multiple SubagentStart hooks
|
|
90
|
+
# may run in parallel, each calling state-set multiple times).
|
|
91
|
+
(
|
|
92
|
+
flock -w 5 200 || { echo "WARN: state_set flock timeout for key=$key" >&2; return 0; }
|
|
93
|
+
if command -v jq &>/dev/null; then
|
|
94
|
+
local tmp
|
|
95
|
+
tmp=$(mktemp)
|
|
96
|
+
jq --arg k "$key" --arg v "$value" '.[$k] = $v' "$STATE_FILE" > "$tmp" && mv "$tmp" "$STATE_FILE"
|
|
97
|
+
else
|
|
98
|
+
if grep -q "\"${key}\":" "$STATE_FILE" 2>/dev/null; then
|
|
99
|
+
sed -i "s|\"${key}\":\"[^\"]*\"|\"${key}\":\"${value}\"|" "$STATE_FILE"
|
|
100
|
+
else
|
|
101
|
+
local tmp
|
|
102
|
+
tmp=$(mktemp)
|
|
103
|
+
sed "s|}$|,\"${key}\":\"${value}\"}|" "$STATE_FILE" > "$tmp" && mv "$tmp" "$STATE_FILE"
|
|
104
|
+
fi
|
|
105
|
+
fi
|
|
106
|
+
) 200>"${STATE_FILE}.lock"
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
state_delete() {
|
|
110
|
+
local key="$1"
|
|
111
|
+
ensure_state
|
|
112
|
+
(
|
|
113
|
+
flock -w 5 200 || { echo "WARN: state_delete flock timeout for key=$key" >&2; return 0; }
|
|
114
|
+
if command -v jq &>/dev/null; then
|
|
115
|
+
local tmp
|
|
116
|
+
tmp=$(mktemp)
|
|
117
|
+
jq --arg k "$key" 'del(.[$k])' "$STATE_FILE" > "$tmp" && mv "$tmp" "$STATE_FILE"
|
|
118
|
+
fi
|
|
119
|
+
) 200>"${STATE_FILE}.lock"
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
# ===== Hook Output =====
|
|
123
|
+
# Produces JSON that Claude Code parses:
|
|
124
|
+
# systemMessage → shown to user as notification
|
|
125
|
+
# hookSpecificOutput.additionalContext → injected into Claude's context (LLM sees this)
|
|
126
|
+
# hookSpecificOutput.hookEventName → identifies which hook event produced this context
|
|
127
|
+
#
|
|
128
|
+
# Usage: hook_output "User-visible message" "Context for Claude LLM" ["HookEventName"]
|
|
129
|
+
hook_output() {
|
|
130
|
+
local system_message="$1"
|
|
131
|
+
local additional_context="${2:-}"
|
|
132
|
+
local hook_event_name="${3:-}"
|
|
133
|
+
local updated_input_json="${4:-}" # Optional: raw JSON object for updatedInput
|
|
134
|
+
if command -v jq &>/dev/null; then
|
|
135
|
+
if [ -n "$updated_input_json" ]; then
|
|
136
|
+
# Build output with updatedInput (for PreToolUse parameter modification)
|
|
137
|
+
jq -n \
|
|
138
|
+
--arg sm "$system_message" \
|
|
139
|
+
--arg ac "$additional_context" \
|
|
140
|
+
--arg hen "$hook_event_name" \
|
|
141
|
+
--argjson ui "$updated_input_json" \
|
|
142
|
+
'{systemMessage: $sm, hookSpecificOutput: {hookEventName: $hen, additionalContext: $ac, updatedInput: $ui}}'
|
|
143
|
+
elif [ -n "$additional_context" ]; then
|
|
144
|
+
jq -n \
|
|
145
|
+
--arg sm "$system_message" \
|
|
146
|
+
--arg ac "$additional_context" \
|
|
147
|
+
--arg hen "$hook_event_name" \
|
|
148
|
+
'{systemMessage: $sm, hookSpecificOutput: {hookEventName: $hen, additionalContext: $ac}}'
|
|
149
|
+
else
|
|
150
|
+
jq -n \
|
|
151
|
+
--arg sm "$system_message" \
|
|
152
|
+
'{systemMessage: $sm}'
|
|
153
|
+
fi
|
|
154
|
+
else
|
|
155
|
+
# Fallback: manual JSON — escape newlines and quotes
|
|
156
|
+
local sm_escaped="${system_message//\\/\\\\}"
|
|
157
|
+
sm_escaped="${sm_escaped//\"/\\\"}"
|
|
158
|
+
sm_escaped="${sm_escaped//$'\n'/\\n}"
|
|
159
|
+
if [ -n "$additional_context" ]; then
|
|
160
|
+
local ac_escaped="${additional_context//\\/\\\\}"
|
|
161
|
+
ac_escaped="${ac_escaped//\"/\\\"}"
|
|
162
|
+
ac_escaped="${ac_escaped//$'\n'/\\n}"
|
|
163
|
+
printf '{"systemMessage":"%s","hookSpecificOutput":{"hookEventName":"%s","additionalContext":"%s"}}\n' "$sm_escaped" "$hook_event_name" "$ac_escaped"
|
|
164
|
+
else
|
|
165
|
+
printf '{"systemMessage":"%s"}\n' "$sm_escaped"
|
|
166
|
+
fi
|
|
167
|
+
fi
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
# ===== Session File Management (Plan A) =====
|
|
171
|
+
|
|
172
|
+
SESSIONS_DIR="${STATE_DIR}/sessions"
|
|
173
|
+
|
|
174
|
+
# Read a session file by agent name
|
|
175
|
+
# Usage: session_file_read <agent_name>
|
|
176
|
+
session_file_read() {
|
|
177
|
+
local name="$1"
|
|
178
|
+
local file="${SESSIONS_DIR}/${name}.json"
|
|
179
|
+
if [ -f "$file" ]; then
|
|
180
|
+
cat "$file"
|
|
181
|
+
else
|
|
182
|
+
echo "" >&2
|
|
183
|
+
return 1
|
|
184
|
+
fi
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
# List all session files
|
|
188
|
+
session_file_list() {
|
|
189
|
+
if [ ! -d "$SESSIONS_DIR" ]; then
|
|
190
|
+
echo "[]"
|
|
191
|
+
return
|
|
192
|
+
fi
|
|
193
|
+
if command -v jq &>/dev/null; then
|
|
194
|
+
local result="["
|
|
195
|
+
local first=true
|
|
196
|
+
for f in "$SESSIONS_DIR"/*.json; do
|
|
197
|
+
[ -f "$f" ] || continue
|
|
198
|
+
if [ "$first" = true ]; then
|
|
199
|
+
first=false
|
|
200
|
+
else
|
|
201
|
+
result="${result},"
|
|
202
|
+
fi
|
|
203
|
+
result="${result}$(cat "$f")"
|
|
204
|
+
done
|
|
205
|
+
result="${result}]"
|
|
206
|
+
echo "$result" | jq '.'
|
|
207
|
+
else
|
|
208
|
+
ls "$SESSIONS_DIR"/*.json 2>/dev/null | while read -r f; do
|
|
209
|
+
basename "$f" .json
|
|
210
|
+
done
|
|
211
|
+
fi
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
# ===== Subcommands =====
|
|
215
|
+
|
|
216
|
+
cmd_checkin() {
|
|
217
|
+
require_env
|
|
218
|
+
api_call GET "/api/health"
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
# Call an MCP tool via JSON-RPC over HTTP Streamable Transport
|
|
222
|
+
# Usage: cmd_mcp_tool <tool_name> [arguments_json]
|
|
223
|
+
# Returns the text content from the tool result
|
|
224
|
+
cmd_mcp_tool() {
|
|
225
|
+
local tool_name="${1:-}"
|
|
226
|
+
local arguments="${2:-{\}}"
|
|
227
|
+
[ -n "$tool_name" ] || die "Usage: chorus-api.sh mcp-tool <tool_name> [arguments_json]"
|
|
228
|
+
require_env
|
|
229
|
+
ensure_state
|
|
230
|
+
|
|
231
|
+
local mcp_url="${CHORUS_URL}/api/mcp"
|
|
232
|
+
local auth_header="Authorization: Bearer ${CHORUS_API_KEY}"
|
|
233
|
+
local max_retries=3
|
|
234
|
+
local retry_count=0
|
|
235
|
+
local session_id=""
|
|
236
|
+
local tool_response=""
|
|
237
|
+
|
|
238
|
+
# Retry loop for auto-reconnection on 404 (session expired)
|
|
239
|
+
while [ $retry_count -le $max_retries ]; do
|
|
240
|
+
# Step 1: Initialize MCP session
|
|
241
|
+
local init_payload
|
|
242
|
+
init_payload=$(cat <<JSONEOF
|
|
243
|
+
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"chorus-hook","version":"0.1.1"}}}
|
|
244
|
+
JSONEOF
|
|
245
|
+
)
|
|
246
|
+
|
|
247
|
+
# Use a unique temp file for headers to avoid concurrent hooks overwriting each other
|
|
248
|
+
local headers_file
|
|
249
|
+
headers_file=$(mktemp "${STATE_DIR}/.mcp_headers.XXXXXX")
|
|
250
|
+
|
|
251
|
+
local init_response
|
|
252
|
+
init_response=$(curl -s -S -X POST \
|
|
253
|
+
-H "$auth_header" \
|
|
254
|
+
-H "Content-Type: application/json" \
|
|
255
|
+
-H "Accept: application/json, text/event-stream" \
|
|
256
|
+
-D "$headers_file" \
|
|
257
|
+
-d "$init_payload" \
|
|
258
|
+
"$mcp_url" 2>/dev/null) || { rm -f "$headers_file"; die "MCP initialize failed"; }
|
|
259
|
+
|
|
260
|
+
# Extract session ID from response headers (optional — stateless servers don't return one)
|
|
261
|
+
session_id=$(grep -i "^mcp-session-id:" "$headers_file" 2>/dev/null | tr -d '\r' | awk '{print $2}') || true
|
|
262
|
+
rm -f "$headers_file"
|
|
263
|
+
|
|
264
|
+
# Build session header (empty string if stateless server returned no session ID)
|
|
265
|
+
local session_header=""
|
|
266
|
+
if [ -n "$session_id" ]; then
|
|
267
|
+
session_header="mcp-session-id: $session_id"
|
|
268
|
+
fi
|
|
269
|
+
|
|
270
|
+
# Step 2: Send initialized notification
|
|
271
|
+
local notif_payload='{"jsonrpc":"2.0","method":"notifications/initialized"}'
|
|
272
|
+
if [ -n "$session_header" ]; then
|
|
273
|
+
curl -s -S -X POST \
|
|
274
|
+
-H "$auth_header" \
|
|
275
|
+
-H "Content-Type: application/json" \
|
|
276
|
+
-H "Accept: application/json, text/event-stream" \
|
|
277
|
+
-H "$session_header" \
|
|
278
|
+
-d "$notif_payload" \
|
|
279
|
+
"$mcp_url" >/dev/null 2>&1 || true
|
|
280
|
+
else
|
|
281
|
+
curl -s -S -X POST \
|
|
282
|
+
-H "$auth_header" \
|
|
283
|
+
-H "Content-Type: application/json" \
|
|
284
|
+
-H "Accept: application/json, text/event-stream" \
|
|
285
|
+
-d "$notif_payload" \
|
|
286
|
+
"$mcp_url" >/dev/null 2>&1 || true
|
|
287
|
+
fi
|
|
288
|
+
|
|
289
|
+
# Step 3: Call the tool
|
|
290
|
+
local call_payload
|
|
291
|
+
call_payload=$(printf '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"%s","arguments":%s}}' "$tool_name" "$arguments")
|
|
292
|
+
|
|
293
|
+
# Capture HTTP status code and response separately
|
|
294
|
+
local http_code
|
|
295
|
+
local response_file
|
|
296
|
+
response_file=$(mktemp "${STATE_DIR}/.mcp_response.XXXXXX")
|
|
297
|
+
|
|
298
|
+
if [ -n "$session_header" ]; then
|
|
299
|
+
http_code=$(curl -s -S -X POST \
|
|
300
|
+
-H "$auth_header" \
|
|
301
|
+
-H "Content-Type: application/json" \
|
|
302
|
+
-H "Accept: application/json, text/event-stream" \
|
|
303
|
+
-H "$session_header" \
|
|
304
|
+
-d "$call_payload" \
|
|
305
|
+
-w "%{http_code}" \
|
|
306
|
+
-o "$response_file" \
|
|
307
|
+
"$mcp_url" 2>/dev/null) || http_code="000"
|
|
308
|
+
else
|
|
309
|
+
http_code=$(curl -s -S -X POST \
|
|
310
|
+
-H "$auth_header" \
|
|
311
|
+
-H "Content-Type: application/json" \
|
|
312
|
+
-H "Accept: application/json, text/event-stream" \
|
|
313
|
+
-d "$call_payload" \
|
|
314
|
+
-w "%{http_code}" \
|
|
315
|
+
-o "$response_file" \
|
|
316
|
+
"$mcp_url" 2>/dev/null) || http_code="000"
|
|
317
|
+
fi
|
|
318
|
+
|
|
319
|
+
# Check if session expired (404)
|
|
320
|
+
if [ "$http_code" = "404" ]; then
|
|
321
|
+
retry_count=$((retry_count + 1))
|
|
322
|
+
rm -f "$response_file"
|
|
323
|
+
|
|
324
|
+
if [ $retry_count -le $max_retries ]; then
|
|
325
|
+
# Session expired - retry with new session
|
|
326
|
+
continue
|
|
327
|
+
else
|
|
328
|
+
die "MCP session expired after retry. Please reinitialize."
|
|
329
|
+
fi
|
|
330
|
+
fi
|
|
331
|
+
|
|
332
|
+
# Read the response
|
|
333
|
+
tool_response=$(cat "$response_file")
|
|
334
|
+
rm -f "$response_file"
|
|
335
|
+
|
|
336
|
+
# Break the retry loop - request succeeded
|
|
337
|
+
break
|
|
338
|
+
done
|
|
339
|
+
|
|
340
|
+
# Step 4: Close session (best effort, only for stateful servers)
|
|
341
|
+
if [ -n "$session_id" ]; then
|
|
342
|
+
curl -s -S -X DELETE \
|
|
343
|
+
-H "$auth_header" \
|
|
344
|
+
-H "mcp-session-id: $session_id" \
|
|
345
|
+
"$mcp_url" >/dev/null 2>&1 || true
|
|
346
|
+
fi
|
|
347
|
+
|
|
348
|
+
# Response may be SSE format (event: message\ndata: {...}) or plain JSON
|
|
349
|
+
# Strip SSE framing to get the JSON payload
|
|
350
|
+
local json_response
|
|
351
|
+
if echo "$tool_response" | grep -q "^data: "; then
|
|
352
|
+
json_response=$(echo "$tool_response" | grep "^data: " | head -1 | sed 's/^data: //')
|
|
353
|
+
else
|
|
354
|
+
json_response="$tool_response"
|
|
355
|
+
fi
|
|
356
|
+
|
|
357
|
+
# Extract text content from result
|
|
358
|
+
if command -v jq &>/dev/null; then
|
|
359
|
+
echo "$json_response" | jq -r '.result.content[]? | select(.type=="text") | .text // empty' 2>/dev/null || echo "$json_response"
|
|
360
|
+
else
|
|
361
|
+
echo "$json_response"
|
|
362
|
+
fi
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
# ===== Main Dispatch =====
|
|
366
|
+
|
|
367
|
+
cmd="${1:-}"
|
|
368
|
+
shift || true
|
|
369
|
+
|
|
370
|
+
case "$cmd" in
|
|
371
|
+
checkin) cmd_checkin "$@" ;;
|
|
372
|
+
mcp-tool) cmd_mcp_tool "$@" ;;
|
|
373
|
+
state-get) state_get "${1:-}" ;;
|
|
374
|
+
state-set) state_set "${1:-}" "${2:-}" ;;
|
|
375
|
+
state-delete) state_delete "${1:-}" ;;
|
|
376
|
+
session-read) session_file_read "${1:-}" ;;
|
|
377
|
+
session-list) session_file_list ;;
|
|
378
|
+
hook-output) hook_output "${1:-}" "${2:-}" "${3:-}" "${4:-}" ;;
|
|
379
|
+
*)
|
|
380
|
+
echo "Usage: chorus-api.sh <command> [args...]"
|
|
381
|
+
echo ""
|
|
382
|
+
echo "Commands:"
|
|
383
|
+
echo " checkin Check connectivity with Chorus"
|
|
384
|
+
echo " mcp-tool <name> [args_json] Call an MCP tool via JSON-RPC"
|
|
385
|
+
echo " state-get <key> Read from state.json"
|
|
386
|
+
echo " state-set <key> <value> Write to state.json"
|
|
387
|
+
echo " state-delete <key> Delete key from state.json"
|
|
388
|
+
echo " session-read <name> Read session file for an agent"
|
|
389
|
+
echo " session-list List all pre-created session files"
|
|
390
|
+
exit 1
|
|
391
|
+
;;
|
|
392
|
+
esac
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# on-agent-spawn.sh — Kiro `agentSpawn` hook for the `chorus` main agent.
|
|
3
|
+
#
|
|
4
|
+
# Kiro contract (kiro.dev/docs/cli/hooks): the agentSpawn event delivers
|
|
5
|
+
# {hook_event_name, cwd, session_id} on STDIN, and on exit 0 the hook's
|
|
6
|
+
# STDOUT is added to the agent's context as PLAIN TEXT (there is no
|
|
7
|
+
# hookSpecificOutput/additionalContext JSON envelope the way Claude Code
|
|
8
|
+
# uses — that is the load-bearing difference from the CC on-session-start
|
|
9
|
+
# hook this is ported from).
|
|
10
|
+
#
|
|
11
|
+
# Behavior (parity with CC public/chorus-plugin/bin/on-session-start.sh):
|
|
12
|
+
# * If CHORUS_URL / CHORUS_API_KEY are unset -> print a "not configured"
|
|
13
|
+
# notice to STDOUT and exit 0. NEVER abort the spawn.
|
|
14
|
+
# * Otherwise call chorus_checkin over MCP and print the result (agent
|
|
15
|
+
# owner / permissions / idea tracker) as the startup context.
|
|
16
|
+
# * If Chorus is unreachable, print a warning and exit 0 (degrade
|
|
17
|
+
# gracefully — the spawn must not fail).
|
|
18
|
+
#
|
|
19
|
+
# Bash 3.2 compatible (CLAUDE.md pitfall #10): no ${VAR,,}/${VAR^^},
|
|
20
|
+
# no `declare -A`, no `readarray`/`mapfile`, no `&>>`, no `|&`.
|
|
21
|
+
|
|
22
|
+
set -euo pipefail
|
|
23
|
+
|
|
24
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
25
|
+
API="${SCRIPT_DIR}/chorus-api.sh"
|
|
26
|
+
|
|
27
|
+
# Drain the event JSON from STDIN if present (base fields only for
|
|
28
|
+
# agentSpawn; not needed for logic, but consume it so the pipe closes).
|
|
29
|
+
EVENT=""
|
|
30
|
+
if [ ! -t 0 ]; then
|
|
31
|
+
EVENT=$(cat)
|
|
32
|
+
fi
|
|
33
|
+
|
|
34
|
+
# Not configured -> plain-text notice, exit 0 (never abort spawn).
|
|
35
|
+
if [ -z "${CHORUS_URL:-}" ] || [ -z "${CHORUS_API_KEY:-}" ]; then
|
|
36
|
+
printf '%s\n' "Chorus plugin: not configured. Set CHORUS_URL and CHORUS_API_KEY to enable Chorus session automation (checkin, reviewer nudges, checkout)."
|
|
37
|
+
exit 0
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
# Call chorus_checkin via MCP. On any failure, warn and exit 0.
|
|
41
|
+
CHECKIN_RESULT=$("$API" mcp-tool "chorus_checkin" '{}' 2>/dev/null) || {
|
|
42
|
+
printf '%s\n' "Chorus plugin: unable to reach Chorus at ${CHORUS_URL}. Session lifecycle hooks are inactive for this session."
|
|
43
|
+
exit 0
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if [ -z "$CHECKIN_RESULT" ]; then
|
|
47
|
+
printf '%s\n' "Chorus plugin: checkin returned no data from ${CHORUS_URL}. Session lifecycle hooks may be degraded."
|
|
48
|
+
exit 0
|
|
49
|
+
fi
|
|
50
|
+
|
|
51
|
+
# Emit the startup context as plain text (Kiro adds STDOUT to context).
|
|
52
|
+
# The checkin payload carries agent owner, effective permissions, and the
|
|
53
|
+
# recent-idea tracker — surfaced verbatim, same as the CC hook.
|
|
54
|
+
CONTEXT="# Chorus Plugin — Active
|
|
55
|
+
|
|
56
|
+
Chorus is connected at ${CHORUS_URL}. Session lifecycle hooks are enabled (checkin on spawn, best-effort heartbeat/checkout on stop, reviewer nudges after workflow MCP calls).
|
|
57
|
+
|
|
58
|
+
## Checkin
|
|
59
|
+
|
|
60
|
+
${CHECKIN_RESULT}
|
|
61
|
+
|
|
62
|
+
## Quick Reference
|
|
63
|
+
|
|
64
|
+
- **Idea Tracker**: the checkin above lists up to 10 most recently updated ideas. Use chorus_get_ideas() for the full list.
|
|
65
|
+
- **Reviewers**: after chorus_pm_submit_proposal / chorus_submit_for_verify / chorus_admin_verify_task, a postToolUse hook will nudge you to spawn the matching read-only reviewer subagent (chorus-proposal-reviewer / chorus-task-reviewer / chorus-code-reviewer). See /chorus-review.
|
|
66
|
+
- **Notifications**: chorus_get_notifications() fetches and auto-marks read. See /chorus-develop.
|
|
67
|
+
- **Project Groups**: chorus_get_project_groups() before creating projects."
|
|
68
|
+
|
|
69
|
+
# Resume: if a Chorus session was cached by a prior swarm-mode flow,
|
|
70
|
+
# send a best-effort heartbeat and note it in context. No session cached
|
|
71
|
+
# in the common single-agent case -> nothing to resume (silent).
|
|
72
|
+
MAIN_SESSION=$("$API" state-get "main_session_uuid" 2>/dev/null) || true
|
|
73
|
+
if [ -n "$MAIN_SESSION" ]; then
|
|
74
|
+
CONTEXT="${CONTEXT}
|
|
75
|
+
|
|
76
|
+
Resuming with existing Chorus session: ${MAIN_SESSION}"
|
|
77
|
+
"$API" mcp-tool "chorus_session_heartbeat" "$(printf '{"sessionUuid":"%s"}' "$MAIN_SESSION")" >/dev/null 2>&1 || true
|
|
78
|
+
fi
|
|
79
|
+
|
|
80
|
+
printf '%s\n' "$CONTEXT"
|
|
81
|
+
exit 0
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# on-post-submit-for-verify.sh — Kiro `postToolUse` hook matched to
|
|
3
|
+
# @chorus/chorus_submit_for_verify.
|
|
4
|
+
#
|
|
5
|
+
# Kiro contract: postToolUse delivers {tool_name, tool_input,
|
|
6
|
+
# tool_response, ...} on STDIN; on exit 0 the hook's STDOUT is added to
|
|
7
|
+
# the agent's context as PLAIN TEXT (no additionalContext JSON envelope).
|
|
8
|
+
#
|
|
9
|
+
# Behavior: emit a nudge to spawn the read-only `chorus-task-reviewer`
|
|
10
|
+
# subagent before admin verification. If the event carries no parseable
|
|
11
|
+
# taskUuid -> exit 0 with NO output (no broken nudge).
|
|
12
|
+
#
|
|
13
|
+
# Bash 3.2 compatible (CLAUDE.md pitfall #10).
|
|
14
|
+
|
|
15
|
+
set -euo pipefail
|
|
16
|
+
|
|
17
|
+
# Config toggle — default enabled (Kiro analog of CC's ENABLETASKREVIEWER).
|
|
18
|
+
if [ "${CHORUS_ENABLE_TASK_REVIEWER:-true}" != "true" ]; then
|
|
19
|
+
exit 0
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
EVENT=""
|
|
23
|
+
if [ ! -t 0 ]; then
|
|
24
|
+
EVENT=$(cat)
|
|
25
|
+
fi
|
|
26
|
+
if [ -z "$EVENT" ]; then
|
|
27
|
+
exit 0
|
|
28
|
+
fi
|
|
29
|
+
|
|
30
|
+
# Extract taskUuid from tool_input; silent exit if missing/unparseable.
|
|
31
|
+
TASK_UUID=""
|
|
32
|
+
if command -v jq >/dev/null 2>&1; then
|
|
33
|
+
TASK_UUID=$(printf '%s' "$EVENT" | jq -r '.tool_input.taskUuid // empty' 2>/dev/null) || true
|
|
34
|
+
fi
|
|
35
|
+
if [ -z "$TASK_UUID" ]; then
|
|
36
|
+
exit 0
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
# Optional task title from tool_response.
|
|
40
|
+
TITLE_DISPLAY=""
|
|
41
|
+
if command -v jq >/dev/null 2>&1; then
|
|
42
|
+
TASK_TITLE=$(printf '%s' "$EVENT" | jq -r '.tool_response.title // empty' 2>/dev/null) || true
|
|
43
|
+
if [ -n "${TASK_TITLE:-}" ]; then
|
|
44
|
+
TITLE_DISPLAY=" '${TASK_TITLE}'"
|
|
45
|
+
fi
|
|
46
|
+
fi
|
|
47
|
+
|
|
48
|
+
# Max review rounds (0 = unlimited). Kiro analog of CC's
|
|
49
|
+
# CLAUDE_PLUGIN_OPTION_MAXTASKREVIEWROUNDS.
|
|
50
|
+
MAX_ROUNDS="${CHORUS_MAX_TASK_REVIEW_ROUNDS:-3}"
|
|
51
|
+
|
|
52
|
+
printf '%s\n' "[Chorus Plugin — Task Submitted for Verification]
|
|
53
|
+
Task${TITLE_DISPLAY} (UUID: ${TASK_UUID}) has been submitted for verification.
|
|
54
|
+
|
|
55
|
+
Max review rounds: ${MAX_ROUNDS} (0 = unlimited).
|
|
56
|
+
|
|
57
|
+
ACTION REQUIRED: spawn the read-only \`chorus-task-reviewer\` subagent to perform an independent review before admin verification.
|
|
58
|
+
|
|
59
|
+
In Kiro, hand the reviewer this task (auto-selected by its description; also invokable as /chorus-task-reviewer): \"Review task ${TASK_UUID}. Max review rounds: ${MAX_ROUNDS}. First, read existing comments to count previous VERDICTs and determine your round number. If max > 0 and your round exceeds max, skip the review and post a comment saying the limit was reached — human decision needed. Otherwise, proceed with the review and post your VERDICT as a comment on the task.\"
|
|
60
|
+
|
|
61
|
+
The reviewer is read-only (tools: read + @chorus) and posts its VERDICT as a comment on the task. After it completes, read comments and act on the most recent \`VERDICT:\` line:
|
|
62
|
+
- VERDICT: PASS — all AC verified, no issues. Proceed to mark AC and call chorus_admin_verify_task.
|
|
63
|
+
- VERDICT: PASS WITH NOTES — all AC verified, minor non-blocking notes. Still proceed to verify.
|
|
64
|
+
- VERDICT: FAIL — BLOCKERs found. Do NOT verify. Reopen the task (chorus_admin_reopen_task) and fix the BLOCKERs.
|
|
65
|
+
|
|
66
|
+
IMPORTANT: run the reviewer synchronously and wait for its VERDICT before proceeding."
|
|
67
|
+
|
|
68
|
+
exit 0
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# on-post-submit-proposal.sh — Kiro `postToolUse` hook matched to
|
|
3
|
+
# @chorus/chorus_pm_submit_proposal.
|
|
4
|
+
#
|
|
5
|
+
# Kiro contract (kiro.dev/docs/cli/hooks): postToolUse delivers
|
|
6
|
+
# {hook_event_name, tool_name, tool_input, tool_response, cwd, session_id}
|
|
7
|
+
# on STDIN, and on exit 0 the hook's STDOUT is added to the agent's
|
|
8
|
+
# context as PLAIN TEXT. (No hookSpecificOutput/additionalContext JSON
|
|
9
|
+
# envelope — that is the difference from the CC on-post-submit-proposal
|
|
10
|
+
# hook this is ported from.)
|
|
11
|
+
#
|
|
12
|
+
# Behavior: emit a nudge to spawn the read-only `chorus-proposal-reviewer`
|
|
13
|
+
# subagent before admin approval. If the event carries no parseable
|
|
14
|
+
# proposalUuid -> exit 0 with NO output (no broken nudge).
|
|
15
|
+
#
|
|
16
|
+
# Bash 3.2 compatible (CLAUDE.md pitfall #10).
|
|
17
|
+
|
|
18
|
+
set -euo pipefail
|
|
19
|
+
|
|
20
|
+
# Config toggle — default enabled. CHORUS_ENABLE_PROPOSAL_REVIEWER is the
|
|
21
|
+
# Kiro analog of CC's CLAUDE_PLUGIN_OPTION_ENABLEPROPOSALREVIEWER (Kiro has
|
|
22
|
+
# no userConfig plumbing, so we read a plain env var).
|
|
23
|
+
if [ "${CHORUS_ENABLE_PROPOSAL_REVIEWER:-true}" != "true" ]; then
|
|
24
|
+
exit 0
|
|
25
|
+
fi
|
|
26
|
+
|
|
27
|
+
# Read the event JSON from STDIN.
|
|
28
|
+
EVENT=""
|
|
29
|
+
if [ ! -t 0 ]; then
|
|
30
|
+
EVENT=$(cat)
|
|
31
|
+
fi
|
|
32
|
+
if [ -z "$EVENT" ]; then
|
|
33
|
+
exit 0
|
|
34
|
+
fi
|
|
35
|
+
|
|
36
|
+
# Extract proposalUuid from tool_input. printf (not echo) preserves
|
|
37
|
+
# multi-line JSON. If jq is unavailable or the field is empty -> silent
|
|
38
|
+
# exit 0 (no broken nudge).
|
|
39
|
+
PROPOSAL_UUID=""
|
|
40
|
+
if command -v jq >/dev/null 2>&1; then
|
|
41
|
+
PROPOSAL_UUID=$(printf '%s' "$EVENT" | jq -r '.tool_input.proposalUuid // empty' 2>/dev/null) || true
|
|
42
|
+
fi
|
|
43
|
+
if [ -z "$PROPOSAL_UUID" ]; then
|
|
44
|
+
exit 0
|
|
45
|
+
fi
|
|
46
|
+
|
|
47
|
+
# Optional proposal title from tool_response for a friendlier nudge.
|
|
48
|
+
TITLE_DISPLAY=""
|
|
49
|
+
if command -v jq >/dev/null 2>&1; then
|
|
50
|
+
PROPOSAL_TITLE=$(printf '%s' "$EVENT" | jq -r '.tool_response.title // empty' 2>/dev/null) || true
|
|
51
|
+
if [ -n "${PROPOSAL_TITLE:-}" ]; then
|
|
52
|
+
TITLE_DISPLAY=" '${PROPOSAL_TITLE}'"
|
|
53
|
+
fi
|
|
54
|
+
fi
|
|
55
|
+
|
|
56
|
+
# Max review rounds (0 = unlimited). Kiro analog of CC's
|
|
57
|
+
# CLAUDE_PLUGIN_OPTION_MAXPROPOSALREVIEWROUNDS.
|
|
58
|
+
MAX_ROUNDS="${CHORUS_MAX_PROPOSAL_REVIEW_ROUNDS:-3}"
|
|
59
|
+
|
|
60
|
+
printf '%s\n' "[Chorus Plugin — Proposal Submitted for Review]
|
|
61
|
+
Proposal${TITLE_DISPLAY} (UUID: ${PROPOSAL_UUID}) has been submitted.
|
|
62
|
+
|
|
63
|
+
Max review rounds: ${MAX_ROUNDS} (0 = unlimited).
|
|
64
|
+
|
|
65
|
+
ACTION REQUIRED: spawn the read-only \`chorus-proposal-reviewer\` subagent to perform an independent quality review before admin approval.
|
|
66
|
+
|
|
67
|
+
In Kiro, hand the reviewer this task (it is auto-selected by its description; you can also invoke it as /chorus-proposal-reviewer): \"Review proposal ${PROPOSAL_UUID}. Max review rounds: ${MAX_ROUNDS}. First, read existing comments to count previous VERDICTs and determine your round number. If max > 0 and your round exceeds max, skip the review and post a comment saying the limit was reached — human decision needed. Otherwise, proceed with the review and post your VERDICT as a comment on the proposal.\"
|
|
68
|
+
|
|
69
|
+
The reviewer is read-only (tools: read + @chorus) and posts its VERDICT as a comment on the proposal. After it completes, read comments and act on the most recent \`VERDICT:\` line:
|
|
70
|
+
- VERDICT: PASS — no issues. Proceed to approve (chorus_admin_approve_proposal).
|
|
71
|
+
- VERDICT: PASS WITH NOTES — minor non-blocking notes. Still proceed to approve.
|
|
72
|
+
- VERDICT: FAIL — BLOCKERs found. Do NOT approve. Reject (chorus_pm_reject_proposal), fix the BLOCKERs, and resubmit.
|
|
73
|
+
|
|
74
|
+
IMPORTANT: run the reviewer synchronously and wait for its VERDICT before proceeding."
|
|
75
|
+
|
|
76
|
+
exit 0
|