@chorus-aidlc/chorus 0.11.1 → 0.12.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 +431 -418
- package/.next/standalone/.next/app-path-routes-manifest.json +41 -39
- package/.next/standalone/.next/build-manifest.json +5 -5
- package/.next/standalone/.next/prerender-manifest.json +33 -33
- 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 +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]/proposals/[proposalUuid]/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.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 +1 -1
- 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 +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/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 +3 -3
- 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_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 +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 +1 -1
- 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_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 +41 -39
- 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/2961.js +1 -1
- package/.next/standalone/.next/server/chunks/3219.js +1 -1
- package/.next/standalone/.next/server/chunks/3371.js +1 -1
- package/.next/standalone/.next/server/chunks/3419.js +1 -1
- package/.next/standalone/.next/server/chunks/345.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/5581.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/7064.js +1 -0
- package/.next/standalone/.next/server/chunks/{5631.js → 7160.js} +1 -1
- 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/7897.js +1 -1
- package/.next/standalone/.next/server/chunks/{4711.js → 796.js} +6 -6
- 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/937.js +3 -3
- package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/.next/standalone/.next/server/middleware-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/pages-manifest.json +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/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/32497-886aa4d3d7bf4967.js +1 -0
- package/.next/standalone/.next/static/chunks/37784-95dee37276b1067b.js +1 -0
- package/.next/standalone/.next/static/chunks/40867-04cc0d00205eaf9b.js +1 -0
- package/.next/standalone/.next/static/chunks/42111-1935df3b0dab2095.js +1 -0
- package/.next/standalone/.next/static/chunks/4860.f4242c493fcf182d.js +1 -0
- package/.next/standalone/.next/static/chunks/54637-71d281d649ea3a17.js +1 -0
- package/.next/standalone/.next/static/chunks/6239-d78e6f830ce0a7f8.js +1 -0
- package/.next/standalone/.next/static/chunks/64187-cff8a4b5e96fa8f9.js +10 -0
- package/.next/standalone/.next/static/chunks/78917-2b959ab0a7f610b4.js +1 -0
- package/.next/standalone/.next/static/chunks/80904-973284d1fe916c38.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/97868-9406a4014b667c2d.js +1 -0
- package/.next/standalone/.next/static/chunks/99373.880b43de1fa6411f.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-f04d5fa070f15acd.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-c4271886ef004611.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-7a8b60de97bfbd29.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-6620b9d7a2cc766f.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-0a55289b2bc510c2.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-5d09141beb5d6aee.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-d5c3dde34d6291a8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-0da08d8b425acb6a.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-44014947a679f91c.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-c64b8d40a0781b4c.js → page-e7493d55573a52f1.js} +1 -1
- 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-9a41067d4c5d29d7.js +1 -0
- package/.next/standalone/.next/static/chunks/{webpack-039590181c63871d.js → webpack-1556cfd11f7e90d1.js} +1 -1
- package/.next/standalone/.next/static/css/6e8fd46b062fd4fc.css +1 -0
- package/.next/standalone/.next/static/v1yRpXkt1wNBkZMTE3tiz/_buildManifest.js +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 +47 -13
- package/README.zh.md +47 -13
- package/chorus.mjs +30 -14
- package/cli/client-args.mjs +17 -1
- package/cli/daemon-banner.mjs +11 -1
- package/cli/daemon-config.mjs +118 -0
- package/cli/daemon.mjs +216 -154
- package/cli/event-router.mjs +273 -12
- package/cli/server-signal-handlers.mjs +41 -0
- package/cli/sse-listener.mjs +27 -5
- 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/369.js +0 -1
- package/.next/standalone/.next/server/chunks/5039.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/8012.js +0 -1
- 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/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/onboarding/page-e9a69a0c537c704f.js +0 -1
- package/.next/standalone/.next/static/css/1d9aaac01758b297.css +0 -1
- /package/.next/standalone/.next/static/{GQvpOux3M9CaxkMjL9GAI → v1yRpXkt1wNBkZMTE3tiz}/_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
|
---
|
|
@@ -123,14 +113,58 @@ chorus daemon logs # View daemon logs
|
|
|
123
113
|
- **Claude Code integration** — Auto-detects `claude` CLI on your PATH
|
|
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
|
---
|
|
@@ -114,14 +104,58 @@ chorus daemon logs # 查看 daemon 日志
|
|
|
114
104
|
- **Claude Code 集成** — 自动检测 PATH 中的 `claude` CLI
|
|
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;
|
|
@@ -103,6 +114,11 @@ OPTIONS
|
|
|
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
|
package/cli/daemon-banner.mjs
CHANGED
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
* @property {string} agentType local agent backend (e.g. claude-code).
|
|
20
20
|
* @property {string|null} claudePath resolved claude path, or null when not found.
|
|
21
21
|
* @property {string} [connection] connection state line (default "connecting…").
|
|
22
|
+
* @property {string} [configPath] absolute path to the daemon.json the CLI reads.
|
|
23
|
+
* @property {boolean} [configExists] whether that daemon.json exists on disk.
|
|
22
24
|
*/
|
|
23
25
|
|
|
24
26
|
/** Right-pad to width (banner box alignment). */
|
|
@@ -38,7 +40,7 @@ export function bannerRows(info) {
|
|
|
38
40
|
? "YOLO ⚠ (full autonomy — Bash/write/any command)"
|
|
39
41
|
: "chorus-only (Chorus MCP tools only)";
|
|
40
42
|
const claude = info.claudePath ? `found: ${info.claudePath}` : "NOT FOUND — install `claude` or set CHORUS_CLAUDE_PATH";
|
|
41
|
-
|
|
43
|
+
const rows = [
|
|
42
44
|
["Version", `chorus v${info.version}`],
|
|
43
45
|
["Server", info.url],
|
|
44
46
|
["Agent", `${info.agentName} (${info.agentUuid})`],
|
|
@@ -48,6 +50,14 @@ export function bannerRows(info) {
|
|
|
48
50
|
["Connection", info.connection ?? "connecting…"],
|
|
49
51
|
["claude CLI", claude],
|
|
50
52
|
];
|
|
53
|
+
// Config file row — shown only when the path is known. Tells the operator
|
|
54
|
+
// exactly which daemon.json the CLI read (and whether it exists), so a
|
|
55
|
+
// mis-located or absent config is obvious at a glance.
|
|
56
|
+
if (info.configPath) {
|
|
57
|
+
const exists = info.configExists ? "" : " (not found — using flags/env/defaults)";
|
|
58
|
+
rows.push(["Config", `${info.configPath}${exists}`]);
|
|
59
|
+
}
|
|
60
|
+
return rows;
|
|
51
61
|
}
|
|
52
62
|
|
|
53
63
|
/**
|
package/cli/daemon-config.mjs
CHANGED
|
@@ -13,6 +13,8 @@
|
|
|
13
13
|
// IO (env / file read) is injectable so this is unit-testable without real disk.
|
|
14
14
|
|
|
15
15
|
import { readFileSync } from "node:fs";
|
|
16
|
+
import { homedir } from "node:os";
|
|
17
|
+
import { isAbsolute, resolve as resolvePath } from "node:path";
|
|
16
18
|
import { loginFilePath } from "./credentials.mjs";
|
|
17
19
|
|
|
18
20
|
/** Built-in default escalation window (ms) — matches the spec's 10 seconds. */
|
|
@@ -82,3 +84,119 @@ export function resolveSigintTimeoutMs(flags = {}, deps = {}) {
|
|
|
82
84
|
// 4. Built-in default
|
|
83
85
|
return DEFAULT_SIGINT_TIMEOUT_MS;
|
|
84
86
|
}
|
|
87
|
+
|
|
88
|
+
// ===== Multi-path cwd set (T3 — 单 daemon 多路径引擎, FR-5/FR-8, DEC-2) =====
|
|
89
|
+
//
|
|
90
|
+
// A daemon may declare a SET of local working directories (a cwd LIST) it serves.
|
|
91
|
+
// Each declared path becomes one INDEPENDENT connection (own SSE self-report +
|
|
92
|
+
// own Waker bound to that cwd), so the same agent on the same host driving several
|
|
93
|
+
// paths registers as several distinct rows instead of one. This is JUST a set of
|
|
94
|
+
// paths: per the human's cwd⟂project correction (DEC-5) it carries NO path↔project
|
|
95
|
+
// binding and there is NO project→cwd routing — the daemon only declares which
|
|
96
|
+
// directories it serves.
|
|
97
|
+
//
|
|
98
|
+
// Layered resolution, mirroring resolveSigintTimeoutMs's precedence — first defined
|
|
99
|
+
// source wins (the WHOLE set comes from the first source that yields any path):
|
|
100
|
+
//
|
|
101
|
+
// --cwd flag(s) > CHORUS_DAEMON_CWDS env (comma/`os.delimiter`-separated)
|
|
102
|
+
// > ~/.chorus/daemon.json `cwds: [...]`
|
|
103
|
+
// > [undefined] (single connection at the daemon's process cwd)
|
|
104
|
+
//
|
|
105
|
+
// The `[undefined]` fallback is the HARD-1 / single-path default: an unspecified
|
|
106
|
+
// cwd set means "serve one path, the process default" — exactly today's behavior.
|
|
107
|
+
// The Waker/SseListener treat an `undefined` entry as "use process.cwd()".
|
|
108
|
+
|
|
109
|
+
/** Expand a leading `~` to the home dir and resolve to an absolute path. */
|
|
110
|
+
function normalizeCwd(value, home) {
|
|
111
|
+
if (typeof value !== "string") return undefined;
|
|
112
|
+
const trimmed = value.trim();
|
|
113
|
+
if (!trimmed) return undefined;
|
|
114
|
+
let expanded = trimmed;
|
|
115
|
+
if (expanded === "~") expanded = home;
|
|
116
|
+
else if (expanded.startsWith("~/")) expanded = resolvePath(home, expanded.slice(2));
|
|
117
|
+
// Resolve relative paths against the daemon's process cwd so the declared path is
|
|
118
|
+
// always absolute (claude --resume scopes transcripts to the ABSOLUTE cwd).
|
|
119
|
+
return isAbsolute(expanded) ? expanded : resolvePath(expanded);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* De-duplicate a list of normalized paths preserving first-seen order, dropping
|
|
124
|
+
* blanks/undefined. Returns the cleaned array (possibly empty).
|
|
125
|
+
* @param {Array<unknown>} list @param {string} home
|
|
126
|
+
* @returns {string[]}
|
|
127
|
+
*/
|
|
128
|
+
function cleanCwdList(list, home) {
|
|
129
|
+
const seen = new Set();
|
|
130
|
+
const out = [];
|
|
131
|
+
for (const raw of Array.isArray(list) ? list : []) {
|
|
132
|
+
const norm = normalizeCwd(raw, home);
|
|
133
|
+
if (norm === undefined || seen.has(norm)) continue;
|
|
134
|
+
seen.add(norm);
|
|
135
|
+
out.push(norm);
|
|
136
|
+
}
|
|
137
|
+
return out;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Resolve the SET of working directories this daemon serves (FR-5). One entry per
|
|
142
|
+
* connection the daemon will register. Each entry is an absolute path, EXCEPT the
|
|
143
|
+
* single-element `[undefined]` fallback which means "serve the process default cwd"
|
|
144
|
+
* (the unspecified / single-path / HARD-1 default — identical to today's behavior).
|
|
145
|
+
*
|
|
146
|
+
* Layered precedence (first source that yields ANY path wins for the whole set):
|
|
147
|
+
* 1. flags.cwd — a string or string[] from repeatable `--cwd` flags.
|
|
148
|
+
* 2. env — CHORUS_DAEMON_CWDS, split on the platform path delimiter or
|
|
149
|
+
* a comma (whichever the user used; both are accepted).
|
|
150
|
+
* 3. login/config — ~/.chorus/daemon.json `cwds` (array of strings).
|
|
151
|
+
* 4. default — `[undefined]` (one connection at the process cwd).
|
|
152
|
+
*
|
|
153
|
+
* The declaration is purely a list of paths — it does NOT carry, store, or upload
|
|
154
|
+
* any path↔project binding (DEC-5: cwd ⟂ project).
|
|
155
|
+
*
|
|
156
|
+
* @param {{ cwd?: string|string[] }} [flags] Explicit `--cwd` value(s).
|
|
157
|
+
* @param {{
|
|
158
|
+
* env?: Record<string, string|undefined>,
|
|
159
|
+
* readJson?: (path: string) => (Record<string, unknown>|null),
|
|
160
|
+
* loginPath?: string,
|
|
161
|
+
* home?: string,
|
|
162
|
+
* delimiter?: string,
|
|
163
|
+
* }} [deps]
|
|
164
|
+
* @returns {Array<string|undefined>} A non-empty list; `[undefined]` ⇒ process cwd.
|
|
165
|
+
*/
|
|
166
|
+
export function resolveDaemonCwds(flags = {}, deps = {}) {
|
|
167
|
+
const env = deps.env ?? process.env;
|
|
168
|
+
const readJson = deps.readJson ?? readJsonSafe;
|
|
169
|
+
const loginPath = deps.loginPath ?? loginFilePath();
|
|
170
|
+
const home = deps.home ?? homedir();
|
|
171
|
+
// Accept both the OS path delimiter (":" on POSIX, ";" on Windows) and a comma, so
|
|
172
|
+
// CHORUS_DAEMON_CWDS=/a:/b and CHORUS_DAEMON_CWDS=/a,/b both work cross-platform.
|
|
173
|
+
const delimiters = new RegExp(`[${deps.delimiter ?? ""},]|${process.platform === "win32" ? ";" : ":"}`);
|
|
174
|
+
|
|
175
|
+
// 1. Explicit --cwd flag(s) — a string or an array (repeatable flag).
|
|
176
|
+
const flagList = Array.isArray(flags.cwd)
|
|
177
|
+
? flags.cwd
|
|
178
|
+
: typeof flags.cwd === "string"
|
|
179
|
+
? [flags.cwd]
|
|
180
|
+
: [];
|
|
181
|
+
const fromFlags = cleanCwdList(flagList, home);
|
|
182
|
+
if (fromFlags.length > 0) return fromFlags;
|
|
183
|
+
|
|
184
|
+
// 2. Environment variable (delimiter- or comma-separated).
|
|
185
|
+
const envRaw = env.CHORUS_DAEMON_CWDS;
|
|
186
|
+
if (typeof envRaw === "string" && envRaw.trim()) {
|
|
187
|
+
const fromEnv = cleanCwdList(envRaw.split(delimiters), home);
|
|
188
|
+
if (fromEnv.length > 0) return fromEnv;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// 3. Login/config file (~/.chorus/daemon.json `cwds`).
|
|
192
|
+
const file = readJson(loginPath);
|
|
193
|
+
if (file && Array.isArray(file.cwds)) {
|
|
194
|
+
const fromFile = cleanCwdList(file.cwds, home);
|
|
195
|
+
if (fromFile.length > 0) return fromFile;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// 4. Built-in default: a single connection at the daemon's process cwd. `undefined`
|
|
199
|
+
// is the "unspecified" sentinel the Waker/SseListener degrade to process.cwd()
|
|
200
|
+
// for (HARD-1 / single-path — exactly today's behavior).
|
|
201
|
+
return [undefined];
|
|
202
|
+
}
|