@chorus-aidlc/chorus 0.14.0 → 0.14.2
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 +459 -424
- package/.next/standalone/.next/app-path-routes-manifest.json +49 -45
- 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 +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 +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/settings/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +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_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_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_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/control/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/execution-state/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/executions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/executions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/pending-turns/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/resume/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/resume/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/transcript/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/transcript/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/turn-advance/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route.js +1 -1
- package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/events/notifications/route.js +1 -1
- package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/events/route.js +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_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route.js +1 -0
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route_client-reference-manifest.js +1 -0
- package/.next/standalone/.next/server/app/api/ideas/conversational/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/conversational/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mcp/route.js +4 -4
- package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/me/assignments/route.js +1 -1
- package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mentionables/route.js +1 -1
- package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/preferences/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/read-all/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_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.js +1 -0
- package/.next/standalone/.next/server/app/api/project-visits/pin/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/project-visits/pin/route_client-reference-manifest.js +1 -0
- package/.next/standalone/.next/server/app/api/project-visits/route.js +1 -0
- package/.next/standalone/.next/server/app/api/project-visits/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/project-visits/route_client-reference-manifest.js +1 -0
- package/.next/standalone/.next/server/app/api/project-visits/visit/route.js +1 -0
- package/.next/standalone/.next/server/app/api/project-visits/visit/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/project-visits/visit/route_client-reference-manifest.js +1 -0
- 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_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_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_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_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_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/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_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/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_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 +49 -45
- package/.next/standalone/.next/server/chunks/1114.js +1 -1
- package/.next/standalone/.next/server/chunks/1173.js +1 -1
- package/.next/standalone/.next/server/chunks/1286.js +3 -2
- package/.next/standalone/.next/server/chunks/1318.js +1 -0
- package/.next/standalone/.next/server/chunks/1559.js +2 -2
- package/.next/standalone/.next/server/chunks/2463.js +1 -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/3219.js +1 -1
- package/.next/standalone/.next/server/chunks/3407.js +1 -0
- package/.next/standalone/.next/server/chunks/3419.js +1 -1
- package/.next/standalone/.next/server/chunks/457.js +1 -0
- package/.next/standalone/.next/server/chunks/4827.js +1 -1
- package/.next/standalone/.next/server/chunks/{1343.js → 5201.js} +2 -2
- package/.next/standalone/.next/server/chunks/5245.js +1 -1
- package/.next/standalone/.next/server/chunks/595.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/6449.js +1 -0
- package/.next/standalone/.next/server/chunks/{8577.js → 6506.js} +3 -3
- package/.next/standalone/.next/server/chunks/6515.js +6 -0
- package/.next/standalone/.next/server/chunks/7364.js +1 -1
- package/.next/standalone/.next/server/chunks/7368.js +1 -1
- package/.next/standalone/.next/server/chunks/7530.js +1 -1
- package/.next/standalone/.next/server/chunks/7762.js +1 -1
- package/.next/standalone/.next/server/chunks/8454.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/chunks/951.js +1 -0
- package/.next/standalone/.next/server/instrumentation.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/XTQkt8fOQEK4mZkZTFQ_E/_buildManifest.js +1 -0
- package/.next/standalone/.next/static/chunks/11595.fbbfc784ff9ee566.js +1 -0
- package/.next/standalone/.next/static/chunks/13867-a95a4555fcb7b13b.js +1 -0
- package/.next/standalone/.next/static/chunks/24537-7d71bf10329d1be1.js +1 -0
- package/.next/standalone/.next/static/chunks/27030-19cd50b9d47b3be6.js +1 -0
- package/.next/standalone/.next/static/chunks/28680-f9c5e04f67982cb6.js +1 -0
- package/.next/standalone/.next/static/chunks/31308-bb4a97b3f39c22dd.js +1 -0
- package/.next/standalone/.next/static/chunks/32331-87ae9bc7517c7947.js +1 -0
- package/.next/standalone/.next/static/chunks/33277-9926b461045318b3.js +10 -0
- package/.next/standalone/.next/static/chunks/33456.b67f1146831e9f2b.js +1 -0
- package/.next/standalone/.next/static/chunks/37035-514bbb31cd13bda1.js +1 -0
- package/.next/standalone/.next/static/chunks/38526-7ffc4b7351c15bc4.js +1 -0
- package/.next/standalone/.next/static/chunks/{42605-029b5426175cdee9.js → 39479-5af3460208d8cc56.js} +1 -1
- package/.next/standalone/.next/static/chunks/4860.3491d748fdde968e.js +1 -0
- package/.next/standalone/.next/static/chunks/51603-7fa00971493ae223.js +1 -0
- package/.next/standalone/.next/static/chunks/73510-c338cef00ca3cfaf.js +1 -0
- package/.next/standalone/.next/static/chunks/78917-a297b76c6daa9f5d.js +1 -0
- package/.next/standalone/.next/static/chunks/84219-09970ab1b85c61f0.js +1 -0
- package/.next/standalone/.next/static/chunks/86155-c9b7c2c08d3fa80e.js +1 -0
- package/.next/standalone/.next/static/chunks/99373.827383575665ce2f.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-12d81eedb519461c.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-2af5f2f159c8e32b.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-996b8a87b4b986f1.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-77771ef395e19922.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-c231207c3674aa54.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/{page-2b13a2224c3b6d6d.js → page-c62c7d7cf9833060.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-d098269dcaa06de7.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-7948aa8db4813091.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-8eea1e0cea60758f.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-658f31ac6a28ec82.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/page-6df01fa989cca27b.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-7fbf5bc58d3dd5b0.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/admin/login/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/admin/session/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/api-keys/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/me/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/comments/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/repoint/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/events/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/health/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/wake-preview/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/conversational/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/mcp/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/mentionables/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-groups/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-visits/pin/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-visits/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-visits/visit/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/resource-graph/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/references/[uuid]/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/references/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/search/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/session/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-d1c49cfe592deeb8.js +1 -0
- package/.next/standalone/.next/static/chunks/app/onboarding/page-b178eb3215360d91.js +1 -0
- package/.next/standalone/.next/static/chunks/{webpack-9dda6192665a5c8d.js → webpack-567d9ffe31a0a5ee.js} +1 -1
- package/.next/standalone/.next/static/css/617133917710c831.css +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/bin/on-post-verify-task.sh +1 -1
- package/.next/standalone/public/chorus-plugin/bin/on-session-start.sh +29 -5
- package/.next/standalone/public/chorus-plugin/skills/brainstorm/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +23 -2
- package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +2 -2
- package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +32 -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 +2 -2
- package/.next/standalone/public/install-kiro.sh +350 -0
- package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus-code-reviewer.json +10 -0
- package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus-proposal-reviewer.json +10 -0
- package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus-task-reviewer.json +10 -0
- package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus.json +50 -0
- package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus.md +62 -0
- package/.next/standalone/public/kiro-plugin/.kiro/settings/mcp.json +12 -0
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-brainstorm/SKILL.md +158 -0
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-develop/SKILL.md +421 -0
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-idea/SKILL.md +332 -0
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-openspec-aware/SKILL.md +434 -0
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-proposal/SKILL.md +386 -0
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-quick-dev/SKILL.md +193 -0
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-review/SKILL.md +360 -0
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-yolo/SKILL.md +547 -0
- package/.next/standalone/public/kiro-plugin/.kiro/steering/chorus.md +404 -0
- package/.next/standalone/public/kiro-plugin/bin/chorus-api.sh +392 -0
- package/.next/standalone/public/kiro-plugin/bin/on-agent-spawn.sh +81 -0
- package/.next/standalone/public/kiro-plugin/bin/on-post-submit-for-verify.sh +68 -0
- package/.next/standalone/public/kiro-plugin/bin/on-post-submit-proposal.sh +76 -0
- package/.next/standalone/public/kiro-plugin/bin/on-post-verify-task.sh +119 -0
- package/.next/standalone/public/kiro-plugin/bin/on-stop.sh +45 -0
- package/.next/standalone/public/kiro-plugin/bin/test-syntax.sh +108 -0
- package/.next/standalone/public/skill/brainstorm-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/chorus/SKILL.md +8 -2
- package/.next/standalone/public/skill/code-reviewer-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/develop-chorus/SKILL.md +2 -2
- package/.next/standalone/public/skill/idea-chorus/SKILL.md +32 -1
- package/.next/standalone/public/skill/package.json +1 -1
- package/.next/standalone/public/skill/proposal-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/proposal-reviewer-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/quick-dev-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/review-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/task-reviewer-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/yolo-chorus/SKILL.md +3 -3
- package/README.ja.md +14 -11
- package/README.ko.md +14 -11
- package/README.md +14 -11
- package/README.zh.md +14 -11
- package/chorus.mjs +4 -0
- package/cli/client-args.mjs +19 -8
- package/cli/codex-session-map.mjs +9 -79
- package/cli/daemon-agent.mjs +12 -7
- package/cli/daemon-config.mjs +2 -2
- package/cli/daemon-install-config.mjs +213 -0
- package/cli/daemon-service.mjs +12 -7
- package/cli/daemon.mjs +68 -9
- package/cli/kiro-session-map.mjs +49 -0
- package/cli/kiro-spawner.mjs +409 -0
- package/cli/kiro-transcript.mjs +262 -0
- package/cli/lineage.mjs +20 -0
- package/cli/prompts.mjs +19 -2
- package/cli/session-map.mjs +126 -0
- package/cli/spawner-select.mjs +7 -1
- package/cli/waker.mjs +18 -3
- package/package.json +1 -1
- package/prisma/migrations/20260714091007_add_daemon_execution_direct_idea/migration.sql +2 -0
- package/prisma/migrations/20260718062756_add_project_visit/migration.sql +29 -0
- package/prisma/schema.prisma +30 -0
- package/.next/standalone/.next/server/chunks/1388.js +0 -1
- package/.next/standalone/.next/server/chunks/2382.js +0 -1
- package/.next/standalone/.next/server/chunks/3373.js +0 -1
- package/.next/standalone/.next/server/chunks/4797.js +0 -1
- package/.next/standalone/.next/server/chunks/5011.js +0 -1
- package/.next/standalone/.next/server/chunks/5891.js +0 -1
- package/.next/standalone/.next/server/chunks/7131.js +0 -6
- package/.next/standalone/.next/static/chunks/11595.c932231a36943893.js +0 -1
- package/.next/standalone/.next/static/chunks/20081-a2bf5c9f24d5d589.js +0 -1
- package/.next/standalone/.next/static/chunks/24537-7988a894f20f8dae.js +0 -1
- package/.next/standalone/.next/static/chunks/2709-8f25369aeb5701a4.js +0 -1
- package/.next/standalone/.next/static/chunks/33456.f1c7b6bd0a6a65e4.js +0 -1
- package/.next/standalone/.next/static/chunks/43111-7a4e08dc82bb3022.js +0 -1
- package/.next/standalone/.next/static/chunks/4860.9313590c6c8c8f56.js +0 -1
- package/.next/standalone/.next/static/chunks/4939-ff22e2b42ad57f7f.js +0 -1
- package/.next/standalone/.next/static/chunks/55963-b2804d30cfbbe669.js +0 -1
- package/.next/standalone/.next/static/chunks/56608-92ab6704b364eb17.js +0 -1
- package/.next/standalone/.next/static/chunks/75252-29e0e25cb5a94f7f.js +0 -10
- package/.next/standalone/.next/static/chunks/80350-0d34e756f4aebdfc.js +0 -1
- package/.next/standalone/.next/static/chunks/84169-affac07755ace386.js +0 -1
- package/.next/standalone/.next/static/chunks/9178-182934f9127eed4e.js +0 -1
- package/.next/standalone/.next/static/chunks/93346-1d4cd71b8713a8a6.js +0 -1
- package/.next/standalone/.next/static/chunks/96752-ad15cc38599f12e2.js +0 -1
- package/.next/standalone/.next/static/chunks/99373.9756d8f45fee79a7.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-00ff2f6753bb4603.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-5824e6affe244f83.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-21571e747883b956.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-f763dec99ba41f1c.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-f13281a5806b6b4b.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-6c577e521c61f718.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-078f21255acdf752.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-d37d5adabc60a16c.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-8212e69e806cab35.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/page-85665683f67eebc7.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-2ab18a236a0c7f7b.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/admin/login/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/admin/session/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agents/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/api-keys/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/me/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/comments/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/repoint/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/events/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/health/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/conversational/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/mcp/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/mentionables/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/project-groups/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/resource-graph/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/references/[uuid]/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/references/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/search/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/session/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-9cc7c62013897acb.js +0 -1
- package/.next/standalone/.next/static/chunks/app/onboarding/page-455d693daccb65df.js +0 -1
- package/.next/standalone/.next/static/css/5f09fa856a63632f.css +0 -1
- package/.next/standalone/.next/static/sOwBl2wYTfQ3B0DrB18aB/_buildManifest.js +0 -1
- /package/.next/standalone/.next/static/{sOwBl2wYTfQ3B0DrB18aB → XTQkt8fOQEK4mZkZTFQ_E}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
// cli/daemon-install-config.mjs
|
|
2
|
+
// The `chorus daemon install` pre-install config phase (fix-daemon-install-config,
|
|
3
|
+
// idea d7592c96). Two pure, dependency-injected helpers that run BEFORE the
|
|
4
|
+
// service unit is written, so a boot-time daemon in systemd/launchd's CLEAN
|
|
5
|
+
// environment can always authenticate and knows which working directories to
|
|
6
|
+
// serve:
|
|
7
|
+
//
|
|
8
|
+
// resolveInstallCredentials — resolve (flags>env>daemon.json>plugin) → persist
|
|
9
|
+
// into ~/.chorus/daemon.json → validate against the server → abort (write
|
|
10
|
+
// nothing) if creds cannot be obtained or the key is invalid. This is the
|
|
11
|
+
// crux of the fix: a systemd --user unit does NOT inherit the operator's
|
|
12
|
+
// shell-exported CHORUS_URL/CHORUS_API_KEY, so the creds must live in the
|
|
13
|
+
// 0600 login file the clean boot env reads.
|
|
14
|
+
//
|
|
15
|
+
// resolveInstallCwds — determine the served working-directory set and persist
|
|
16
|
+
// it to daemon.json `cwds` (the single source of truth; the unit carries no
|
|
17
|
+
// --cwd — see cli/daemon-service.mjs buildServiceArgs). Prompts an interactive
|
|
18
|
+
// add-loop only when nothing is configured and stdin is a TTY.
|
|
19
|
+
//
|
|
20
|
+
// All IO (resolve / validate / persist / prompt / readJson / env / cwd) is
|
|
21
|
+
// injected so the helpers unit-test without real disk, network, or TTY — matching
|
|
22
|
+
// the style of cli/credentials.mjs and cli/daemon-config.mjs.
|
|
23
|
+
|
|
24
|
+
import { homedir } from "node:os";
|
|
25
|
+
import { resolveCredentials, loginFilePath } from "./credentials.mjs";
|
|
26
|
+
import { updateDaemonConfig, prompt as defaultPrompt } from "./login.mjs";
|
|
27
|
+
import { validateAndFetchIdentity } from "./chorus-client.mjs";
|
|
28
|
+
import { normalizeCwd, cleanCwdList } from "./daemon-config.mjs";
|
|
29
|
+
import { readFileSync } from "node:fs";
|
|
30
|
+
|
|
31
|
+
/** A non-empty trimmed string, or undefined. */
|
|
32
|
+
function nonEmpty(value) {
|
|
33
|
+
if (typeof value !== "string") return undefined;
|
|
34
|
+
const t = value.trim();
|
|
35
|
+
return t.length > 0 ? t : undefined;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/** Read a JSON file, returning null on any error. Mirrors credentials.mjs. */
|
|
39
|
+
function readJsonSafe(path) {
|
|
40
|
+
try {
|
|
41
|
+
const parsed = JSON.parse(readFileSync(path, "utf8"));
|
|
42
|
+
return parsed && typeof parsed === "object" ? parsed : null;
|
|
43
|
+
} catch {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Credential preflight for `chorus daemon install`. Resolves credentials, persists
|
|
50
|
+
* them (with the fetched identity) into ~/.chorus/daemon.json, and validates the
|
|
51
|
+
* key against the server — all BEFORE the caller writes any service unit.
|
|
52
|
+
*
|
|
53
|
+
* Returns `{ ok: true, creds, identity }` on success, or `{ ok: false }` when the
|
|
54
|
+
* install must abort (no unit should be written). Never throws.
|
|
55
|
+
*
|
|
56
|
+
* Behavior (elaboration Q1/Q2/Q8/Q9):
|
|
57
|
+
* - Resolve via resolveCredentials (flags > env > daemon.json > plugin).
|
|
58
|
+
* - Unresolved + TTY + !skip → prompt login-style (masked key).
|
|
59
|
+
* - Unresolved + (skip || !TTY) → abort with the multi-source hint (no prompt).
|
|
60
|
+
* - ALWAYS validate the resolved/entered key; abort on failure.
|
|
61
|
+
* - On success persist { url, apiKey, agentUuid, agentName } via the 0600
|
|
62
|
+
* field-merge writer (preserves cwds / yoloAckAt / sigintTimeoutMs).
|
|
63
|
+
*
|
|
64
|
+
* @param {{ url?: string, apiKey?: string }} flags
|
|
65
|
+
* @param {Record<string,string|undefined>} env
|
|
66
|
+
* @param {{
|
|
67
|
+
* isTTY?: boolean, skip?: boolean,
|
|
68
|
+
* resolve?: typeof resolveCredentials,
|
|
69
|
+
* validate?: typeof validateAndFetchIdentity,
|
|
70
|
+
* writeConfig?: (partial: Record<string, unknown>) => string,
|
|
71
|
+
* prompt?: typeof defaultPrompt,
|
|
72
|
+
* log?: (m: string) => void,
|
|
73
|
+
* errLog?: (m: string) => void,
|
|
74
|
+
* }} [opts]
|
|
75
|
+
* @returns {Promise<{ ok: true, creds: {url:string,apiKey:string}, identity: {uuid:string,name:string} } | { ok: false }>}
|
|
76
|
+
*/
|
|
77
|
+
export async function resolveInstallCredentials(flags = {}, env = {}, opts = {}) {
|
|
78
|
+
const isTTY = opts.isTTY ?? false;
|
|
79
|
+
const skip = opts.skip ?? false;
|
|
80
|
+
const resolve = opts.resolve ?? resolveCredentials;
|
|
81
|
+
const validate = opts.validate ?? validateAndFetchIdentity;
|
|
82
|
+
const writeConfig = opts.writeConfig ?? updateDaemonConfig;
|
|
83
|
+
const ask = opts.prompt ?? defaultPrompt;
|
|
84
|
+
const log = opts.log ?? (() => {});
|
|
85
|
+
const errLog = opts.errLog ?? (() => {});
|
|
86
|
+
|
|
87
|
+
let url;
|
|
88
|
+
let apiKey;
|
|
89
|
+
|
|
90
|
+
// 1. Try the layered resolver. It THROWS (does not return null) when no source
|
|
91
|
+
// yields a complete pair — catch it and decide prompt vs abort.
|
|
92
|
+
try {
|
|
93
|
+
const resolved = resolve(flags, { env });
|
|
94
|
+
url = resolved.url;
|
|
95
|
+
apiKey = resolved.apiKey;
|
|
96
|
+
log(`[Chorus] credentials resolved from: ${resolved.source}`);
|
|
97
|
+
} catch (err) {
|
|
98
|
+
const hint = err instanceof Error ? err.message : String(err);
|
|
99
|
+
if (!isTTY || skip) {
|
|
100
|
+
// No way (or no permission) to prompt — abort with the actionable hint
|
|
101
|
+
// rather than writing a unit that would crash-loop at boot.
|
|
102
|
+
errLog(hint);
|
|
103
|
+
return { ok: false };
|
|
104
|
+
}
|
|
105
|
+
// TTY + interactive: complete credentials login-style (masked key).
|
|
106
|
+
log("[Chorus] no credentials found — configuring them now (saved for the boot service).");
|
|
107
|
+
url = nonEmpty(await ask("Chorus URL: "));
|
|
108
|
+
apiKey = nonEmpty(await ask("Chorus API key (cho_...): ", { mask: true }));
|
|
109
|
+
if (!url || !apiKey) {
|
|
110
|
+
errLog("[Chorus] both a URL and an API key are required — aborting install.");
|
|
111
|
+
return { ok: false };
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// 2. ALWAYS validate against the server before writing anything (Q2/Q9) — even
|
|
116
|
+
// in skip mode. A bad/expired key fails the install instead of at boot.
|
|
117
|
+
let identity;
|
|
118
|
+
try {
|
|
119
|
+
identity = await validate({ url, apiKey });
|
|
120
|
+
} catch (err) {
|
|
121
|
+
errLog(`[Chorus] credential validation failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
122
|
+
errLog("[Chorus] credentials were NOT saved and no service was installed.");
|
|
123
|
+
return { ok: false };
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// 3. Persist into the 0600 login file so the clean boot env can read it. The
|
|
127
|
+
// field-merge writer preserves cwds / yoloAckAt / sigintTimeoutMs.
|
|
128
|
+
writeConfig({ url, apiKey, agentUuid: identity.uuid, agentName: identity.name });
|
|
129
|
+
log(`[Chorus] credentials saved for ${identity.name} (${identity.uuid}).`);
|
|
130
|
+
return { ok: true, creds: { url, apiKey }, identity };
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Determine the set of working directories the daemon serves and persist it to
|
|
135
|
+
* ~/.chorus/daemon.json `cwds` (the single source of truth — the unit carries no
|
|
136
|
+
* --cwd). Prompts an interactive add-loop only when nothing is configured and
|
|
137
|
+
* stdin is a TTY (and skip is false).
|
|
138
|
+
*
|
|
139
|
+
* "Configured" ⇔ a `--cwd` flag was passed OR daemon.json already has a non-empty
|
|
140
|
+
* `cwds` array. Configured, or skip/non-TTY, uses that set (or the process cwd
|
|
141
|
+
* default) with no prompt.
|
|
142
|
+
*
|
|
143
|
+
* Returns `{ cwds: string[] }` — the normalized, de-duplicated set that was
|
|
144
|
+
* persisted. Never throws.
|
|
145
|
+
*
|
|
146
|
+
* @param {{ cwd?: string[] }} flags
|
|
147
|
+
* @param {{
|
|
148
|
+
* isTTY?: boolean, skip?: boolean,
|
|
149
|
+
* readJson?: (path: string) => (Record<string, unknown>|null),
|
|
150
|
+
* loginPath?: string,
|
|
151
|
+
* writeConfig?: (partial: Record<string, unknown>) => string,
|
|
152
|
+
* prompt?: typeof defaultPrompt,
|
|
153
|
+
* home?: string,
|
|
154
|
+
* processCwd?: string,
|
|
155
|
+
* log?: (m: string) => void,
|
|
156
|
+
* }} [opts]
|
|
157
|
+
* @returns {Promise<{ cwds: string[] }>}
|
|
158
|
+
*/
|
|
159
|
+
export async function resolveInstallCwds(flags = {}, opts = {}) {
|
|
160
|
+
const isTTY = opts.isTTY ?? false;
|
|
161
|
+
const skip = opts.skip ?? false;
|
|
162
|
+
const readJson = opts.readJson ?? readJsonSafe;
|
|
163
|
+
const loginPath = opts.loginPath ?? loginFilePath();
|
|
164
|
+
const writeConfig = opts.writeConfig ?? updateDaemonConfig;
|
|
165
|
+
const ask = opts.prompt ?? defaultPrompt;
|
|
166
|
+
const home = opts.home ?? homedir();
|
|
167
|
+
const processCwd = opts.processCwd ?? process.cwd();
|
|
168
|
+
const log = opts.log ?? (() => {});
|
|
169
|
+
|
|
170
|
+
// 1. Explicit --cwd flag(s) → configured; normalize + dedup, no prompt.
|
|
171
|
+
const flagList = Array.isArray(flags.cwd) ? flags.cwd : typeof flags.cwd === "string" ? [flags.cwd] : [];
|
|
172
|
+
const fromFlags = cleanCwdList(flagList, home);
|
|
173
|
+
if (fromFlags.length > 0) {
|
|
174
|
+
writeConfig({ cwds: fromFlags });
|
|
175
|
+
return { cwds: fromFlags };
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// 2. Existing daemon.json `cwds` → configured; use as-is (re-persist is a no-op
|
|
179
|
+
// merge, so we skip the write and just return them).
|
|
180
|
+
const file = readJson(loginPath);
|
|
181
|
+
const fromFile = file && Array.isArray(file.cwds) ? cleanCwdList(file.cwds, home) : [];
|
|
182
|
+
if (fromFile.length > 0) {
|
|
183
|
+
return { cwds: fromFile };
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// 3. Unconfigured. On a non-TTY or in skip mode, fall back to the process cwd
|
|
187
|
+
// default with no prompt.
|
|
188
|
+
const defaultCwd = normalizeCwd(processCwd, home);
|
|
189
|
+
if (!isTTY || skip) {
|
|
190
|
+
const cwds = defaultCwd ? [defaultCwd] : [];
|
|
191
|
+
if (cwds.length > 0) writeConfig({ cwds });
|
|
192
|
+
return { cwds };
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// 4. Unconfigured + TTY + !skip → interactive add-loop. Pre-seed the current
|
|
196
|
+
// directory as the suggested first entry (Enter accepts it), then keep
|
|
197
|
+
// prompting until a blank line ends the loop.
|
|
198
|
+
const collected = [];
|
|
199
|
+
log(`[Chorus] Configure the working directories this daemon serves.`);
|
|
200
|
+
const first = nonEmpty(await ask(`Working directory [${defaultCwd}] (Enter to accept the default): `));
|
|
201
|
+
collected.push(first ?? defaultCwd);
|
|
202
|
+
// subsequent adds
|
|
203
|
+
// eslint-disable-next-line no-constant-condition
|
|
204
|
+
while (true) {
|
|
205
|
+
const next = nonEmpty(await ask("Add another working directory (blank to finish): "));
|
|
206
|
+
if (!next) break;
|
|
207
|
+
collected.push(next);
|
|
208
|
+
}
|
|
209
|
+
const cwds = cleanCwdList(collected, home);
|
|
210
|
+
const finalCwds = cwds.length > 0 ? cwds : defaultCwd ? [defaultCwd] : [];
|
|
211
|
+
if (finalCwds.length > 0) writeConfig({ cwds: finalCwds });
|
|
212
|
+
return { cwds: finalCwds };
|
|
213
|
+
}
|
package/cli/daemon-service.mjs
CHANGED
|
@@ -70,17 +70,22 @@ export function resolveScriptPath() {
|
|
|
70
70
|
|
|
71
71
|
/**
|
|
72
72
|
* Build the argv the SUPERVISED daemon runs — the normal long-lived daemon
|
|
73
|
-
* (NO `-d`: the supervisor owns the foreground process). Reflects the
|
|
74
|
-
* operator passed to `install
|
|
75
|
-
*
|
|
73
|
+
* (NO `-d`: the supervisor owns the foreground process). Reflects the `--agent`
|
|
74
|
+
* / `--chorus-only` posture the operator passed to `install`. The served cwd set
|
|
75
|
+
* is NOT embedded here — it lives in ~/.chorus/daemon.json `cwds` (single source
|
|
76
|
+
* of truth) and is read by the daemon via resolveDaemonCwds. Pure.
|
|
76
77
|
* @param {{ cwds?: string[], agent?: string, chorusOnly?: boolean, scriptPath: string }} spec
|
|
77
|
-
* @returns {string[]} e.g. ["/x/chorus.mjs","daemon","--
|
|
78
|
+
* @returns {string[]} e.g. ["/x/chorus.mjs","daemon","--agent","codex"]
|
|
78
79
|
*/
|
|
79
80
|
export function buildServiceArgs(spec) {
|
|
80
81
|
const args = [spec.scriptPath, "daemon"];
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
// NOTE: --cwd is deliberately NOT emitted. The set of working directories the
|
|
83
|
+
// daemon serves is persisted to ~/.chorus/daemon.json `cwds` at install time
|
|
84
|
+
// (the single source of truth) and read back by the daemon via
|
|
85
|
+
// resolveDaemonCwds. Baking --cwd into the unit too would let the two sources
|
|
86
|
+
// drift and would hide the paths from a plain `chorus daemon` run
|
|
87
|
+
// (fix-daemon-install-config, elaboration Q5-A). `spec.cwds` is still accepted
|
|
88
|
+
// for signature compatibility but ignored here.
|
|
84
89
|
if (spec.agent) args.push("--agent", spec.agent);
|
|
85
90
|
if (spec.chorusOnly) args.push("--chorus-only");
|
|
86
91
|
return args;
|
package/cli/daemon.mjs
CHANGED
|
@@ -13,7 +13,11 @@
|
|
|
13
13
|
// observability idea.
|
|
14
14
|
|
|
15
15
|
import { resolveCredentials, loginFilePath } from "./credentials.mjs";
|
|
16
|
-
import { prompt, writeLoginFile } from "./login.mjs";
|
|
16
|
+
import { prompt, writeLoginFile, updateDaemonConfig } from "./login.mjs";
|
|
17
|
+
import {
|
|
18
|
+
resolveInstallCredentials,
|
|
19
|
+
resolveInstallCwds,
|
|
20
|
+
} from "./daemon-install-config.mjs";
|
|
17
21
|
import {
|
|
18
22
|
resolvePermissionMode,
|
|
19
23
|
yoloWarningLine,
|
|
@@ -29,6 +33,7 @@ import { Waker } from "./waker.mjs";
|
|
|
29
33
|
import { LineageResolver } from "./lineage.mjs";
|
|
30
34
|
import { resolveClaudePath } from "./claude-spawner.mjs";
|
|
31
35
|
import { resolveCodexPath } from "./codex-spawner.mjs";
|
|
36
|
+
import { resolveKiroPath } from "./kiro-spawner.mjs";
|
|
32
37
|
import { selectSpawner } from "./spawner-select.mjs";
|
|
33
38
|
import {
|
|
34
39
|
createExecutionUploadHooks,
|
|
@@ -484,6 +489,7 @@ export async function runDaemon(flags = {}, deps = {}) {
|
|
|
484
489
|
// banner shows the right binary instead of always probing for `claude`.
|
|
485
490
|
const findClaude = deps.resolveClaudePath ?? resolveClaudePath;
|
|
486
491
|
const findCodex = deps.resolveCodexPath ?? resolveCodexPath;
|
|
492
|
+
const findKiro = deps.resolveKiroPath ?? resolveKiroPath;
|
|
487
493
|
const verbose = flags.verbose === true || env.CHORUS_VERBOSE === "1";
|
|
488
494
|
|
|
489
495
|
// Resolve the agent backend (default claude-code). An unknown --agent /
|
|
@@ -520,7 +526,14 @@ export async function runDaemon(flags = {}, deps = {}) {
|
|
|
520
526
|
// The preflight dep bundle — built from the same seams runDaemon resolved, so
|
|
521
527
|
// the detach/restart paths run the SAME (injectable) preflight, not the real
|
|
522
528
|
// implementations. Threaded into startDetached so tests can drive it offline.
|
|
523
|
-
|
|
529
|
+
// writeConfig / readJson / loginPath are optional injectable IO used by the
|
|
530
|
+
// `install` config phase — default (undefined) means the real 0600 login file.
|
|
531
|
+
const pfDeps = {
|
|
532
|
+
flags, env, isTTY, resolve, validate, writeCreds, askPrompt, log, errLog,
|
|
533
|
+
writeConfig: deps.writeConfig,
|
|
534
|
+
readJson: deps.readJson,
|
|
535
|
+
loginPath: deps.loginPath,
|
|
536
|
+
};
|
|
524
537
|
|
|
525
538
|
const action = flags.action ?? "run";
|
|
526
539
|
if (action !== "run") {
|
|
@@ -557,10 +570,12 @@ export async function runDaemon(flags = {}, deps = {}) {
|
|
|
557
570
|
|
|
558
571
|
// Detect the SELECTED backend's executable (non-fatal): the daemon still
|
|
559
572
|
// subscribes when it's missing; a wake surfaces the error visibly when one
|
|
560
|
-
// arrives. The resolved path (or absence) is shown in the banner below.
|
|
561
|
-
//
|
|
562
|
-
//
|
|
563
|
-
|
|
573
|
+
// arrives. The resolved path (or absence) is shown in the banner below. Each
|
|
574
|
+
// backend probes its own binary — codex → resolveCodexPath, kiro →
|
|
575
|
+
// resolveKiroPath, otherwise resolveClaudePath — so a `--agent kiro` run probes
|
|
576
|
+
// (and the banner reports) `kiro-cli`, not `claude`.
|
|
577
|
+
const cliPath =
|
|
578
|
+
agentType === "codex" ? findCodex() : agentType === "kiro" ? findKiro() : findClaude();
|
|
564
579
|
|
|
565
580
|
// The daemon.json the layered config readers (credentials, sigint timeout, cwds)
|
|
566
581
|
// consult. Surfacing its absolute path + presence in the banner makes it obvious
|
|
@@ -742,11 +757,55 @@ export async function handleLifecycleAction(action, { log, errLog, lifecycle, se
|
|
|
742
757
|
const svc = service ?? { detectSupervisor: () => ({ kind: "none" }) };
|
|
743
758
|
|
|
744
759
|
if (action === "install") {
|
|
760
|
+
// Pre-install config phase (fix-daemon-install-config): BEFORE writing any
|
|
761
|
+
// unit, guarantee the clean-env boot service can authenticate and knows which
|
|
762
|
+
// cwds to serve. --yes/-y OR a non-TTY suppress prompts; neither suppresses
|
|
763
|
+
// the resolve/persist/validate/abort guarantee.
|
|
764
|
+
const flags = pfDeps?.flags ?? {};
|
|
765
|
+
const env = pfDeps?.env ?? {};
|
|
766
|
+
const isTTY = pfDeps?.isTTY ?? false;
|
|
767
|
+
const skip = flags.yes === true || !isTTY;
|
|
768
|
+
const installCfg = svc.installConfig ?? {
|
|
769
|
+
resolveInstallCredentials,
|
|
770
|
+
resolveInstallCwds,
|
|
771
|
+
};
|
|
772
|
+
|
|
773
|
+
const credResult = await installCfg.resolveInstallCredentials(flags, env, {
|
|
774
|
+
isTTY,
|
|
775
|
+
skip,
|
|
776
|
+
resolve: pfDeps?.resolve,
|
|
777
|
+
validate: pfDeps?.validate,
|
|
778
|
+
writeConfig: pfDeps?.writeConfig ?? updateDaemonConfig,
|
|
779
|
+
prompt: pfDeps?.askPrompt,
|
|
780
|
+
log,
|
|
781
|
+
errLog,
|
|
782
|
+
});
|
|
783
|
+
if (!credResult.ok) {
|
|
784
|
+
// Credentials could not be obtained / validated — never install a service
|
|
785
|
+
// that would fail to authenticate and crash-loop at boot.
|
|
786
|
+
errLog("[Chorus] install aborted — no service was written.");
|
|
787
|
+
return 1;
|
|
788
|
+
}
|
|
789
|
+
|
|
790
|
+
// Configure + persist the served cwd set (single source of truth in
|
|
791
|
+
// daemon.json; the unit carries no --cwd). Never blocks on a non-TTY.
|
|
792
|
+
// readJson / loginPath are optional injectable seams (default to the real
|
|
793
|
+
// login file) so the config phase can be exercised hermetically in tests.
|
|
794
|
+
await installCfg.resolveInstallCwds(flags, {
|
|
795
|
+
isTTY,
|
|
796
|
+
skip,
|
|
797
|
+
writeConfig: pfDeps?.writeConfig ?? updateDaemonConfig,
|
|
798
|
+
readJson: pfDeps?.readJson,
|
|
799
|
+
loginPath: pfDeps?.loginPath,
|
|
800
|
+
prompt: pfDeps?.askPrompt,
|
|
801
|
+
log,
|
|
802
|
+
});
|
|
803
|
+
|
|
745
804
|
const spec = {
|
|
746
805
|
...svc.resolveServicePaths(),
|
|
747
|
-
cwds:
|
|
748
|
-
agent:
|
|
749
|
-
chorusOnly:
|
|
806
|
+
cwds: flags.cwd ?? [],
|
|
807
|
+
agent: flags.agent,
|
|
808
|
+
chorusOnly: flags.chorusOnly === true,
|
|
750
809
|
workingDir: process.cwd(),
|
|
751
810
|
};
|
|
752
811
|
const r = svc.installService(spec);
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// cli/kiro-session-map.mjs
|
|
2
|
+
// Daemon-local persistence of the Kiro `anchor → sessionId` map. Kiro GENERATES
|
|
3
|
+
// its own per-cwd conversation sessionId (unlike Claude, which accepts a
|
|
4
|
+
// client-supplied --session-id), and the daemon works one repo cwd shared by many
|
|
5
|
+
// ideas — so Kiro's native "resume most recent conversation from this directory"
|
|
6
|
+
// would cross-contaminate ideas. Instead we record the generated sessionId keyed
|
|
7
|
+
// by the Chorus session anchor (direct idea uuid, or the entity uuid for an ad-hoc
|
|
8
|
+
// session) and `kiro-cli chat --no-interactive --resume-id <sessionId>` on the
|
|
9
|
+
// next wake for that anchor.
|
|
10
|
+
//
|
|
11
|
+
// Thin wrapper over the generic `createSessionMap` factory (shared with the Codex
|
|
12
|
+
// backend); the store is ~/.chorus/kiro-sessions.json. See session-map.mjs for the
|
|
13
|
+
// best-effort / never-throw contract and the injectable-IO deps.
|
|
14
|
+
|
|
15
|
+
import { createSessionMap } from "./session-map.mjs";
|
|
16
|
+
|
|
17
|
+
const map = createSessionMap({ filename: "kiro-sessions.json", logPrefix: "kiro-session-map" });
|
|
18
|
+
|
|
19
|
+
/** Absolute path to the Kiro session-id map, alongside ~/.chorus/daemon.json. */
|
|
20
|
+
export function kiroSessionMapPath() {
|
|
21
|
+
return map.mapPath();
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Look up the Kiro sessionId recorded for `anchor`, or null when there is none
|
|
26
|
+
* (no file, no entry, or a non-string entry). Never throws.
|
|
27
|
+
* @param {string} anchor
|
|
28
|
+
* @param {{ path?: string, read?: (p: string) => string, logger?: any }} [deps]
|
|
29
|
+
* @returns {string | null}
|
|
30
|
+
*/
|
|
31
|
+
export function getSessionId(anchor, deps = {}) {
|
|
32
|
+
return map.get(anchor, deps);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Record `anchor → sessionId`, preserving every other entry. Atomic (temp file +
|
|
37
|
+
* rename). Best-effort: a blank anchor/sessionId is ignored (no write), and any
|
|
38
|
+
* IO failure is logged and swallowed — it never throws into the wake path.
|
|
39
|
+
* @param {string} anchor
|
|
40
|
+
* @param {string} sessionId
|
|
41
|
+
* @param {{ path?: string, read?: (p: string) => string,
|
|
42
|
+
* write?: (p: string, c: string, o?: object) => void,
|
|
43
|
+
* mkdir?: (p: string, o?: object) => void,
|
|
44
|
+
* rename?: (from: string, to: string) => void, logger?: any }} [deps]
|
|
45
|
+
* @returns {void}
|
|
46
|
+
*/
|
|
47
|
+
export function setSessionId(anchor, sessionId, deps = {}) {
|
|
48
|
+
map.set(anchor, sessionId, deps);
|
|
49
|
+
}
|