@chorus-aidlc/chorus 0.14.6 → 0.15.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 +448 -402
- package/.next/standalone/.next/app-path-routes-manifest.json +46 -41
- package/.next/standalone/.next/build-manifest.json +5 -5
- package/.next/standalone/.next/prerender-manifest.json +15 -15
- package/.next/standalone/.next/routes-manifest.json +16 -0
- package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js +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 +3 -3
- package/.next/standalone/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/settings/page.js +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 +2 -2
- package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
- package/.next/standalone/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin/companies/new.html +2 -2
- package/.next/standalone/.next/server/app/admin/companies/new.rsc +2 -2
- package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin/companies.html +2 -2
- package/.next/standalone/.next/server/app/admin/companies.rsc +2 -2
- package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin.html +2 -2
- package/.next/standalone/.next/server/app/admin.rsc +2 -2
- package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agent-connections/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent-connections/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/comments/route.js +1 -1
- package/.next/standalone/.next/server/app/api/comments/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/connection-heartbeat/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/connection-heartbeat/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/control/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/control/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/directory-request/report/route.js +1 -0
- package/.next/standalone/.next/server/app/api/daemon/directory-request/report/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/daemon/directory-request/report/route_client-reference-manifest.js +1 -0
- package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/execution-state/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/executions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/executions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/pending-turns/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/resume/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/resume/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/resume/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/transcript/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/transcript/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/transcript/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/turn-advance/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-directory-requests/[uuid]/route.js +1 -0
- package/.next/standalone/.next/server/app/api/daemon-directory-requests/[uuid]/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/daemon-directory-requests/[uuid]/route_client-reference-manifest.js +1 -0
- package/.next/standalone/.next/server/app/api/daemon-directory-requests/route.js +1 -0
- package/.next/standalone/.next/server/app/api/daemon-directory-requests/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/daemon-directory-requests/route_client-reference-manifest.js +1 -0
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js +1 -1
- package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/events/notifications/route.js +1 -1
- package/.next/standalone/.next/server/app/api/events/notifications/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/events/route.js +1 -1
- package/.next/standalone/.next/server/app/api/events/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/conversational/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/conversational/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/conversational/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mcp/route.js +2 -2
- package/.next/standalone/.next/server/app/api/mcp/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/me/assignments/route.js +1 -1
- package/.next/standalone/.next/server/app/api/me/assignments/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mentionables/route.js +1 -1
- package/.next/standalone/.next/server/app/api/mentionables/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/preferences/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/preferences/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/read-all/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/read-all/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-visits/pin/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-visits/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-visits/visit/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/agent-cwds/route.js +1 -0
- package/.next/standalone/.next/server/app/api/projects/[uuid]/agent-cwds/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/projects/[uuid]/agent-cwds/route_client-reference-manifest.js +1 -0
- package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/agent-cwd-options/route.js +1 -0
- package/.next/standalone/.next/server/app/api/projects/agent-cwd-options/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/projects/agent-cwd-options/route_client-reference-manifest.js +1 -0
- 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_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/references/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/references/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/session/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/index.html +2 -2
- package/.next/standalone/.next/server/app/index.rsc +2 -2
- package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/admin.html +2 -2
- package/.next/standalone/.next/server/app/login/admin.rsc +2 -2
- package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/callback.html +2 -2
- package/.next/standalone/.next/server/app/login/callback.rsc +2 -2
- package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/pick-workspace.html +2 -2
- package/.next/standalone/.next/server/app/login/pick-workspace.rsc +2 -2
- package/.next/standalone/.next/server/app/login.html +2 -2
- package/.next/standalone/.next/server/app/login.rsc +2 -2
- package/.next/standalone/.next/server/app/onboarding/page.js +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 +2 -2
- package/.next/standalone/.next/server/app/onboarding.rsc +3 -3
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects.html +2 -2
- package/.next/standalone/.next/server/app/projects.rsc +4 -4
- package/.next/standalone/.next/server/app/settings.html +2 -2
- package/.next/standalone/.next/server/app/settings.rsc +4 -4
- package/.next/standalone/.next/server/app-paths-manifest.json +46 -41
- package/.next/standalone/.next/server/chunks/1114.js +1 -1
- package/.next/standalone/.next/server/chunks/1318.js +1 -1
- package/.next/standalone/.next/server/chunks/1524.js +1 -0
- package/.next/standalone/.next/server/chunks/1559.js +2 -2
- package/.next/standalone/.next/server/chunks/1722.js +1 -0
- package/.next/standalone/.next/server/chunks/{2789.js → 2547.js} +3 -3
- package/.next/standalone/.next/server/chunks/2572.js +2 -0
- package/.next/standalone/.next/server/chunks/2618.js +1 -1
- package/.next/standalone/.next/server/chunks/2961.js +1 -1
- package/.next/standalone/.next/server/chunks/330.js +1 -0
- package/.next/standalone/.next/server/chunks/3525.js +1 -0
- package/.next/standalone/.next/server/chunks/4827.js +1 -1
- package/.next/standalone/.next/server/chunks/5245.js +1 -1
- package/.next/standalone/.next/server/chunks/6113.js +1 -1
- package/.next/standalone/.next/server/chunks/6506.js +4 -4
- package/.next/standalone/.next/server/chunks/6515.js +2 -2
- package/.next/standalone/.next/server/chunks/7368.js +1 -1
- package/.next/standalone/.next/server/chunks/7530.js +1 -1
- package/.next/standalone/.next/server/chunks/8454.js +1 -1
- package/.next/standalone/.next/server/chunks/8540.js +1 -1
- package/.next/standalone/.next/server/chunks/920.js +1 -1
- package/.next/standalone/.next/server/chunks/9213.js +1 -1
- package/.next/standalone/.next/server/chunks/9378.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/.next/standalone/.next/server/middleware-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/404.html +2 -2
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/chunks/11595.f1e55e827d67f2bc.js +1 -0
- package/.next/standalone/.next/static/chunks/18351-12dc856208d79e10.js +1 -0
- package/.next/standalone/.next/static/chunks/22987-8fd965ab4ff87546.js +1 -0
- package/.next/standalone/.next/static/chunks/{33456.c48dc366aa90b234.js → 33456.4817cdce41593c7e.js} +1 -1
- package/.next/standalone/.next/static/chunks/37938-0b9a2b891c04b166.js +1 -0
- package/.next/standalone/.next/static/chunks/4340-a33120fb742af57e.js +1 -0
- package/.next/standalone/.next/static/chunks/4860.bb2749ebaf8eb15f.js +1 -0
- package/.next/standalone/.next/static/chunks/53402-be6989c3f3968e7b.js +1 -0
- package/.next/standalone/.next/static/chunks/6698-1c55791b2d0820d5.js +1 -0
- package/.next/standalone/.next/static/chunks/68326-61feeb2f6cddd338.js +1 -0
- package/.next/standalone/.next/static/chunks/72974-714dcca796895c40.js +1 -0
- package/.next/standalone/.next/static/chunks/75137-c9e8422c9d4e1f52.js +1 -0
- package/.next/standalone/.next/static/chunks/7777-13466138aa42bd5f.js +1 -0
- package/.next/standalone/.next/static/chunks/78917-f91904c6c2d12dab.js +1 -0
- package/.next/standalone/.next/static/chunks/80748-e971c5a5d6ef967d.js +1 -0
- package/.next/standalone/.next/static/chunks/94426-39b6da238425f9b7.js +10 -0
- package/.next/standalone/.next/static/chunks/94470-0c74a933d5a2902f.js +1 -0
- package/.next/standalone/.next/static/chunks/94643-ba1ebff5769d2b50.js +1 -0
- package/.next/standalone/.next/static/chunks/99373.ae03246bdf49c700.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-177a3fa88be94b4a.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-7462c5eb92130796.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-03b8510273520572.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/{page-d6c226fd56b5ebb5.js → page-4a8ac49308a4e23b.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/page-03408be00dc4822b.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-be353989e67e7b55.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/{page-ebf4c28014025b7b.js → page-c70af8cac7bdc483.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/{page-bbde7e85e3388813.js → page-715b000c156a080c.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/{page-6df01fa989cca27b.js → page-7a5ef281f6819ed4.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-e786a59c24eb5bda.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/admin/login/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/admin/session/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/api-keys/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/me/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/comments/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/connection-heartbeat/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/directory-request/report/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-directory-requests/[uuid]/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-directory-requests/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/repoint/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/events/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/health/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/wake-preview/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/conversational/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/mcp/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/mentionables/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-groups/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-visits/pin/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-visits/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-visits/visit/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/agent-cwds/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/resource-graph/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/agent-cwd-options/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/references/[uuid]/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/references/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/search/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/session/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-559ec0f534a12956.js +1 -0
- package/.next/standalone/.next/static/chunks/app/onboarding/page-df7c97cefb508201.js +1 -0
- package/.next/standalone/.next/static/chunks/{webpack-af2cb28ef7bbd7c2.js → webpack-84e2db1b2418c974.js} +1 -1
- package/.next/standalone/.next/static/css/ef995b001437e3ef.css +1 -0
- package/.next/standalone/.next/static/oHZy43Le4b2I7pg7_cQ0Z/_buildManifest.js +1 -0
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/public/chorus-plugin/.claude-plugin/plugin.json +1 -1
- package/.next/standalone/public/chorus-plugin/skills/brainstorm/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/openspec-aware/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/quick-dev/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/review/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/yolo/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-brainstorm/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-develop/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-idea/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-openspec-aware/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-proposal/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-quick-dev/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-review/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-yolo/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/bin/chorus-api.sh +1 -1
- package/README.ja.md +2 -0
- package/README.ko.md +2 -0
- package/README.md +3 -0
- package/README.zh.md +2 -0
- package/cli/client-args.mjs +8 -0
- package/cli/codex-spawner.mjs +5 -5
- package/cli/control-handler.mjs +31 -2
- package/cli/daemon-config.mjs +35 -0
- package/cli/daemon-install-config.mjs +26 -0
- package/cli/daemon-rest-client.mjs +27 -2
- package/cli/daemon.mjs +110 -20
- package/cli/directory-discovery.mjs +184 -0
- package/cli/event-router.mjs +12 -4
- package/cli/turn-reporter.mjs +11 -3
- package/cli/waker.mjs +35 -8
- package/package.json +1 -1
- package/prisma/migrations/20260731093000_add_daemon_backend_session_id/migration.sql +1 -0
- package/prisma/migrations/20260801113000_add_project_agent_cwd_discovery/migration.sql +50 -0
- package/prisma/migrations/20260802140000_add_assignment_runtime_cwd_snapshot/migration.sql +7 -0
- package/prisma/schema.prisma +134 -60
- package/.next/standalone/.next/server/chunks/2004.js +0 -1
- package/.next/standalone/.next/server/chunks/2112.js +0 -1
- package/.next/standalone/.next/server/chunks/3219.js +0 -2
- package/.next/standalone/.next/static/chunks/11595.c580c5690d176cce.js +0 -1
- package/.next/standalone/.next/static/chunks/14160-7bcee6e9e8bc5233.js +0 -1
- package/.next/standalone/.next/static/chunks/15653-31c406c41bf58048.js +0 -1
- package/.next/standalone/.next/static/chunks/18351-2a408c4f57ddb3a7.js +0 -1
- package/.next/standalone/.next/static/chunks/24870-5b0be64361f5ef70.js +0 -1
- package/.next/standalone/.next/static/chunks/26232-110019cebde19691.js +0 -1
- package/.next/standalone/.next/static/chunks/33806-cb339e86820a87c4.js +0 -1
- package/.next/standalone/.next/static/chunks/37035-514bbb31cd13bda1.js +0 -1
- package/.next/standalone/.next/static/chunks/37938-c09acf52d7f85cb4.js +0 -1
- package/.next/standalone/.next/static/chunks/39479-5af3460208d8cc56.js +0 -1
- package/.next/standalone/.next/static/chunks/4860.baf6a285246198af.js +0 -1
- package/.next/standalone/.next/static/chunks/60178-d6276df1c07d7735.js +0 -10
- package/.next/standalone/.next/static/chunks/68326-924445654ed47e6f.js +0 -1
- package/.next/standalone/.next/static/chunks/78917-1498676a1ffe5ded.js +0 -1
- package/.next/standalone/.next/static/chunks/94470-1076452151689267.js +0 -1
- package/.next/standalone/.next/static/chunks/94643-7c7f2efab0640658.js +0 -1
- package/.next/standalone/.next/static/chunks/99373.ad871bd0bbfc5eb7.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-78259279cf6c6919.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-2af5f2f159c8e32b.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-59dcf0ba7ce877ec.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/page-af35d50848f01875.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-cb6fdf592863833c.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-e60bc39bf2957f77.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/admin/login/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/admin/session/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agents/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/api-keys/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/me/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/comments/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/connection-heartbeat/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/repoint/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/events/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/health/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/wake-preview/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/conversational/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/mcp/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/mentionables/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/project-groups/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/project-visits/pin/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/project-visits/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/project-visits/visit/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/resource-graph/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/references/[uuid]/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/references/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/search/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/session/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-8cf720e8efb6ac7d.js +0 -1
- package/.next/standalone/.next/static/chunks/app/onboarding/page-006bf9e9d6a991f1.js +0 -1
- package/.next/standalone/.next/static/css/f46eab37c942ff33.css +0 -1
- package/.next/standalone/.next/static/t-ZaS6bNyv62NUlewVISp/_buildManifest.js +0 -1
- /package/.next/standalone/.next/static/{t-ZaS6bNyv62NUlewVISp → oHZy43Le4b2I7pg7_cQ0Z}/_ssgManifest.js +0 -0
|
@@ -240,7 +240,7 @@ cmd_mcp_tool() {
|
|
|
240
240
|
# Step 1: Initialize MCP session
|
|
241
241
|
local init_payload
|
|
242
242
|
init_payload=$(cat <<JSONEOF
|
|
243
|
-
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"chorus-hook","version":"0.
|
|
243
|
+
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"chorus-hook","version":"0.15.0"}}}
|
|
244
244
|
JSONEOF
|
|
245
245
|
)
|
|
246
246
|
|
package/README.ja.md
CHANGED
|
@@ -36,6 +36,8 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
|
|
|
36
36
|
|
|
37
37
|
## 最近の更新
|
|
38
38
|
|
|
39
|
+
**[v0.15.0](https://chorus-ai.dev/blog/chorus-v0.15.0-release/)** — プロジェクト単位の Agent 作業ディレクトリ:各ユーザーがプロジェクト内の Agent ごとにホストと cwd を設定し、デーモンが許可したルートだけを参照できます。割り当て、ウェイク、再開、後続ターンで同じ実行先を使い、進行中のセッションは移動しません。Codex は再開可能なバックエンド thread ID を別に保存し、不要になった Chorus の session 管理手順を削除しました。
|
|
40
|
+
|
|
39
41
|
**[v0.14.1](https://chorus-ai.dev/blog/chorus-v0.14.1-release/)** — Amazon Kiro CLI が 4 つ目の接続方法になりました(Kiro CLI v2):ワンコマンドの `install-kiro.sh` プラグインと `--agent kiro` デーモンバックエンド、加えていくつかのデーモン修正。
|
|
40
42
|
|
|
41
43
|
**[v0.14.0](https://chorus-ai.dev/blog/chorus-v0.14.0-release/)** — アプリ全体のダークモード(ライト / ダーク / システム)。参考資料をあらゆる着想・提案・課題に添付でき、インラインでも MCP 経由でも読み取れます。韓国語と日本語を追加(韓国語はコミュニティによる貢献)。グループ化のための**テーマ**着想、デーモンの「開発を開始」/「Yolo」ボタン、対話式の着想入力、クラッシュからの再開、`chorus daemon install`。
|
package/README.ko.md
CHANGED
|
@@ -36,6 +36,8 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
|
|
|
36
36
|
|
|
37
37
|
## 최근 업데이트
|
|
38
38
|
|
|
39
|
+
**[v0.15.0](https://chorus-ai.dev/blog/chorus-v0.15.0-release/)** — 프로젝트별 Agent 작업 디렉터리: 각 사용자가 프로젝트의 Agent마다 호스트와 cwd를 지정하고, 데몬이 허용한 루트만 탐색할 수 있습니다. 배정, 웨이크, 재개, 후속 턴에서 같은 실행 위치를 사용하며 진행 중인 세션은 이동하지 않습니다. Codex는 재개 가능한 백엔드 thread ID를 별도로 저장하고, 더 이상 필요하지 않은 Chorus session 관리 단계를 제거했습니다.
|
|
40
|
+
|
|
39
41
|
**[v0.14.1](https://chorus-ai.dev/blog/chorus-v0.14.1-release/)** — Amazon Kiro CLI가 네 번째 연결 방식이 되었습니다(Kiro CLI v2): 명령 한 줄로 설치하는 `install-kiro.sh` 플러그인과 `--agent kiro` 데몬 백엔드, 여기에 몇 가지 데몬 수정.
|
|
40
42
|
|
|
41
43
|
**[v0.14.0](https://chorus-ai.dev/blog/chorus-v0.14.0-release/)** — 앱 전체 다크 모드(라이트 / 다크 / 시스템). 참고 자료를 어떤 아이디어·제안·작업에도 첨부할 수 있고, 인라인으로도 MCP를 통해서도 읽을 수 있습니다. 한국어와 일본어 추가(한국어는 커뮤니티 기여). 그룹화를 위한 **테마** 아이디어, 그리고 데몬의 개발 시작 / Yolo 버튼, 대화식 아이디어 입력, 크래시 복구, `chorus daemon install`.
|
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.15.0](https://chorus-ai.dev/blog/chorus-v0.15.0-release/)** — Project-level Agent working directories: each user can bind every Agent in a project to a host and cwd, browse only daemon-approved roots, and use the same target across assignment, wake, resume, and later turns without moving active sessions. Codex now persists its resumable backend thread ID separately and drops obsolete Chorus session-management steps.
|
|
40
|
+
|
|
39
41
|
**[v0.14.1](https://chorus-ai.dev/blog/chorus-v0.14.1-release/)** — Amazon Kiro CLI is the fourth way to connect (Kiro CLI v2): a one-command `install-kiro.sh` plugin and a `--agent kiro` daemon backend, plus daemon fixes.
|
|
40
42
|
|
|
41
43
|
**[v0.14.0](https://chorus-ai.dev/blog/chorus-v0.14.0-release/)** — Dark mode across the app (light / dark / system). Reference artifacts: attach docs, repos, issues, and articles to any idea, proposal, or task, readable inline and over MCP. Korean and Japanese locales (Korean contributed by the community). **Theme** ideas for grouping, plus daemon Start Development / Yolo buttons, conversational idea entry, crash-resume, and `chorus daemon install`.
|
|
@@ -170,6 +172,7 @@ With no `--cwd`, the daemon serves the single directory it was launched from.
|
|
|
170
172
|
| `apiKey` | string | Agent API key (`cho_…`) | `--api-key` flag → `CHORUS_API_KEY` → file |
|
|
171
173
|
| `agentUuid` / `agentName` | string | Authenticated identity (recorded at login) | written by `chorus login` |
|
|
172
174
|
| `cwds` | string[] | Working directories the daemon serves (multi-path) | `--cwd` flag(s) → `CHORUS_DAEMON_CWDS` → file → launch dir |
|
|
175
|
+
| `browseRoots` | string[] | Roots allowed for project and temporary directory browsing | `--browse-root` flag(s) → `CHORUS_DAEMON_BROWSE_ROOTS` → file → user home |
|
|
173
176
|
| `agent` | string | Local agent backend to wake (`claude-code` / `codex` / `kiro`) | `--agent` flag → `CHORUS_AGENT` → file → `claude-code` |
|
|
174
177
|
| `sigintTimeoutMs` | number | Grace window (ms) after SIGINT before a forceful kill (default `10000`) | `--sigint-timeout` flag → `CHORUS_DAEMON_SIGINT_TIMEOUT` → file → `10000` |
|
|
175
178
|
| `yoloAckAt` | string | Internal — timestamp of a TTY yolo confirmation (managed automatically) | — |
|
package/README.zh.md
CHANGED
|
@@ -27,6 +27,8 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
|
|
|
27
27
|
|
|
28
28
|
## 最近更新
|
|
29
29
|
|
|
30
|
+
**[v0.15.0](https://chorus-ai.dev/zh/blog/chorus-v0.15.0-release/)** — 项目级 Agent 工作目录:每位用户可以为项目中的每个 Agent 绑定主机和 cwd,只浏览 daemon 允许的目录,并让任务分配、唤醒、恢复和后续对话使用同一个执行位置,且不迁移进行中的会话。Codex 现在会单独保存可恢复的后端 thread ID,并移除不再需要的 Chorus session 管理步骤。
|
|
31
|
+
|
|
30
32
|
**[v0.14.1](https://chorus-ai.dev/zh/blog/chorus-v0.14.1-release/)** — Amazon Kiro CLI 成为第四种接入方式(Kiro CLI v2):一条命令的 `install-kiro.sh` 插件,以及 `--agent kiro` 的 daemon 后端,另有若干 daemon 修复。
|
|
31
33
|
|
|
32
34
|
**[v0.14.0](https://chorus-ai.dev/zh/blog/chorus-v0.14.0-release/)** — 全应用深色模式(浅色 / 深色 / 跟随系统)。参考资料可挂到任意想法、提案或任务上,行内可读,也能通过 MCP 读写。新增韩语和日语(韩语由社区贡献)。用于归类的**主题**想法,以及 daemon 的「开始开发」/「Yolo」按钮、对话式建想法、崩溃恢复与 `chorus daemon install`。
|
package/cli/client-args.mjs
CHANGED
|
@@ -60,6 +60,10 @@ export function parseClientFlags(argv) {
|
|
|
60
60
|
const value = a === "--cwd" ? argv[i + 1] : a.slice("--cwd=".length);
|
|
61
61
|
if (typeof value === "string") (out.cwd ??= []).push(value);
|
|
62
62
|
}
|
|
63
|
+
else if (a === "--browse-root" || a.startsWith("--browse-root=")) {
|
|
64
|
+
const value = a === "--browse-root" ? argv[i + 1] : a.slice("--browse-root=".length);
|
|
65
|
+
if (typeof value === "string") (out.browseRoot ??= []).push(value);
|
|
66
|
+
}
|
|
63
67
|
else if (a === "--chorus-only") out.chorusOnly = true;
|
|
64
68
|
else if (a === "--verbose") out.verbose = true;
|
|
65
69
|
else if (a === "-d" || a === "--detach") out.detach = true;
|
|
@@ -133,6 +137,10 @@ OPTIONS
|
|
|
133
137
|
connection for that path, so one daemon can serve several
|
|
134
138
|
local paths at once. Default: the directory it was launched
|
|
135
139
|
from. (Also configurable as "cwds":[…] in ~/.chorus/daemon.json.)
|
|
140
|
+
--browse-root <path> A directory root exposed to remote cwd discovery.
|
|
141
|
+
Repeatable; independent from --cwd and does not create
|
|
142
|
+
Agent connections. (env: CHORUS_DAEMON_BROWSE_ROOTS;
|
|
143
|
+
config: "browseRoots":[…]; default: OS user home.)
|
|
136
144
|
-d, --detach Run detached in the background (pidfile + logfile)
|
|
137
145
|
-y, --yes Non-interactive install: skip all 'chorus daemon
|
|
138
146
|
install' prompts (credentials, served cwds, and agent
|
package/cli/codex-spawner.mjs
CHANGED
|
@@ -224,7 +224,7 @@ export class CodexSpawner {
|
|
|
224
224
|
* @param {{ prompt: string, sessionId: string|null, isNew?: boolean, mcpConfigPath?: string,
|
|
225
225
|
* cwd?: string, onMessage?: (obj: any) => void,
|
|
226
226
|
* onChild?: (child: import("node:child_process").ChildProcess) => void }} params
|
|
227
|
-
* @returns {Promise<{ sessionId: string, exitCode: number|null, isNew: boolean }>}
|
|
227
|
+
* @returns {Promise<{ sessionId: string, backendSessionId: string|null, exitCode: number|null, isNew: boolean }>}
|
|
228
228
|
*/
|
|
229
229
|
async wake({ prompt, sessionId, cwd, onMessage, onChild }) {
|
|
230
230
|
const anchor = typeof sessionId === "string" ? sessionId : "";
|
|
@@ -245,7 +245,7 @@ export class CodexSpawner {
|
|
|
245
245
|
if (!codexPath) {
|
|
246
246
|
// No crash — surface visibly and resolve with a failure result.
|
|
247
247
|
this.logger.error("[Chorus] cannot locate the `codex` executable on PATH; skipping wake");
|
|
248
|
-
return { sessionId: anchor, exitCode: null, isNew };
|
|
248
|
+
return { sessionId: anchor, backendSessionId: knownThreadId, exitCode: null, isNew };
|
|
249
249
|
}
|
|
250
250
|
|
|
251
251
|
if (!this.mcpConfigChecked) {
|
|
@@ -287,7 +287,7 @@ export class CodexSpawner {
|
|
|
287
287
|
});
|
|
288
288
|
} catch (err) {
|
|
289
289
|
this.logger.error(`[Chorus] failed to spawn codex: ${err}`);
|
|
290
|
-
resolve({ sessionId: anchor, exitCode: null, isNew });
|
|
290
|
+
resolve({ sessionId: anchor, backendSessionId: knownThreadId, exitCode: null, isNew });
|
|
291
291
|
return;
|
|
292
292
|
}
|
|
293
293
|
|
|
@@ -350,14 +350,14 @@ export class CodexSpawner {
|
|
|
350
350
|
|
|
351
351
|
child.on("error", (err) => {
|
|
352
352
|
this.logger.error(`[Chorus] codex process error: ${err}`);
|
|
353
|
-
resolve({ sessionId:
|
|
353
|
+
resolve({ sessionId: anchor, backendSessionId: observedThreadId, exitCode: null, isNew });
|
|
354
354
|
});
|
|
355
355
|
|
|
356
356
|
child.on("close", (code) => {
|
|
357
357
|
if (code !== 0) {
|
|
358
358
|
this.logger.warn(`[Chorus] codex exited with code ${code}`);
|
|
359
359
|
}
|
|
360
|
-
resolve({ sessionId:
|
|
360
|
+
resolve({ sessionId: anchor, backendSessionId: observedThreadId, exitCode: code, isNew });
|
|
361
361
|
});
|
|
362
362
|
|
|
363
363
|
// Guard against an ASYNC stdin error (EPIPE) so it never becomes an
|
package/cli/control-handler.mjs
CHANGED
|
@@ -66,6 +66,8 @@ export function createControlHandler(deps) {
|
|
|
66
66
|
const sigintTimeoutMs = deps.sigintTimeoutMs;
|
|
67
67
|
const redispatchResume = deps.redispatchResume;
|
|
68
68
|
const deliverTurn = deps.deliverTurn;
|
|
69
|
+
const handleDirectoryRequest = deps.handleDirectoryRequest;
|
|
70
|
+
const reportDirectoryRequest = deps.reportDirectoryRequest;
|
|
69
71
|
const logger = deps.logger ?? NOOP_LOGGER;
|
|
70
72
|
|
|
71
73
|
/** Registry key for a resource — MUST match waker.#execKey. */
|
|
@@ -89,7 +91,8 @@ export function createControlHandler(deps) {
|
|
|
89
91
|
if (
|
|
90
92
|
event.command !== "interrupt" &&
|
|
91
93
|
event.command !== "resume" &&
|
|
92
|
-
event.command !== "deliver_turn"
|
|
94
|
+
event.command !== "deliver_turn" &&
|
|
95
|
+
event.command !== "browse_directory"
|
|
93
96
|
) {
|
|
94
97
|
// Forward-compatible: the wire enum may grow.
|
|
95
98
|
logger.warn(`[Chorus] control command "${event.command}" not supported; ignoring`);
|
|
@@ -109,6 +112,28 @@ export function createControlHandler(deps) {
|
|
|
109
112
|
return;
|
|
110
113
|
}
|
|
111
114
|
|
|
115
|
+
if (command === "browse_directory") {
|
|
116
|
+
const requestUuid = event.requestUuid;
|
|
117
|
+
if (typeof requestUuid !== "string" || !requestUuid) {
|
|
118
|
+
logger.warn("[Chorus] control: browse_directory missing requestUuid; ignoring");
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
Promise.resolve()
|
|
122
|
+
.then(() => handleDirectoryRequest?.(event))
|
|
123
|
+
.then((result) => reportDirectoryRequest?.({
|
|
124
|
+
requestUuid,
|
|
125
|
+
status: "succeeded",
|
|
126
|
+
...result,
|
|
127
|
+
}))
|
|
128
|
+
.catch((err) => reportDirectoryRequest?.({
|
|
129
|
+
requestUuid,
|
|
130
|
+
status: "failed",
|
|
131
|
+
errorCode: err?.code ?? "INTERNAL_ERROR",
|
|
132
|
+
}))
|
|
133
|
+
.catch((err) => logger.warn(`[Chorus] control: directory report failed: ${err}`));
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
|
|
112
137
|
// --- deliver_turn: origin-only live delivery (子2). The session's origin connection
|
|
113
138
|
// (THIS one — Check 1 passed) was pinged that a SPECIFIC new pending
|
|
114
139
|
// `human_instruction` turn (`event.turnUuid`) awaits. Dispatch ONLY that turn — not
|
|
@@ -155,7 +180,11 @@ export function createControlHandler(deps) {
|
|
|
155
180
|
`)`
|
|
156
181
|
);
|
|
157
182
|
try {
|
|
158
|
-
|
|
183
|
+
if (typeof event.runtimeCwd === "string" && event.runtimeCwd) {
|
|
184
|
+
redispatchResume?.(entityType, entityUuid, resumeReason, event.runtimeCwd);
|
|
185
|
+
} else {
|
|
186
|
+
redispatchResume?.(entityType, entityUuid, resumeReason);
|
|
187
|
+
}
|
|
159
188
|
} catch (err) {
|
|
160
189
|
logger.warn(`[Chorus] control: resume re-dispatch failed for ${entityType}:${entityUuid}: ${err}`);
|
|
161
190
|
}
|
package/cli/daemon-config.mjs
CHANGED
|
@@ -200,3 +200,38 @@ export function resolveDaemonCwds(flags = {}, deps = {}) {
|
|
|
200
200
|
// for (HARD-1 / single-path — exactly today's behavior).
|
|
201
201
|
return [undefined];
|
|
202
202
|
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Resolve the host-local directory discovery allowlist. Unlike `cwds`, these
|
|
206
|
+
* roots never create connections. The whole list comes from the first
|
|
207
|
+
* non-empty source: flag > env > daemon.json > OS home.
|
|
208
|
+
*/
|
|
209
|
+
export function resolveBrowseRoots(flags = {}, deps = {}) {
|
|
210
|
+
const env = deps.env ?? process.env;
|
|
211
|
+
const readJson = deps.readJson ?? readJsonSafe;
|
|
212
|
+
const loginPath = deps.loginPath ?? loginFilePath();
|
|
213
|
+
const home = deps.home ?? homedir();
|
|
214
|
+
const flagList = Array.isArray(flags.browseRoot)
|
|
215
|
+
? flags.browseRoot
|
|
216
|
+
: typeof flags.browseRoot === "string"
|
|
217
|
+
? [flags.browseRoot]
|
|
218
|
+
: [];
|
|
219
|
+
const fromFlags = cleanCwdList(flagList, home);
|
|
220
|
+
if (fromFlags.length) return fromFlags;
|
|
221
|
+
|
|
222
|
+
const envRaw = env.CHORUS_DAEMON_BROWSE_ROOTS;
|
|
223
|
+
if (typeof envRaw === "string" && envRaw.trim()) {
|
|
224
|
+
const separator = deps.delimiter ?? (process.platform === "win32" ? ";" : ":");
|
|
225
|
+
const fromEnv = cleanCwdList(
|
|
226
|
+
envRaw.split(envRaw.includes(",") ? "," : separator),
|
|
227
|
+
home,
|
|
228
|
+
);
|
|
229
|
+
if (fromEnv.length) return fromEnv;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
const file = readJson(loginPath);
|
|
233
|
+
const fromFile = file && Array.isArray(file.browseRoots)
|
|
234
|
+
? cleanCwdList(file.browseRoots, home)
|
|
235
|
+
: [];
|
|
236
|
+
return fromFile.length ? fromFile : [normalizeCwd(home, home)];
|
|
237
|
+
}
|
|
@@ -217,6 +217,32 @@ export async function resolveInstallCwds(flags = {}, opts = {}) {
|
|
|
217
217
|
return { cwds: finalCwds };
|
|
218
218
|
}
|
|
219
219
|
|
|
220
|
+
/** Persist explicit install-time browse roots without coupling them to `cwds`. */
|
|
221
|
+
export async function resolveInstallBrowseRoots(flags = {}, opts = {}) {
|
|
222
|
+
const readJson = opts.readJson ?? readJsonSafe;
|
|
223
|
+
const loginPath = opts.loginPath ?? loginFilePath();
|
|
224
|
+
const writeConfig = opts.writeConfig ?? updateDaemonConfig;
|
|
225
|
+
const home = opts.home ?? homedir();
|
|
226
|
+
const flagList = Array.isArray(flags.browseRoot)
|
|
227
|
+
? flags.browseRoot
|
|
228
|
+
: typeof flags.browseRoot === "string"
|
|
229
|
+
? [flags.browseRoot]
|
|
230
|
+
: [];
|
|
231
|
+
const explicit = cleanCwdList(flagList, home);
|
|
232
|
+
if (explicit.length) {
|
|
233
|
+
writeConfig({ browseRoots: explicit });
|
|
234
|
+
return { browseRoots: explicit };
|
|
235
|
+
}
|
|
236
|
+
const file = readJson(loginPath);
|
|
237
|
+
const stored = file && Array.isArray(file.browseRoots)
|
|
238
|
+
? cleanCwdList(file.browseRoots, home)
|
|
239
|
+
: [];
|
|
240
|
+
if (stored.length) return { browseRoots: stored };
|
|
241
|
+
const browseRoots = [normalizeCwd(home, home)];
|
|
242
|
+
writeConfig({ browseRoots });
|
|
243
|
+
return { browseRoots };
|
|
244
|
+
}
|
|
245
|
+
|
|
220
246
|
/**
|
|
221
247
|
* The interactive agent-backend menu. Order mirrors KNOWN_AGENTS with claude-code
|
|
222
248
|
* first (it is the default). Kept beside the resolver so the numbered prompt and
|
|
@@ -70,11 +70,12 @@ const NOOP_LOGGER = { info() {}, warn() {}, error() {} };
|
|
|
70
70
|
* logger?: { info(m:string):void, warn(m:string):void, error(m:string):void },
|
|
71
71
|
* }} opts
|
|
72
72
|
* @returns {{
|
|
73
|
-
* turnAdvance: (p: { sessionId: string, status: string, entityType?: string|null, entityUuid?: string|null }) => Promise<DaemonRestResult>,
|
|
73
|
+
* turnAdvance: (p: { sessionId: string, backendSessionId?: string|null, status: string, entityType?: string|null, entityUuid?: string|null }) => Promise<DaemonRestResult>,
|
|
74
74
|
* transcript: (p: { sessionId: string, messages: Array<{ role: string, text: string }> }) => Promise<DaemonRestResult>,
|
|
75
75
|
* executionState: (p: { executions: Array<Record<string, unknown>> }) => Promise<DaemonRestResult>,
|
|
76
76
|
* reportInterrupt: (p: { entityType: string, entityUuid: string, reason: string }) => Promise<DaemonRestResult>,
|
|
77
77
|
* heartbeat: (p: { connectionUuid: string, connectedAt: string }) => Promise<DaemonRestResult>,
|
|
78
|
+
* reportDirectoryRequest: (p: { requestUuid: string, status: "succeeded"|"failed", roots?: string[], items?: Array<{name:string,path:string}>, nextCursor?: string|null, normalizedPath?: string, errorCode?: string }) => Promise<DaemonRestResult>,
|
|
78
79
|
* readPendingTurns: () => Promise<DaemonRestResult>,
|
|
79
80
|
* }}
|
|
80
81
|
*/
|
|
@@ -146,7 +147,7 @@ export function createDaemonRestClient(opts) {
|
|
|
146
147
|
* the turn's usage. Both ride the terminal edge only. Requires the connectionUuid (the
|
|
147
148
|
* server addresses the turn against a connection the agent owns).
|
|
148
149
|
*/
|
|
149
|
-
async turnAdvance({ sessionId, status, entityType, entityUuid, interruptedReason, transcriptRelayError, usage }) {
|
|
150
|
+
async turnAdvance({ sessionId, status, entityType, entityUuid, interruptedReason, transcriptRelayError, usage, backendSessionId }) {
|
|
150
151
|
const connectionUuid = getConnectionUuid();
|
|
151
152
|
if (!connectionUuid) {
|
|
152
153
|
const error = `cannot advance turn for session ${sessionId} → ${status} — no connection uuid yet`;
|
|
@@ -171,6 +172,7 @@ export function createDaemonRestClient(opts) {
|
|
|
171
172
|
...(transcriptRelayError ? { transcriptRelayError } : {}),
|
|
172
173
|
// The whole normalized TokenUsage object, nested under `usage`, only on a terminal edge.
|
|
173
174
|
...(usage && isTerminal ? { usage } : {}),
|
|
175
|
+
...(backendSessionId && isTerminal ? { backendSessionId } : {}),
|
|
174
176
|
};
|
|
175
177
|
return post(
|
|
176
178
|
"turn-advance",
|
|
@@ -254,6 +256,29 @@ export function createDaemonRestClient(opts) {
|
|
|
254
256
|
);
|
|
255
257
|
},
|
|
256
258
|
|
|
259
|
+
async reportDirectoryRequest({ requestUuid, status, roots, items, nextCursor, normalizedPath, errorCode }) {
|
|
260
|
+
const connectionUuid = getConnectionUuid();
|
|
261
|
+
if (!connectionUuid) {
|
|
262
|
+
const error = `cannot report directory request ${requestUuid} — no connection uuid yet`;
|
|
263
|
+
logger.warn(`[Chorus] ${error}`);
|
|
264
|
+
return { ok: false, status: null, error, skipped: true };
|
|
265
|
+
}
|
|
266
|
+
const body = { requestUuid, connectionUuid, status };
|
|
267
|
+
if (status === "succeeded") {
|
|
268
|
+
if (roots !== undefined) body.roots = roots;
|
|
269
|
+
if (items !== undefined) body.items = items;
|
|
270
|
+
if (nextCursor !== undefined) body.nextCursor = nextCursor;
|
|
271
|
+
if (normalizedPath !== undefined) body.normalizedPath = normalizedPath;
|
|
272
|
+
} else {
|
|
273
|
+
body.errorCode = errorCode ?? "INTERNAL_ERROR";
|
|
274
|
+
}
|
|
275
|
+
return post(
|
|
276
|
+
"directory-request report",
|
|
277
|
+
"/api/daemon/directory-request/report",
|
|
278
|
+
body,
|
|
279
|
+
);
|
|
280
|
+
},
|
|
281
|
+
|
|
257
282
|
/**
|
|
258
283
|
* GET /api/daemon/pending-turns?connectionUuid=… — read this connection's unstarted
|
|
259
284
|
* (pending) turns from the turn table (the reconnect-backfill / deliver_turn source).
|
package/cli/daemon.mjs
CHANGED
|
@@ -17,6 +17,7 @@ import { prompt, writeLoginFile, updateDaemonConfig } from "./login.mjs";
|
|
|
17
17
|
import {
|
|
18
18
|
resolveInstallCredentials,
|
|
19
19
|
resolveInstallCwds,
|
|
20
|
+
resolveInstallBrowseRoots,
|
|
20
21
|
resolveInstallAgent,
|
|
21
22
|
} from "./daemon-install-config.mjs";
|
|
22
23
|
import {
|
|
@@ -46,7 +47,8 @@ import { createInterruptReporter } from "./interrupt-reporter.mjs";
|
|
|
46
47
|
import { createTurnReporter } from "./turn-reporter.mjs";
|
|
47
48
|
import { createDaemonRestClient } from "./daemon-rest-client.mjs";
|
|
48
49
|
import { createControlHandler } from "./control-handler.mjs";
|
|
49
|
-
import { resolveSigintTimeoutMs, resolveDaemonCwds } from "./daemon-config.mjs";
|
|
50
|
+
import { resolveSigintTimeoutMs, resolveDaemonCwds, resolveBrowseRoots } from "./daemon-config.mjs";
|
|
51
|
+
import { discoverDirectories, validateDirectory } from "./directory-discovery.mjs";
|
|
50
52
|
import {
|
|
51
53
|
startBackground,
|
|
52
54
|
stopDaemon,
|
|
@@ -124,6 +126,7 @@ export function buildDaemon(creds, deps = {}) {
|
|
|
124
126
|
// the layered resolver; falls back to the resolver's default here when not given,
|
|
125
127
|
// so a daemon built directly (integration tests) still gets a sane value.
|
|
126
128
|
const sigintTimeoutMs = deps.sigintTimeoutMs ?? resolveSigintTimeoutMs();
|
|
129
|
+
const browseRoots = deps.browseRoots ?? resolveBrowseRoots();
|
|
127
130
|
// ===== Shared deps (one set per daemon process) =====
|
|
128
131
|
// These are process-wide — independent of how many paths (cwds) the daemon serves.
|
|
129
132
|
const mcpClient =
|
|
@@ -245,7 +248,8 @@ export function buildDaemon(creds, deps = {}) {
|
|
|
245
248
|
fetchImpl: deps.fetchImpl,
|
|
246
249
|
});
|
|
247
250
|
|
|
248
|
-
/** @type {Waker
|
|
251
|
+
/** @type {Map<string, Waker>} */
|
|
252
|
+
const runtimeWakers = new Map();
|
|
249
253
|
let waker;
|
|
250
254
|
|
|
251
255
|
// Execution + transcript upload hooks (子1), merged. Bound to THIS connection's
|
|
@@ -257,7 +261,8 @@ export function buildDaemon(creds, deps = {}) {
|
|
|
257
261
|
url: creds.url,
|
|
258
262
|
apiKey: creds.apiKey,
|
|
259
263
|
getConnectionUuid: () => connectionState.connectionUuid,
|
|
260
|
-
getSnapshot: () =>
|
|
264
|
+
getSnapshot: () =>
|
|
265
|
+
[...runtimeWakers.values()].flatMap((candidate) => candidate.buildExecutionSnapshot()),
|
|
261
266
|
logger,
|
|
262
267
|
fetchImpl: deps.fetchImpl,
|
|
263
268
|
}),
|
|
@@ -277,20 +282,69 @@ export function buildDaemon(creds, deps = {}) {
|
|
|
277
282
|
// transcript (new-vs-resume) and to spawn, so they never diverge (Module Contract
|
|
278
283
|
// 1 — resolveCwd is the single source). `cwd` is `undefined` for the single-path /
|
|
279
284
|
// old-daemon default, which the Waker degrades to process.cwd() (HARD-1).
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
285
|
+
const makeWaker = (boundCwd) =>
|
|
286
|
+
new Waker({
|
|
287
|
+
creds,
|
|
288
|
+
lineage,
|
|
289
|
+
spawner,
|
|
290
|
+
cwd: boundCwd,
|
|
291
|
+
hooks,
|
|
292
|
+
logger,
|
|
293
|
+
reportInterrupt,
|
|
294
|
+
advanceTurn,
|
|
295
|
+
verbose,
|
|
296
|
+
validateRuntimeCwd: (runtimeCwd) => validateDirectory({ cwd: runtimeCwd, browseRoots }),
|
|
297
|
+
killer: deps.killer,
|
|
298
|
+
sigintTimeoutMs,
|
|
299
|
+
});
|
|
300
|
+
const startupKey = cwd ?? process.cwd();
|
|
301
|
+
runtimeWakers.set(startupKey, makeWaker(cwd));
|
|
302
|
+
const selectWaker = (notification) => {
|
|
303
|
+
const runtimeCwd =
|
|
304
|
+
typeof notification?.runtimeCwd === "string" && notification.runtimeCwd
|
|
305
|
+
? notification.runtimeCwd
|
|
306
|
+
: startupKey;
|
|
307
|
+
let selected = runtimeWakers.get(runtimeCwd);
|
|
308
|
+
if (!selected) {
|
|
309
|
+
selected = makeWaker(runtimeCwd);
|
|
310
|
+
runtimeWakers.set(runtimeCwd, selected);
|
|
311
|
+
}
|
|
312
|
+
return selected;
|
|
313
|
+
};
|
|
314
|
+
const startupWaker = runtimeWakers.get(startupKey);
|
|
315
|
+
waker = {
|
|
316
|
+
get executions() {
|
|
317
|
+
const merged = new Map();
|
|
318
|
+
for (const candidate of runtimeWakers.values()) {
|
|
319
|
+
for (const [key, value] of candidate.executions) merged.set(key, value);
|
|
320
|
+
}
|
|
321
|
+
return merged;
|
|
322
|
+
},
|
|
323
|
+
get interrupting() {
|
|
324
|
+
return {
|
|
325
|
+
has: (key) =>
|
|
326
|
+
[...runtimeWakers.values()].some((candidate) => candidate.interrupting.has(key)),
|
|
327
|
+
};
|
|
328
|
+
},
|
|
329
|
+
keyFor: (notification) => startupWaker.keyFor(notification),
|
|
330
|
+
resolveCwd: () => startupWaker.resolveCwd(),
|
|
331
|
+
markQueued: (notification, key, attribution) =>
|
|
332
|
+
selectWaker(notification).markQueued(notification, key, attribution),
|
|
333
|
+
wake: (notification, key, attribution) =>
|
|
334
|
+
selectWaker(notification).wake(notification, key, attribution),
|
|
335
|
+
markInterrupting(entityType, entityUuid) {
|
|
336
|
+
for (const candidate of runtimeWakers.values()) {
|
|
337
|
+
if (candidate.executions.has(`${entityType}:${entityUuid}`)) {
|
|
338
|
+
candidate.markInterrupting(entityType, entityUuid);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
},
|
|
342
|
+
interruptAll() {
|
|
343
|
+
for (const candidate of runtimeWakers.values()) candidate.interruptAll();
|
|
344
|
+
},
|
|
345
|
+
buildExecutionSnapshot: () =>
|
|
346
|
+
[...runtimeWakers.values()].flatMap((candidate) => candidate.buildExecutionSnapshot()),
|
|
347
|
+
};
|
|
294
348
|
// The router reads THIS connection's own uuid lazily (same source the control handler
|
|
295
349
|
// uses) to suppress a DIRECTED (pinned) wake stamped for a different connection
|
|
296
350
|
// (fix-pinned-wake-directed-delivery, T2). Null until the SSE handshake assigns it — a
|
|
@@ -310,8 +364,8 @@ export function buildDaemon(creds, deps = {}) {
|
|
|
310
364
|
// all scoped to THIS connection's uuid/router/backfill (see the original wiring
|
|
311
365
|
// comments retained on the shared helpers). The control handler verifies a control
|
|
312
366
|
// event against this connection's own connectionUuid before acting.
|
|
313
|
-
const redispatchResume = (entityType, entityUuid, resumeReason) => {
|
|
314
|
-
router.dispatchResume?.({ entityType, entityUuid, resumeReason });
|
|
367
|
+
const redispatchResume = (entityType, entityUuid, resumeReason, runtimeCwd) => {
|
|
368
|
+
router.dispatchResume?.({ entityType, entityUuid, resumeReason, runtimeCwd });
|
|
315
369
|
};
|
|
316
370
|
const deliverTurn = (turnUuid) => backfill?.pendingTurnsOnly?.(turnUuid);
|
|
317
371
|
const onControl = createControlHandler({
|
|
@@ -320,6 +374,21 @@ export function buildDaemon(creds, deps = {}) {
|
|
|
320
374
|
sigintTimeoutMs,
|
|
321
375
|
redispatchResume,
|
|
322
376
|
deliverTurn,
|
|
377
|
+
handleDirectoryRequest: async (event) => {
|
|
378
|
+
if (event.operation === "roots") {
|
|
379
|
+
return { roots: [...browseRoots] };
|
|
380
|
+
}
|
|
381
|
+
if (event.operation === "validate") {
|
|
382
|
+
return validateDirectory({ cwd: event.cwd, browseRoots });
|
|
383
|
+
}
|
|
384
|
+
return discoverDirectories({
|
|
385
|
+
prefix: event.prefix,
|
|
386
|
+
cursor: event.cursor,
|
|
387
|
+
limit: event.limit,
|
|
388
|
+
browseRoots,
|
|
389
|
+
});
|
|
390
|
+
},
|
|
391
|
+
reportDirectoryRequest: (result) => daemonRestClient.reportDirectoryRequest(result),
|
|
323
392
|
logger,
|
|
324
393
|
});
|
|
325
394
|
|
|
@@ -403,7 +472,17 @@ export function buildDaemon(creds, deps = {}) {
|
|
|
403
472
|
logger,
|
|
404
473
|
});
|
|
405
474
|
|
|
406
|
-
return {
|
|
475
|
+
return {
|
|
476
|
+
cwd,
|
|
477
|
+
connectionState,
|
|
478
|
+
waker,
|
|
479
|
+
runtimeWakers,
|
|
480
|
+
router,
|
|
481
|
+
backfill,
|
|
482
|
+
sseListener,
|
|
483
|
+
hooks,
|
|
484
|
+
outcome,
|
|
485
|
+
};
|
|
407
486
|
}
|
|
408
487
|
|
|
409
488
|
// Build one connection per declared cwd. The order is the declaration order; the
|
|
@@ -569,6 +648,7 @@ export async function runDaemon(flags = {}, deps = {}) {
|
|
|
569
648
|
// is exactly today's single-path behavior. JUST a list of paths — no project
|
|
570
649
|
// binding (DEC-5: cwd ⟂ project). The daemon process's own cwd never changes.
|
|
571
650
|
const cwds = resolveDaemonCwds({ cwd: flags.cwd }, { env });
|
|
651
|
+
const browseRoots = resolveBrowseRoots({ browseRoot: flags.browseRoot }, { env });
|
|
572
652
|
|
|
573
653
|
// Foreground preflight: resolve/complete credentials + resolve the permission
|
|
574
654
|
// posture (confirming yolo on a TTY). Reuses the same pfDeps bundle the detach
|
|
@@ -634,6 +714,7 @@ export async function runDaemon(flags = {}, deps = {}) {
|
|
|
634
714
|
} else {
|
|
635
715
|
log(`[Chorus] serving path: ${servedPaths[0]}`);
|
|
636
716
|
}
|
|
717
|
+
log(`[Chorus] browse roots: ${browseRoots.join(", ")} (discovery only; no connections created)`);
|
|
637
718
|
|
|
638
719
|
const daemon = build(creds, {
|
|
639
720
|
logger: { info: log, warn: errLog, error: errLog },
|
|
@@ -642,6 +723,7 @@ export async function runDaemon(flags = {}, deps = {}) {
|
|
|
642
723
|
verbose,
|
|
643
724
|
sigintTimeoutMs,
|
|
644
725
|
cwds,
|
|
726
|
+
browseRoots,
|
|
645
727
|
});
|
|
646
728
|
|
|
647
729
|
// Graceful shutdown on signals.
|
|
@@ -778,6 +860,7 @@ export async function handleLifecycleAction(action, { log, errLog, lifecycle, se
|
|
|
778
860
|
const installCfg = svc.installConfig ?? {
|
|
779
861
|
resolveInstallCredentials,
|
|
780
862
|
resolveInstallCwds,
|
|
863
|
+
resolveInstallBrowseRoots,
|
|
781
864
|
resolveInstallAgent,
|
|
782
865
|
};
|
|
783
866
|
|
|
@@ -811,6 +894,13 @@ export async function handleLifecycleAction(action, { log, errLog, lifecycle, se
|
|
|
811
894
|
prompt: pfDeps?.askPrompt,
|
|
812
895
|
log,
|
|
813
896
|
});
|
|
897
|
+
if (installCfg.resolveInstallBrowseRoots) {
|
|
898
|
+
await installCfg.resolveInstallBrowseRoots(flags, {
|
|
899
|
+
writeConfig: pfDeps?.writeConfig ?? updateDaemonConfig,
|
|
900
|
+
readJson: pfDeps?.readJson,
|
|
901
|
+
loginPath: pfDeps?.loginPath,
|
|
902
|
+
});
|
|
903
|
+
}
|
|
814
904
|
|
|
815
905
|
// Configure + persist the agent backend to daemon.json `agent` (single source
|
|
816
906
|
// of truth; the unit carries no --agent, exactly like --cwd). Prompts an
|