@chorus-aidlc/chorus 0.17.0 → 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 +537 -537
- package/.next/standalone/.next/app-path-routes-manifest.json +43 -43
- package/.next/standalone/.next/build-manifest.json +6 -6
- package/.next/standalone/.next/prerender-manifest.json +33 -33
- 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_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_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_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_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_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-directory-requests/[uuid]/route.js +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_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.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 +9 -3
- 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_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 -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_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.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_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.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_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.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_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_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/agent-cwd-options/route.js +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_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_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/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 +43 -43
- package/.next/standalone/.next/server/chunks/1073.js +1 -0
- package/.next/standalone/.next/server/chunks/1114.js +1 -1
- 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/5245.js +1 -1
- package/.next/standalone/.next/server/chunks/{3831.js → 5737.js} +2 -2
- 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/{5706.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.bbe40924d18958bf.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/{97663-9c3ae4fd60b353db.js → 26494-5a04e150431b0233.js} +1 -1
- package/.next/standalone/.next/static/chunks/{33456.5499eb8e892b110a.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.be77046fb2b3a2bd.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.111493dc260a2a04.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-f31ad2eebe257628.js +1 -0
- 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-15bb6e1696668512.js → page-53ce4468844cc84f.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/{page-2bea97214b1595cc.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-540da64d7ba16dc7.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-7cbb3ba6792f1fb3.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/skills/idea/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-idea/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/manifest.txt +1 -0
- package/.next/standalone/public/skill/idea-chorus/SKILL.md +1 -1
- package/.next/standalone/server.js +1 -1
- package/README.ja.md +3 -1
- package/README.ko.md +3 -1
- package/README.md +3 -1
- package/README.zh.md +3 -1
- package/cli/claude-spawner.mjs +52 -15
- package/cli/credentials.mjs +5 -1
- package/cli/init/contracts.mjs +2 -0
- package/cli/init/install-methods.mjs +82 -21
- package/cli/init-args.mjs +4 -1
- package/cli/init.mjs +47 -2
- package/cli/kiro-spawner.mjs +1 -0
- package/cli/waker.mjs +89 -38
- package/package.json +2 -1
- package/.next/standalone/.env +0 -18
- package/.next/standalone/.next/server/chunks/1437.js +0 -1
- package/.next/standalone/.next/server/chunks/3045.js +0 -1
- package/.next/standalone/.next/server/chunks/4545.js +0 -1
- package/.next/standalone/.next/server/chunks/6207.js +0 -1
- package/.next/standalone/.next/server/chunks/7091.js +0 -1
- package/.next/standalone/.next/server/chunks/9449.js +0 -1
- package/.next/standalone/.next/server/chunks/9458.js +0 -1
- package/.next/standalone/.next/static/chunks/18139-e6ef4b5869593f8e.js +0 -1
- package/.next/standalone/.next/static/chunks/28856-ef2cb58fbd404ef9.js +0 -1
- package/.next/standalone/.next/static/chunks/38366.e6e0132b8ba873d6.js +0 -1
- package/.next/standalone/.next/static/chunks/66873-e3be53f41b3f2255.js +0 -1
- package/.next/standalone/.next/static/chunks/70303-aec3d52ad87602a3.js +0 -1
- package/.next/standalone/.next/static/chunks/76201-83b26515f85ce37c.js +0 -1
- package/.next/standalone/.next/static/chunks/78917-a8a8dff98857c045.js +0 -1
- package/.next/standalone/.next/static/chunks/94643-ffa140f765c73daf.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-40fe7d026c5a7c6d.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-87d4d0fe90fca28c.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-1206abaee85dc915.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-474e494097c8945f.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/page-e902b19328092ccf.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-f273288c3530aa0f.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-6568a7b08bf9a54b.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-fbd3c27b68666234.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-2bf7ceee62b574c7.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/{0spgxl3lP26Fl1otd1D7R → _s4RZW3efB1g0lrKgLiZ7}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{0spgxl3lP26Fl1otd1D7R → _s4RZW3efB1g0lrKgLiZ7}/_ssgManifest.js +0 -0
|
@@ -9,7 +9,7 @@ const currentPort = parseInt(process.env.PORT, 10) || 3000
|
|
|
9
9
|
const hostname = process.env.HOSTNAME || '0.0.0.0'
|
|
10
10
|
|
|
11
11
|
let keepAliveTimeout = parseInt(process.env.KEEP_ALIVE_TIMEOUT, 10)
|
|
12
|
-
const nextConfig = {"env":{},"eslint":{"ignoreDuringBuilds":false},"typescript":{"ignoreBuildErrors":false,"tsconfigPath":"tsconfig.json"},"typedRoutes":false,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.ts","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[16,32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":60,"formats":["image/webp"],"maximumResponseBody":50000000,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","remotePatterns":[],"unoptimized":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"amp":{"canonicalBase":""},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"serverRuntimeConfig":{},"publicRuntimeConfig":{},"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/home/
|
|
12
|
+
const nextConfig = {"env":{},"eslint":{"ignoreDuringBuilds":false},"typescript":{"ignoreBuildErrors":false,"tsconfigPath":"tsconfig.json"},"typedRoutes":false,"distDir":"./.next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.ts","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[16,32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":60,"formats":["image/webp"],"maximumResponseBody":50000000,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","remotePatterns":[],"unoptimized":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"amp":{"canonicalBase":""},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"serverRuntimeConfig":{},"publicRuntimeConfig":{},"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/home/runner/work/Chorus/Chorus","experimental":{"useSkewCookie":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":4294967294}},"cacheHandlers":{},"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"serverSourceMaps":false,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"clientSegmentCache":false,"clientParamParsing":false,"dynamicOnHover":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","middlewarePrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":3,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"viewTransition":false,"routerBFCache":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"cacheComponents":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"devtoolSegmentExplorer":true,"browserDebugInfoInTerminal":false,"optimizeRouterScrolling":false,"middlewareClientMaxBodySize":10485760,"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.ts","serverExternalPackages":["pino"],"turbopack":{"resolveAlias":{"fs":{"browser":"./src/lib/empty.ts"}},"root":"/home/runner/work/Chorus/Chorus"}}
|
|
13
13
|
|
|
14
14
|
process.env.__NEXT_PRIVATE_STANDALONE_CONFIG = JSON.stringify(nextConfig)
|
|
15
15
|
|
package/README.ja.md
CHANGED
|
@@ -38,6 +38,8 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
|
|
|
38
38
|
|
|
39
39
|
## 最近の更新
|
|
40
40
|
|
|
41
|
+
**[v0.17.0–0.17.1](https://github.com/Chorus-AIDLC/Chorus/releases/tag/v0.17.1)** — 1 つの CLI で各コーディングエージェントに Chorus を導入・更新できるようになりました。Tracker、Graph、Idea 詳細ではデーモンの活動をリアルタイムに確認できます。
|
|
42
|
+
|
|
41
43
|
**[v0.16.4](https://chorus-ai.dev/blog/chorus-v0.16.4-release/)** — DeepSeek Harness(dsh)が 6 つ目の接続方法に。`@chorus-aidlc/chorus-dsh` バンドルが Chorus のスキル・ペルソナ・MCP 設定を任意の dsh プロファイルに追加します。現時点は対話的な利用のみ、デーモンウェイクは後日対応。
|
|
42
44
|
|
|
43
45
|
**[v0.16.1](https://chorus-ai.dev/blog/chorus-v0.16.1-release/)** — 1 つの `chorus daemon` が、互いに独立した複数のエージェントを同時に扱えるようになりました。各エージェントは `agents[]` 配列で自分のキー・作業ディレクトリ・バックエンド・権限を持ちます。エージェント同士は @メンションで作業を渡し合え、各ウェイクはそのエージェント自身のプロジェクトディレクトリに届きます。
|
|
@@ -59,7 +61,7 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
|
|
|
59
61
|
2 つのコマンドだけです — データベースも Docker も設定ファイルも不要です。
|
|
60
62
|
|
|
61
63
|
```bash
|
|
62
|
-
npm install -g @chorus-aidlc/chorus@0.17.
|
|
64
|
+
npm install -g @chorus-aidlc/chorus@0.17.1
|
|
63
65
|
chorus
|
|
64
66
|
```
|
|
65
67
|
|
package/README.ko.md
CHANGED
|
@@ -38,6 +38,8 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
|
|
|
38
38
|
|
|
39
39
|
## 최근 업데이트
|
|
40
40
|
|
|
41
|
+
**[v0.17.0–0.17.1](https://github.com/Chorus-AIDLC/Chorus/releases/tag/v0.17.1)** — 하나의 CLI로 여러 코딩 에이전트에 Chorus를 설치하고 업데이트할 수 있습니다. 이제 Tracker, Graph, Idea 상세 화면에서 데몬 활동도 실시간으로 확인할 수 있습니다.
|
|
42
|
+
|
|
41
43
|
**[v0.16.4](https://chorus-ai.dev/blog/chorus-v0.16.4-release/)** — DeepSeek Harness(dsh)가 여섯 번째 연결 방식으로 추가됩니다: `@chorus-aidlc/chorus-dsh` 번들이 Chorus의 스킬·페르소나·MCP 설정을 임의의 dsh 프로파일에 추가합니다. 현재는 대화식 사용만, 데몬 웨이크는 추후 지원.
|
|
42
44
|
|
|
43
45
|
**[v0.16.1](https://chorus-ai.dev/blog/chorus-v0.16.1-release/)** — 이제 하나의 `chorus daemon`이 서로 독립적인 여러 에이전트를 동시에 서비스합니다. 각 에이전트는 `agents[]` 배열로 자신의 키·작업 디렉터리·백엔드·권한을 가집니다. 에이전트끼리 @멘션으로 작업을 넘길 수 있고, 각 웨이크는 해당 에이전트 자신의 프로젝트 디렉터리에 도착합니다.
|
|
@@ -59,7 +61,7 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
|
|
|
59
61
|
두 개의 명령이면 됩니다. 데이터베이스도, Docker도, 설정 파일도 필요 없습니다.
|
|
60
62
|
|
|
61
63
|
```bash
|
|
62
|
-
npm install -g @chorus-aidlc/chorus@0.17.
|
|
64
|
+
npm install -g @chorus-aidlc/chorus@0.17.1
|
|
63
65
|
chorus
|
|
64
66
|
```
|
|
65
67
|
|
package/README.md
CHANGED
|
@@ -38,6 +38,8 @@ The labels under each stage are the **permissions** an actor needs there — gra
|
|
|
38
38
|
|
|
39
39
|
## What's New
|
|
40
40
|
|
|
41
|
+
**[v0.17.0–0.17.1](https://github.com/Chorus-AIDLC/Chorus/releases/tag/v0.17.1)** — One CLI now installs and refreshes Chorus across your coding agents. Live daemon activity is visible directly on Ideas in Tracker, Graph, and detail views.
|
|
42
|
+
|
|
41
43
|
**[v0.16.4](https://chorus-ai.dev/blog/chorus-v0.16.4-release/)** — DeepSeek Harness (dsh) is the sixth way to connect: the `@chorus-aidlc/chorus-dsh` bundle drops Chorus's skills, persona, and MCP config into any dsh profile. Interactive for now; daemon wake comes later.
|
|
42
44
|
|
|
43
45
|
**[v0.16.1](https://chorus-ai.dev/blog/chorus-v0.16.1-release/)** — One `chorus daemon` now serves many independent agents at once — each with its own key, working directories, backend, and permissions via an `agents[]` array — and agents can hand work to each other by @-mention, with each wake landing in that agent's own project directory.
|
|
@@ -59,7 +61,7 @@ The labels under each stage are the **permissions** an actor needs there — gra
|
|
|
59
61
|
Two commands. No database, no Docker, no config files.
|
|
60
62
|
|
|
61
63
|
```bash
|
|
62
|
-
npm install -g @chorus-aidlc/chorus@0.17.
|
|
64
|
+
npm install -g @chorus-aidlc/chorus@0.17.1
|
|
63
65
|
chorus
|
|
64
66
|
```
|
|
65
67
|
|
package/README.zh.md
CHANGED
|
@@ -29,6 +29,8 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
|
|
|
29
29
|
|
|
30
30
|
## 最近更新
|
|
31
31
|
|
|
32
|
+
**[v0.17.0–0.17.1](https://github.com/Chorus-AIDLC/Chorus/releases/tag/v0.17.1)** — 一个 CLI 即可为各类编程 Agent 安装和更新 Chorus。现在还能在 Tracker、Graph 和 Idea 详情中直接看到 daemon 的实时活动。
|
|
33
|
+
|
|
32
34
|
**[v0.16.4](https://chorus-ai.dev/zh/blog/chorus-v0.16.4-release/)** — DeepSeek Harness(dsh)成为第六种接入方式:`@chorus-aidlc/chorus-dsh` bundle 把 Chorus 的 skill、persona 和 MCP 配置装进任意 dsh profile。目前仅交互式使用,daemon 唤醒稍后支持。
|
|
33
35
|
|
|
34
36
|
**[v0.16.1](https://chorus-ai.dev/zh/blog/chorus-v0.16.1-release/)** — 一个 `chorus daemon` 现在可以同时服务多个互相独立的 agent,每个都有自己的密钥、工作目录、后端和权限(通过 `agents[]` 配置);agent 之间还能通过 @ 把活递给对方,每次唤醒都落在该 agent 自己的项目目录里。
|
|
@@ -50,7 +52,7 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
|
|
|
50
52
|
两条命令即可,无需数据库、无需 Docker、无需配置文件。
|
|
51
53
|
|
|
52
54
|
```bash
|
|
53
|
-
npm install -g @chorus-aidlc/chorus@0.17.
|
|
55
|
+
npm install -g @chorus-aidlc/chorus@0.17.1
|
|
54
56
|
chorus
|
|
55
57
|
```
|
|
56
58
|
|
package/cli/claude-spawner.mjs
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// engineering point of the daemon: parsing stream-json is plain JS and
|
|
4
4
|
// platform-neutral; the real work is spawning, and it is all Windows.
|
|
5
5
|
//
|
|
6
|
-
// Verified against Claude Code CLI 2.1.
|
|
6
|
+
// Verified against Claude Code CLI 2.1.251:
|
|
7
7
|
// • `-p/--print` + `--output-format stream-json` emits NDJSON (one JSON object
|
|
8
8
|
// per line); every line carries `session_id`.
|
|
9
9
|
// • `--session-id <uuid>` sets the session id for a fresh run, and
|
|
@@ -32,6 +32,28 @@ const NOOP_LOGGER = { info() {}, warn() {}, error() {} };
|
|
|
32
32
|
/** Matches a canonical lowercase UUID (any version). Chorus idea uuids are v4. */
|
|
33
33
|
const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
|
|
34
34
|
|
|
35
|
+
/** Backend-neutral failure classification consumed by the wake orchestrator. */
|
|
36
|
+
export const SESSION_CONFLICT_FAILURE = "session_conflict";
|
|
37
|
+
|
|
38
|
+
const STDERR_BUFFER_LIMIT = 64 * 1024;
|
|
39
|
+
const SESSION_CONFLICT_RE = /\bsession id\b[^\r\n]{0,200}\bis already in use\b/i;
|
|
40
|
+
const CLAUDE_PROJECT_KEY_CAP = 200;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Claude Code 2.1.251's Java-style signed 32-bit string hash, rendered as the
|
|
44
|
+
* absolute value in base36. Iterating by index intentionally hashes UTF-16 code
|
|
45
|
+
* units (including each surrogate in an astral character) rather than code points.
|
|
46
|
+
* @param {string} value
|
|
47
|
+
* @returns {string}
|
|
48
|
+
*/
|
|
49
|
+
function projectKeyHash(value) {
|
|
50
|
+
let hash = 0;
|
|
51
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
52
|
+
hash = ((hash << 5) - hash + value.charCodeAt(index)) | 0;
|
|
53
|
+
}
|
|
54
|
+
return Math.abs(hash).toString(36);
|
|
55
|
+
}
|
|
56
|
+
|
|
35
57
|
/**
|
|
36
58
|
* True iff `id` is a well-formed, lowercase UUID. The daemon anchors the Claude
|
|
37
59
|
* session id on a Chorus idea uuid (already lowercase v4); we validate before
|
|
@@ -45,22 +67,27 @@ export function isValidSessionId(id) {
|
|
|
45
67
|
}
|
|
46
68
|
|
|
47
69
|
/**
|
|
48
|
-
* Claude Code's transcript directory for a working directory. Verified against
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
70
|
+
* Claude Code's transcript directory for a working directory. Verified against
|
|
71
|
+
* Claude Code 2.1.251's live Linux install and on-disk transcripts: every
|
|
72
|
+
* non-ASCII-alphanumeric UTF-16 code unit becomes `-`. That includes separators,
|
|
73
|
+
* dots, spaces, underscores, and non-ASCII characters; existing hyphens remain
|
|
74
|
+
* byte-identical because replacing `-` with `-` is a no-op. Escaped keys longer
|
|
75
|
+
* than 200 characters use the first 200 characters plus `-` and the base36
|
|
76
|
+
* Java-style signed 32-bit hash of the original cwd. The same expression produces
|
|
77
|
+
* the established Windows fixture, though the Windows on-disk layout remains
|
|
78
|
+
* best-effort until verified on a Windows Claude installation.
|
|
54
79
|
* @param {string} cwd Absolute working directory.
|
|
55
80
|
* @param {NodeJS.Platform} [platform]
|
|
56
81
|
* @returns {string}
|
|
57
82
|
*/
|
|
58
83
|
export function escapeCwd(cwd, platform = process.platform) {
|
|
59
|
-
//
|
|
60
|
-
//
|
|
61
|
-
//
|
|
62
|
-
|
|
63
|
-
|
|
84
|
+
// `platform` remains in the signature for fixture/API compatibility. Claude's
|
|
85
|
+
// observed sanitizer is platform-independent; platform path syntax supplies
|
|
86
|
+
// the differing separator/drive characters that this expression normalizes.
|
|
87
|
+
void platform;
|
|
88
|
+
const escaped = cwd.replace(/[^a-zA-Z0-9]/g, "-");
|
|
89
|
+
if (escaped.length <= CLAUDE_PROJECT_KEY_CAP) return escaped;
|
|
90
|
+
return `${escaped.slice(0, CLAUDE_PROJECT_KEY_CAP)}-${projectKeyHash(cwd)}`;
|
|
64
91
|
}
|
|
65
92
|
|
|
66
93
|
/**
|
|
@@ -284,7 +311,8 @@ export class ClaudeSpawner {
|
|
|
284
311
|
* so the waker can store the handle in its execution registry for the interrupt
|
|
285
312
|
* path BEFORE this promise resolves. It is invoked once, synchronously, only on a
|
|
286
313
|
* successful spawn; a spawn failure never calls it.
|
|
287
|
-
* @returns {Promise<{ sessionId: string, backendSessionId: string|null, exitCode: number|null, isNew: boolean
|
|
314
|
+
* @returns {Promise<{ sessionId: string, backendSessionId: string|null, exitCode: number|null, isNew: boolean,
|
|
315
|
+
* failureClassification?: "session_conflict" }>}
|
|
288
316
|
* `backendSessionId` is the Claude `--resume` anchor (the input `sessionId`) on a
|
|
289
317
|
* terminal resolution after a spawn, so the conversation UI can offer a resumable
|
|
290
318
|
* id — mirrors codex-spawner's shape. `null` on the pre-spawn failure paths (no
|
|
@@ -369,6 +397,8 @@ export class ClaudeSpawner {
|
|
|
369
397
|
}
|
|
370
398
|
|
|
371
399
|
let stdoutBuf = "";
|
|
400
|
+
let stderrBuf = "";
|
|
401
|
+
let sessionConflictSeen = false;
|
|
372
402
|
let observedSessionId = id;
|
|
373
403
|
|
|
374
404
|
child.stdout?.setEncoding?.("utf8");
|
|
@@ -392,7 +422,10 @@ export class ClaudeSpawner {
|
|
|
392
422
|
|
|
393
423
|
child.stderr?.setEncoding?.("utf8");
|
|
394
424
|
child.stderr?.on("data", (chunk) => {
|
|
395
|
-
const
|
|
425
|
+
const rawText = String(chunk);
|
|
426
|
+
stderrBuf = (stderrBuf + rawText).slice(-STDERR_BUFFER_LIMIT);
|
|
427
|
+
if (SESSION_CONFLICT_RE.test(stderrBuf)) sessionConflictSeen = true;
|
|
428
|
+
const text = rawText.trim();
|
|
396
429
|
if (text) this.logger.warn(`[Chorus] claude stderr: ${text}`);
|
|
397
430
|
});
|
|
398
431
|
|
|
@@ -411,7 +444,11 @@ export class ClaudeSpawner {
|
|
|
411
444
|
}
|
|
412
445
|
// backendSessionId is the `--resume` anchor (`id`), NOT observedSessionId (see
|
|
413
446
|
// the process-error handler above for why the anchor is the resumable value).
|
|
414
|
-
|
|
447
|
+
const result = { sessionId: observedSessionId, backendSessionId: id, exitCode: code, isNew };
|
|
448
|
+
if (code !== null && code !== 0 && sessionConflictSeen) {
|
|
449
|
+
result.failureClassification = SESSION_CONFLICT_FAILURE;
|
|
450
|
+
}
|
|
451
|
+
resolve(result);
|
|
415
452
|
});
|
|
416
453
|
|
|
417
454
|
// Guard against an ASYNC stdin error (EPIPE): if claude exits/closes
|
package/cli/credentials.mjs
CHANGED
|
@@ -18,15 +18,19 @@
|
|
|
18
18
|
|
|
19
19
|
import { readFileSync } from "node:fs";
|
|
20
20
|
import { homedir } from "node:os";
|
|
21
|
-
import { join } from "node:path";
|
|
21
|
+
import { join, resolve } from "node:path";
|
|
22
22
|
|
|
23
23
|
/** Absolute path to the login file written by `chorus login`. */
|
|
24
24
|
export function loginFilePath() {
|
|
25
|
+
const override = process.env.CHORUS_DAEMON_CONFIG_PATH?.trim();
|
|
26
|
+
if (override) return resolve(override);
|
|
25
27
|
return join(homedir(), ".chorus", "daemon.json");
|
|
26
28
|
}
|
|
27
29
|
|
|
28
30
|
/** Absolute path to the Claude Code user settings file (plugin fallback source). */
|
|
29
31
|
export function claudeSettingsPath() {
|
|
32
|
+
const override = process.env.CHORUS_CLAUDE_SETTINGS_PATH?.trim();
|
|
33
|
+
if (override) return resolve(override);
|
|
30
34
|
return join(homedir(), ".claude", "settings.json");
|
|
31
35
|
}
|
|
32
36
|
|
package/cli/init/contracts.mjs
CHANGED
|
@@ -108,6 +108,8 @@ export const FAILURE_ACTIONS = Object.freeze([OUTCOME_ACTIONS.FAILED]);
|
|
|
108
108
|
* @property {string} [agentId] The current agent id (per-agent steps only).
|
|
109
109
|
* @property {AgentAdapter} [adapter] The current agent's adapter (per-agent steps only).
|
|
110
110
|
* @property {object} flags Parsed init flags (see cli/init-args.mjs).
|
|
111
|
+
* `flags.updateInstalled` is the orchestrator-resolved, invocation-wide
|
|
112
|
+
* decision to refresh selected installed plugin payloads.
|
|
111
113
|
* @property {{ log: (m: string) => void, ask: Function, isTTY: boolean }} io
|
|
112
114
|
* @property {(path: string) => (string|null)} backup Copy a file to <path>.chorus-bak
|
|
113
115
|
* once before overwrite; returns the backup path or null if the source is absent.
|
|
@@ -66,9 +66,10 @@ function readJsonSafe(path) {
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
// ---------------------------------------------------------------------------
|
|
69
|
-
// Claude Code — VERIFIED against Claude Code 2.1.
|
|
69
|
+
// Claude Code — VERIFIED LIVE against Claude Code 2.1.250:
|
|
70
70
|
// `claude plugin marketplace add <url|path|repo>`
|
|
71
71
|
// `claude plugin install <plugin@marketplace> -y` (-y required when non-TTY)
|
|
72
|
+
// `claude plugin update <plugin@marketplace> -y`
|
|
72
73
|
// State is read from ~/.claude/plugins/installed_plugins.json (read-only).
|
|
73
74
|
// ---------------------------------------------------------------------------
|
|
74
75
|
export function installClaude(ctx) {
|
|
@@ -77,6 +78,11 @@ export function installClaude(ctx) {
|
|
|
77
78
|
const source = env.CHORUS_MARKETPLACE_SOURCE || CHORUS_MARKETPLACE_SOURCE;
|
|
78
79
|
const state = safeState(ctx);
|
|
79
80
|
if (state.pluginInstalled) {
|
|
81
|
+
if (ctx.flags?.updateInstalled) {
|
|
82
|
+
const r = run("claude", ["plugin", "update", CHORUS_PLUGIN_ID, "-y"], { env });
|
|
83
|
+
if (!r.ok) return out("claude", FAILED, `claude plugin update failed: ${errText(r)}`);
|
|
84
|
+
return out("claude", REPAIRED, `updated ${CHORUS_PLUGIN_ID} to latest via claude plugin update`);
|
|
85
|
+
}
|
|
80
86
|
return out("claude", SKIPPED, `already installed${state.version ? ` (v${state.version})` : ""}`);
|
|
81
87
|
}
|
|
82
88
|
if (!state.marketplaceRegistered) {
|
|
@@ -91,6 +97,7 @@ export function installClaude(ctx) {
|
|
|
91
97
|
// ---------------------------------------------------------------------------
|
|
92
98
|
// Codex — VERIFIED against codex-cli 0.146.1 / 0.150.1:
|
|
93
99
|
// `codex plugin marketplace add <SOURCE>` (SOURCE = local path | owner/repo[@ref] | Git URL)
|
|
100
|
+
// `codex plugin marketplace upgrade [MARKETPLACE_NAME]`
|
|
94
101
|
// `codex plugin add <PLUGIN@MARKETPLACE> --json`
|
|
95
102
|
// config.toml is backed up before the CLI mutates it.
|
|
96
103
|
//
|
|
@@ -153,6 +160,21 @@ export function installCodex(ctx) {
|
|
|
153
160
|
|
|
154
161
|
if (state.pluginInstalled) {
|
|
155
162
|
ctx.backup?.(configPath); // back up before we normalize the MCP block
|
|
163
|
+
if (ctx.flags?.updateInstalled) {
|
|
164
|
+
if (!state.marketplaceRegistered) {
|
|
165
|
+
const ra = run("codex", ["plugin", "marketplace", "add", source], { env });
|
|
166
|
+
if (!ra.ok) return out("codex", FAILED, `codex plugin marketplace add failed: ${errText(ra)}`);
|
|
167
|
+
}
|
|
168
|
+
const ru = run("codex", ["plugin", "marketplace", "upgrade", CHORUS_MARKETPLACE_NAME], { env });
|
|
169
|
+
if (!ru.ok) return out("codex", FAILED, `codex plugin marketplace upgrade failed: ${errText(ru)}`);
|
|
170
|
+
const rp = run("codex", ["plugin", "add", CHORUS_PLUGIN_ID, "--json"], { env });
|
|
171
|
+
if (!rp.ok) return out("codex", FAILED, `codex plugin add failed: ${errText(rp)}`);
|
|
172
|
+
return out(
|
|
173
|
+
"codex",
|
|
174
|
+
REPAIRED,
|
|
175
|
+
`refreshed ${CHORUS_MARKETPLACE_NAME} and reinstalled ${CHORUS_PLUGIN_ID}${ensureMcp()}`,
|
|
176
|
+
);
|
|
177
|
+
}
|
|
156
178
|
return out("codex", SKIPPED, `already installed (config.toml)${ensureMcp()}`);
|
|
157
179
|
}
|
|
158
180
|
|
|
@@ -171,8 +193,9 @@ export function installCodex(ctx) {
|
|
|
171
193
|
}
|
|
172
194
|
|
|
173
195
|
// ---------------------------------------------------------------------------
|
|
174
|
-
// opencode — VERIFIED against opencode 1.14.33:
|
|
196
|
+
// opencode — VERIFIED LIVE against opencode 1.14.33:
|
|
175
197
|
// `opencode plugin <module>` ("install plugin and update config")
|
|
198
|
+
// `--global` targets the user config; `--force` replaces an existing version.
|
|
176
199
|
// module name "opencode-chorus" from public/install-opencode.sh. opencode.json
|
|
177
200
|
// is backed up before the CLI mutates it.
|
|
178
201
|
// ---------------------------------------------------------------------------
|
|
@@ -195,15 +218,21 @@ export function installOpencode(ctx) {
|
|
|
195
218
|
const home = env.HOME || homedir();
|
|
196
219
|
const dir = env.OPENCODE_CONFIG_DIR || join(home, ".config", "opencode");
|
|
197
220
|
const state = safeState(ctx);
|
|
198
|
-
if (state.pluginInstalled
|
|
221
|
+
if (state.pluginInstalled && !ctx.flags?.updateInstalled) {
|
|
222
|
+
return out("opencode", SKIPPED, "already in opencode.json plugin list");
|
|
223
|
+
}
|
|
199
224
|
|
|
200
225
|
ctx.backup?.(join(dir, "opencode.json")); // back up before the CLI edits it
|
|
201
226
|
// `-g` writes the GLOBAL ~/.config/opencode/opencode.json (the same file
|
|
202
227
|
// readOpencodeInstallState checks); without it opencode installs project-local
|
|
203
228
|
// (cwd), which would defeat idempotency for a machine-wide `chorus init`.
|
|
204
|
-
const
|
|
229
|
+
const args = ["plugin", OPENCODE_PLUGIN_MODULE, "-g"];
|
|
230
|
+
if (state.pluginInstalled) args.push("--force");
|
|
231
|
+
const r = run("opencode", args, { env });
|
|
205
232
|
if (!r.ok) return out("opencode", FAILED, `opencode plugin install failed: ${errText(r)}`);
|
|
206
|
-
return
|
|
233
|
+
return state.pluginInstalled
|
|
234
|
+
? out("opencode", REPAIRED, `updated ${OPENCODE_PLUGIN_MODULE} to latest via opencode plugin -g --force`)
|
|
235
|
+
: out("opencode", INSTALLED, `installed ${OPENCODE_PLUGIN_MODULE} via opencode plugin -g`);
|
|
207
236
|
}
|
|
208
237
|
|
|
209
238
|
// ---------------------------------------------------------------------------
|
|
@@ -225,18 +254,35 @@ const DSH_BUNDLE = "@chorus-aidlc/chorus-dsh";
|
|
|
225
254
|
export function readDshInstallState({ env = process.env, profile } = {}) {
|
|
226
255
|
// Best-effort, per-profile idempotency probe. A dsh profile is a pnpm workspace
|
|
227
256
|
// root under $DSH_HOME (docs/CONNECT_DSH.md); a profile that has added the bundle
|
|
228
|
-
// records it in that root's package.json.
|
|
229
|
-
//
|
|
230
|
-
//
|
|
231
|
-
// detection, which does not know the user's pick) it reports not-installed.
|
|
232
|
-
if (!profile) return { marketplaceRegistered: false, pluginInstalled: false };
|
|
257
|
+
// records it in that root's package.json. Before an interactive profile has
|
|
258
|
+
// been chosen, inspect the live profiles/<name> store so runInit can include
|
|
259
|
+
// dsh in its one invocation-wide installed-plugin refresh decision.
|
|
233
260
|
const home = env.HOME || homedir();
|
|
234
261
|
const dshHome = env.DSH_HOME || join(home, ".dsh");
|
|
235
|
-
|
|
236
|
-
|
|
262
|
+
let candidates;
|
|
263
|
+
if (profile) {
|
|
264
|
+
candidates = [
|
|
265
|
+
join(dshHome, "profiles", profile, "package.json"),
|
|
266
|
+
join(dshHome, profile, "package.json"),
|
|
267
|
+
];
|
|
268
|
+
} else {
|
|
269
|
+
try {
|
|
270
|
+
candidates = readdirSync(join(dshHome, "profiles"), { withFileTypes: true })
|
|
271
|
+
.filter((entry) => entry.isDirectory())
|
|
272
|
+
.map((entry) => join(dshHome, "profiles", entry.name, "package.json"));
|
|
273
|
+
} catch {
|
|
274
|
+
candidates = [];
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
const packagePath = candidates.find((path) => {
|
|
278
|
+
const pkg = readJsonSafe(path);
|
|
279
|
+
const deps = { ...(pkg?.dependencies ?? {}), ...(pkg?.devDependencies ?? {}) };
|
|
280
|
+
return Object.prototype.hasOwnProperty.call(deps, DSH_BUNDLE);
|
|
281
|
+
});
|
|
237
282
|
return {
|
|
238
283
|
marketplaceRegistered: false, // dsh has no marketplace concept
|
|
239
|
-
pluginInstalled:
|
|
284
|
+
pluginInstalled: !!packagePath,
|
|
285
|
+
packagePath: packagePath ?? (profile ? candidates[0] : undefined),
|
|
240
286
|
};
|
|
241
287
|
}
|
|
242
288
|
|
|
@@ -276,11 +322,16 @@ export async function installDsh(ctx) {
|
|
|
276
322
|
|
|
277
323
|
// Idempotency: skip when the chosen profile already carries the bundle.
|
|
278
324
|
const state = safeState(ctx, { profile });
|
|
279
|
-
if (state.pluginInstalled
|
|
325
|
+
if (state.pluginInstalled && !ctx.flags?.updateInstalled) {
|
|
326
|
+
return out("dsh", SKIPPED, `already installed in dsh profile '${profile}'`);
|
|
327
|
+
}
|
|
328
|
+
if (state.pluginInstalled) ctx.backup?.(state.packagePath);
|
|
280
329
|
|
|
281
330
|
const r = run("dsh", ["plugin", "--profile", profile, "add", DSH_BUNDLE, "-w"], { env });
|
|
282
331
|
if (!r.ok) return out("dsh", FAILED, `dsh plugin add failed: ${errText(r)}`);
|
|
283
|
-
return
|
|
332
|
+
return state.pluginInstalled
|
|
333
|
+
? out("dsh", REPAIRED, `updated ${DSH_BUNDLE} to latest in dsh profile '${profile}'`)
|
|
334
|
+
: out("dsh", INSTALLED, `installed ${DSH_BUNDLE} into dsh profile '${profile}'`);
|
|
284
335
|
}
|
|
285
336
|
|
|
286
337
|
// ---------------------------------------------------------------------------
|
|
@@ -377,7 +428,7 @@ export function installOpenclaw(ctx) {
|
|
|
377
428
|
|
|
378
429
|
// Already installed AND enabled → nothing to do. No version probe needed: an
|
|
379
430
|
// enabled-and-loaded plugin necessarily already satisfied the host floor.
|
|
380
|
-
if (state.pluginInstalled && state.pluginEnabled) {
|
|
431
|
+
if (state.pluginInstalled && state.pluginEnabled && !ctx.flags?.updateInstalled) {
|
|
381
432
|
return out("openclaw", SKIPPED, "already installed and enabled");
|
|
382
433
|
}
|
|
383
434
|
|
|
@@ -395,18 +446,26 @@ export function installOpenclaw(ctx) {
|
|
|
395
446
|
}
|
|
396
447
|
|
|
397
448
|
// Installed-but-disabled → enable only (repair).
|
|
398
|
-
if (state.pluginInstalled) {
|
|
449
|
+
if (state.pluginInstalled && !ctx.flags?.updateInstalled) {
|
|
399
450
|
const re = run("openclaw", ["plugins", "enable", OPENCLAW_PLUGIN_ID], { env });
|
|
400
451
|
if (!re.ok) return out("openclaw", FAILED, `openclaw plugins enable failed: ${errText(re)}`);
|
|
401
452
|
return out("openclaw", REPAIRED, `enabled ${OPENCLAW_PLUGIN_ID} (was installed but disabled)`);
|
|
402
453
|
}
|
|
403
454
|
|
|
404
|
-
// Fresh → install from npm, then
|
|
455
|
+
// Fresh or accepted refresh → install from npm, then ensure enabled. Back up
|
|
456
|
+
// the mutable host config before an installed payload is refreshed.
|
|
457
|
+
if (state.pluginInstalled) {
|
|
458
|
+
const home = env.HOME || homedir();
|
|
459
|
+
const dir = env.OPENCLAW_CONFIG_DIR || join(home, ".openclaw");
|
|
460
|
+
ctx.backup?.(join(dir, "openclaw.json"));
|
|
461
|
+
}
|
|
405
462
|
const ri = run("openclaw", ["plugins", "install", OPENCLAW_NPM_SPEC], { env });
|
|
406
463
|
if (!ri.ok) return out("openclaw", FAILED, `openclaw plugins install failed: ${errText(ri)}`);
|
|
407
464
|
const re = run("openclaw", ["plugins", "enable", OPENCLAW_PLUGIN_ID], { env });
|
|
408
465
|
if (!re.ok) return out("openclaw", FAILED, `openclaw plugins enable failed: ${errText(re)}`);
|
|
409
|
-
return
|
|
466
|
+
return state.pluginInstalled
|
|
467
|
+
? out("openclaw", REPAIRED, `reinstalled latest ${OPENCLAW_NPM_SPEC} and ensured ${OPENCLAW_PLUGIN_ID} is enabled`)
|
|
468
|
+
: out("openclaw", INSTALLED, `installed ${OPENCLAW_NPM_SPEC} and enabled ${OPENCLAW_PLUGIN_ID}`);
|
|
410
469
|
}
|
|
411
470
|
|
|
412
471
|
// ---------------------------------------------------------------------------
|
|
@@ -457,14 +516,16 @@ export async function installKiro(ctx) {
|
|
|
457
516
|
const chorusUrl = nonEmpty(ctx.flags?.url) ?? nonEmpty(env.CHORUS_URL);
|
|
458
517
|
|
|
459
518
|
const state = safeState(ctx);
|
|
460
|
-
if (state.pluginInstalled
|
|
519
|
+
if (state.pluginInstalled && !ctx.flags?.updateInstalled) {
|
|
520
|
+
return out("kiro", SKIPPED, `already installed (${kiroDir})`);
|
|
521
|
+
}
|
|
461
522
|
|
|
462
523
|
if (!chorusUrl) {
|
|
463
524
|
return out("kiro", FAILED, "no Chorus URL — pass --url or set CHORUS_URL so the .kiro/ template can be downloaded from the connected instance");
|
|
464
525
|
}
|
|
465
526
|
|
|
466
527
|
// Any chorus-* asset already present ⇒ this is a delta repair, not a fresh drop.
|
|
467
|
-
const repairing = !!(state.skillsPresent || state.agentPresent || state.mcpServerPresent);
|
|
528
|
+
const repairing = !!(state.pluginInstalled || state.skillsPresent || state.agentPresent || state.mcpServerPresent);
|
|
468
529
|
try {
|
|
469
530
|
const res = await installFileTemplate({
|
|
470
531
|
chorusUrl,
|
package/cli/init-args.mjs
CHANGED
|
@@ -113,7 +113,8 @@ OPTIONS
|
|
|
113
113
|
auto-start is unsupported (e.g. Windows). In an
|
|
114
114
|
interactive TTY run the daemon-setup step prompts instead
|
|
115
115
|
(default: No).
|
|
116
|
-
-y, --yes
|
|
116
|
+
-y, --yes Accept confirmation prompts, including refreshing
|
|
117
|
+
installed plugins to latest (implied when non-TTY).
|
|
117
118
|
-h, --help Show this help message.
|
|
118
119
|
|
|
119
120
|
NON-INTERACTIVE
|
|
@@ -121,6 +122,8 @@ NON-INTERACTIVE
|
|
|
121
122
|
will not guess which agents to configure and aborts otherwise. The daemon boot service is
|
|
122
123
|
installed non-interactively ONLY when you pass --daemon-autostart; otherwise the
|
|
123
124
|
daemon config is written and you start it yourself with 'chorus daemon'.
|
|
125
|
+
With an explicit selection, --yes and non-TTY runs refresh selected installed
|
|
126
|
+
plugins to their latest available versions without prompting.
|
|
124
127
|
|
|
125
128
|
SCOPE
|
|
126
129
|
This installs the plugin SURFACE, seeds credentials into the daemon config, and
|
package/cli/init.mjs
CHANGED
|
@@ -97,11 +97,26 @@ export async function runInit(argv = [], deps = {}) {
|
|
|
97
97
|
|
|
98
98
|
io.log(`[chorus agents add] Configuring: ${selectedIds.join(", ")}`);
|
|
99
99
|
|
|
100
|
+
// Resolve adapters once: update-intent detection and per-agent steps must see
|
|
101
|
+
// the same adapter instances/state readers.
|
|
102
|
+
const adapters = new Map();
|
|
103
|
+
for (const agentId of selectedIds) {
|
|
104
|
+
adapters.set(agentId, await getAdapter(agentId));
|
|
105
|
+
}
|
|
106
|
+
const updateInstalled = await resolveUpdateInstalled({
|
|
107
|
+
selectedIds,
|
|
108
|
+
adapters,
|
|
109
|
+
flags,
|
|
110
|
+
env,
|
|
111
|
+
io,
|
|
112
|
+
});
|
|
113
|
+
const resolvedFlags = { ...flags, updateInstalled };
|
|
114
|
+
|
|
100
115
|
const steps = await orderedSteps();
|
|
101
116
|
// `ctxExtras` lets a caller/test inject step-context collaborators (e.g. a
|
|
102
117
|
// fake credential validator or command runner) so an end-to-end run is
|
|
103
118
|
// hermetic; production passes none and steps use their real defaults.
|
|
104
|
-
const baseCtx = { selection: selectedIds, flags, io, env, backup, ...(deps.ctxExtras ?? {}) };
|
|
119
|
+
const baseCtx = { selection: selectedIds, flags: resolvedFlags, io, env, backup, ...(deps.ctxExtras ?? {}) };
|
|
105
120
|
/** @type {import("./init/contracts.mjs").StepOutcome[]} */
|
|
106
121
|
const outcomes = [];
|
|
107
122
|
|
|
@@ -109,7 +124,7 @@ export async function runInit(argv = [], deps = {}) {
|
|
|
109
124
|
try {
|
|
110
125
|
if (step.scope === STEP_SCOPES.PER_AGENT) {
|
|
111
126
|
for (const agentId of selectedIds) {
|
|
112
|
-
const adapter =
|
|
127
|
+
const adapter = adapters.get(agentId);
|
|
113
128
|
outcomes.push(await step.run({ ...baseCtx, agentId, adapter }));
|
|
114
129
|
}
|
|
115
130
|
} else {
|
|
@@ -129,6 +144,36 @@ export async function runInit(argv = [], deps = {}) {
|
|
|
129
144
|
return outcomes.flat().some(isFailureOutcome) ? 1 : 0;
|
|
130
145
|
}
|
|
131
146
|
|
|
147
|
+
/**
|
|
148
|
+
* Resolve one installed-plugin update decision for the whole invocation.
|
|
149
|
+
* Unsupported/guided adapters and selected adapters without an installed
|
|
150
|
+
* Chorus payload do not trigger the question. `--yes` and non-TTY runs accept
|
|
151
|
+
* automatically; an interactive answer defaults to no.
|
|
152
|
+
*/
|
|
153
|
+
export async function resolveUpdateInstalled({ selectedIds, adapters, flags, env, io }) {
|
|
154
|
+
let anyInstalled = false;
|
|
155
|
+
for (const agentId of selectedIds) {
|
|
156
|
+
const adapter = adapters.get(agentId);
|
|
157
|
+
if (!adapter || typeof adapter.readInstallState !== "function") continue;
|
|
158
|
+
try {
|
|
159
|
+
const profile = flags.dshProfile ?? env.CHORUS_DSH_PROFILE;
|
|
160
|
+
const state = await adapter.readInstallState({ env, profile });
|
|
161
|
+
if (state?.supported === true && state?.pluginInstalled === true) {
|
|
162
|
+
anyInstalled = true;
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
} catch {
|
|
166
|
+
// State probes are advisory and read-only. A broken probe must not block
|
|
167
|
+
// normal repair/install work; the installer will report its own outcome.
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
if (!anyInstalled) return false;
|
|
171
|
+
if (flags.yes || !io.isTTY) return true;
|
|
172
|
+
if (typeof io.ask !== "function") return false;
|
|
173
|
+
const answer = String(await io.ask("Update installed Chorus plugins to the latest available versions? [y/N] ")).trim();
|
|
174
|
+
return /^(?:y|yes)$/i.test(answer);
|
|
175
|
+
}
|
|
176
|
+
|
|
132
177
|
/** Print the per-outcome summary table. */
|
|
133
178
|
export function summarize(outcomes, io, selectedIds = []) {
|
|
134
179
|
io.log("");
|
package/cli/kiro-spawner.mjs
CHANGED
|
@@ -222,6 +222,7 @@ export function pickNewSessionId(before, after) {
|
|
|
222
222
|
export class KiroSpawner {
|
|
223
223
|
/** @param {KiroSpawnerOptions} [opts] */
|
|
224
224
|
constructor(opts = {}) {
|
|
225
|
+
this.sessionDecision = { probeIsAuthoritative: false };
|
|
225
226
|
this.kiroPath = opts.kiroPath ?? null;
|
|
226
227
|
this.spawnImpl = opts.spawnImpl ?? spawn;
|
|
227
228
|
this.logger = opts.logger ?? NOOP_LOGGER;
|