@chorus-aidlc/chorus 0.17.2 → 0.18.0
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 +357 -355
- package/.next/standalone/.next/app-path-routes-manifest.json +44 -44
- package/.next/standalone/.next/build-manifest.json +5 -5
- package/.next/standalone/.next/prerender-manifest.json +18 -18
- package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js +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 +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/settings/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +2 -2
- package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
- package/.next/standalone/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin/companies/new.html +2 -2
- package/.next/standalone/.next/server/app/admin/companies/new.rsc +2 -2
- package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin/companies.html +2 -2
- package/.next/standalone/.next/server/app/admin/companies.rsc +2 -2
- package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin.html +2 -2
- package/.next/standalone/.next/server/app/admin.rsc +2 -2
- package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agent-connections/route.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_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_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/comments/route.js +1 -1
- package/.next/standalone/.next/server/app/api/comments/route.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.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_client-reference-manifest.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.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.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.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.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.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_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 +1 -1
- 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_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.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 +1 -1
- 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_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-visits/pin/route_client-reference-manifest.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_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/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_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.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_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route.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_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.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.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.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_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/references/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/references/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/session/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.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/index.html +2 -2
- package/.next/standalone/.next/server/app/index.rsc +2 -2
- package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/admin.html +2 -2
- package/.next/standalone/.next/server/app/login/admin.rsc +2 -2
- package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/callback.html +2 -2
- package/.next/standalone/.next/server/app/login/callback.rsc +2 -2
- package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/pick-workspace.html +2 -2
- package/.next/standalone/.next/server/app/login/pick-workspace.rsc +2 -2
- package/.next/standalone/.next/server/app/login.html +2 -2
- package/.next/standalone/.next/server/app/login.rsc +2 -2
- package/.next/standalone/.next/server/app/onboarding/page.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 +3 -3
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects.html +2 -2
- package/.next/standalone/.next/server/app/projects.rsc +3 -3
- package/.next/standalone/.next/server/app/settings.html +2 -2
- package/.next/standalone/.next/server/app/settings.rsc +4 -4
- package/.next/standalone/.next/server/app-paths-manifest.json +44 -44
- package/.next/standalone/.next/server/chunks/109.js +1 -0
- package/.next/standalone/.next/server/chunks/1318.js +1 -1
- package/.next/standalone/.next/server/chunks/1496.js +1 -0
- package/.next/standalone/.next/server/chunks/1559.js +2 -2
- package/.next/standalone/.next/server/chunks/2572.js +1 -1
- package/.next/standalone/.next/server/chunks/2961.js +1 -1
- package/.next/standalone/.next/server/chunks/3112.js +1 -1
- package/.next/standalone/.next/server/chunks/{2536.js → 3619.js} +3 -3
- package/.next/standalone/.next/server/chunks/{6080.js → 4810.js} +1 -1
- 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/6113.js +1 -1
- package/.next/standalone/.next/server/chunks/6506.js +2 -2
- package/.next/standalone/.next/server/chunks/6515.js +2 -2
- package/.next/standalone/.next/server/chunks/6737.js +1 -0
- 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/731.js +1 -0
- 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/7857.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 -1
- 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/pages/404.html +2 -2
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/chunks/11595.0afa1a540f681fb4.js +1 -0
- package/.next/standalone/.next/static/chunks/22705-324a191727ae45b7.js +1 -0
- package/.next/standalone/.next/static/chunks/{31308-32614efb88305738.js → 31308-bb4a97b3f39c22dd.js} +1 -1
- package/.next/standalone/.next/static/chunks/33456.4a5f4712a7e78d8f.js +1 -0
- package/.next/standalone/.next/static/chunks/44216-3876e84f5b02d355.js +1 -0
- package/.next/standalone/.next/static/chunks/4860.5719e32b95be2d93.js +1 -0
- package/.next/standalone/.next/static/chunks/6528-a8a562ef7d26bb43.js +1 -0
- package/.next/standalone/.next/static/chunks/67439-7b339b28ed0ecfc6.js +1 -0
- package/.next/standalone/.next/static/chunks/79919-ae8bd8d8ec1e38ce.js +1 -0
- package/.next/standalone/.next/static/chunks/82203-4ce5926624df7ed0.js +1 -0
- package/.next/standalone/.next/static/chunks/94643-37ac7b8ef8ea5e75.js +1 -0
- package/.next/standalone/.next/static/chunks/99373.6c1509bfaf599741.js +1 -0
- package/.next/standalone/.next/static/chunks/99775-697e82ee04eac6b1.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-2fda722cdace8147.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/{page-eecb38fa4b8eb4e8.js → page-b45c42c536eff64b.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-792aba7fd6b6daa3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/{page-cd7ec77596304a07.js → page-800a979f12b73f27.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/{page-97a9e6f949002004.js → page-34de35f75aa71f6d.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-a16002aa2a911619.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/{page-cec15f4b835d34fc.js → page-e8030824994edf35.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-4f7f1ddbaf79be8f.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/{page-4ee117e690fda56f.js → page-349b0977f3c6209a.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/{page-7fbc46dfb7b22bd3.js → page-be43cb06112fce12.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-6916e1abab42a6e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/onboarding/{page-4fce966dc96d4ff1.js → page-c0090caae202eae5.js} +1 -1
- package/.next/standalone/.next/static/chunks/{webpack-1bfc783412a06fc5.js → webpack-cfb63dd1b416c92e.js} +1 -1
- package/.next/standalone/.next/static/css/75c761a5428611fa.css +1 -0
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/public/chorus-plugin/.claude-plugin/plugin.json +2 -2
- package/.next/standalone/public/chorus-plugin/agents/code-reviewer.md +1 -0
- package/.next/standalone/public/chorus-plugin/agents/proposal-reviewer.md +12 -3
- package/.next/standalone/public/chorus-plugin/agents/task-reviewer.md +4 -0
- package/.next/standalone/public/chorus-plugin/bin/chorus-api.sh +1 -1
- package/.next/standalone/public/chorus-plugin/bin/on-post-submit-for-verify.sh +3 -3
- package/.next/standalone/public/chorus-plugin/bin/on-post-submit-proposal.sh +3 -3
- package/.next/standalone/public/chorus-plugin/bin/on-post-verify-task.sh +2 -2
- package/.next/standalone/public/chorus-plugin/bin/on-session-start.sh +39 -64
- package/.next/standalone/public/chorus-plugin/bin/resolve-spec-mode.sh +107 -0
- package/.next/standalone/public/chorus-plugin/bin/tests/test-resolver-drift.sh +46 -0
- package/.next/standalone/public/chorus-plugin/bin/tests/test-skill-harness-fidelity-negative.sh +328 -0
- package/.next/standalone/public/chorus-plugin/bin/tests/test-skill-harness-fidelity.sh +372 -0
- package/.next/standalone/public/chorus-plugin/bin/tests/test-spec-mode-resolution.sh +83 -0
- package/.next/standalone/public/chorus-plugin/skills/brainstorm/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +11 -6
- package/.next/standalone/public/chorus-plugin/skills/chorus-cli/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +14 -9
- package/.next/standalone/public/chorus-plugin/skills/docs/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/openspec-aware/SKILL.md +27 -31
- package/.next/standalone/public/chorus-plugin/skills/orchestrate/SKILL.md +11 -1
- package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +14 -7
- package/.next/standalone/public/chorus-plugin/skills/quick-dev/SKILL.md +6 -4
- package/.next/standalone/public/chorus-plugin/skills/review/SKILL.md +10 -8
- package/.next/standalone/public/chorus-plugin/skills/spec-lite/SKILL.md +147 -0
- package/.next/standalone/public/chorus-plugin/skills/yolo/SKILL.md +49 -34
- package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus-code-reviewer.json +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus-proposal-reviewer.json +2 -1
- package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus-task-reviewer.json +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus.md +1 -1
- 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 +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-develop/SKILL.md +9 -7
- 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 +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-openspec-aware/SKILL.md +35 -27
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-orchestrate/SKILL.md +9 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-proposal/SKILL.md +14 -7
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-quick-dev/SKILL.md +2 -2
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-review/SKILL.md +8 -8
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-spec-lite/SKILL.md +147 -0
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-yolo/SKILL.md +39 -25
- package/.next/standalone/public/kiro-plugin/.kiro/steering/chorus.md +11 -6
- package/.next/standalone/public/kiro-plugin/bin/chorus-api.sh +1 -1
- package/.next/standalone/public/kiro-plugin/bin/on-agent-spawn.sh +41 -0
- package/.next/standalone/public/kiro-plugin/bin/on-post-submit-for-verify.sh +3 -3
- package/.next/standalone/public/kiro-plugin/bin/on-post-submit-proposal.sh +3 -3
- package/.next/standalone/public/kiro-plugin/bin/on-post-verify-task.sh +2 -2
- package/.next/standalone/public/kiro-plugin/bin/resolve-spec-mode.sh +107 -0
- package/.next/standalone/public/kiro-plugin/manifest.txt +2 -0
- package/.next/standalone/public/skill/chorus/SKILL.md +11 -1
- package/.next/standalone/public/skill/code-reviewer-chorus/SKILL.md +1 -0
- package/.next/standalone/public/skill/develop-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/orchestrate-chorus/SKILL.md +11 -1
- package/.next/standalone/public/skill/proposal-reviewer-chorus/SKILL.md +5 -2
- package/.next/standalone/public/skill/quick-dev-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/review-chorus/SKILL.md +5 -3
- package/.next/standalone/public/skill/task-reviewer-chorus/SKILL.md +4 -0
- package/.next/standalone/public/skill/yolo-chorus/SKILL.md +23 -7
- package/README.ja.md +3 -3
- package/README.ko.md +3 -3
- package/README.md +3 -3
- package/README.zh.md +3 -3
- package/cli/agent-cli-config.mjs +323 -0
- package/cli/agent-launcher.mjs +45 -17
- package/cli/claude-spawner.mjs +22 -13
- package/cli/codex-spawner.mjs +23 -15
- package/cli/credentials.mjs +7 -0
- package/cli/daemon-agent.mjs +1 -1
- package/cli/daemon-config.mjs +14 -0
- package/cli/daemon.mjs +34 -9
- package/cli/dsh-managed-config.mjs +219 -293
- package/cli/dsh-spawner.mjs +53 -27
- package/cli/init/steps/credential-seed.mjs +1 -1
- package/cli/kiro-spawner.mjs +22 -15
- package/cli/launch-diagnostics.mjs +67 -0
- package/cli/login.mjs +17 -1
- package/cli/pi-spawner.mjs +19 -12
- package/cli/prompts.mjs +52 -2
- package/cli/spawner-select.mjs +6 -11
- package/package.json +1 -1
- package/.next/standalone/.next/server/chunks/1114.js +0 -1
- package/.next/standalone/.next/server/chunks/2953.js +0 -1
- package/.next/standalone/.next/server/chunks/5162.js +0 -1
- package/.next/standalone/.next/server/chunks/6689.js +0 -1
- package/.next/standalone/.next/server/chunks/9667.js +0 -1
- package/.next/standalone/.next/static/chunks/11595.b81c0bf7732c3b62.js +0 -1
- package/.next/standalone/.next/static/chunks/24808-e3d95efc7ec039c5.js +0 -1
- package/.next/standalone/.next/static/chunks/33456.cfc9aa607a62e879.js +0 -1
- package/.next/standalone/.next/static/chunks/4860.41351a823cf400e4.js +0 -1
- package/.next/standalone/.next/static/chunks/51468-194d894e563580dd.js +0 -1
- package/.next/standalone/.next/static/chunks/61570-527701d072d00a24.js +0 -1
- package/.next/standalone/.next/static/chunks/65066-6da35d5cb080c7f5.js +0 -1
- package/.next/standalone/.next/static/chunks/72875-0987d09cd8406614.js +0 -1
- package/.next/standalone/.next/static/chunks/75936-79860953212592fd.js +0 -1
- package/.next/standalone/.next/static/chunks/79919-e02963faee5cb563.js +0 -1
- package/.next/standalone/.next/static/chunks/94643-e8f5fa25e2340cc8.js +0 -1
- package/.next/standalone/.next/static/chunks/99373.633f7c25e64bcdac.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-bb5ef11586301c72.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-725373108da1b08c.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-7d2f4713697eb0a7.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-0225f87552b977d9.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-8b30678a58e7b2ee.js +0 -1
- package/.next/standalone/.next/static/css/1d9cf83f50b6db00.css +0 -1
- /package/.next/standalone/.next/static/{WSN4XeA1kUCI6CeEHcaT_ → IxKVu5zkFPTjSKAUR99yH}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{WSN4XeA1kUCI6CeEHcaT_ → IxKVu5zkFPTjSKAUR99yH}/_ssgManifest.js +0 -0
package/cli/codex-spawner.mjs
CHANGED
|
@@ -27,6 +27,8 @@
|
|
|
27
27
|
// stream parse) and the PATH-walk shape of resolveClaudePath.
|
|
28
28
|
|
|
29
29
|
import { spawn } from "node:child_process";
|
|
30
|
+
import { safeSpawnError } from "./launch-diagnostics.mjs";
|
|
31
|
+
import { validateAgentCliConfig, overlayAgentEnv, getAgentEnv, assertConfiguredShimArgs } from "./agent-cli-config.mjs";
|
|
30
32
|
import { readFileSync, statSync } from "node:fs";
|
|
31
33
|
import { homedir } from "node:os";
|
|
32
34
|
import { join, win32 as pathWin32, posix as pathPosix } from "node:path";
|
|
@@ -49,8 +51,9 @@ const NOOP_LOGGER = { info() {}, warn() {}, error() {} };
|
|
|
49
51
|
export function hasChorusMcpServer(deps = {}) {
|
|
50
52
|
const env = deps.env ?? process.env;
|
|
51
53
|
const readFile = deps.readFile ?? readFileSync;
|
|
52
|
-
const
|
|
53
|
-
const
|
|
54
|
+
const platform = deps.platform ?? process.platform;
|
|
55
|
+
const home = deps.home ?? getAgentEnv(env, "HOME", platform) ?? getAgentEnv(env, "USERPROFILE", platform) ?? homedir();
|
|
56
|
+
const configPath = join(getAgentEnv(env, "CODEX_HOME", platform) || join(home, ".codex"), "config.toml");
|
|
54
57
|
try {
|
|
55
58
|
const config = readFile(configPath, "utf8");
|
|
56
59
|
return /^\s*\[mcp_servers\.chorus\]\s*(?:#.*)?$/m.test(config);
|
|
@@ -148,14 +151,15 @@ export function resolveCodexPath(deps = {}) {
|
|
|
148
151
|
}
|
|
149
152
|
});
|
|
150
153
|
|
|
151
|
-
|
|
152
|
-
|
|
154
|
+
const override = getAgentEnv(env, "CHORUS_CODEX_PATH", platform);
|
|
155
|
+
if (override && isFile(override)) {
|
|
156
|
+
return override;
|
|
153
157
|
}
|
|
154
158
|
|
|
155
159
|
const isWin = platform === "win32";
|
|
156
160
|
const p = isWin ? pathWin32 : pathPosix;
|
|
157
161
|
const names = isWin ? ["codex.cmd", "codex.exe", "codex"] : ["codex"];
|
|
158
|
-
const pathVar = env
|
|
162
|
+
const pathVar = getAgentEnv(env, "PATH", platform) || env.Path || "";
|
|
159
163
|
const dirs = pathVar.split(p.delimiter).filter(Boolean);
|
|
160
164
|
for (const dir of dirs) {
|
|
161
165
|
for (const name of names) {
|
|
@@ -178,7 +182,7 @@ export function resolveSpawnCommand(codexPath, args, platform = process.platform
|
|
|
178
182
|
const isWin = platform === "win32";
|
|
179
183
|
const lower = codexPath.toLowerCase();
|
|
180
184
|
if (isWin && (lower.endsWith(".cmd") || lower.endsWith(".bat"))) {
|
|
181
|
-
const comspec = env
|
|
185
|
+
const comspec = getAgentEnv(env, "COMSPEC", platform) || "cmd.exe";
|
|
182
186
|
return { command: comspec, argv: ["/d", "/s", "/c", codexPath, ...args] };
|
|
183
187
|
}
|
|
184
188
|
return { command: codexPath, argv: args };
|
|
@@ -210,6 +214,8 @@ export class CodexSpawner {
|
|
|
210
214
|
this.permissionMode = opts.permissionMode ?? "chorus";
|
|
211
215
|
this.creds = opts.creds ?? null;
|
|
212
216
|
this.platform = opts.platform ?? process.platform;
|
|
217
|
+
this.cliConfig = validateAgentCliConfig(opts.cliConfig, "codex", opts.label);
|
|
218
|
+
this.env = overlayAgentEnv(opts.env ?? process.env, this.cliConfig.env, this.platform);
|
|
213
219
|
this.getThreadIdFn = opts.getThreadIdFn ?? defaultGetThreadId;
|
|
214
220
|
this.setThreadIdFn = opts.setThreadIdFn ?? defaultSetThreadId;
|
|
215
221
|
this.getUsageSnapshotFn = opts.getUsageSnapshotFn ?? defaultGetUsageSnapshot;
|
|
@@ -246,7 +252,7 @@ export class CodexSpawner {
|
|
|
246
252
|
// instead of publishing the entire historical cumulative total.
|
|
247
253
|
let needsUsageSeed = Boolean(knownThreadId && !previousUsage);
|
|
248
254
|
|
|
249
|
-
const codexPath = this.codexPath ?? this.resolveCodexPathFn();
|
|
255
|
+
const codexPath = this.codexPath ?? this.resolveCodexPathFn({ env: this.env, platform: this.platform });
|
|
250
256
|
if (!codexPath) {
|
|
251
257
|
// No crash — surface visibly and resolve with a failure result.
|
|
252
258
|
this.logger.error("[Chorus] cannot locate the `codex` executable on PATH; skipping wake");
|
|
@@ -255,15 +261,17 @@ export class CodexSpawner {
|
|
|
255
261
|
|
|
256
262
|
if (!this.mcpConfigChecked) {
|
|
257
263
|
this.mcpConfigChecked = true;
|
|
258
|
-
if (!this.hasChorusMcpServerFn()) {
|
|
264
|
+
if (!this.hasChorusMcpServerFn({ env: this.env, platform: this.platform })) {
|
|
259
265
|
this.logger.warn(
|
|
260
266
|
"[Chorus] Codex config has no [mcp_servers.chorus] entry; wake will continue without Chorus MCP tools",
|
|
261
267
|
);
|
|
262
268
|
}
|
|
263
269
|
}
|
|
264
270
|
|
|
265
|
-
|
|
266
|
-
const {
|
|
271
|
+
assertConfiguredShimArgs(codexPath, this.cliConfig.args, this.platform);
|
|
272
|
+
const args = [...buildCodexArgs({ isNew, threadId: knownThreadId, permissionMode: this.permissionMode }), ...this.cliConfig.args,
|
|
273
|
+
...(this.cliConfig.args.length ? ["-"] : [])];
|
|
274
|
+
const { command, argv } = resolveSpawnCommand(codexPath, args, this.platform, this.env);
|
|
267
275
|
|
|
268
276
|
// POSIX: detached process group so the interrupt path can group-kill the tree
|
|
269
277
|
// (codex exec forks child shells for tools). Windows uses taskkill /T. stdio
|
|
@@ -273,7 +281,7 @@ export class CodexSpawner {
|
|
|
273
281
|
// Export the daemon's resolved connection pair for both Codex MCP auth and
|
|
274
282
|
// SessionStart hooks. Explicitly overwrite inherited values so the hook and
|
|
275
283
|
// daemon cannot disagree about which Chorus instance this wake belongs to.
|
|
276
|
-
const childEnv = { ...
|
|
284
|
+
const childEnv = { ...this.env, CHORUS_DAEMON_HEADLESS: "1" };
|
|
277
285
|
if (this.creds) {
|
|
278
286
|
if (this.creds.url) childEnv.CHORUS_URL = this.creds.url;
|
|
279
287
|
if (this.creds.apiKey) childEnv.CHORUS_API_KEY = this.creds.apiKey;
|
|
@@ -294,8 +302,8 @@ export class CodexSpawner {
|
|
|
294
302
|
detached,
|
|
295
303
|
windowsHide: true,
|
|
296
304
|
});
|
|
297
|
-
} catch (
|
|
298
|
-
this.logger.error(`[Chorus] failed to spawn codex: ${
|
|
305
|
+
} catch (error) {
|
|
306
|
+
this.logger.error(`[Chorus] failed to spawn codex: ${safeSpawnError(error)}`);
|
|
299
307
|
resolve({ sessionId: anchor, backendSessionId: knownThreadId, exitCode: null, isNew });
|
|
300
308
|
return;
|
|
301
309
|
}
|
|
@@ -357,8 +365,8 @@ export class CodexSpawner {
|
|
|
357
365
|
if (text) this.logger.warn(`[Chorus] codex stderr: ${text}`);
|
|
358
366
|
});
|
|
359
367
|
|
|
360
|
-
child.on("error", (
|
|
361
|
-
this.logger.error(`[Chorus] codex process error: ${
|
|
368
|
+
child.on("error", (error) => {
|
|
369
|
+
this.logger.error(`[Chorus] codex process error: ${safeSpawnError(error)}`);
|
|
362
370
|
resolve({ sessionId: anchor, backendSessionId: observedThreadId, exitCode: null, isNew });
|
|
363
371
|
});
|
|
364
372
|
|
package/cli/credentials.mjs
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
import { readFileSync } from "node:fs";
|
|
20
20
|
import { homedir } from "node:os";
|
|
21
21
|
import { join, resolve } from "node:path";
|
|
22
|
+
import { rejectSharedCliConfig } from "./agent-cli-config.mjs";
|
|
22
23
|
|
|
23
24
|
/** Absolute path to the login file written by `chorus login`. */
|
|
24
25
|
export function loginFilePath() {
|
|
@@ -425,6 +426,7 @@ export function resolveLaunchAgent(flags = {}, deps = {}) {
|
|
|
425
426
|
const wanted = nonEmpty(flags.name) ?? nonEmpty(flags.agent) ?? nonEmpty(env.CHORUS_AGENT_PROFILE);
|
|
426
427
|
|
|
427
428
|
const file = readJson(loginPath);
|
|
429
|
+
rejectSharedCliConfig(file);
|
|
428
430
|
const agentEntries =
|
|
429
431
|
file && Array.isArray(file.agents)
|
|
430
432
|
? file.agents.filter((a) => a && typeof a === "object")
|
|
@@ -448,6 +450,8 @@ export function resolveLaunchAgent(flags = {}, deps = {}) {
|
|
|
448
450
|
agentUuid: nonEmpty(entry.agentUuid),
|
|
449
451
|
agentName: nonEmpty(entry.agentName) ?? nonEmpty(entry.name),
|
|
450
452
|
agentType: nonEmpty(entry.agentType),
|
|
453
|
+
args: entry.args,
|
|
454
|
+
env: entry.env,
|
|
451
455
|
}));
|
|
452
456
|
const labels = resolved.map((a) => a.label).join(", ");
|
|
453
457
|
|
|
@@ -479,6 +483,9 @@ export function resolveLaunchAgent(flags = {}, deps = {}) {
|
|
|
479
483
|
agentUuid: selected.agentUuid,
|
|
480
484
|
agentName: selected.agentName,
|
|
481
485
|
agentType: selected.agentType,
|
|
486
|
+
// Validation uses the launcher's effective --type, not the stored classification.
|
|
487
|
+
args: selected.args,
|
|
488
|
+
env: selected.env,
|
|
482
489
|
label: selected.label,
|
|
483
490
|
};
|
|
484
491
|
}
|
package/cli/daemon-agent.mjs
CHANGED
|
@@ -44,7 +44,7 @@ export const DEFAULT_AGENT = "claude-code";
|
|
|
44
44
|
export function backendCli(agentType) {
|
|
45
45
|
if (agentType === "codex") return { name: "codex", envVar: "CHORUS_CODEX_PATH" };
|
|
46
46
|
if (agentType === "kiro") return { name: "kiro-cli", envVar: "CHORUS_KIRO_PATH" };
|
|
47
|
-
if (agentType === "dsh") return { name: "dsh
|
|
47
|
+
if (agentType === "dsh") return { name: "dsh", envVar: "CHORUS_DSH_PATH" };
|
|
48
48
|
if (agentType === "pi") return { name: "pi", envVar: "CHORUS_PI_PATH" };
|
|
49
49
|
// `offline` has no CLI to resolve — it is never woken (see backendClientType).
|
|
50
50
|
// The daemon does not probe a binary for it; this explicit descriptor keeps the
|
package/cli/daemon-config.mjs
CHANGED
|
@@ -18,6 +18,14 @@ import { isAbsolute, resolve as resolvePath } from "node:path";
|
|
|
18
18
|
import { loginFilePath, resolveCredentials, resolveCredentialDefaults } from "./credentials.mjs";
|
|
19
19
|
import { resolveAgentType, KNOWN_AGENTS } from "./daemon-agent.mjs";
|
|
20
20
|
import { resolvePermissionMode } from "./daemon-permission-mode.mjs";
|
|
21
|
+
import { rejectSharedCliConfig, validateAgentCliConfig } from "./agent-cli-config.mjs";
|
|
22
|
+
|
|
23
|
+
/** Read only the flat profile customization; also used by the legacy startup path. */
|
|
24
|
+
export function resolveFlatAgentCliConfig(type, deps = {}) {
|
|
25
|
+
const file = (deps.readJson ?? readJsonSafe)(deps.loginPath ?? loginFilePath());
|
|
26
|
+
rejectSharedCliConfig(file);
|
|
27
|
+
return validateAgentCliConfig(file ?? {}, type, "agent");
|
|
28
|
+
}
|
|
21
29
|
|
|
22
30
|
/** Built-in default escalation window (ms) — matches the spec's 10 seconds. */
|
|
23
31
|
export const DEFAULT_SIGINT_TIMEOUT_MS = 10_000;
|
|
@@ -307,6 +315,8 @@ function positiveInt(value) {
|
|
|
307
315
|
* @property {string} url Chorus server URL for this agent.
|
|
308
316
|
* @property {string} apiKey This agent's `cho_` API key.
|
|
309
317
|
* @property {string} agentType Backend: claude-code | codex | kiro | dsh | offline.
|
|
318
|
+
* @property {string[]} args Literal extra backend arguments (per-agent only).
|
|
319
|
+
* @property {Record<string,string>} env Literal child environment overrides (per-agent only).
|
|
310
320
|
* @property {boolean} [daemonWake] Wake opt-in for a wakeable backend; only
|
|
311
321
|
* `false` disables (absent/true ⇒ woken).
|
|
312
322
|
* @property {Array<string|undefined>} cwds Served paths (`undefined` ⇒ process cwd).
|
|
@@ -344,6 +354,8 @@ export function resolveAgentConfigs(flags = {}, deps = {}) {
|
|
|
344
354
|
const home = deps.home ?? homedir();
|
|
345
355
|
const file = readJson(loginPath);
|
|
346
356
|
|
|
357
|
+
rejectSharedCliConfig(file);
|
|
358
|
+
|
|
347
359
|
// Global default permission posture; a per-agent `permissionMode` overrides it.
|
|
348
360
|
// needConfirm/hasAck is vestigial, so isTTY/hasAck do not affect the resolved mode.
|
|
349
361
|
const defaultPermissionMode =
|
|
@@ -365,6 +377,7 @@ export function resolveAgentConfigs(flags = {}, deps = {}) {
|
|
|
365
377
|
url: creds.url,
|
|
366
378
|
apiKey: creds.apiKey,
|
|
367
379
|
agentType: at.agent,
|
|
380
|
+
...validateAgentCliConfig(file ?? {}, at.agent, "agent"),
|
|
368
381
|
cwds: resolveDaemonCwds(flags, deps),
|
|
369
382
|
permissionMode: defaultPermissionMode,
|
|
370
383
|
maxConcurrency: positiveInt(file?.maxConcurrency) ?? DEFAULT_MAX_CONCURRENCY,
|
|
@@ -449,6 +462,7 @@ export function resolveAgentConfigs(flags = {}, deps = {}) {
|
|
|
449
462
|
url,
|
|
450
463
|
apiKey,
|
|
451
464
|
agentType,
|
|
465
|
+
...validateAgentCliConfig(entry, agentType, label),
|
|
452
466
|
cwds,
|
|
453
467
|
permissionMode,
|
|
454
468
|
maxConcurrency,
|
package/cli/daemon.mjs
CHANGED
|
@@ -40,12 +40,13 @@ import { EventRouter } from "./event-router.mjs";
|
|
|
40
40
|
import { WakeQueue } from "./wake-queue.mjs";
|
|
41
41
|
import { Waker } from "./waker.mjs";
|
|
42
42
|
import { LineageResolver } from "./lineage.mjs";
|
|
43
|
-
import { resolveClaudePath } from "./claude-spawner.mjs";
|
|
43
|
+
import { resolveClaudePath, isNewSession } from "./claude-spawner.mjs";
|
|
44
44
|
import { resolveCodexPath } from "./codex-spawner.mjs";
|
|
45
45
|
import { resolveDshPath } from "./dsh-spawner.mjs";
|
|
46
46
|
import { prepareManagedDshConfig } from "./dsh-managed-config.mjs";
|
|
47
47
|
import { resolveKiroPath } from "./kiro-spawner.mjs";
|
|
48
48
|
import { selectSpawner } from "./spawner-select.mjs";
|
|
49
|
+
import { overlayAgentEnv } from "./agent-cli-config.mjs";
|
|
49
50
|
import {
|
|
50
51
|
createExecutionUploadHooks,
|
|
51
52
|
createTranscriptUploadHooks,
|
|
@@ -61,6 +62,7 @@ import {
|
|
|
61
62
|
resolveDaemonCwds,
|
|
62
63
|
resolveBrowseRoots,
|
|
63
64
|
resolveAgentConfigs,
|
|
65
|
+
resolveFlatAgentCliConfig,
|
|
64
66
|
hasConfiguredAgents,
|
|
65
67
|
} from "./daemon-config.mjs";
|
|
66
68
|
import { discoverDirectories, validateDirectory } from "./directory-discovery.mjs";
|
|
@@ -157,6 +159,10 @@ export function buildDaemon(creds, deps = {}) {
|
|
|
157
159
|
// passed through so the Codex backend can export the daemon key into the woken
|
|
158
160
|
// process env (the Claude backend ignores creds — it gets its key via --mcp-config).
|
|
159
161
|
const spawner = deps.spawner ?? selectSpawner(agentType, {
|
|
162
|
+
...deps.spawnerOptions,
|
|
163
|
+
cliConfig: deps.cliConfig,
|
|
164
|
+
env: deps.env,
|
|
165
|
+
label: deps.label,
|
|
160
166
|
logger,
|
|
161
167
|
permissionMode,
|
|
162
168
|
creds,
|
|
@@ -306,6 +312,7 @@ export function buildDaemon(creds, deps = {}) {
|
|
|
306
312
|
creds,
|
|
307
313
|
lineage,
|
|
308
314
|
spawner,
|
|
315
|
+
isNewSessionFn: (sessionId, runCwd) => isNewSession(sessionId, runCwd, { env: spawner.env, platform: spawner.platform }),
|
|
309
316
|
cwd: boundCwd,
|
|
310
317
|
hooks,
|
|
311
318
|
logger,
|
|
@@ -664,6 +671,8 @@ export function buildMultiAgentDaemon(agentConfigs, deps = {}) {
|
|
|
664
671
|
logger,
|
|
665
672
|
permissionMode: cfg.permissionMode,
|
|
666
673
|
agentType: cfg.agentType,
|
|
674
|
+
cliConfig: { args: cfg.args, env: cfg.env },
|
|
675
|
+
label: cfg.label,
|
|
667
676
|
cwds: cfg.cwds,
|
|
668
677
|
cwd: undefined,
|
|
669
678
|
maxConcurrency: cfg.maxConcurrency,
|
|
@@ -862,6 +871,19 @@ export async function runDaemon(flags = {}, deps = {}) {
|
|
|
862
871
|
return handleLifecycleAction(action, { log, errLog, lifecycle, service, pfDeps });
|
|
863
872
|
}
|
|
864
873
|
|
|
874
|
+
// Validate flat customization before credential/network preflight, including
|
|
875
|
+
// the detach path. Lifecycle-only actions above do not launch an agent.
|
|
876
|
+
const multiAgent = hasConfiguredAgents({ readJson: deps.readJson, loginPath: deps.loginPath });
|
|
877
|
+
let cliConfig;
|
|
878
|
+
if (!multiAgent) {
|
|
879
|
+
try {
|
|
880
|
+
cliConfig = resolveFlatAgentCliConfig(agentType, { readJson: deps.readJson, loginPath: deps.loginPath });
|
|
881
|
+
} catch (error) {
|
|
882
|
+
errLog(`[Chorus] ${error.message}`);
|
|
883
|
+
return 1;
|
|
884
|
+
}
|
|
885
|
+
}
|
|
886
|
+
|
|
865
887
|
// `-d` / --detach: complete any interactive preflight in THIS foreground process
|
|
866
888
|
// (which holds the TTY), then spawn the daemon detached and return. The detached
|
|
867
889
|
// child re-enters runDaemon with the DETACHED_ENV marker set, so it skips the
|
|
@@ -889,7 +911,7 @@ export async function runDaemon(flags = {}, deps = {}) {
|
|
|
889
911
|
// credential preflight (interactive credential completion is a single-agent
|
|
890
912
|
// affordance). Each agent authenticates on its own key; a failure is isolated
|
|
891
913
|
// (logged + that agent skipped) so the rest still serve.
|
|
892
|
-
if (
|
|
914
|
+
if (multiAgent) {
|
|
893
915
|
const buildMulti = deps.buildMulti ?? buildMultiAgentDaemon;
|
|
894
916
|
let agentConfigs;
|
|
895
917
|
try {
|
|
@@ -950,6 +972,7 @@ export async function runDaemon(flags = {}, deps = {}) {
|
|
|
950
972
|
const multiDaemon = buildMulti(okConfigs, {
|
|
951
973
|
logger: { info: log, warn: errLog, error: errLog },
|
|
952
974
|
verbose,
|
|
975
|
+
env,
|
|
953
976
|
fetchImpl: deps.fetchImpl,
|
|
954
977
|
killer: deps.killer,
|
|
955
978
|
sseListener: deps.sseListener,
|
|
@@ -1000,16 +1023,17 @@ export async function runDaemon(flags = {}, deps = {}) {
|
|
|
1000
1023
|
// Detect the SELECTED backend's executable (non-fatal): the daemon still
|
|
1001
1024
|
// subscribes when it's missing; a wake surfaces the error visibly when one
|
|
1002
1025
|
// arrives. The resolved path (or absence) is shown in the banner below. Each
|
|
1003
|
-
// backend probes its own binary, including dsh
|
|
1026
|
+
// backend probes its own binary, including the `dsh` CLI for dsh, so the
|
|
1004
1027
|
// startup banner and warning report the selected runtime rather than Claude.
|
|
1028
|
+
const discoveryEnv = overlayAgentEnv(env, cliConfig.env);
|
|
1005
1029
|
const cliPath =
|
|
1006
1030
|
agentType === "codex"
|
|
1007
|
-
? findCodex()
|
|
1031
|
+
? findCodex({ env: discoveryEnv })
|
|
1008
1032
|
: agentType === "kiro"
|
|
1009
|
-
? findKiro()
|
|
1033
|
+
? findKiro({ env: discoveryEnv })
|
|
1010
1034
|
: agentType === "dsh"
|
|
1011
|
-
? findDsh()
|
|
1012
|
-
: findClaude();
|
|
1035
|
+
? findDsh({ env: discoveryEnv })
|
|
1036
|
+
: findClaude({ env: discoveryEnv });
|
|
1013
1037
|
|
|
1014
1038
|
// The daemon.json the layered config readers (credentials, sigint timeout, cwds)
|
|
1015
1039
|
// consult. Surfacing its absolute path + presence in the banner makes it obvious
|
|
@@ -1068,6 +1092,8 @@ export async function runDaemon(flags = {}, deps = {}) {
|
|
|
1068
1092
|
logger: { info: log, warn: errLog, error: errLog },
|
|
1069
1093
|
permissionMode,
|
|
1070
1094
|
agentType,
|
|
1095
|
+
cliConfig,
|
|
1096
|
+
env,
|
|
1071
1097
|
verbose,
|
|
1072
1098
|
sigintTimeoutMs,
|
|
1073
1099
|
cwds,
|
|
@@ -1272,8 +1298,7 @@ export async function handleLifecycleAction(action, { log, errLog, lifecycle, se
|
|
|
1272
1298
|
});
|
|
1273
1299
|
if (
|
|
1274
1300
|
installAgent.agent === "dsh" &&
|
|
1275
|
-
!String(env.
|
|
1276
|
-
!String(env.DSH_CORDIS_CONFIG ?? "").trim()
|
|
1301
|
+
!String(env.CHORUS_DSH_HOME ?? "").trim()
|
|
1277
1302
|
) {
|
|
1278
1303
|
try {
|
|
1279
1304
|
await (pfDeps?.prepareManagedDshConfig ?? prepareManagedDshConfig)({
|