@chorus-aidlc/chorus 0.16.4 → 0.17.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 +511 -511
- package/.next/standalone/.next/app-path-routes-manifest.json +47 -47
- package/.next/standalone/.next/build-manifest.json +6 -6
- package/.next/standalone/.next/prerender-manifest.json +42 -42
- package/.next/standalone/.next/react-loadable-manifest.json +1 -1
- package/.next/standalone/.next/required-server-files.json +4 -4
- package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +3 -3
- 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.js +2 -2
- 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 +5 -5
- package/.next/standalone/.next/server/app/admin/companies/[uuid]/page.js +2 -2
- package/.next/standalone/.next/server/app/admin/companies/[uuid]/page.js.nft.json +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.js +2 -2
- package/.next/standalone/.next/server/app/admin/companies/new/page.js.nft.json +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 +7 -7
- package/.next/standalone/.next/server/app/admin/companies/page.js +2 -2
- package/.next/standalone/.next/server/app/admin/companies/page.js.nft.json +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 +7 -7
- package/.next/standalone/.next/server/app/admin/page.js +2 -2
- package/.next/standalone/.next/server/app/admin/page.js.nft.json +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 +7 -7
- package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route.js +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.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.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.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.js +1 -1
- package/.next/standalone/.next/server/app/api/agent-connections/route.js.nft.json +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.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.js.nft.json +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.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.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.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.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.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.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.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.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.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.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.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.js.nft.json +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/connection-heartbeat/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/connection-heartbeat/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/connection-heartbeat/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/control/route.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/directory-request/report/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/directory-request/report/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/directory-request/report/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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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-directory-requests/[uuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-directory-requests/[uuid]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-directory-requests/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-directory-requests/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-directory-requests/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-directory-requests/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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.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.js.nft.json +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.js.nft.json +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 +9 -3
- package/.next/standalone/.next/server/app/api/events/route.js.nft.json +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.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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/conversational/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/conversational/route.js.nft.json +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 +5 -5
- package/.next/standalone/.next/server/app/api/mcp/route.js.nft.json +1 -1
- 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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.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.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.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 -1
- package/.next/standalone/.next/server/app/api/project-visits/pin/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-visits/route.js +1 -1
- package/.next/standalone/.next/server/app/api/project-visits/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-visits/visit/route.js +1 -1
- package/.next/standalone/.next/server/app/api/project-visits/visit/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route.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]/agent-cwds/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/agent-cwds/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/agent-cwds/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.js.nft.json +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.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.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.js.nft.json +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.js.nft.json +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.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.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.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.js.nft.json +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.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.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.js.nft.json +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.js.nft.json +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/agent-cwd-options/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/agent-cwd-options/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/agent-cwd-options/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/route.js.nft.json +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.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.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.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.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.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.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.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.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.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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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/favicon.ico/route.js +1 -1
- package/.next/standalone/.next/server/app/index.html +2 -2
- package/.next/standalone/.next/server/app/index.rsc +6 -6
- package/.next/standalone/.next/server/app/login/admin/page.js +2 -2
- package/.next/standalone/.next/server/app/login/admin/page.js.nft.json +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 +6 -6
- package/.next/standalone/.next/server/app/login/callback/page.js +2 -2
- package/.next/standalone/.next/server/app/login/callback/page.js.nft.json +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 +6 -6
- package/.next/standalone/.next/server/app/login/page.js +2 -2
- package/.next/standalone/.next/server/app/login/page.js.nft.json +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.js +2 -2
- package/.next/standalone/.next/server/app/login/pick-workspace/page.js.nft.json +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 +6 -6
- package/.next/standalone/.next/server/app/login.html +2 -2
- package/.next/standalone/.next/server/app/login.rsc +6 -6
- package/.next/standalone/.next/server/app/onboarding/page.js +2 -2
- package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +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 +6 -6
- package/.next/standalone/.next/server/app/page.js +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 +7 -7
- package/.next/standalone/.next/server/app/settings.html +2 -2
- package/.next/standalone/.next/server/app/settings.rsc +7 -7
- package/.next/standalone/.next/server/app-paths-manifest.json +47 -47
- package/.next/standalone/.next/server/chunks/1073.js +1 -0
- package/.next/standalone/.next/server/chunks/1114.js +1 -0
- package/.next/standalone/.next/server/chunks/1267.js +1 -0
- package/.next/standalone/.next/server/chunks/1318.js +1 -1
- package/.next/standalone/.next/server/chunks/1559.js +2 -2
- package/.next/standalone/.next/server/chunks/2570.js +2 -2
- package/.next/standalone/.next/server/chunks/2572.js +1 -1
- package/.next/standalone/.next/server/chunks/2940.js +1 -1
- package/.next/standalone/.next/server/chunks/2961.js +1 -1
- package/.next/standalone/.next/server/chunks/3197.js +1 -1
- package/.next/standalone/.next/server/chunks/378.js +4 -4
- package/.next/standalone/.next/server/chunks/4827.js +1 -1
- package/.next/standalone/.next/server/chunks/5245.js +1 -1
- package/.next/standalone/.next/server/chunks/{5351.js → 5737.js} +13 -9
- package/.next/standalone/.next/server/chunks/6113.js +1 -1
- package/.next/standalone/.next/server/chunks/6145.js +1 -0
- package/.next/standalone/.next/server/chunks/6487.js +1 -0
- package/.next/standalone/.next/server/chunks/6506.js +1 -1
- package/.next/standalone/.next/server/chunks/6515.js +2 -2
- package/.next/standalone/.next/server/chunks/6753.js +3 -3
- package/.next/standalone/.next/server/chunks/679.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/7770.js +1 -0
- package/.next/standalone/.next/server/chunks/{4394.js → 7822.js} +1 -1
- package/.next/standalone/.next/server/chunks/8454.js +1 -1
- package/.next/standalone/.next/server/chunks/8586.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/9931.js +1 -0
- package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/.next/standalone/.next/server/middleware-manifest.json +5 -5
- package/.next/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/standalone/.next/server/next-font-manifest.js +1 -1
- package/.next/standalone/.next/server/next-font-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/server/src/middleware.js +2 -2
- package/.next/standalone/.next/static/chunks/{11595.a6268c75ca8a2163.js → 11595.32f7dedc4fd7e3e1.js} +1 -1
- package/.next/standalone/.next/static/chunks/11998-27dcf858173fc015.js +1 -0
- package/.next/standalone/.next/static/chunks/12070-426bb88f5179812b.js +1 -0
- package/.next/standalone/.next/static/chunks/17409-67dbc0a3f4cbc207.js +1 -0
- package/.next/standalone/.next/static/chunks/26494-5a04e150431b0233.js +1 -0
- package/.next/standalone/.next/static/chunks/{31308-fda6febfb2882a28.js → 31308-bb4a97b3f39c22dd.js} +1 -1
- package/.next/standalone/.next/static/chunks/{33456.16ff7edf00137539.js → 33456.87f86ce6041405e0.js} +1 -1
- package/.next/standalone/.next/static/chunks/38366.fb931fab9c756890.js +1 -0
- package/.next/standalone/.next/static/chunks/4166-85352630c29e2c2b.js +1 -0
- package/.next/standalone/.next/static/chunks/{4860.9e06848eb531e667.js → 4860.9457e021394e9399.js} +1 -1
- package/.next/standalone/.next/static/chunks/{65096-f756aac39efad7a3.js → 65096-8295f53f97c40d47.js} +1 -1
- package/.next/standalone/.next/static/chunks/65807-086d83649f593a5a.js +1 -0
- package/.next/standalone/.next/static/chunks/79919-56796c262f51fa82.js +1 -0
- package/.next/standalone/.next/static/chunks/94643-87ee1ede6d955937.js +1 -0
- package/.next/standalone/.next/static/chunks/{99373.81b79c91858f9099.js → 99373.aed267aa48c5bdd0.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-9219c4de1012f0fb.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/{page-974781e4886529f8.js → page-82e90e222d6bc547.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/activity/page-f1eccb50d38d8982.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-f4810f1b9f39d1ae.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-721d2152f1a28c88.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-9bcff40805f39b25.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/{page-fdd617457730a116.js → page-f31ad2eebe257628.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-a4fb04068539c4ce.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-b1d2af10e9bc7e09.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-2cb245b0602a3c85.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/{page-58b48aa0a11603c3.js → page-53ce4468844cc84f.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/{page-286faced32c6133f.js → page-1c374d19e8046d9a.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/page-31d6f8e82c7f5366.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-32bff791b19a0a58.js +1 -0
- package/.next/standalone/.next/static/chunks/app/_not-found/{page-166b410da84336d4.js → page-b9d672df79b35e87.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/admin/companies/[uuid]/{page-b2458ed001dc8177.js → page-56118c51122ad639.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/admin/companies/new/page-4e20deb41357171c.js +1 -0
- package/.next/standalone/.next/static/chunks/app/admin/companies/page-0632f245bf9c1c27.js +1 -0
- package/.next/standalone/.next/static/chunks/app/admin/layout-725ab2331c642f36.js +1 -0
- package/.next/standalone/.next/static/chunks/app/admin/{page-0cc8cf246db43e5d.js → page-5a0271dd2b8b36fd.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/{layout-985054e973f66999.js → layout-098288cec4490c5d.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/login/admin/page-c8e40259e5d3d9e0.js +1 -0
- package/.next/standalone/.next/static/chunks/app/login/callback/page-527652f6c1a39274.js +1 -0
- package/.next/standalone/.next/static/chunks/app/login/{page-9b34375d1b5579d7.js → page-0a16a64855b771ef.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/login/pick-workspace/page-47375a86e2375202.js +1 -0
- package/.next/standalone/.next/static/chunks/app/onboarding/{page-5c82cf3abd856301.js → page-d082f9b60ad03057.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/{page-79e2d32e69788bd2.js → page-91dbf7dfd85f805f.js} +1 -1
- package/.next/standalone/.next/static/chunks/main-app-1a7cacecc8900a4d.js +1 -0
- package/.next/standalone/.next/static/chunks/{webpack-4d1cc14b13e247b6.js → webpack-e2e0ef50652d5791.js} +1 -1
- package/.next/standalone/.next/static/css/1d9cf83f50b6db00.css +1 -0
- package/.next/standalone/package.json +2 -1
- package/.next/standalone/public/chorus-plugin/.claude-plugin/plugin.json +1 -1
- package/.next/standalone/public/chorus-plugin/bin/chorus-api.sh +44 -1
- package/.next/standalone/public/chorus-plugin/bin/on-session-start.sh +4 -3
- package/.next/standalone/public/chorus-plugin/bin/tests/test-mcp-cli-delegation.sh +244 -0
- package/.next/standalone/public/chorus-plugin/skills/brainstorm/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +19 -1
- package/.next/standalone/public/chorus-plugin/skills/chorus-cli/SKILL.md +57 -0
- package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +2 -2
- package/.next/standalone/public/chorus-plugin/skills/docs/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +2 -2
- package/.next/standalone/public/chorus-plugin/skills/openspec-aware/SKILL.md +85 -42
- package/.next/standalone/public/chorus-plugin/skills/orchestrate/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +2 -2
- 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 +3 -3
- package/.next/standalone/public/dsh-credentials.sh +20 -127
- package/.next/standalone/public/install-codex.sh +21 -406
- package/.next/standalone/public/install-kiro.sh +20 -344
- package/.next/standalone/public/install-opencode.sh +20 -275
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-brainstorm/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-cli/SKILL.md +57 -0
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-develop/SKILL.md +2 -2
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-docs/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-idea/SKILL.md +2 -2
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-openspec-aware/SKILL.md +85 -42
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-orchestrate/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-proposal/SKILL.md +2 -2
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-quick-dev/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-review/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-yolo/SKILL.md +3 -3
- package/.next/standalone/public/kiro-plugin/bin/chorus-api.sh +44 -1
- package/.next/standalone/public/kiro-plugin/bin/on-agent-spawn.sh +6 -4
- package/.next/standalone/public/kiro-plugin/manifest.txt +42 -0
- package/.next/standalone/public/skill/brainstorm-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/chorus/SKILL.md +19 -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/docs-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/idea-chorus/SKILL.md +2 -2
- package/.next/standalone/public/skill/orchestrate-chorus/SKILL.md +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/.next/standalone/public/test-dsh-credentials.sh +22 -38
- package/.next/standalone/public/test-install-codex.sh +31 -79
- package/.next/standalone/server.js +1 -1
- package/README.ja.md +4 -2
- package/README.ko.md +4 -2
- package/README.md +4 -2
- package/README.zh.md +4 -2
- package/chorus.mjs +35 -1
- package/cli/agent-backend-prompt.mjs +3 -2
- package/cli/agents.mjs +329 -0
- package/cli/chorus-client.mjs +69 -0
- package/cli/claude-spawner.mjs +56 -15
- package/cli/codex-spawner.mjs +11 -6
- package/cli/credentials.mjs +190 -4
- package/cli/daemon-agent.mjs +26 -2
- package/cli/daemon-config.mjs +27 -2
- package/cli/daemon-service.mjs +120 -33
- package/cli/daemon.mjs +128 -22
- package/cli/dsh-spawner.mjs +7 -0
- package/cli/init/adapters.mjs +137 -0
- package/cli/init/agent-type-map.mjs +60 -0
- package/cli/init/chorus-plugin-consts.mjs +16 -0
- package/cli/init/codex-mcp-config.mjs +183 -0
- package/cli/init/contracts.mjs +122 -0
- package/cli/init/detect.mjs +97 -0
- package/cli/init/file-template.mjs +248 -0
- package/cli/init/install-methods.mjs +569 -0
- package/cli/init/registry.mjs +74 -0
- package/cli/init/run-command.mjs +30 -0
- package/cli/init/select.mjs +111 -0
- package/cli/init/steps/credential-seed.mjs +751 -0
- package/cli/init/steps/daemon-setup.mjs +246 -0
- package/cli/init/steps/plugin-install.mjs +37 -0
- package/cli/init-args.mjs +140 -0
- package/cli/init.mjs +243 -0
- package/cli/kiro-spawner.mjs +5 -0
- package/cli/mcp-args.mjs +280 -0
- package/cli/mcp.mjs +164 -0
- package/cli/spawner-select.mjs +45 -2
- package/cli/waker.mjs +89 -38
- package/package.json +2 -1
- package/.next/standalone/.env +0 -18
- package/.next/standalone/.next/server/chunks/3594.js +0 -1
- package/.next/standalone/.next/server/chunks/4545.js +0 -1
- package/.next/standalone/.next/server/chunks/5205.js +0 -1
- package/.next/standalone/.next/server/chunks/6207.js +0 -1
- package/.next/standalone/.next/server/chunks/6667.js +0 -1
- package/.next/standalone/.next/server/chunks/6995.js +0 -1
- package/.next/standalone/.next/server/chunks/7091.js +0 -1
- package/.next/standalone/.next/server/chunks/9793.js +0 -1
- package/.next/standalone/.next/static/chunks/19887-b805e1dcee8c367b.js +0 -1
- package/.next/standalone/.next/static/chunks/29108-5a11eea003f4cc11.js +0 -1
- package/.next/standalone/.next/static/chunks/38366.e6e0132b8ba873d6.js +0 -1
- package/.next/standalone/.next/static/chunks/53073-a7ed20af6538a178.js +0 -1
- package/.next/standalone/.next/static/chunks/6603-e70ddeab6ad09c50.js +0 -1
- package/.next/standalone/.next/static/chunks/78917-1b59cbb806b3ecfc.js +0 -1
- package/.next/standalone/.next/static/chunks/82751-3e161e1d8dbda3ac.js +0 -1
- package/.next/standalone/.next/static/chunks/94643-ffa140f765c73daf.js +0 -1
- package/.next/standalone/.next/static/chunks/99366-425e9ef22e60e3e2.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-b742c51c0a764daf.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/activity/page-20632dbec5a6dbc0.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-f636e00c28f425ea.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-c004f1a194af7fa5.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-425acbe9ade5fa83.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-b9eb4e0692996657.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-d5b222f379b2e8ca.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-0a6c2d0e1b68e0e4.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/page-9d79e285b6fd2f8d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-1507a761e67c2aa9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/admin/companies/new/page-e35dce890d6dfd8d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/admin/companies/page-ef720c2b0856166c.js +0 -1
- package/.next/standalone/.next/static/chunks/app/admin/layout-c66ce38cbd88982a.js +0 -1
- package/.next/standalone/.next/static/chunks/app/login/admin/page-f032b6db3bd20a2c.js +0 -1
- package/.next/standalone/.next/static/chunks/app/login/callback/page-ec23211506e688ee.js +0 -1
- package/.next/standalone/.next/static/chunks/app/login/pick-workspace/page-7e4664af2c787d08.js +0 -1
- package/.next/standalone/.next/static/chunks/main-app-ec87f2c9ef083ff1.js +0 -1
- package/.next/standalone/.next/static/css/5f52bd39b284ccdf.css +0 -1
- /package/.next/standalone/.next/static/{6sHDgeKioa0SJR1MAbcYG → _s4RZW3efB1g0lrKgLiZ7}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{6sHDgeKioa0SJR1MAbcYG → _s4RZW3efB1g0lrKgLiZ7}/_ssgManifest.js +0 -0
|
@@ -4,7 +4,7 @@ description: Chorus Proposal workflow — create proposals with document and tas
|
|
|
4
4
|
license: AGPL-3.0
|
|
5
5
|
metadata:
|
|
6
6
|
author: chorus
|
|
7
|
-
version: "0.
|
|
7
|
+
version: "0.17.0"
|
|
8
8
|
category: project-management
|
|
9
9
|
mcp_server: chorus
|
|
10
10
|
---
|
|
@@ -91,7 +91,7 @@ Before authoring document drafts, **load the `openspec-aware` skill at `.claude/
|
|
|
91
91
|
|
|
92
92
|
- **`CHORUS_OPENSPEC_ACTIVE=1`** → follow `openspec-aware` §3. Pick `$SLUG`, scaffold `openspec/changes/<slug>/`, author `proposal.md` / `design.md` / `specs/<capability>/spec.md` locally, then create the proposal container (Step 1 above) with the literal line `OpenSpec change slug: <slug>` in `description`, and mirror each local file into a document draft.
|
|
93
93
|
|
|
94
|
-
> **⛔ Mandatory in OpenSpec mode:** mirror calls
|
|
94
|
+
> **⛔ Mandatory in OpenSpec mode:** mirror calls fill `content` from the local file — prefer `chorus mcp call … --arg-file content=<file>`, falling back to the `chorus-api.sh` wrapper with `json_encode_file` when `chorus` is not on `PATH` — see `openspec-aware` §3.6. Do **not** call `chorus_pm_add_document_draft` directly from the MCP harness with a hand-typed `content` field. Re-typing thousands of lines through the LLM burns 20k+ content tokens per proposal and breaks byte-equality with the local source of truth (`openspec-aware` §2 Rule 1 explains the full reasoning). Skip Step 2 below when in OpenSpec mode — the file-fill flow in `openspec-aware` §3.6 replaces it for documents.
|
|
95
95
|
|
|
96
96
|
- **`CHORUS_OPENSPEC_ACTIVE=0`** (CLI absent or `CHORUS_OPENSPEC_MODE=off`) → proceed with Step 2 unchanged. Author drafts inline as free-form Markdown via direct MCP `chorus_pm_add_document_draft`.
|
|
97
97
|
|
|
@@ -4,7 +4,7 @@ description: Full-auto AI-DLC pipeline — from prompt to done. Automates the en
|
|
|
4
4
|
license: AGPL-3.0
|
|
5
5
|
metadata:
|
|
6
6
|
author: chorus
|
|
7
|
-
version: "0.
|
|
7
|
+
version: "0.17.0"
|
|
8
8
|
category: project-management
|
|
9
9
|
mcp_server: chorus
|
|
10
10
|
---
|
|
@@ -213,8 +213,8 @@ In /yolo mode, the agent generates elaboration questions and answers them itself
|
|
|
213
213
|
**2a. OpenSpec mode (`CHORUS_OPENSPEC_ACTIVE=1`).** Follow `openspec-aware` §3 end-to-end:
|
|
214
214
|
- Pick `$SLUG`, run `openspec new change "$SLUG"` (§3.1–§3.2).
|
|
215
215
|
- Author `proposal.md`, `design.md`, and one `specs/<capability>/spec.md` per capability locally on disk (§3.3). ADDED Requirements only; per-spec fallback to free-form Markdown if MODIFIED/REMOVED is needed.
|
|
216
|
-
- Define
|
|
217
|
-
- Mirror each local file via `"$API" mcp-tool chorus_pm_add_document_draft "$PAYLOAD"`
|
|
216
|
+
- Define the `chorus_check_response` helper (§6); prefer `chorus mcp call … --arg-file content=<file>` for mirrors (§3.4/§3.6) — the bash-wrapper fallback's `$API` + `json_encode_file` are only needed when `chorus` is not on `PATH`.
|
|
217
|
+
- Mirror each local file via `chorus mcp call chorus_pm_add_document_draft … --arg-file content=<file>` (§3.6; fallback = `"$API" mcp-tool chorus_pm_add_document_draft "$PAYLOAD"`) — one call per file, with the document type from `openspec-aware` §5.
|
|
218
218
|
|
|
219
219
|
> **⛔ Do not** invoke `chorus_pm_add_document_draft` / `chorus_pm_update_document_draft` / `chorus_pm_update_document` from the MCP harness with a hand-typed `content` field in this branch. Re-typing the markdown body wastes 20k+ tokens per proposal and breaks byte-equality with the local files. See `openspec-aware` §2 Rule 1.
|
|
220
220
|
|
|
@@ -1,137 +1,30 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# Chorus credential writer for DeepSeek Harness (dsh).
|
|
2
|
+
# Chorus credential writer for DeepSeek Harness (dsh) — DEPRECATED.
|
|
3
3
|
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
7
|
-
# subprocesses, so the wrapper cannot inherit CHORUS_API_KEY from the shell — it
|
|
8
|
-
# reads it from $DSH_HOME/.env, dsh's own read-only credential fallback.
|
|
4
|
+
# Chorus setup (credentials + plugin) is now a global install plus a single
|
|
5
|
+
# command that configures every supported agent
|
|
6
|
+
# (claude / codex / opencode / kiro / openclaw / dsh):
|
|
9
7
|
#
|
|
10
|
-
#
|
|
11
|
-
#
|
|
12
|
-
# bash <(curl -fsSL https://chorus.example/dsh-credentials.sh)
|
|
8
|
+
# npm install -g @chorus-aidlc/chorus@0.17.0
|
|
9
|
+
# chorus agents add
|
|
13
10
|
#
|
|
14
|
-
# This script
|
|
15
|
-
#
|
|
11
|
+
# This script is still fetched via curl for backward compatibility, but it no
|
|
12
|
+
# longer writes credentials itself — it just points you at `chorus agents add`.
|
|
16
13
|
#
|
|
17
|
-
# Bash 3.2 compatible (macOS /bin/bash)
|
|
14
|
+
# Bash 3.2 compatible (macOS /bin/bash): no case-conversion parameter expansion,
|
|
15
|
+
# no associative arrays.
|
|
18
16
|
|
|
19
17
|
set -euo pipefail
|
|
20
18
|
|
|
21
|
-
BOLD=$'\033[1m'
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
RED=$'\033[31m'
|
|
25
|
-
RESET=$'\033[0m'
|
|
19
|
+
BOLD=$'\033[1m'; YELLOW=$'\033[33m'; RESET=$'\033[0m'
|
|
20
|
+
INSTALL_CMD="npm install -g @chorus-aidlc/chorus@0.17.0"
|
|
21
|
+
INIT_CMD="chorus agents add"
|
|
26
22
|
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
printf "${YELLOW}!${RESET} dsh-credentials.sh is deprecated and writes nothing.\n" >&2
|
|
24
|
+
printf " Chorus setup is now: ${BOLD}%s${RESET} then ${BOLD}%s${RESET}\n" "$INSTALL_CMD" "$INIT_CMD" >&2
|
|
29
25
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
-h|--help)
|
|
36
|
-
cat <<'USAGE'
|
|
37
|
-
dsh-credentials.sh - store Chorus credentials in $DSH_HOME/.env (mode 0600).
|
|
38
|
-
|
|
39
|
-
Environment:
|
|
40
|
-
CHORUS_URL Chorus base URL, e.g. https://chorus.example.com.
|
|
41
|
-
A trailing /api/mcp is accepted and normalized away.
|
|
42
|
-
CHORUS_API_KEY Chorus agent API key beginning with cho_.
|
|
43
|
-
DSH_HOME Harness home (default: ~/.dsh).
|
|
44
|
-
|
|
45
|
-
Both values can be entered interactively when a terminal is available.
|
|
46
|
-
Existing non-Chorus lines in .env are preserved.
|
|
47
|
-
USAGE
|
|
48
|
-
exit 0
|
|
49
|
-
;;
|
|
50
|
-
*)
|
|
51
|
-
die "Unknown argument: $1 (try --help)"
|
|
52
|
-
;;
|
|
53
|
-
esac
|
|
54
|
-
|
|
55
|
-
case "$DSH_HOME" in
|
|
56
|
-
*$'\n'*|*$'\r'*) die "DSH_HOME must not contain control characters." ;;
|
|
57
|
-
esac
|
|
58
|
-
|
|
59
|
-
# curl | bash consumes stdin. Reopen a real terminal only when input is needed.
|
|
60
|
-
if { [ -z "${CHORUS_URL:-}" ] || [ -z "${CHORUS_API_KEY:-}" ]; } && ! { [ -t 0 ] && [ -t 1 ]; }; then
|
|
61
|
-
if ( : < /dev/tty ) >/dev/null 2>&1; then
|
|
62
|
-
exec < /dev/tty
|
|
63
|
-
fi
|
|
64
|
-
fi
|
|
65
|
-
|
|
66
|
-
if [ -n "${CHORUS_URL:-}" ]; then
|
|
67
|
-
url="$CHORUS_URL"
|
|
68
|
-
elif [ -t 0 ]; then
|
|
69
|
-
printf " Chorus URL ${DIM}[e.g. https://chorus.example.com]${RESET}: "
|
|
70
|
-
read -r url
|
|
71
|
-
else
|
|
72
|
-
die "No TTY and CHORUS_URL is unset. Export CHORUS_URL and retry."
|
|
73
|
-
fi
|
|
74
|
-
|
|
75
|
-
if [ -n "${CHORUS_API_KEY:-}" ]; then
|
|
76
|
-
apikey="$CHORUS_API_KEY"
|
|
77
|
-
elif [ -t 0 ]; then
|
|
78
|
-
printf " Chorus API key (starts with cho_): "
|
|
79
|
-
stty -echo 2>/dev/null || true
|
|
80
|
-
read -r apikey
|
|
81
|
-
stty echo 2>/dev/null || true
|
|
82
|
-
printf "\n"
|
|
83
|
-
else
|
|
84
|
-
die "No TTY and CHORUS_API_KEY is unset. Export CHORUS_API_KEY and retry."
|
|
85
|
-
fi
|
|
86
|
-
|
|
87
|
-
case "$url" in
|
|
88
|
-
*$'\n'*|*$'\r'*) die "CHORUS_URL must not contain control characters." ;;
|
|
89
|
-
http://*|https://*) ;;
|
|
90
|
-
*) die "CHORUS_URL must start with http:// or https://." ;;
|
|
91
|
-
esac
|
|
92
|
-
case "$url" in
|
|
93
|
-
*/api/mcp/) url="${url%/api/mcp/}" ;;
|
|
94
|
-
*/api/mcp) url="${url%/api/mcp}" ;;
|
|
95
|
-
esac
|
|
96
|
-
while [ "${url%/}" != "$url" ]; do
|
|
97
|
-
url="${url%/}"
|
|
98
|
-
done
|
|
99
|
-
[ -n "$url" ] || die "CHORUS_URL does not contain a service base URL."
|
|
100
|
-
|
|
101
|
-
case "$apikey" in
|
|
102
|
-
*$'\n'*|*$'\r'*) die "CHORUS_API_KEY must not contain control characters." ;;
|
|
103
|
-
cho_*) ;;
|
|
104
|
-
*) die "CHORUS_API_KEY must start with cho_." ;;
|
|
105
|
-
esac
|
|
106
|
-
|
|
107
|
-
umask 077
|
|
108
|
-
mkdir -p "$DSH_HOME"
|
|
109
|
-
chmod 700 "$DSH_HOME" 2>/dev/null || true
|
|
110
|
-
|
|
111
|
-
TMP="$(mktemp "$DSH_HOME/.env.chorus.XXXXXX")"
|
|
112
|
-
trap 'rm -f "$TMP"' EXIT
|
|
113
|
-
|
|
114
|
-
# Preserve every non-Chorus line; drop any prior CHORUS_URL / CHORUS_API_KEY
|
|
115
|
-
# (with an optional `export ` prefix), then append the fresh values.
|
|
116
|
-
if [ -f "$ENV_FILE" ]; then
|
|
117
|
-
awk '
|
|
118
|
-
/^[[:space:]]*(export[[:space:]]+)?CHORUS_URL=/ { next }
|
|
119
|
-
/^[[:space:]]*(export[[:space:]]+)?CHORUS_API_KEY=/ { next }
|
|
120
|
-
{ print }
|
|
121
|
-
' "$ENV_FILE" > "$TMP"
|
|
122
|
-
else
|
|
123
|
-
: > "$TMP"
|
|
124
|
-
fi
|
|
125
|
-
printf 'CHORUS_URL=%s\n' "$url" >> "$TMP"
|
|
126
|
-
printf 'CHORUS_API_KEY=%s\n' "$apikey" >> "$TMP"
|
|
127
|
-
chmod 600 "$TMP"
|
|
128
|
-
mv "$TMP" "$ENV_FILE"
|
|
129
|
-
trap - EXIT
|
|
130
|
-
chmod 600 "$ENV_FILE" 2>/dev/null || true
|
|
131
|
-
|
|
132
|
-
redacted="cho_..."
|
|
133
|
-
case "$apikey" in
|
|
134
|
-
cho_?*) redacted="$(printf '%s' "$apikey" | cut -c1-7)..." ;;
|
|
135
|
-
esac
|
|
136
|
-
ok "Wrote CHORUS_URL + CHORUS_API_KEY ($redacted) to $ENV_FILE (mode 0600)"
|
|
137
|
-
printf "${DIM}The Chorus dsh plugin reads these from %s. Restart dsh to pick them up.${RESET}\n" "$ENV_FILE"
|
|
26
|
+
# This stub writes nothing. Print the exact commands and exit non-zero so
|
|
27
|
+
# both interactive users and automation that piped the old installer notice
|
|
28
|
+
# they must install the Chorus CLI globally, then run `chorus agents add`.
|
|
29
|
+
printf "\n Run these to set up Chorus:\n\n %s\n %s\n\n" "$INSTALL_CMD" "$INIT_CMD" >&2
|
|
30
|
+
exit 1
|
|
@@ -1,414 +1,29 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# Chorus + Codex CLI
|
|
2
|
+
# Chorus + Codex CLI installer — DEPRECATED.
|
|
3
3
|
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
# # or non-interactive:
|
|
7
|
-
# CHORUS_URL=https://... CHORUS_API_KEY=cho_... \
|
|
8
|
-
# bash <(curl -sSL https://raw.githubusercontent.com/Chorus-AIDLC/Chorus/main/public/install-codex.sh)
|
|
4
|
+
# Chorus setup is now a global install plus a single command that configures
|
|
5
|
+
# every supported agent (claude / codex / opencode / kiro / openclaw / dsh):
|
|
9
6
|
#
|
|
10
|
-
#
|
|
11
|
-
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
#
|
|
16
|
-
#
|
|
17
|
-
#
|
|
18
|
-
# plugin manifest and loaded by Codex after the plugin is installed/enabled.
|
|
7
|
+
# npm install -g @chorus-aidlc/chorus@0.17.0
|
|
8
|
+
# chorus agents add
|
|
9
|
+
#
|
|
10
|
+
# This script is still fetched via curl for backward compatibility, but it no
|
|
11
|
+
# longer installs anything itself — it just points you at `chorus agents add`.
|
|
12
|
+
#
|
|
13
|
+
# Bash 3.2 compatible (macOS /bin/bash): no case-conversion parameter expansion,
|
|
14
|
+
# no associative arrays.
|
|
19
15
|
|
|
20
16
|
set -euo pipefail
|
|
21
17
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
warn() { printf "${YELLOW}!${RESET} %s\n" "$*" >&2; }
|
|
26
|
-
die() { printf "${RED}✗${RESET} %s\n" "$*" >&2; exit 1; }
|
|
27
|
-
hdr() { printf "\n${BOLD}%s${RESET}\n" "$*"; }
|
|
28
|
-
|
|
29
|
-
# ---------- config ----------
|
|
30
|
-
MARKETPLACE_NAME="chorus-plugins"
|
|
31
|
-
MARKETPLACE_SOURCE_DEFAULT="${CHORUS_MARKETPLACE_SOURCE:-https://github.com/Chorus-AIDLC/Chorus}"
|
|
32
|
-
CHORUS_URL_DEFAULT="${CHORUS_URL_DEFAULT:-http://localhost:8637/api/mcp}"
|
|
33
|
-
CODEX_HOME="${CODEX_HOME:-$HOME/.codex}"
|
|
34
|
-
CONFIG_TOML="$CODEX_HOME/config.toml"
|
|
35
|
-
|
|
36
|
-
is_tty() { [ -t 0 ] && [ -t 1 ]; }
|
|
37
|
-
|
|
38
|
-
clean_legacy_chorus_hooks_json() {
|
|
39
|
-
local hooks_json="$1"
|
|
40
|
-
local tmp backup removed
|
|
41
|
-
|
|
42
|
-
tmp="$(mktemp "${TMPDIR:-/tmp}/chorus-hooks.XXXXXX")"
|
|
43
|
-
backup="${hooks_json}.chorus-legacy-bak"
|
|
44
|
-
cp "$hooks_json" "$backup"
|
|
45
|
-
|
|
46
|
-
if command -v node >/dev/null 2>&1; then
|
|
47
|
-
removed="$(node - "$hooks_json" "$tmp" <<'NODE'
|
|
48
|
-
const fs = require("fs");
|
|
49
|
-
const input = process.argv[2];
|
|
50
|
-
const output = process.argv[3];
|
|
51
|
-
let removed = 0;
|
|
52
|
-
|
|
53
|
-
function isLegacyCommand(value) {
|
|
54
|
-
return typeof value === "string" && value.indexOf("hooks/chorus/run-hook.sh") !== -1;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
function clean(value, parentKey) {
|
|
58
|
-
if (Array.isArray(value)) {
|
|
59
|
-
return value
|
|
60
|
-
.map((item) => clean(item, parentKey))
|
|
61
|
-
.filter((item) => item !== undefined);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
if (value && typeof value === "object") {
|
|
65
|
-
if (isLegacyCommand(value.command)) {
|
|
66
|
-
removed += 1;
|
|
67
|
-
return undefined;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
const hadHooksArray = Array.isArray(value.hooks);
|
|
71
|
-
const out = {};
|
|
72
|
-
for (const [key, child] of Object.entries(value)) {
|
|
73
|
-
const cleaned = clean(child, key);
|
|
74
|
-
if (cleaned === undefined) continue;
|
|
75
|
-
if (Array.isArray(cleaned) && cleaned.length === 0 && (key === "hooks" || parentKey === "hooks")) continue;
|
|
76
|
-
out[key] = cleaned;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
if (hadHooksArray && (!Array.isArray(out.hooks) || out.hooks.length === 0)) {
|
|
80
|
-
return undefined;
|
|
81
|
-
}
|
|
82
|
-
return out;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
return value;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
let data = JSON.parse(fs.readFileSync(input, "utf8"));
|
|
89
|
-
data = clean(data, "") || {};
|
|
90
|
-
if (data.hooks && typeof data.hooks === "object" && !Array.isArray(data.hooks)) {
|
|
91
|
-
for (const key of Object.keys(data.hooks)) {
|
|
92
|
-
if (Array.isArray(data.hooks[key]) && data.hooks[key].length === 0) {
|
|
93
|
-
delete data.hooks[key];
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
if (Object.keys(data.hooks).length === 0) {
|
|
97
|
-
delete data.hooks;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
fs.writeFileSync(output, JSON.stringify(data, null, 2) + "\n");
|
|
101
|
-
process.stdout.write(String(removed));
|
|
102
|
-
NODE
|
|
103
|
-
)" || {
|
|
104
|
-
rm -f "$tmp"
|
|
105
|
-
warn "Could not parse $hooks_json with node; leaving legacy hooks unchanged."
|
|
106
|
-
warn "Backup created at $backup"
|
|
107
|
-
return 1
|
|
108
|
-
}
|
|
109
|
-
elif command -v python3 >/dev/null 2>&1; then
|
|
110
|
-
removed="$(python3 - "$hooks_json" "$tmp" <<'PY'
|
|
111
|
-
import json
|
|
112
|
-
import sys
|
|
113
|
-
|
|
114
|
-
input_path = sys.argv[1]
|
|
115
|
-
output_path = sys.argv[2]
|
|
116
|
-
removed = 0
|
|
117
|
-
|
|
118
|
-
def is_legacy_command(value):
|
|
119
|
-
return isinstance(value, str) and "hooks/chorus/run-hook.sh" in value
|
|
120
|
-
|
|
121
|
-
def clean(value, parent_key=""):
|
|
122
|
-
global removed
|
|
123
|
-
if isinstance(value, list):
|
|
124
|
-
return [item for item in (clean(child, parent_key) for child in value) if item is not None]
|
|
125
|
-
if isinstance(value, dict):
|
|
126
|
-
if is_legacy_command(value.get("command")):
|
|
127
|
-
removed += 1
|
|
128
|
-
return None
|
|
129
|
-
had_hooks_array = isinstance(value.get("hooks"), list)
|
|
130
|
-
out = {}
|
|
131
|
-
for key, child in value.items():
|
|
132
|
-
cleaned = clean(child, key)
|
|
133
|
-
if cleaned is None:
|
|
134
|
-
continue
|
|
135
|
-
if isinstance(cleaned, list) and not cleaned and (key == "hooks" or parent_key == "hooks"):
|
|
136
|
-
continue
|
|
137
|
-
out[key] = cleaned
|
|
138
|
-
if had_hooks_array and (not isinstance(out.get("hooks"), list) or not out["hooks"]):
|
|
139
|
-
return None
|
|
140
|
-
return out
|
|
141
|
-
return value
|
|
142
|
-
|
|
143
|
-
with open(input_path, "r", encoding="utf-8") as f:
|
|
144
|
-
data = json.load(f)
|
|
145
|
-
|
|
146
|
-
data = clean(data) or {}
|
|
147
|
-
if isinstance(data.get("hooks"), dict):
|
|
148
|
-
for key in list(data["hooks"].keys()):
|
|
149
|
-
if isinstance(data["hooks"][key], list) and not data["hooks"][key]:
|
|
150
|
-
del data["hooks"][key]
|
|
151
|
-
if not data["hooks"]:
|
|
152
|
-
del data["hooks"]
|
|
153
|
-
|
|
154
|
-
with open(output_path, "w", encoding="utf-8") as f:
|
|
155
|
-
json.dump(data, f, indent=2)
|
|
156
|
-
f.write("\n")
|
|
157
|
-
|
|
158
|
-
print(removed, end="")
|
|
159
|
-
PY
|
|
160
|
-
)" || {
|
|
161
|
-
rm -f "$tmp"
|
|
162
|
-
warn "Could not parse $hooks_json with python3; leaving legacy hooks unchanged."
|
|
163
|
-
warn "Backup created at $backup"
|
|
164
|
-
return 1
|
|
165
|
-
}
|
|
166
|
-
else
|
|
167
|
-
rm -f "$tmp"
|
|
168
|
-
warn "Cannot auto-clean $hooks_json because neither node nor python3 is available."
|
|
169
|
-
warn "Backup created at $backup"
|
|
170
|
-
return 1
|
|
171
|
-
fi
|
|
172
|
-
|
|
173
|
-
if [ "${removed:-0}" = "0" ]; then
|
|
174
|
-
rm -f "$tmp"
|
|
175
|
-
warn "No legacy Chorus hook entries were removed from $hooks_json."
|
|
176
|
-
warn "Backup created at $backup"
|
|
177
|
-
return 1
|
|
178
|
-
fi
|
|
179
|
-
|
|
180
|
-
if grep -q '[^[:space:]{}]' "$tmp" 2>/dev/null; then
|
|
181
|
-
mv "$tmp" "$hooks_json"
|
|
182
|
-
ok "Removed $removed legacy Chorus hook entr$( [ "$removed" = "1" ] && printf 'y' || printf 'ies' ) from $hooks_json"
|
|
183
|
-
else
|
|
184
|
-
rm -f "$tmp" "$hooks_json"
|
|
185
|
-
ok "Removed $removed legacy Chorus hook entr$( [ "$removed" = "1" ] && printf 'y' || printf 'ies' ) and deleted now-empty $hooks_json"
|
|
186
|
-
fi
|
|
187
|
-
ok "Backup saved at $backup"
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
# If piped through `curl | bash`, stdin is the script body. Re-open from /dev/tty
|
|
191
|
-
# so interactive prompts still work — but only if a real TTY is available AND we
|
|
192
|
-
# actually need to prompt for input. Both CHORUS_URL and CHORUS_API_KEY being set
|
|
193
|
-
# lets us run fully non-interactively (useful in CI or unified-exec sandboxes).
|
|
194
|
-
if [ -z "${CHORUS_API_KEY:-}" ] && ! is_tty; then
|
|
195
|
-
if [ -r /dev/tty ] && [ -w /dev/tty ]; then
|
|
196
|
-
exec < /dev/tty
|
|
197
|
-
fi
|
|
198
|
-
fi
|
|
199
|
-
|
|
200
|
-
# ---------- step 1: check codex ----------
|
|
201
|
-
hdr "1/5 Checking Codex CLI"
|
|
202
|
-
command -v codex >/dev/null 2>&1 || die "codex not found in PATH. Install it first: npm i -g @openai/codex"
|
|
203
|
-
ok "Found $(codex --version 2>/dev/null | head -1)"
|
|
204
|
-
|
|
205
|
-
# ---------- step 2: register marketplace ----------
|
|
206
|
-
hdr "2/5 Registering the Chorus plugin marketplace"
|
|
207
|
-
# Extract the currently registered source (if any) for chorus-plugins.
|
|
208
|
-
# awk scoped between the matching [marketplaces.<name>] header and the next [section].
|
|
209
|
-
existing_source=""
|
|
210
|
-
if [ -f "$CONFIG_TOML" ]; then
|
|
211
|
-
existing_source="$(awk -v name="$MARKETPLACE_NAME" '
|
|
212
|
-
$0 ~ "^\\[marketplaces\\." name "\\][[:space:]]*$" { in_block=1; next }
|
|
213
|
-
in_block && /^\[/ { in_block=0 }
|
|
214
|
-
in_block && /^source[[:space:]]*=/ {
|
|
215
|
-
sub(/^source[[:space:]]*=[[:space:]]*/, "")
|
|
216
|
-
gsub(/^"|"$/, "")
|
|
217
|
-
print
|
|
218
|
-
exit
|
|
219
|
-
}
|
|
220
|
-
' "$CONFIG_TOML" 2>/dev/null || true)"
|
|
221
|
-
fi
|
|
222
|
-
|
|
223
|
-
if [ -z "$existing_source" ]; then
|
|
224
|
-
codex plugin marketplace add "$MARKETPLACE_SOURCE_DEFAULT" >/dev/null
|
|
225
|
-
ok "Added marketplace: $MARKETPLACE_SOURCE_DEFAULT"
|
|
226
|
-
elif [ "$existing_source" = "$MARKETPLACE_SOURCE_DEFAULT" ]; then
|
|
227
|
-
# Same source — pull the latest plugin manifest/version.
|
|
228
|
-
if codex plugin marketplace upgrade "$MARKETPLACE_NAME" >/dev/null 2>&1; then
|
|
229
|
-
ok "Upgraded marketplace '${MARKETPLACE_NAME}' to latest"
|
|
230
|
-
else
|
|
231
|
-
warn "Marketplace '${MARKETPLACE_NAME}' already registered; upgrade skipped"
|
|
232
|
-
fi
|
|
233
|
-
else
|
|
234
|
-
# Source changed — remove the stale registration and re-add.
|
|
235
|
-
warn "Marketplace '${MARKETPLACE_NAME}' points at a different source; re-registering"
|
|
236
|
-
warn " old: $existing_source"
|
|
237
|
-
warn " new: $MARKETPLACE_SOURCE_DEFAULT"
|
|
238
|
-
codex plugin marketplace remove "$MARKETPLACE_NAME" >/dev/null 2>&1 || true
|
|
239
|
-
codex plugin marketplace add "$MARKETPLACE_SOURCE_DEFAULT" >/dev/null
|
|
240
|
-
ok "Re-added marketplace: $MARKETPLACE_SOURCE_DEFAULT"
|
|
241
|
-
fi
|
|
242
|
-
|
|
243
|
-
# ---------- step 3: collect Chorus URL + API key ----------
|
|
244
|
-
hdr "3/5 Configuring the Chorus MCP server"
|
|
245
|
-
|
|
246
|
-
# URL
|
|
247
|
-
if [ -n "${CHORUS_URL:-}" ]; then
|
|
248
|
-
url="$CHORUS_URL"
|
|
249
|
-
ok "Using CHORUS_URL from env: $url"
|
|
250
|
-
elif [ -t 0 ]; then
|
|
251
|
-
printf " Chorus MCP URL ${DIM}[default: $CHORUS_URL_DEFAULT]${RESET}: "
|
|
252
|
-
read -r url
|
|
253
|
-
url="${url:-$CHORUS_URL_DEFAULT}"
|
|
254
|
-
else
|
|
255
|
-
url="$CHORUS_URL_DEFAULT"
|
|
256
|
-
warn "No TTY and CHORUS_URL unset — using default: $url"
|
|
257
|
-
fi
|
|
258
|
-
|
|
259
|
-
# API key
|
|
260
|
-
if [ -n "${CHORUS_API_KEY:-}" ]; then
|
|
261
|
-
apikey="$CHORUS_API_KEY"
|
|
262
|
-
ok "Using CHORUS_API_KEY from env"
|
|
263
|
-
elif [ -t 0 ]; then
|
|
264
|
-
printf " Chorus API key (starts with cho_): "
|
|
265
|
-
stty -echo 2>/dev/null || true
|
|
266
|
-
read -r apikey
|
|
267
|
-
stty echo 2>/dev/null || true
|
|
268
|
-
printf "\n"
|
|
269
|
-
[ -n "$apikey" ] || die "API key is required"
|
|
270
|
-
else
|
|
271
|
-
die "No TTY and CHORUS_API_KEY unset — cannot continue"
|
|
272
|
-
fi
|
|
273
|
-
|
|
274
|
-
# Must be http(s).
|
|
275
|
-
case "$url" in
|
|
276
|
-
http://*|https://*) ;;
|
|
277
|
-
*) die "URL must start with http:// or https:// — got: $url" ;;
|
|
278
|
-
esac
|
|
279
|
-
|
|
280
|
-
# Normalize: the Chorus MCP endpoint lives under /api/mcp. If the user gave us
|
|
281
|
-
# just a host (or a host with trailing slash, or any path that doesn't already
|
|
282
|
-
# end in /api/mcp), append it so the MCP handshake hits the right route.
|
|
283
|
-
case "$url" in
|
|
284
|
-
*/api/mcp) ;;
|
|
285
|
-
*/api/mcp/) url="${url%/}" ;;
|
|
286
|
-
*/) url="${url}api/mcp" ;;
|
|
287
|
-
*) url="${url}/api/mcp" ;;
|
|
288
|
-
esac
|
|
289
|
-
ok "MCP endpoint: $url"
|
|
290
|
-
|
|
291
|
-
# ---------- step 4: write config.toml ----------
|
|
292
|
-
hdr "4/5 Writing ~/.codex/config.toml"
|
|
293
|
-
mkdir -p "$CODEX_HOME"
|
|
294
|
-
[ -f "$CONFIG_TOML" ] || touch "$CONFIG_TOML"
|
|
295
|
-
|
|
296
|
-
# Back up once
|
|
297
|
-
if [ ! -f "$CONFIG_TOML.chorus-bak" ]; then
|
|
298
|
-
cp "$CONFIG_TOML" "$CONFIG_TOML.chorus-bak"
|
|
299
|
-
ok "Backed up original config to ${CONFIG_TOML}.chorus-bak"
|
|
300
|
-
fi
|
|
301
|
-
|
|
302
|
-
# Remove any existing [mcp_servers.chorus] and [mcp_servers.chorus.*] sub-tables
|
|
303
|
-
# (idempotent — old rotated keys / headers are wiped, then fresh section appended).
|
|
304
|
-
# Pure awk so we do not require Python on the user's machine.
|
|
305
|
-
tmp="$(mktemp "${TMPDIR:-/tmp}/chorus-config.XXXXXX")"
|
|
306
|
-
awk '
|
|
307
|
-
# A TOML table header line. Match [mcp_servers.chorus] and any
|
|
308
|
-
# [mcp_servers.chorus.<subtable>], plus [plugins."chorus@chorus-plugins"],
|
|
309
|
-
# and suppress lines until the next [section] header appears.
|
|
310
|
-
/^\[mcp_servers\.chorus(\..*)?\][[:space:]]*$/ { skip = 1; next }
|
|
311
|
-
/^\[plugins\."chorus@chorus-plugins"\][[:space:]]*$/ { skip = 1; next }
|
|
312
|
-
/^\[/ { skip = 0 }
|
|
313
|
-
skip != 1 { print }
|
|
314
|
-
' "$CONFIG_TOML" > "$tmp"
|
|
315
|
-
mv "$tmp" "$CONFIG_TOML"
|
|
316
|
-
|
|
317
|
-
# Ensure user-owned file mode 600 (contains secret).
|
|
318
|
-
chmod 600 "$CONFIG_TOML"
|
|
319
|
-
|
|
320
|
-
# Append [mcp_servers.chorus] with literal URL + Authorization header.
|
|
321
|
-
# (Codex does NOT expand ${VAR}; the token is a literal string in the header.)
|
|
322
|
-
cat >> "$CONFIG_TOML" <<TOML
|
|
323
|
-
|
|
324
|
-
[mcp_servers.chorus]
|
|
325
|
-
url = "${url}"
|
|
326
|
-
|
|
327
|
-
[mcp_servers.chorus.http_headers]
|
|
328
|
-
Authorization = "Bearer ${apikey}"
|
|
329
|
-
|
|
330
|
-
[plugins."chorus@chorus-plugins"]
|
|
331
|
-
enabled = true
|
|
332
|
-
TOML
|
|
333
|
-
|
|
334
|
-
ok "Wrote [mcp_servers.chorus] and [plugins.\"chorus@chorus-plugins\"] → ${CONFIG_TOML}"
|
|
335
|
-
|
|
336
|
-
# ---------- step 5: enable hooks ----------
|
|
337
|
-
hdr "5/5 Enabling Codex lifecycle hooks"
|
|
338
|
-
|
|
339
|
-
HOOKS_JSON="$CODEX_HOME/hooks.json"
|
|
340
|
-
if [ -f "$HOOKS_JSON" ] && grep -q "hooks/chorus/run-hook.sh" "$HOOKS_JSON" 2>/dev/null; then
|
|
341
|
-
warn "Found legacy copied Chorus hook entries in $HOOKS_JSON."
|
|
342
|
-
warn "These can duplicate the plugin-bundled Chorus hooks now loaded by Codex."
|
|
343
|
-
warn "Legacy entries:"
|
|
344
|
-
grep -n "hooks/chorus/run-hook.sh" "$HOOKS_JSON" 2>/dev/null | sed 's/^/ /' >&2 || true
|
|
345
|
-
|
|
346
|
-
if [ -r /dev/tty ] && [ -w /dev/tty ]; then
|
|
347
|
-
printf " Clean legacy Chorus entries from %s now? [y/N]: " "$HOOKS_JSON" > /dev/tty
|
|
348
|
-
read -r clean_legacy_hooks_answer < /dev/tty
|
|
349
|
-
case "$clean_legacy_hooks_answer" in
|
|
350
|
-
y|Y|yes|YES|Yes)
|
|
351
|
-
clean_legacy_chorus_hooks_json "$HOOKS_JSON" || true
|
|
352
|
-
;;
|
|
353
|
-
*)
|
|
354
|
-
warn "Keeping legacy hooks unchanged. Use /hooks to disable them or remove matching entries manually to avoid duplicates."
|
|
355
|
-
;;
|
|
356
|
-
esac
|
|
357
|
-
else
|
|
358
|
-
warn "No interactive TTY available; keeping legacy hooks unchanged."
|
|
359
|
-
warn "Re-run this installer in a terminal to auto-clean them, or remove matching entries manually."
|
|
360
|
-
fi
|
|
361
|
-
fi
|
|
362
|
-
|
|
363
|
-
# Keep the current canonical feature key. `codex_hooks` is a deprecated alias;
|
|
364
|
-
# remove any old hook feature setting from [features] before writing `hooks = true`
|
|
365
|
-
# so reruns do not create duplicate TOML keys.
|
|
366
|
-
if grep -qE "^\[features\]" "$CONFIG_TOML"; then
|
|
367
|
-
tmp="$(mktemp "${TMPDIR:-/tmp}/chorus-features.XXXXXX")"
|
|
368
|
-
awk '
|
|
369
|
-
/^\[features\][[:space:]]*$/ {
|
|
370
|
-
in_features = 1
|
|
371
|
-
print
|
|
372
|
-
print "hooks = true"
|
|
373
|
-
next
|
|
374
|
-
}
|
|
375
|
-
/^\[/ {
|
|
376
|
-
in_features = 0
|
|
377
|
-
}
|
|
378
|
-
in_features && /^[[:space:]]*(hooks|codex_hooks)[[:space:]]*=/ {
|
|
379
|
-
next
|
|
380
|
-
}
|
|
381
|
-
{ print }
|
|
382
|
-
' "$CONFIG_TOML" > "$tmp" && mv "$tmp" "$CONFIG_TOML"
|
|
383
|
-
ok "Set [features] hooks = true"
|
|
384
|
-
else
|
|
385
|
-
cat >> "$CONFIG_TOML" <<'TFEAT'
|
|
386
|
-
|
|
387
|
-
[features]
|
|
388
|
-
hooks = true
|
|
389
|
-
TFEAT
|
|
390
|
-
ok "Appended [features] hooks = true"
|
|
391
|
-
fi
|
|
392
|
-
|
|
393
|
-
# ---------- epilogue ----------
|
|
394
|
-
hdr "Done."
|
|
395
|
-
cat <<NEXT
|
|
396
|
-
|
|
397
|
-
Start Codex — the plugin is registered as INSTALLED_BY_DEFAULT so it
|
|
398
|
-
should activate on first launch:
|
|
399
|
-
|
|
400
|
-
${BOLD}codex${RESET}
|
|
401
|
-
|
|
402
|
-
If /plugins does not show "chorus" as installed on first launch, open it
|
|
403
|
-
and click Install once (Codex has no \`plugin install\` CLI command yet,
|
|
404
|
-
so one manual click is the fallback path).
|
|
405
|
-
|
|
406
|
-
Verify anytime:
|
|
407
|
-
${BOLD}codex mcp list${RESET} # 'chorus' row, Auth = 'Bearer token'
|
|
408
|
-
${BOLD}codex features list${RESET} # hooks + plugins both true
|
|
409
|
-
${BOLD}/hooks${RESET} # review/trust bundled Chorus hooks after launch
|
|
18
|
+
BOLD=$'\033[1m'; YELLOW=$'\033[33m'; RESET=$'\033[0m'
|
|
19
|
+
INSTALL_CMD="npm install -g @chorus-aidlc/chorus@0.17.0"
|
|
20
|
+
INIT_CMD="chorus agents add"
|
|
410
21
|
|
|
411
|
-
|
|
412
|
-
|
|
22
|
+
printf "${YELLOW}!${RESET} install-codex.sh is deprecated and installs nothing.\n" >&2
|
|
23
|
+
printf " Chorus setup is now: ${BOLD}%s${RESET} then ${BOLD}%s${RESET}\n" "$INSTALL_CMD" "$INIT_CMD" >&2
|
|
413
24
|
|
|
414
|
-
|
|
25
|
+
# This stub installs nothing. Print the exact commands and exit non-zero so
|
|
26
|
+
# both interactive users and automation that piped the old installer notice
|
|
27
|
+
# they must install the Chorus CLI globally, then run `chorus agents add`.
|
|
28
|
+
printf "\n Run these to set up Chorus:\n\n %s\n %s\n\n" "$INSTALL_CMD" "$INIT_CMD" >&2
|
|
29
|
+
exit 1
|