@chorus-aidlc/chorus 0.11.1 → 0.12.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 +405 -391
- package/.next/standalone/.next/app-path-routes-manifest.json +33 -31
- package/.next/standalone/.next/build-manifest.json +5 -5
- package/.next/standalone/.next/prerender-manifest.json +27 -27
- package/.next/standalone/.next/react-loadable-manifest.json +3 -3
- package/.next/standalone/.next/routes-manifest.json +8 -0
- package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js +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]/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 +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/settings/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +3 -3
- 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 +1 -1
- package/.next/standalone/.next/server/app/admin/companies/new.rsc +3 -3
- package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin/companies.html +1 -1
- package/.next/standalone/.next/server/app/admin/companies.rsc +3 -3
- package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin.html +1 -1
- package/.next/standalone/.next/server/app/admin.rsc +3 -3
- 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.js.nft.json +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.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/login/route.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/session/route.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agent-connections/route.js +1 -1
- package/.next/standalone/.next/server/app/api/agent-connections/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent-connections/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/route.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/route.js.nft.json +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.js.nft.json +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.js.nft.json +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_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_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/refresh/route.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/refresh/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/session/route.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/session/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/session/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/sync-token/route.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/comments/route.js +1 -1
- package/.next/standalone/.next/server/app/api/comments/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/control/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/control/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/control/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/execution-state/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/executions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/executions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/executions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/pending-turns/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/resume/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/resume/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/resume/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/transcript/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/transcript/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/transcript/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/turn-advance/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-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 -0
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route_client-reference-manifest.js +1 -0
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/documents/[uuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/documents/[uuid]/route.js.nft.json +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 +6 -4
- 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 +7 -5
- 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/keepalive/route.js +1 -0
- package/.next/standalone/.next/server/app/api/keepalive/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/keepalive/route_client-reference-manifest.js +1 -0
- package/.next/standalone/.next/server/app/api/mcp/route.js +5 -5
- package/.next/standalone/.next/server/app/api/mcp/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/me/assignments/route.js +1 -1
- package/.next/standalone/.next/server/app/api/me/assignments/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mentionables/route.js +1 -1
- package/.next/standalone/.next/server/app/api/mentionables/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/preferences/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/preferences/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/read-all/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/read-all/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route.js +1 -1
- package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route.js.nft.json +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.js.nft.json +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.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route.js.nft.json +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.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route.js.nft.json +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.js.nft.json +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.js.nft.json +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]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/route.js.nft.json +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.js.nft.json +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/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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/search/route.js +1 -1
- package/.next/standalone/.next/server/app/api/search/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/search/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 +1 -1
- package/.next/standalone/.next/server/app/index.rsc +4 -4
- 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 +1 -1
- package/.next/standalone/.next/server/app/login/admin.rsc +3 -3
- 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 +1 -1
- package/.next/standalone/.next/server/app/login/callback.rsc +4 -4
- 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 +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 +1 -1
- package/.next/standalone/.next/server/app/login/pick-workspace.rsc +4 -4
- package/.next/standalone/.next/server/app/login/silent-refresh/page.js +1 -1
- package/.next/standalone/.next/server/app/login/silent-refresh/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/silent-refresh.html +1 -1
- package/.next/standalone/.next/server/app/login/silent-refresh.rsc +4 -4
- package/.next/standalone/.next/server/app/login.html +1 -1
- package/.next/standalone/.next/server/app/login.rsc +4 -4
- 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 +1 -1
- package/.next/standalone/.next/server/app/onboarding.rsc +4 -4
- package/.next/standalone/.next/server/app/page.js +2 -2
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects.html +1 -1
- package/.next/standalone/.next/server/app/projects.rsc +5 -5
- package/.next/standalone/.next/server/app/settings.html +1 -1
- package/.next/standalone/.next/server/app/settings.rsc +5 -5
- package/.next/standalone/.next/server/app-paths-manifest.json +33 -31
- package/.next/standalone/.next/server/chunks/{5201.js → 1343.js} +2 -2
- package/.next/standalone/.next/server/chunks/1463.js +1 -0
- package/.next/standalone/.next/server/chunks/1596.js +2 -2
- package/.next/standalone/.next/server/chunks/2618.js +1 -1
- package/.next/standalone/.next/server/chunks/2622.js +1 -0
- package/.next/standalone/.next/server/chunks/2779.js +31 -0
- package/.next/standalone/.next/server/chunks/2961.js +1 -1
- package/.next/standalone/.next/server/chunks/3219.js +1 -1
- package/.next/standalone/.next/server/chunks/3419.js +1 -1
- package/.next/standalone/.next/server/chunks/4292.js +1 -0
- package/.next/standalone/.next/server/chunks/4872.js +1 -0
- package/.next/standalone/.next/server/chunks/5300.js +1 -1
- package/.next/standalone/.next/server/chunks/5538.js +1 -0
- package/.next/standalone/.next/server/chunks/6113.js +1 -1
- package/.next/standalone/.next/server/chunks/6207.js +1 -1
- package/.next/standalone/.next/server/chunks/7063.js +2 -2
- package/.next/standalone/.next/server/chunks/7064.js +1 -0
- package/.next/standalone/.next/server/chunks/7160.js +1 -0
- package/.next/standalone/.next/server/chunks/7364.js +1 -0
- package/.next/standalone/.next/server/chunks/7368.js +1 -1
- package/.next/standalone/.next/server/chunks/7427.js +1 -0
- package/.next/standalone/.next/server/chunks/7515.js +1 -0
- package/.next/standalone/.next/server/chunks/7578.js +2 -2
- package/.next/standalone/.next/server/chunks/{4711.js → 796.js} +6 -6
- package/.next/standalone/.next/server/chunks/8732.js +1 -0
- package/.next/standalone/.next/server/chunks/9161.js +1 -0
- package/.next/standalone/.next/server/chunks/920.js +1 -1
- package/.next/standalone/.next/server/chunks/9273.js +1 -0
- package/.next/standalone/.next/server/chunks/937.js +3 -3
- 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/pages/404.html +1 -1
- 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 +1 -1
- package/.next/standalone/.next/static/GmBblfxcDziUENBiEap4B/_buildManifest.js +1 -0
- package/.next/standalone/.next/static/chunks/10344-2e9a9d767e2e8ed1.js +1 -0
- package/.next/standalone/.next/static/chunks/16467-dd4f928e725306c1.js +1 -0
- package/.next/standalone/.next/static/chunks/20081-a2bf5c9f24d5d589.js +1 -0
- package/.next/standalone/.next/static/chunks/2280-f48bf99ea9d88ece.js +1 -0
- package/.next/standalone/.next/static/chunks/26394-4af487a51dd62832.js +1 -0
- package/.next/standalone/.next/static/chunks/27378-9328bcc96ae9872e.js +1 -0
- package/.next/standalone/.next/static/chunks/{33187.13c12f5c0821ac57.js → 33187.1328c15b9dab78a8.js} +1 -1
- package/.next/standalone/.next/static/chunks/37784-95dee37276b1067b.js +1 -0
- package/.next/standalone/.next/static/chunks/46983-8bf90f1ffeb55957.js +1 -0
- package/.next/standalone/.next/static/chunks/46999-f53da8f53fe1b8a9.js +1 -0
- package/.next/standalone/.next/static/chunks/4860.e3d0dd79a4d37626.js +1 -0
- package/.next/standalone/.next/static/chunks/54637-71d281d649ea3a17.js +1 -0
- package/.next/standalone/.next/static/chunks/64187-cff8a4b5e96fa8f9.js +10 -0
- package/.next/standalone/.next/static/chunks/78917-aa5bbff9248799a4.js +1 -0
- package/.next/standalone/.next/static/chunks/80904-973284d1fe916c38.js +1 -0
- package/.next/standalone/.next/static/chunks/85573-fb4d2cbd67612d47.js +1 -0
- package/.next/standalone/.next/static/chunks/88561-0b14e1564419f215.js +1 -0
- package/.next/standalone/.next/static/chunks/89035-faf398b7bbc7d2ed.js +1 -0
- package/.next/standalone/.next/static/chunks/89644-2fee0373b890e8e3.js +1 -0
- package/.next/standalone/.next/static/chunks/{93346-5489d90bc2d57190.js → 93346-b3e1ebe948fc623f.js} +1 -1
- package/.next/standalone/.next/static/chunks/{97784-7b90a17294840e32.js → 97784-42081b75f8cc6da8.js} +1 -1
- package/.next/standalone/.next/static/chunks/97868-55f18a05fe483d85.js +1 -0
- package/.next/standalone/.next/static/chunks/99373.cc6319fa4cf36081.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-b3a497ba5eb08036.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-2944c6c9bc48a7d6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-d786f0c18a9c4f06.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-c68f1eda3779b448.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-e0935445535c28cb.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-f824632ff61a9fa7.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-dbcb6e50fc4816c6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-1295bc505e727383.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-ceeec49af0396432.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-1286afe43c086d6a.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/{page-583e58d4d689d38b.js → page-fec019d974ef8d4e.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-0fb1d51016f6bd56.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/admin/login/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/admin/session/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/api-keys/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/me/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/refresh/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/session/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/comments/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/repoint/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/events/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/health/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/keepalive/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/mcp/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/mentionables/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-groups/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/search/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-f1b0daea9f947caf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/layout-e3a49e06950a057f.js +1 -0
- package/.next/standalone/.next/static/chunks/app/login/callback/{page-0edd93f50cb4f6ea.js → page-6cad93f5c610b047.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/login/page-d2513f477211dd6f.js +1 -0
- package/.next/standalone/.next/static/chunks/app/login/pick-workspace/{page-e0444ad8b50121f5.js → page-597e0f3377f18d29.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/login/silent-refresh/{page-a9960ea858db6752.js → page-a26d1af61578c96e.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/onboarding/page-2936274fb252329e.js +1 -0
- package/.next/standalone/.next/static/chunks/app/page-075afd218994d377.js +1 -0
- package/.next/standalone/.next/static/chunks/{webpack-039590181c63871d.js → webpack-ed3555ea61243391.js} +1 -1
- package/.next/standalone/.next/static/css/6e8fd46b062fd4fc.css +1 -0
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +4 -0
- package/.next/standalone/public/skill/proposal-chorus/SKILL.md +4 -0
- package/README.md +49 -15
- package/README.zh.md +49 -15
- package/chorus.mjs +30 -14
- package/cli/client-args.mjs +18 -2
- package/cli/codex-session-map.mjs +117 -0
- package/cli/codex-spawner.mjs +312 -0
- package/cli/daemon-agent.mjs +32 -6
- package/cli/daemon-banner.mjs +54 -6
- package/cli/daemon-config.mjs +118 -0
- package/cli/daemon.mjs +348 -167
- package/cli/event-router.mjs +273 -12
- package/cli/login.mjs +77 -34
- package/cli/server-signal-handlers.mjs +41 -0
- package/cli/spawner-select.mjs +30 -0
- package/cli/sse-listener.mjs +56 -6
- package/cli/upload-hooks.mjs +73 -8
- package/cli/waker.mjs +36 -8
- package/package.json +1 -1
- package/prisma/migrations/20260622115159_add_daemon_connection_cwd/migration.sql +9 -0
- package/prisma/migrations/20260623020208_task_pinned_target_instance/migration.sql +3 -0
- package/prisma/migrations/20260624142248_add_agent_instance/migration.sql +31 -0
- package/prisma/migrations/20260624165025_drop_task_target_host_cwd/migration.sql +10 -0
- package/prisma/schema.prisma +69 -3
- package/.next/standalone/.next/server/chunks/1064.js +0 -1
- package/.next/standalone/.next/server/chunks/2213.js +0 -1
- package/.next/standalone/.next/server/chunks/3371.js +0 -1
- package/.next/standalone/.next/server/chunks/369.js +0 -1
- package/.next/standalone/.next/server/chunks/4958.js +0 -1
- package/.next/standalone/.next/server/chunks/5039.js +0 -1
- package/.next/standalone/.next/server/chunks/5631.js +0 -1
- package/.next/standalone/.next/server/chunks/6461.js +0 -1
- package/.next/standalone/.next/server/chunks/6712.js +0 -1
- package/.next/standalone/.next/server/chunks/7867.js +0 -1
- package/.next/standalone/.next/server/chunks/7897.js +0 -1
- package/.next/standalone/.next/server/chunks/8012.js +0 -1
- package/.next/standalone/.next/server/chunks/8245.js +0 -31
- package/.next/standalone/.next/server/chunks/9629.js +0 -1
- package/.next/standalone/.next/server/chunks/9725.js +0 -1
- package/.next/standalone/.next/static/GQvpOux3M9CaxkMjL9GAI/_buildManifest.js +0 -1
- package/.next/standalone/.next/static/chunks/1217-323cc20b73ebfde9.js +0 -1
- package/.next/standalone/.next/static/chunks/16984-8ab5580b8e63a200.js +0 -1
- package/.next/standalone/.next/static/chunks/1879-7a8b283283218df2.js +0 -1
- package/.next/standalone/.next/static/chunks/19276-50b367d7b93d5f34.js +0 -1
- package/.next/standalone/.next/static/chunks/23466-e1176a6d814f4897.js +0 -1
- package/.next/standalone/.next/static/chunks/38040-a8687f86dd8e9d67.js +0 -1
- package/.next/standalone/.next/static/chunks/4860.8bdb37c964f92e48.js +0 -1
- package/.next/standalone/.next/static/chunks/59296-783831c43aa0162e.js +0 -1
- package/.next/standalone/.next/static/chunks/60648-36ccbee4ce232d52.js +0 -1
- package/.next/standalone/.next/static/chunks/60694-68232120903209df.js +0 -1
- package/.next/standalone/.next/static/chunks/64648-ece4e2a59672cf63.js +0 -1
- package/.next/standalone/.next/static/chunks/66205-8d7eae6a0f0a032d.js +0 -1
- package/.next/standalone/.next/static/chunks/66969-12f0b22c51f5a410.js +0 -1
- package/.next/standalone/.next/static/chunks/70536-b8bf71098ae11f07.js +0 -1
- package/.next/standalone/.next/static/chunks/76803-7ac4024b2ae89843.js +0 -1
- package/.next/standalone/.next/static/chunks/78389-b32edc6bd5c570a9.js +0 -1
- package/.next/standalone/.next/static/chunks/78584-eb2fa8cf2f266329.js +0 -1
- package/.next/standalone/.next/static/chunks/78917-150ed14a99844aab.js +0 -1
- package/.next/standalone/.next/static/chunks/84541-1f4c2a40f7722667.js +0 -10
- package/.next/standalone/.next/static/chunks/8574-b9739eb8d054c793.js +0 -1
- package/.next/standalone/.next/static/chunks/99373.12370329b9ab6beb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-0a28456fea4ce95a.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-a79969c5c9aadacd.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-a28f0eaa6f4ac94a.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-ef82b871895245ea.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-2c9bcbd11ddb8661.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-630b168598513ce8.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-99639479cc98965f.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-335f2450e44a0fba.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-4a191d69b2b6e880.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-0faebb478be4c85d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-2e8fcb72687100df.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/admin/login/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/admin/session/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agents/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/api-keys/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/me/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/refresh/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/session/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/comments/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/events/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/health/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/mcp/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/mentionables/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/project-groups/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/search/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-4bc556c2fc8f3d24.js +0 -1
- package/.next/standalone/.next/static/chunks/app/layout-9963339572e2e64e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/login/page-c64b8d40a0781b4c.js +0 -1
- package/.next/standalone/.next/static/chunks/app/onboarding/page-e9a69a0c537c704f.js +0 -1
- package/.next/standalone/.next/static/chunks/app/page-8b4baa950c78ffe7.js +0 -1
- package/.next/standalone/.next/static/css/1d9aaac01758b297.css +0 -1
- /package/.next/standalone/.next/static/{GQvpOux3M9CaxkMjL9GAI → GmBblfxcDziUENBiEap4B}/_ssgManifest.js +0 -0
package/README.md
CHANGED
|
@@ -36,6 +36,8 @@ The labels under each stage are the **permissions** an actor needs at that stage
|
|
|
36
36
|
|
|
37
37
|
## What's New
|
|
38
38
|
|
|
39
|
+
**[v0.12.0](https://chorus-ai.dev/blog/chorus-v0.12.0-release/)** — Addressable daemon instances: one `chorus daemon` can serve multiple working directories (`--cwd`), and each `(agent, host, cwd)` becomes an individually visible, individually targetable instance across presence, @-mention, and assignment. Pin an instance once on an idea and its proposals, tasks, and wakes inherit it; pinned wakes are delivered to exactly that instance instead of broadcast. Comment @-mentions render as live online-status badges, and comments switch to cursor-based infinite scroll.
|
|
40
|
+
|
|
39
41
|
**[v0.11.0](https://chorus-ai.dev/blog/chorus-v0.11.0-release/)** — The Chorus Daemon: `chorus daemon` turns your machine into a resident agent runtime that wakes a local Claude Code on each dispatch. An Agent Connections surface gives live observability and control — streaming transcripts, instruction injection, and interrupt / resume — and a "Verify Elaborate" button wakes the assigned agent to write the proposal.
|
|
40
42
|
|
|
41
43
|
**[v0.10.0](https://chorus-ai.dev/blog/chorus-v0.10.0-release/)** — Single-parent idea lineage: an idea may derive a child or be attached under another, forming a forest. The relation is intentionally weak — a parent surfaces a read-only "+N derived" rollup and does not constrain any child's elaboration, proposal, or task flow. Idea browsing consolidates onto the Dashboard (a three-way Ideas / Lineage / Stats view switch with an adaptive default); the standalone Idea List page is retired and its URLs 308-redirect to the Dashboard.
|
|
@@ -46,18 +48,6 @@ The labels under each stage are the **permissions** an actor needs at that stage
|
|
|
46
48
|
|
|
47
49
|
**[v0.8.0](https://chorus-ai.dev/blog/chorus-v0.8.0-release/)** — OpenSpec-aware mode (Claude Code): auto-activates when an `openspec/` directory and the `openspec` CLI are both present, adds `/opsx/{explore,propose,apply,archive}` and a post-verify archive-trigger hook.
|
|
48
50
|
|
|
49
|
-
**[v0.7.0](https://chorus-ai.dev/blog/chorus-v0.7.0-release/)** — Fine-grained agent permissions: 5 resources × 3 actions grid replaces the PM/Developer/Admin three-way choice, with presets + a Custom option for free combination.
|
|
50
|
-
|
|
51
|
-
**[v0.6.7](https://chorus-ai.dev/blog/chorus-v0.6.7-release/)** — Chorus plugin for Codex CLI (one-command installer), workspace picker when one email belongs to multiple Companies, per-client connect guides.
|
|
52
|
-
|
|
53
|
-
**[v0.6.6](https://chorus-ai.dev/blog/chorus-v0.6.6-release/)** — npm one-click install (`npx @chorus-aidlc/chorus`), document export (MD/PDF/Word), proposal revoke, faster agent checkin with work status at a glance.
|
|
54
|
-
|
|
55
|
-
**[v0.6.2](https://chorus-ai.dev/blog/chorus-v0.6.2-release/)** — Embedded PGlite mode (zero-dependency deployment), structured logging with Pino, stateless MCP for horizontal scaling, default port changed to 8637.
|
|
56
|
-
|
|
57
|
-
**[v0.6.1](https://chorus-ai.dev/blog/chorus-v0.6.1-release/)** — `/yolo` skill: full-auto AI-DLC pipeline (Idea → Proposal → Execute → Verify) with Agent Team parallel execution.
|
|
58
|
-
|
|
59
|
-
**[v0.6.0](https://chorus-ai.dev/blog/chorus-v0.6.0-release/)** — IdeaTracker dashboard, independent review agents (proposal-reviewer + task-reviewer), real-time agent presence indicators, cross-column Kanban animation.
|
|
60
|
-
|
|
61
51
|
> Full changelog: [CHANGELOG.md](CHANGELOG.md)
|
|
62
52
|
|
|
63
53
|
---
|
|
@@ -106,7 +96,7 @@ DATABASE_URL=postgresql://user:pass@host:5432/chorus chorus
|
|
|
106
96
|
|
|
107
97
|
The `chorus daemon` connects your local machine to a remote Chorus server as an agent runtime and executes tasks assigned by Chorus.
|
|
108
98
|
|
|
109
|
-
> **
|
|
99
|
+
> **Agent backends:** **Claude Code** (default) and **Codex** are supported — select with `--agent codex` (or `CHORUS_AGENT=codex`). Support for other agent CLIs (Copilot, etc.) is planned for future releases.
|
|
110
100
|
|
|
111
101
|
```bash
|
|
112
102
|
chorus login # Authenticate (opens browser)
|
|
@@ -120,17 +110,61 @@ chorus daemon logs # View daemon logs
|
|
|
120
110
|
|
|
121
111
|
**Key features:**
|
|
122
112
|
|
|
123
|
-
- **Claude Code
|
|
113
|
+
- **Claude Code & Codex backends** — Auto-detects the `claude` (or `codex`) CLI on your PATH; pick with `--agent codex`
|
|
124
114
|
- **Background mode** — Run with `-d` flag; manage with `stop/restart/logs`
|
|
125
115
|
- **Permission modes** — Default is full access (yolo); use `--chorus-only` to restrict to Chorus MCP tools only
|
|
116
|
+
- **Multi-path** — Serve several working directories from one daemon with repeatable `--cwd` (see below)
|
|
126
117
|
- **Interactive setup** — Prompts for credentials on first start if not already configured
|
|
127
118
|
|
|
128
119
|
The daemon requires authentication. Run `chorus login` first, or it will prompt for credentials interactively on first start (if running in a terminal).
|
|
129
120
|
|
|
121
|
+
#### Serve multiple working directories
|
|
122
|
+
|
|
123
|
+
One daemon can serve several local working directories at once — each declared path registers as an independent connection (its own session + wake loop) under the same agent. A path is **just** a directory the daemon serves; it carries no project binding.
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
chorus daemon --cwd ~/work/repo-a --cwd ~/work/repo-b # repeatable flag
|
|
127
|
+
CHORUS_DAEMON_CWDS="~/work/repo-a:~/work/repo-b" chorus daemon # or env (`:`- or `,`-separated)
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
With no `--cwd`, the daemon serves the single directory it was launched from.
|
|
131
|
+
|
|
132
|
+
#### Configuration file — `~/.chorus/daemon.json`
|
|
133
|
+
|
|
134
|
+
`chorus login` writes credentials here (mode `0600`). You can also add daemon tunables to the **same** file. Every field is optional; flags and environment variables always take precedence over the file.
|
|
135
|
+
|
|
136
|
+
```json
|
|
137
|
+
{
|
|
138
|
+
"url": "https://chorus.example.com",
|
|
139
|
+
"apiKey": "cho_xxxxxxxxxxxxxxxxxxxxxxxx",
|
|
140
|
+
"agentUuid": "00000000-0000-0000-0000-000000000000",
|
|
141
|
+
"agentName": "My Daemon Agent",
|
|
142
|
+
"cwds": ["~/work/repo-a", "~/work/repo-b"],
|
|
143
|
+
"sigintTimeoutMs": 10000
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
| Field | Type | Written by / used for | Precedence (highest first) |
|
|
148
|
+
|-------|------|-----------------------|----------------------------|
|
|
149
|
+
| `url` | string | Remote Chorus server URL | `--url` flag → `CHORUS_URL` → file |
|
|
150
|
+
| `apiKey` | string | Agent API key (`cho_…`) | `--api-key` flag → `CHORUS_API_KEY` → file |
|
|
151
|
+
| `agentUuid` / `agentName` | string | Authenticated identity (recorded at login) | written by `chorus login` |
|
|
152
|
+
| `cwds` | string[] | Working directories the daemon serves (multi-path) | `--cwd` flag(s) → `CHORUS_DAEMON_CWDS` → file → launch dir |
|
|
153
|
+
| `sigintTimeoutMs` | number | Grace window (ms) after SIGINT before a forceful kill (default `10000`) | `--sigint-timeout` flag → `CHORUS_DAEMON_SIGINT_TIMEOUT` → file → `10000` |
|
|
154
|
+
| `yoloAckAt` | string | Internal — timestamp of a TTY yolo confirmation (managed automatically) | — |
|
|
155
|
+
|
|
156
|
+
On startup the daemon banner prints the **exact `daemon.json` path it read** (and whether the file exists), so you always know which file to edit.
|
|
157
|
+
|
|
130
158
|
---
|
|
131
159
|
|
|
132
160
|
## Screenshots
|
|
133
161
|
|
|
162
|
+
### Remote Agent Wake — Dispatch to a Directory, Watch It Run
|
|
163
|
+
|
|
164
|
+

|
|
165
|
+
|
|
166
|
+
Assign an idea to a specific directory on a remote agent, then open the conversation and watch the local Claude Code pick up the work and run in real time — no terminal, no manual resume.
|
|
167
|
+
|
|
134
168
|
### Proposal — AI Agent Generates Plans in Real Time
|
|
135
169
|
|
|
136
170
|

|
|
@@ -257,7 +291,7 @@ A Cmd+K command palette for searching across all 6 entity types (Tasks, Ideas, P
|
|
|
257
291
|
| Agent Integration | MCP SDK 1.26 (HTTP Streamable Transport) |
|
|
258
292
|
| Auth | OIDC + PKCE / API Key / SuperAdmin |
|
|
259
293
|
| i18n | next-intl (en, zh) |
|
|
260
|
-
| Deployment | [Docker Hub](https://hub.docker.com/
|
|
294
|
+
| Deployment | [Docker Hub](https://hub.docker.com/r/chorusaidlc/chorus-app) / Docker Compose / AWS CDK |
|
|
261
295
|
|
|
262
296
|
---
|
|
263
297
|
|
package/README.zh.md
CHANGED
|
@@ -27,6 +27,8 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
|
|
|
27
27
|
|
|
28
28
|
## 最近更新
|
|
29
29
|
|
|
30
|
+
**[v0.12.0](https://chorus-ai.dev/zh/blog/chorus-v0.12.0-release/)** — 可寻址的 daemon 实例:一个 `chorus daemon` 可同时守多个工作目录(`--cwd`),每一个 `(agent, 主机, 目录)` 都成为一个能单独看见、单独点名的实例,贯穿 presence、@-mention 与任务指派。在想法上钉一次实例,其下的提案、任务与唤醒都会继承;带钉的唤醒被精确投递到那个实例,而非全员广播。评论区的 Agent @-mention 渲染为实时在线状态徽章,评论列表改为游标式无限滚动。
|
|
31
|
+
|
|
30
32
|
**[v0.11.0](https://chorus-ai.dev/zh/blog/chorus-v0.11.0-release/)** — Chorus Daemon:`chorus daemon` 将本机变为常驻 Agent 运行时,在每次派发时唤起本地 Claude Code。Agent Connections 界面提供实时可观测与控制:流式 transcript、指令注入、打断 / 恢复;新增"完成细化"按钮,唤起被指派的 Agent 撰写提案。
|
|
31
33
|
|
|
32
34
|
**[v0.10.0](https://chorus-ai.dev/zh/blog/chorus-v0.10.0-release/)** — 单父想法血缘:一条想法可派生子想法或挂靠至另一条之下,构成森林结构。该关联为弱关联,父想法仅呈现只读的 "+N derived" 汇总,不约束子想法的细化、提案与任务流程。想法浏览统一收敛至 Dashboard(Ideas / Lineage / Stats 三档视图切换,支持自适应默认);独立的 Idea List 页面下线,原 URL 经 308 重定向至 Dashboard。
|
|
@@ -37,18 +39,6 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
|
|
|
37
39
|
|
|
38
40
|
**[v0.8.0](https://chorus-ai.dev/zh/blog/chorus-v0.8.0-release/)** — OpenSpec-aware 模式(仅 Claude Code):当仓库下同时存在 `openspec/` 目录和 `openspec` CLI 时自动启用,新增 `/opsx/{explore,propose,apply,archive}` 与 task verify 后的 archive-trigger 钩子。
|
|
39
41
|
|
|
40
|
-
**[v0.7.0](https://chorus-ai.dev/zh/blog/chorus-v0.7.0-release/)** — 细粒度 Agent 权限:5 类资源 × 3 个动作组成的网格,取代 PM / Developer / Admin 三选一。保留原有预设,新增 Custom 选项自由组合。
|
|
41
|
-
|
|
42
|
-
**[v0.6.7](https://chorus-ai.dev/zh/blog/chorus-v0.6.7-release/)** — Codex CLI 版 Chorus 插件(一条命令装完)、同一邮箱属于多个 Company 时的工作区选择器、每种客户端的接入文档。
|
|
43
|
-
|
|
44
|
-
**[v0.6.6](https://chorus-ai.dev/zh/blog/chorus-v0.6.6-release/)** — npm 一键安装(`npx @chorus-aidlc/chorus`)、文档导出(MD/PDF/Word)、Proposal 撤回、优化 Agent Checkin 快速获取工作状态。
|
|
45
|
-
|
|
46
|
-
**[v0.6.2](https://chorus-ai.dev/zh/blog/chorus-v0.6.2-release/)** — 嵌入式 PGlite 模式(零依赖部署)、Pino 结构化日志、无状态 MCP 支持水平扩展、默认端口改为 8637。
|
|
47
|
-
|
|
48
|
-
**[v0.6.1](https://chorus-ai.dev/zh/blog/chorus-v0.6.1-release/)** — `/yolo` 技能:全自动 AI-DLC 流水线(Idea → Proposal → Execute → Verify),支持 Agent Team 并行执行。
|
|
49
|
-
|
|
50
|
-
**[v0.6.0](https://chorus-ai.dev/zh/blog/chorus-v0.6.0-release/)** — IdeaTracker 面板、独立审阅 Agent(proposal-reviewer + task-reviewer)、实时 Agent Presence 指示器、跨列 Kanban 动画。
|
|
51
|
-
|
|
52
42
|
> 完整更新日志:[CHANGELOG.md](CHANGELOG.md)
|
|
53
43
|
|
|
54
44
|
---
|
|
@@ -97,7 +87,7 @@ DATABASE_URL=postgresql://user:pass@host:5432/chorus chorus
|
|
|
97
87
|
|
|
98
88
|
`chorus daemon` 将你的本地机器作为 Agent 运行时连接到远程 Chorus 服务器并执行 Chorus 分配的任务。
|
|
99
89
|
|
|
100
|
-
>
|
|
90
|
+
> **Agent 后端:** 支持 **Claude Code**(默认)和 **Codex**,用 `--agent codex`(或 `CHORUS_AGENT=codex`)切换。对其他 Agent CLI(Copilot 等)的支持计划在未来版本中实现。
|
|
101
91
|
|
|
102
92
|
```bash
|
|
103
93
|
chorus login # 认证(打开浏览器)
|
|
@@ -111,17 +101,61 @@ chorus daemon logs # 查看 daemon 日志
|
|
|
111
101
|
|
|
112
102
|
**主要特性:**
|
|
113
103
|
|
|
114
|
-
- **Claude Code
|
|
104
|
+
- **Claude Code 与 Codex 后端** — 自动检测 PATH 中的 `claude`(或 `codex`)CLI;用 `--agent codex` 选择
|
|
115
105
|
- **后台模式** — 使用 `-d` 标志后台运行;用 `stop/restart/logs` 管理
|
|
116
106
|
- **权限模式** — 默认完全访问(yolo);使用 `--chorus-only` 限制为仅 Chorus MCP 工具
|
|
107
|
+
- **多路径** — 用可重复的 `--cwd` 让单个 daemon 同时服务多个工作目录(见下文)
|
|
117
108
|
- **交互式设置** — 首次启动时如未配置凭证会提示输入
|
|
118
109
|
|
|
119
110
|
daemon 需要先认证。首次使用请先运行 `chorus login`,或者 daemon 会在首次启动时交互式提示输入凭证(如果在终端中运行)。
|
|
120
111
|
|
|
112
|
+
#### 服务多个工作目录
|
|
113
|
+
|
|
114
|
+
一个 daemon 可以同时服务多个本地工作目录——每个声明的路径会注册为一条独立连接(各自拥有会话与唤起循环),归属同一个 Agent。路径**仅仅**是 daemon 服务的目录,不携带任何项目绑定。
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
chorus daemon --cwd ~/work/repo-a --cwd ~/work/repo-b # 可重复传入
|
|
118
|
+
CHORUS_DAEMON_CWDS="~/work/repo-a:~/work/repo-b" chorus daemon # 或用环境变量(`:` 或 `,` 分隔)
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
不传 `--cwd` 时,daemon 只服务它的启动目录这一个路径。
|
|
122
|
+
|
|
123
|
+
#### 配置文件 —— `~/.chorus/daemon.json`
|
|
124
|
+
|
|
125
|
+
`chorus login` 会把凭证写入此文件(权限 `0600`)。你也可以把 daemon 的调优项写进**同一个**文件。所有字段都是可选的;命令行参数和环境变量的优先级始终高于文件。
|
|
126
|
+
|
|
127
|
+
```json
|
|
128
|
+
{
|
|
129
|
+
"url": "https://chorus.example.com",
|
|
130
|
+
"apiKey": "cho_xxxxxxxxxxxxxxxxxxxxxxxx",
|
|
131
|
+
"agentUuid": "00000000-0000-0000-0000-000000000000",
|
|
132
|
+
"agentName": "My Daemon Agent",
|
|
133
|
+
"cwds": ["~/work/repo-a", "~/work/repo-b"],
|
|
134
|
+
"sigintTimeoutMs": 10000
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
| 字段 | 类型 | 写入方 / 用途 | 优先级(从高到低) |
|
|
139
|
+
|------|------|---------------|--------------------|
|
|
140
|
+
| `url` | string | 远程 Chorus 服务器 URL | `--url` 参数 → `CHORUS_URL` → 文件 |
|
|
141
|
+
| `apiKey` | string | Agent API Key(`cho_…`) | `--api-key` 参数 → `CHORUS_API_KEY` → 文件 |
|
|
142
|
+
| `agentUuid` / `agentName` | string | 认证身份(登录时记录) | 由 `chorus login` 写入 |
|
|
143
|
+
| `cwds` | string[] | daemon 服务的工作目录(多路径) | `--cwd` 参数 → `CHORUS_DAEMON_CWDS` → 文件 → 启动目录 |
|
|
144
|
+
| `sigintTimeoutMs` | number | SIGINT 后强制结束前的宽限窗口(毫秒,默认 `10000`) | `--sigint-timeout` 参数 → `CHORUS_DAEMON_SIGINT_TIMEOUT` → 文件 → `10000` |
|
|
145
|
+
| `yoloAckAt` | string | 内部字段——TTY 下 yolo 确认的时间戳(自动管理) | — |
|
|
146
|
+
|
|
147
|
+
daemon 启动时的横幅会打印它**实际读取的 `daemon.json` 路径**(以及该文件是否存在),让你随时清楚该编辑哪个文件。
|
|
148
|
+
|
|
121
149
|
---
|
|
122
150
|
|
|
123
151
|
## 界面预览
|
|
124
152
|
|
|
153
|
+
### 远程唤醒 Agent——派活到指定目录,实时看它跑
|
|
154
|
+
|
|
155
|
+

|
|
156
|
+
|
|
157
|
+
把一条想法派给远程 Agent 的某个目录,打开对话窗口,就能实时看到本地的 Claude Code 接活、开跑,全程不用碰终端,也不用手动 resume。
|
|
158
|
+
|
|
125
159
|
### Proposal——AI Agent 实时生成计划
|
|
126
160
|
|
|
127
161
|

|
|
@@ -248,7 +282,7 @@ Cmd+K 命令面板,支持跨 6 种实体类型搜索。支持范围筛选(
|
|
|
248
282
|
| Agent 集成 | MCP SDK 1.26 (HTTP Streamable Transport) |
|
|
249
283
|
| 认证 | OIDC + PKCE / API Key / SuperAdmin |
|
|
250
284
|
| i18n | next-intl (en, zh) |
|
|
251
|
-
| 部署 | [Docker Hub](https://hub.docker.com/
|
|
285
|
+
| 部署 | [Docker Hub](https://hub.docker.com/r/chorusaidlc/chorus-app) / Docker Compose / AWS CDK |
|
|
252
286
|
|
|
253
287
|
---
|
|
254
288
|
|
package/chorus.mjs
CHANGED
|
@@ -34,6 +34,10 @@ import {
|
|
|
34
34
|
daemonHelpText,
|
|
35
35
|
loginHelpText,
|
|
36
36
|
} from "./cli/client-args.mjs";
|
|
37
|
+
// Server-only signal-handler installer, guarded so a client subcommand
|
|
38
|
+
// (`chorus daemon` / `chorus login`) never registers the server's handlers.
|
|
39
|
+
// Pure module → unit-testable without this entry's import-time side effects.
|
|
40
|
+
import { installServerSignalHandlers } from "./cli/server-signal-handlers.mjs";
|
|
37
41
|
|
|
38
42
|
/** Read the package version once for help/version output. */
|
|
39
43
|
function pkgVersion() {
|
|
@@ -159,10 +163,13 @@ ENVIRONMENT VARIABLES
|
|
|
159
163
|
DAEMON / LOGIN (client mode)
|
|
160
164
|
--url <url> Remote Chorus server URL (env: CHORUS_URL)
|
|
161
165
|
--api-key <cho_...> Agent API key (env: CHORUS_API_KEY)
|
|
162
|
-
--
|
|
166
|
+
--chorus-only Restrict the woken Claude to Chorus MCP tools only (env: CHORUS_CHORUS_ONLY=1)
|
|
167
|
+
(comment/claim/report/status — no Bash / file edits).
|
|
168
|
+
Opt out of the default full-autonomy posture.
|
|
169
|
+
--yolo Full autonomy for the woken Claude — the DEFAULT (env: CHORUS_YOLO=1)
|
|
163
170
|
(--dangerously-skip-permissions: Bash, file writes,
|
|
164
|
-
any command).
|
|
165
|
-
--sigint-timeout <ms> Grace window after SIGINT before a forceful kill
|
|
171
|
+
any command). Already on unless --chorus-only is set.
|
|
172
|
+
--sigint-timeout <ms> Grace window after SIGINT before a forceful kill (env: CHORUS_DAEMON_SIGINT_TIMEOUT)
|
|
166
173
|
when an interrupt is received (default: 10000).
|
|
167
174
|
Also configurable via ~/.chorus/daemon.json sigintTimeoutMs.
|
|
168
175
|
|
|
@@ -170,9 +177,9 @@ DAEMON / LOGIN (client mode)
|
|
|
170
177
|
~/.chorus/daemon.json (from 'chorus login') > Claude Code plugin config.
|
|
171
178
|
|
|
172
179
|
The daemon spawns the local 'claude' CLI headlessly per task dispatch; it must
|
|
173
|
-
be on PATH. Override with CHORUS_CLAUDE_PATH. By default the woken Claude
|
|
174
|
-
|
|
175
|
-
|
|
180
|
+
be on PATH. Override with CHORUS_CLAUDE_PATH. By default the woken Claude runs
|
|
181
|
+
with FULL autonomy (real code-writing AI-DLC), which is dangerous: run it
|
|
182
|
+
sandboxed, or pass --chorus-only to restrict it to Chorus MCP tools.
|
|
176
183
|
|
|
177
184
|
EXAMPLES
|
|
178
185
|
chorus # Embedded PGlite (default)
|
|
@@ -180,8 +187,8 @@ EXAMPLES
|
|
|
180
187
|
chorus --data-dir /var/lib/chorus # Custom data directory
|
|
181
188
|
DATABASE_URL=postgres://... chorus --use-pglite=false # External PostgreSQL
|
|
182
189
|
chorus login # Interactive: validate key, save credentials
|
|
183
|
-
chorus daemon # Connect & wake local Claude Code (
|
|
184
|
-
chorus daemon --
|
|
190
|
+
chorus daemon # Connect & wake local Claude Code (full autonomy by default)
|
|
191
|
+
chorus daemon --chorus-only # Restrict the woken Claude to Chorus MCP tools only
|
|
185
192
|
CHORUS_URL=https://... CHORUS_API_KEY=cho_... chorus daemon
|
|
186
193
|
`);
|
|
187
194
|
process.exit(0);
|
|
@@ -451,12 +458,21 @@ function shutdown() {
|
|
|
451
458
|
}
|
|
452
459
|
}
|
|
453
460
|
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
461
|
+
// Install the server's SIGINT/SIGTERM/exit handlers ONLY on the server launch
|
|
462
|
+
// path. On a client subcommand (`chorus daemon` / `chorus login`) this installs
|
|
463
|
+
// nothing, so the daemon's OWN graceful shutdown handler is the sole signal
|
|
464
|
+
// disposition — otherwise the server's handler (registered first) would pre-empt
|
|
465
|
+
// it with a synchronous `process.exit(0)`, leaving the daemon to disconnect
|
|
466
|
+
// non-gracefully (stale presence) and printing a misleading bare "Shutting down...".
|
|
467
|
+
installServerSignalHandlers({
|
|
468
|
+
isSubcommand,
|
|
469
|
+
processRef: process,
|
|
470
|
+
shutdown,
|
|
471
|
+
cleanupExit: () => {
|
|
472
|
+
if (pgliteProcess && !pgliteProcess.killed) {
|
|
473
|
+
pgliteProcess.kill("SIGKILL");
|
|
474
|
+
}
|
|
475
|
+
},
|
|
460
476
|
});
|
|
461
477
|
|
|
462
478
|
// ---------------------------------------------------------------------------
|
package/cli/client-args.mjs
CHANGED
|
@@ -28,10 +28,16 @@ export const KNOWN_AGENTS = new Set(["claude-code"]);
|
|
|
28
28
|
* "false" (important for layered env/flag precedence downstream).
|
|
29
29
|
*
|
|
30
30
|
* @param {string[]} argv
|
|
31
|
+
* The new repeatable `--cwd <path>` (space + `=`) declares a working directory the
|
|
32
|
+
* daemon serves; repeating it (`--cwd a --cwd b`) declares the SET of paths for the
|
|
33
|
+
* single-daemon multi-path engine (T3). It is collected into a `cwd: string[]` array
|
|
34
|
+
* preserving order; absent ⇒ `cwd` is unset (the layered resolver then falls back to
|
|
35
|
+
* env / config / the process cwd). It is JUST a path list — no project binding.
|
|
36
|
+
*
|
|
31
37
|
* @returns {{
|
|
32
38
|
* url?: string, apiKey?: string, yolo?: boolean, sigintTimeout?: string,
|
|
33
39
|
* agent?: string, chorusOnly?: boolean, verbose?: boolean, detach?: boolean,
|
|
34
|
-
* help?: boolean,
|
|
40
|
+
* cwd?: string[], help?: boolean,
|
|
35
41
|
* }}
|
|
36
42
|
*/
|
|
37
43
|
export function parseClientFlags(argv) {
|
|
@@ -47,6 +53,11 @@ export function parseClientFlags(argv) {
|
|
|
47
53
|
else if (a.startsWith("--sigint-timeout=")) out.sigintTimeout = a.slice("--sigint-timeout=".length);
|
|
48
54
|
else if (a === "--agent") out.agent = argv[i + 1];
|
|
49
55
|
else if (a.startsWith("--agent=")) out.agent = a.slice("--agent=".length);
|
|
56
|
+
else if (a === "--cwd" || a.startsWith("--cwd=")) {
|
|
57
|
+
// Repeatable: collect every --cwd into an ordered array (the cwd SET).
|
|
58
|
+
const value = a === "--cwd" ? argv[i + 1] : a.slice("--cwd=".length);
|
|
59
|
+
if (typeof value === "string") (out.cwd ??= []).push(value);
|
|
60
|
+
}
|
|
50
61
|
else if (a === "--chorus-only") out.chorusOnly = true;
|
|
51
62
|
else if (a === "--verbose") out.verbose = true;
|
|
52
63
|
else if (a === "-d" || a === "--detach") out.detach = true;
|
|
@@ -96,13 +107,18 @@ OPTIONS
|
|
|
96
107
|
--url <url> Remote Chorus server URL (env: CHORUS_URL)
|
|
97
108
|
--api-key <cho_...> Agent API key (env: CHORUS_API_KEY)
|
|
98
109
|
--agent <type> Local agent backend to wake (env: CHORUS_AGENT)
|
|
99
|
-
(
|
|
110
|
+
(claude-code | codex; default: claude-code)
|
|
100
111
|
--yolo Full autonomy for the woken agent (env: CHORUS_YOLO=1)
|
|
101
112
|
(--dangerously-skip-permissions: Bash, file writes, any
|
|
102
113
|
command). This is the DEFAULT permission mode.
|
|
103
114
|
--chorus-only Restrict the woken agent to Chorus (env: CHORUS_CHORUS_ONLY=1)
|
|
104
115
|
MCP tools only (no Bash / file edits) — reclaims the
|
|
105
116
|
safe posture from the default yolo.
|
|
117
|
+
--cwd <path> A working directory the daemon serves. Repeatable —
|
|
118
|
+
(env: CHORUS_DAEMON_CWDS) each --cwd registers an independent
|
|
119
|
+
connection for that path, so one daemon can serve several
|
|
120
|
+
local paths at once. Default: the directory it was launched
|
|
121
|
+
from. (Also configurable as "cwds":[…] in ~/.chorus/daemon.json.)
|
|
106
122
|
-d, --detach Run detached in the background (pidfile + logfile)
|
|
107
123
|
--verbose More detailed per-wake logging
|
|
108
124
|
--sigint-timeout <ms> Grace window after SIGINT before a forceful kill
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
// cli/codex-session-map.mjs
|
|
2
|
+
// Daemon-local persistence of the Codex `anchor → thread_id` map. Codex GENERATES
|
|
3
|
+
// its own thread id (unlike Claude, which accepts a client-supplied --session-id),
|
|
4
|
+
// so to make a wake resumable across daemon restarts we record the generated id
|
|
5
|
+
// keyed by the Chorus session anchor (direct idea uuid, or the entity uuid for an
|
|
6
|
+
// ad-hoc session) and `codex exec resume <thread_id>` on the next wake.
|
|
7
|
+
//
|
|
8
|
+
// The store is a single JSON object `{ "<anchor>": "<thread_id>" }` at
|
|
9
|
+
// ~/.chorus/codex-sessions.json (same dir family as daemon.json). The anchor is a
|
|
10
|
+
// globally-unique Chorus uuid, so one flat file is safe across the daemon's
|
|
11
|
+
// multiple path-connections.
|
|
12
|
+
//
|
|
13
|
+
// CONTRACT: this is best-effort and MUST NEVER throw into the wake path. Any
|
|
14
|
+
// read/parse/write/rename failure degrades to "no mapping → next wake starts
|
|
15
|
+
// fresh" with a visible log (no-silent-errors). IO is injectable for tests.
|
|
16
|
+
|
|
17
|
+
import { mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
|
|
18
|
+
import { homedir } from "node:os";
|
|
19
|
+
import { dirname, join } from "node:path";
|
|
20
|
+
|
|
21
|
+
const NOOP_LOGGER = { info() {}, warn() {}, error() {} };
|
|
22
|
+
|
|
23
|
+
/** Absolute path to the Codex session-id map, alongside ~/.chorus/daemon.json. */
|
|
24
|
+
export function codexSessionMapPath() {
|
|
25
|
+
return join(homedir(), ".chorus", "codex-sessions.json");
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** A non-empty trimmed string, or null. */
|
|
29
|
+
function nonEmpty(value) {
|
|
30
|
+
return typeof value === "string" && value.trim().length > 0 ? value : null;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Read the whole map as a plain object. Missing / unreadable / malformed file →
|
|
35
|
+
* `{}` (never throws). A non-object JSON value (array / scalar) is also treated
|
|
36
|
+
* as empty.
|
|
37
|
+
* @param {string} path
|
|
38
|
+
* @param {(p: string) => string} read
|
|
39
|
+
* @param {{warn(m:string):void}} logger
|
|
40
|
+
* @returns {Record<string, unknown>}
|
|
41
|
+
*/
|
|
42
|
+
function readMap(path, read, logger) {
|
|
43
|
+
let raw;
|
|
44
|
+
try {
|
|
45
|
+
raw = read(path);
|
|
46
|
+
} catch (err) {
|
|
47
|
+
// ENOENT is the normal "no map yet" case — silent. Other read errors warn.
|
|
48
|
+
if (!(err && err.code === "ENOENT")) {
|
|
49
|
+
logger.warn(`[Chorus] codex-session-map: read failed (${err}) — treating as empty`);
|
|
50
|
+
}
|
|
51
|
+
return {};
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
const parsed = JSON.parse(raw);
|
|
55
|
+
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) return parsed;
|
|
56
|
+
logger.warn("[Chorus] codex-session-map: file is not a JSON object — treating as empty");
|
|
57
|
+
return {};
|
|
58
|
+
} catch (err) {
|
|
59
|
+
logger.warn(`[Chorus] codex-session-map: corrupt JSON (${err}) — treating as empty`);
|
|
60
|
+
return {};
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Look up the Codex thread id recorded for `anchor`, or null when there is none
|
|
66
|
+
* (no file, no entry, or a non-string entry). Never throws.
|
|
67
|
+
* @param {string} anchor
|
|
68
|
+
* @param {{ path?: string, read?: (p: string) => string, logger?: any }} [deps]
|
|
69
|
+
* @returns {string | null}
|
|
70
|
+
*/
|
|
71
|
+
export function getThreadId(anchor, deps = {}) {
|
|
72
|
+
const a = nonEmpty(anchor);
|
|
73
|
+
if (!a) return null;
|
|
74
|
+
const path = deps.path ?? codexSessionMapPath();
|
|
75
|
+
const read = deps.read ?? ((p) => readFileSync(p, "utf8"));
|
|
76
|
+
const logger = deps.logger ?? NOOP_LOGGER;
|
|
77
|
+
const map = readMap(path, read, logger);
|
|
78
|
+
return nonEmpty(map[a]);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Record `anchor → threadId`, preserving every other entry. Atomic (temp file +
|
|
83
|
+
* rename). Best-effort: a blank anchor/threadId is ignored (no write), and any
|
|
84
|
+
* IO failure is logged and swallowed — it never throws into the wake path.
|
|
85
|
+
* @param {string} anchor
|
|
86
|
+
* @param {string} threadId
|
|
87
|
+
* @param {{ path?: string, read?: (p: string) => string,
|
|
88
|
+
* write?: (p: string, c: string, o?: object) => void,
|
|
89
|
+
* mkdir?: (p: string, o?: object) => void,
|
|
90
|
+
* rename?: (from: string, to: string) => void, logger?: any }} [deps]
|
|
91
|
+
* @returns {void}
|
|
92
|
+
*/
|
|
93
|
+
export function setThreadId(anchor, threadId, deps = {}) {
|
|
94
|
+
const a = nonEmpty(anchor);
|
|
95
|
+
const t = nonEmpty(threadId);
|
|
96
|
+
if (!a || !t) return; // nothing meaningful to persist
|
|
97
|
+
const path = deps.path ?? codexSessionMapPath();
|
|
98
|
+
const read = deps.read ?? ((p) => readFileSync(p, "utf8"));
|
|
99
|
+
const write = deps.write ?? writeFileSync;
|
|
100
|
+
const mkdir = deps.mkdir ?? mkdirSync;
|
|
101
|
+
const rename = deps.rename ?? renameSync;
|
|
102
|
+
const logger = deps.logger ?? NOOP_LOGGER;
|
|
103
|
+
|
|
104
|
+
try {
|
|
105
|
+
const map = readMap(path, read, logger);
|
|
106
|
+
map[a] = t;
|
|
107
|
+
mkdir(dirname(path), { recursive: true });
|
|
108
|
+
// Atomic write: temp file (0600) in the same dir, then rename over target,
|
|
109
|
+
// so a crash mid-write never truncates the live map.
|
|
110
|
+
const tmp = `${path}.tmp`;
|
|
111
|
+
write(tmp, JSON.stringify(map, null, 2) + "\n", { mode: 0o600 });
|
|
112
|
+
rename(tmp, path);
|
|
113
|
+
} catch (err) {
|
|
114
|
+
// Best-effort: a failed persist just means the next wake starts fresh.
|
|
115
|
+
logger.warn(`[Chorus] codex-session-map: failed to persist ${a}→${t} (${err}) — wake will start fresh next time`);
|
|
116
|
+
}
|
|
117
|
+
}
|