@chorus-aidlc/chorus 0.13.2 → 0.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-build-manifest.json +485 -409
- package/.next/standalone/.next/app-path-routes-manifest.json +30 -27
- package/.next/standalone/.next/build-manifest.json +5 -5
- package/.next/standalone/.next/prerender-manifest.json +36 -36
- package/.next/standalone/.next/react-loadable-manifest.json +1 -1
- package/.next/standalone/.next/routes-manifest.json +16 -0
- package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/page.js +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 +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.js +2 -2
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +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 +122 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +18 -16
- package/.next/standalone/.next/server/app/admin/companies/[uuid]/page.js +2 -2
- package/.next/standalone/.next/server/app/admin/companies/[uuid]/page.js.nft.json +1 -1
- 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.js +1 -1
- package/.next/standalone/.next/server/app/admin/companies/new/page.js.nft.json +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 +122 -1
- package/.next/standalone/.next/server/app/admin/companies/new.rsc +25 -23
- package/.next/standalone/.next/server/app/admin/companies/page.js +1 -1
- package/.next/standalone/.next/server/app/admin/companies/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin/companies.html +122 -1
- package/.next/standalone/.next/server/app/admin/companies.rsc +25 -23
- package/.next/standalone/.next/server/app/admin/page.js +1 -1
- package/.next/standalone/.next/server/app/admin/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin.html +122 -1
- package/.next/standalone/.next/server/app/admin.rsc +25 -23
- 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.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/session/route.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agent-connections/route.js.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.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/check-default/route.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/company-oidc/route.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/default-login/route.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/identify/route.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/me/route.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.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/comments/route.js +1 -1
- package/.next/standalone/.next/server/app/api/comments/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/control/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/execution-state/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/execution-state/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/executions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/executions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/executions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/pending-turns/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/resume/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/resume/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/resume/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/transcript/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/transcript/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/transcript/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/turn-advance/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route.js +1 -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 -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.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 +6 -6
- 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/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route_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/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.js +1 -0
- package/.next/standalone/.next/server/app/api/references/[uuid]/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/references/[uuid]/route_client-reference-manifest.js +1 -0
- package/.next/standalone/.next/server/app/api/references/route.js +1 -0
- package/.next/standalone/.next/server/app/api/references/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/references/route_client-reference-manifest.js +1 -0
- 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 +122 -1
- package/.next/standalone/.next/server/app/index.rsc +22 -20
- package/.next/standalone/.next/server/app/login/admin/page.js +2 -2
- package/.next/standalone/.next/server/app/login/admin/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/admin.html +122 -1
- package/.next/standalone/.next/server/app/login/admin.rsc +22 -20
- package/.next/standalone/.next/server/app/login/callback/page.js +2 -2
- package/.next/standalone/.next/server/app/login/callback/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/callback.html +122 -1
- package/.next/standalone/.next/server/app/login/callback.rsc +22 -20
- package/.next/standalone/.next/server/app/login/page.js +2 -2
- package/.next/standalone/.next/server/app/login/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/pick-workspace/page.js +2 -2
- package/.next/standalone/.next/server/app/login/pick-workspace/page.js.nft.json +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 +122 -1
- package/.next/standalone/.next/server/app/login/pick-workspace.rsc +22 -20
- package/.next/standalone/.next/server/app/login.html +122 -1
- package/.next/standalone/.next/server/app/login.rsc +22 -20
- package/.next/standalone/.next/server/app/onboarding/page.js +2 -2
- package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/onboarding.html +122 -1
- package/.next/standalone/.next/server/app/onboarding.rsc +22 -20
- package/.next/standalone/.next/server/app/page.js +2 -2
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects.html +122 -1
- package/.next/standalone/.next/server/app/projects.rsc +25 -23
- package/.next/standalone/.next/server/app/settings.html +122 -1
- package/.next/standalone/.next/server/app/settings.rsc +25 -23
- package/.next/standalone/.next/server/app-paths-manifest.json +30 -27
- package/.next/standalone/.next/server/chunks/1114.js +1 -0
- package/.next/standalone/.next/server/chunks/1173.js +1 -0
- package/.next/standalone/.next/server/chunks/1286.js +32 -0
- package/.next/standalone/.next/server/chunks/1559.js +2 -2
- package/.next/standalone/.next/server/chunks/2382.js +1 -0
- 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/3419.js +1 -1
- package/.next/standalone/.next/server/chunks/{8322.js → 378.js} +125 -2
- package/.next/standalone/.next/server/chunks/4545.js +1 -0
- package/.next/standalone/.next/server/chunks/{5957.js → 4797.js} +1 -1
- 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 -0
- package/.next/standalone/.next/server/chunks/5300.js +1 -1
- 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/6396.js +1 -0
- package/.next/standalone/.next/server/chunks/{796.js → 6492.js} +10 -10
- 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/6646.js +1 -0
- package/.next/standalone/.next/server/chunks/679.js +1 -1
- package/.next/standalone/.next/server/chunks/7091.js +1 -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 -0
- package/.next/standalone/.next/server/chunks/7635.js +1 -0
- package/.next/standalone/.next/server/chunks/7762.js +1 -0
- package/.next/standalone/.next/server/chunks/8062.js +1 -0
- package/.next/standalone/.next/server/chunks/8204.js +1 -0
- package/.next/standalone/.next/server/chunks/8396.js +1 -0
- package/.next/standalone/.next/server/chunks/8454.js +1 -0
- package/.next/standalone/.next/server/chunks/920.js +1 -1
- package/.next/standalone/.next/server/chunks/9213.js +1 -0
- package/.next/standalone/.next/server/chunks/9378.js +1 -0
- package/.next/standalone/.next/server/chunks/951.js +1 -0
- package/.next/standalone/.next/server/chunks/9979.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 +5 -5
- package/.next/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/standalone/.next/server/pages/404.html +122 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/C9o43aSSZ0ebgki6mQ0-b/_buildManifest.js +1 -0
- package/.next/standalone/.next/static/chunks/11595.7784dfe509c100a4.js +1 -0
- package/.next/standalone/.next/static/chunks/{58037-55d7422c6b808356.js → 14655-4f3bc7f3044c42c1.js} +1 -1
- package/.next/standalone/.next/static/chunks/{15183-5734d279b26e9414.js → 15183-3f43af926186f7ef.js} +2 -2
- package/.next/standalone/.next/static/chunks/21188-43211c9e40bf0d63.js +10 -0
- package/.next/standalone/.next/static/chunks/21932-bce5ba937d1603e1.js +1 -0
- package/.next/standalone/.next/static/chunks/24537-ef5b301140cf3a58.js +1 -0
- package/.next/standalone/.next/static/chunks/27030-3ae1d0e29245b23e.js +1 -0
- package/.next/standalone/.next/static/chunks/27290-2f874213668491c8.js +124 -0
- package/.next/standalone/.next/static/chunks/28680-dff79c4467712199.js +1 -0
- package/.next/standalone/.next/static/chunks/32331-87ae9bc7517c7947.js +1 -0
- package/.next/standalone/.next/static/chunks/33456.3bd7ba05bd39259b.js +1 -0
- package/.next/standalone/.next/static/chunks/37985-e4683195e4ca2519.js +1 -0
- package/.next/standalone/.next/static/chunks/38366.e6e0132b8ba873d6.js +1 -0
- package/.next/standalone/.next/static/chunks/38526-7ffc4b7351c15bc4.js +1 -0
- package/.next/standalone/.next/static/chunks/39025-13049f9c48e08d6c.js +1 -0
- package/.next/standalone/.next/static/chunks/42605-029b5426175cdee9.js +1 -0
- package/.next/standalone/.next/static/chunks/43111-7a4e08dc82bb3022.js +1 -0
- package/.next/standalone/.next/static/chunks/4860.4803e40814d50dd0.js +1 -0
- package/.next/standalone/.next/static/chunks/4939-ff22e2b42ad57f7f.js +1 -0
- package/.next/standalone/.next/static/chunks/51603-7fa00971493ae223.js +1 -0
- package/.next/standalone/.next/static/chunks/78917-c0a9a11fe437a752.js +1 -0
- package/.next/standalone/.next/static/chunks/83285-db8ae107944eb6df.js +1 -0
- package/.next/standalone/.next/static/chunks/84169-5beb288902aea242.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/{27378-9328bcc96ae9872e.js → 87325-dc3239012edcacdc.js} +1 -1
- package/.next/standalone/.next/static/chunks/89836-b5ab6a0b32c54f42.js +1 -0
- package/.next/standalone/.next/static/chunks/93346-1d4cd71b8713a8a6.js +1 -0
- package/.next/standalone/.next/static/chunks/94170-fb8ea86f938a27a5.js +1 -0
- package/.next/standalone/.next/static/chunks/99373.0457580c532530bc.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-00ff2f6753bb4603.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-5824e6affe244f83.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-e5202e9b7669576c.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-d9323dc8b6c974f7.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-20054b1cec8ed1d2.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-c83c5d1b4599e737.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-7bcaa11ee24b5754.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-278d30ee1dd7e315.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-5a22db5f8504e61d.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/page-47a17dbadfbc75ad.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-7fbf5bc58d3dd5b0.js +1 -0
- package/.next/standalone/.next/static/chunks/app/admin/companies/[uuid]/page-b2458ed001dc8177.js +1 -0
- package/.next/standalone/.next/static/chunks/app/admin/companies/new/page-e35dce890d6dfd8d.js +1 -0
- package/.next/standalone/.next/static/chunks/app/admin/layout-c66ce38cbd88982a.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/admin/login/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/admin/session/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/agents/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/api-keys/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/me/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/comments/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/repoint/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/events/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/health/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/wake-preview/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/ideas/conversational/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/mcp/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/mentionables/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/project-groups/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/resource-graph/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/projects/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/references/[uuid]/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/references/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/search/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/session/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-55ce87d16bc689f3.js +1 -0
- package/.next/standalone/.next/static/chunks/app/layout-985054e973f66999.js +1 -0
- package/.next/standalone/.next/static/chunks/app/login/admin/page-f032b6db3bd20a2c.js +1 -0
- package/.next/standalone/.next/static/chunks/app/login/callback/page-ec23211506e688ee.js +1 -0
- package/.next/standalone/.next/static/chunks/app/login/page-9b34375d1b5579d7.js +1 -0
- package/.next/standalone/.next/static/chunks/app/login/pick-workspace/page-7e4664af2c787d08.js +1 -0
- package/.next/standalone/.next/static/chunks/app/onboarding/{page-8e20c8aa8ff90326.js → page-ece3f647133d446e.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/page-79e2d32e69788bd2.js +1 -0
- package/.next/standalone/.next/static/chunks/webpack-96be8d6bd0d3d25f.js +1 -0
- package/.next/standalone/.next/static/css/5f09fa856a63632f.css +1 -0
- package/.next/standalone/package.json +4 -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 +8 -1
- package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +1 -1
- 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 +1 -1
- 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 +391 -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 -1
- package/.next/standalone/public/skill/code-reviewer-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/develop-chorus/SKILL.md +1 -1
- 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 +2 -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 +1 -1
- package/README.ja.md +464 -0
- package/README.ko.md +463 -0
- package/README.md +8 -3
- package/README.zh.md +8 -3
- 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/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 +4 -1
- package/prisma/migrations/20260710171801_add_reference_artifact/migration.sql +27 -0
- package/prisma/migrations/20260714091007_add_daemon_execution_direct_idea/migration.sql +2 -0
- package/prisma/schema.prisma +33 -0
- package/.next/standalone/.next/server/chunks/1463.js +0 -1
- package/.next/standalone/.next/server/chunks/1512.js +0 -1
- package/.next/standalone/.next/server/chunks/3371.js +0 -1
- package/.next/standalone/.next/server/chunks/3373.js +0 -1
- package/.next/standalone/.next/server/chunks/4958.js +0 -1
- package/.next/standalone/.next/server/chunks/5011.js +0 -1
- package/.next/standalone/.next/server/chunks/5631.js +0 -1
- package/.next/standalone/.next/server/chunks/6496.js +0 -1
- package/.next/standalone/.next/server/chunks/6817.js +0 -1
- package/.next/standalone/.next/server/chunks/704.js +0 -31
- package/.next/standalone/.next/server/chunks/7160.js +0 -1
- package/.next/standalone/.next/server/chunks/8448.js +0 -1
- package/.next/standalone/.next/server/chunks/8551.js +0 -1
- package/.next/standalone/.next/server/chunks/9516.js +0 -1
- package/.next/standalone/.next/server/chunks/9855.js +0 -6
- package/.next/standalone/.next/static/CIg9Mtv4fKIeKqPY5Rczv/_buildManifest.js +0 -1
- package/.next/standalone/.next/static/chunks/16467-dd4f928e725306c1.js +0 -1
- package/.next/standalone/.next/static/chunks/1892-9c03d4d3560ff572.js +0 -1
- package/.next/standalone/.next/static/chunks/225-7b0507c29df705f1.js +0 -1
- package/.next/standalone/.next/static/chunks/24459-3bc9657d71c77b47.js +0 -1
- package/.next/standalone/.next/static/chunks/38366.62260b57e5f4b09d.js +0 -1
- package/.next/standalone/.next/static/chunks/46055-f786ace4b994dc40.js +0 -1
- package/.next/standalone/.next/static/chunks/4860.18e9c1a01636e309.js +0 -1
- package/.next/standalone/.next/static/chunks/52064-74d81c8d682deb6b.js +0 -1
- package/.next/standalone/.next/static/chunks/57362-9ece5cc290dab705.js +0 -1
- package/.next/standalone/.next/static/chunks/63820-551bca4e19d0119c.js +0 -1
- package/.next/standalone/.next/static/chunks/64187-cff8a4b5e96fa8f9.js +0 -10
- package/.next/standalone/.next/static/chunks/68255-05c42a26602c6b37.js +0 -1
- package/.next/standalone/.next/static/chunks/71350-88c2649fc693c1e8.js +0 -1
- package/.next/standalone/.next/static/chunks/75752-cc8fafe132943baa.js +0 -1
- package/.next/standalone/.next/static/chunks/80350-20c953d484f262ff.js +0 -1
- package/.next/standalone/.next/static/chunks/84169-71a87d06871ec9df.js +0 -1
- package/.next/standalone/.next/static/chunks/89644-2fee0373b890e8e3.js +0 -1
- package/.next/standalone/.next/static/chunks/93346-b3e1ebe948fc623f.js +0 -1
- package/.next/standalone/.next/static/chunks/94743-aff8a51a7f7970a9.js +0 -1
- package/.next/standalone/.next/static/chunks/96752-ad15cc38599f12e2.js +0 -1
- package/.next/standalone/.next/static/chunks/97306-8834e12cdbeed920.js +0 -1
- package/.next/standalone/.next/static/chunks/99373.c4a36dcd46ec841e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-a3747bde1ddaba52.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/project-groups/[uuid]/page-87b79c98e46fbd04.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-b2db3da2d7945904.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-0467d744b84aa2c2.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/page-7abff55f9bfebab3.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/page-b3b2b2ba3d60893e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-0aff1fa7a814188c.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-6dbfbe5d97855e42.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-b8fbcac7224342db.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page-0a04a31e1b383094.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/page-e2a69b645ec9ae13.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/page-b760877bfcd12dff.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-111aed4d3319d64b.js +0 -1
- package/.next/standalone/.next/static/chunks/app/admin/companies/[uuid]/page-cc2fe0c5b749cd2f.js +0 -1
- package/.next/standalone/.next/static/chunks/app/admin/companies/new/page-4f3b3c449c61f6d2.js +0 -1
- package/.next/standalone/.next/static/chunks/app/admin/layout-50c9b40750f734be.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/admin/companies/[uuid]/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/admin/companies/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/admin/login/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/admin/session/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agent-connections/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agents/[uuid]/sessions/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/agents/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/api-keys/[uuid]/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/api-keys/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/callback/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/check-default/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/company-oidc/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/default-login/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/identify/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/me/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/sync-token/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/comments/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/control/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/execution-state/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/executions/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/pending-turns/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/report-interrupt/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/resume/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/transcript/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon/turn-advance/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/instruction/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/repoint/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/[sessionUuid]/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/ad-hoc/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/daemon-sessions/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/documents/[uuid]/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/entities/[type]/[uuid]/root-idea/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/events/notifications/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/events/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/health/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/claim/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/preview/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/move/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/parent/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/release/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/[uuid]/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/ideas/conversational/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/mcp/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/me/assignments/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/mentionables/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/archive/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/[uuid]/read/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/preferences/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/read-all/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/notifications/unread-count/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/dashboard/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/project-groups/[uuid]/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/project-groups/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/activity/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/available/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/documents/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/group/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/ideas/tracker/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/proposals/summary/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/resource-graph/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/stats/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/dependencies/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/[uuid]/tasks/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/projects/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/approve/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/close/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/reject/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/revoke/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proposals/[uuid]/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/search/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/session/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/sessions/[uuid]/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/claim/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/dependencies/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/release/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tasks/[uuid]/sessions/route-47e1d397c5fcef9e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/layout-e3a49e06950a057f.js +0 -1
- package/.next/standalone/.next/static/chunks/app/login/admin/page-d470135f7aab6c5e.js +0 -1
- package/.next/standalone/.next/static/chunks/app/login/callback/page-39a43f6d0245f8ca.js +0 -1
- package/.next/standalone/.next/static/chunks/app/login/page-acda3a31dc6a8280.js +0 -1
- package/.next/standalone/.next/static/chunks/app/login/pick-workspace/page-10683852baf17426.js +0 -1
- package/.next/standalone/.next/static/chunks/app/page-000b1349c8d5b652.js +0 -1
- package/.next/standalone/.next/static/chunks/webpack-3551a4c7f9bfe638.js +0 -1
- package/.next/standalone/.next/static/css/a80bf83b9122bfc5.css +0 -1
- /package/.next/standalone/.next/static/{CIg9Mtv4fKIeKqPY5Rczv → C9o43aSSZ0ebgki6mQ0-b}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
// cli/kiro-spawner.mjs
|
|
2
|
+
// Cross-platform headless Amazon Kiro CLI spawner — the `kiro` counterpart to
|
|
3
|
+
// ClaudeSpawner / CodexSpawner, satisfying the SAME backend-agnostic
|
|
4
|
+
// Spawner.wake(...) contract so the daemon's wake pipeline (queue, waker,
|
|
5
|
+
// directed delivery, headless guard, reporters) stays backend-neutral.
|
|
6
|
+
//
|
|
7
|
+
// Kiro diverges from BOTH Claude and Codex (verified against kiro-cli 2.12.1 +
|
|
8
|
+
// the live CLI/store on this host):
|
|
9
|
+
// • `kiro-cli chat --no-interactive` runs a headless turn; the prompt is read
|
|
10
|
+
// from STDIN (never argv). It runs under the `chorus` agent profile
|
|
11
|
+
// (`--agent chorus`) so the woken session loads the Kiro plugin's Chorus MCP
|
|
12
|
+
// server + AI-DLC skills + steering (parity with an interactive plugin user).
|
|
13
|
+
// • Kiro GENERATES its own per-cwd `sessionId` (like Codex's thread_id, unlike
|
|
14
|
+
// Claude's client-supplied --session-id) — BUT there is NO id-bearing stream
|
|
15
|
+
// event (Kiro emits plain text/markdown on stdout; `--format json` is
|
|
16
|
+
// list-commands-only). So we capture the id POST-RUN by diffing the session
|
|
17
|
+
// store, and persist anchor→sessionId (kiro-session-map.mjs) so a later wake
|
|
18
|
+
// can `--resume-id <sessionId>`.
|
|
19
|
+
// • No `--mcp-config`: MCP comes from the plugin's .kiro/settings/mcp.json
|
|
20
|
+
// (loaded via --agent chorus), which references ${env:CHORUS_API_KEY}; the
|
|
21
|
+
// daemon key reaches it via that env var — never argv.
|
|
22
|
+
// • Permission is a TOOL-TRUST posture (--trust-all-tools / --trust-tools=…),
|
|
23
|
+
// not a sandbox mode and not a per-tool allowlist.
|
|
24
|
+
//
|
|
25
|
+
// Transcript capture (task 4) is layered on top: this spawner reads the session
|
|
26
|
+
// store for the run's sessionId post-run and, if a `reconstructTranscript` hook is
|
|
27
|
+
// injected, feeds the reconstructed entries to `onMessage`; otherwise it is a
|
|
28
|
+
// no-op here (this task owns spawn/resume/trust/interrupt + sessionId capture).
|
|
29
|
+
|
|
30
|
+
import { spawn } from "node:child_process";
|
|
31
|
+
import { readdirSync, readFileSync, statSync } from "node:fs";
|
|
32
|
+
import { homedir } from "node:os";
|
|
33
|
+
import { win32 as pathWin32, posix as pathPosix, join } from "node:path";
|
|
34
|
+
import { getSessionId as defaultGetSessionId, setSessionId as defaultSetSessionId } from "./kiro-session-map.mjs";
|
|
35
|
+
import { reconstructTranscript as defaultReconstructTranscript } from "./kiro-transcript.mjs";
|
|
36
|
+
|
|
37
|
+
const NOOP_LOGGER = { info() {}, warn() {}, error() {} };
|
|
38
|
+
|
|
39
|
+
/** Directory Kiro persists its CLI session store under (per-cwd conversations). */
|
|
40
|
+
export function kiroSessionsDir() {
|
|
41
|
+
return join(homedir(), ".kiro", "sessions", "cli");
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Map the daemon's backend-agnostic permission mode to a Kiro tool-trust posture.
|
|
46
|
+
* A headless turn can never answer an approval prompt, so trust must be granted
|
|
47
|
+
* upfront:
|
|
48
|
+
* yolo → --trust-all-tools (full autonomy for code-writing work)
|
|
49
|
+
* chorus → --trust-tools=fs_read,@chorus (read-only filesystem + the Chorus
|
|
50
|
+
* MCP server's tools; no shell exec / file writes). MCP tools are
|
|
51
|
+
* namespaced by server in Kiro, so `@chorus` trusts the whole Chorus
|
|
52
|
+
* server (verified against the plugin's agent def — matcher `@chorus`).
|
|
53
|
+
* Anything other than yolo falls back to the restricted posture.
|
|
54
|
+
* @param {"yolo"|"chorus"|undefined} permissionMode
|
|
55
|
+
* @returns {string[]}
|
|
56
|
+
*/
|
|
57
|
+
export function trustFlags(permissionMode) {
|
|
58
|
+
if (permissionMode === "yolo") return ["--trust-all-tools"];
|
|
59
|
+
return ["--trust-tools=fs_read,@chorus"];
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Build the argv for a headless kiro-cli run. Prompt is NEVER here — it goes over
|
|
64
|
+
* stdin. Runs under the `chorus` agent profile on the default v2 engine (no
|
|
65
|
+
* `--v3`). A resume passes the recorded sessionId via `--resume-id`.
|
|
66
|
+
* @param {{ isNew: boolean, sessionId?: string|null, permissionMode?: "yolo"|"chorus" }} o
|
|
67
|
+
* @returns {string[]}
|
|
68
|
+
*/
|
|
69
|
+
export function buildKiroArgs({ isNew, sessionId, permissionMode }) {
|
|
70
|
+
const trust = trustFlags(permissionMode);
|
|
71
|
+
const base = ["chat", "--no-interactive", "--agent", "chorus", ...trust];
|
|
72
|
+
if (!isNew && sessionId) {
|
|
73
|
+
return ["chat", "--no-interactive", "--resume-id", sessionId, "--agent", "chorus", ...trust];
|
|
74
|
+
}
|
|
75
|
+
return base;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Resolve the real `kiro-cli` executable WITHOUT a shell — same approach as
|
|
80
|
+
* resolveCodexPath. On Windows the bin may be `kiro-cli.cmd` (npm shim), which
|
|
81
|
+
* `spawn` can't exec directly without shell:true; we walk PATH for the platform
|
|
82
|
+
* candidates. `CHORUS_KIRO_PATH` overrides.
|
|
83
|
+
* @param {{ env?: NodeJS.ProcessEnv, platform?: NodeJS.Platform, isFile?: (p: string) => boolean }} [deps]
|
|
84
|
+
* @returns {string | null}
|
|
85
|
+
*/
|
|
86
|
+
export function resolveKiroPath(deps = {}) {
|
|
87
|
+
const env = deps.env ?? process.env;
|
|
88
|
+
const platform = deps.platform ?? process.platform;
|
|
89
|
+
const isFile =
|
|
90
|
+
deps.isFile ??
|
|
91
|
+
((p) => {
|
|
92
|
+
try {
|
|
93
|
+
return statSync(p).isFile();
|
|
94
|
+
} catch {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
if (env.CHORUS_KIRO_PATH && isFile(env.CHORUS_KIRO_PATH)) {
|
|
100
|
+
return env.CHORUS_KIRO_PATH;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const isWin = platform === "win32";
|
|
104
|
+
const p = isWin ? pathWin32 : pathPosix;
|
|
105
|
+
const names = isWin ? ["kiro-cli.cmd", "kiro-cli.exe", "kiro-cli"] : ["kiro-cli"];
|
|
106
|
+
const pathVar = env.PATH || env.Path || "";
|
|
107
|
+
const dirs = pathVar.split(p.delimiter).filter(Boolean);
|
|
108
|
+
for (const dir of dirs) {
|
|
109
|
+
for (const name of names) {
|
|
110
|
+
const candidate = p.join(dir, name);
|
|
111
|
+
if (isFile(candidate)) return candidate;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Resolve the actual command + argv to spawn. On Windows a `.cmd`/`.bat` shim is
|
|
119
|
+
* not a PE executable, so it must run via `cmd.exe /d /s /c <path> ...args`; we
|
|
120
|
+
* keep shell:false and pass argv as an array (no shell word-splitting/injection).
|
|
121
|
+
* @param {string} kiroPath @param {string[]} args
|
|
122
|
+
* @param {NodeJS.Platform} [platform] @param {NodeJS.ProcessEnv} [env]
|
|
123
|
+
* @returns {{ command: string, argv: string[] }}
|
|
124
|
+
*/
|
|
125
|
+
export function resolveSpawnCommand(kiroPath, args, platform = process.platform, env = process.env) {
|
|
126
|
+
const isWin = platform === "win32";
|
|
127
|
+
const lower = kiroPath.toLowerCase();
|
|
128
|
+
if (isWin && (lower.endsWith(".cmd") || lower.endsWith(".bat"))) {
|
|
129
|
+
const comspec = env.ComSpec || env.COMSPEC || "cmd.exe";
|
|
130
|
+
return { command: comspec, argv: ["/d", "/s", "/c", kiroPath, ...args] };
|
|
131
|
+
}
|
|
132
|
+
return { command: kiroPath, argv: args };
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Snapshot the session store as a map of `sessionId → updatedAtMillis` for the
|
|
137
|
+
* given cwd. Kiro writes `<sessionsDir>/<sessionId>.json` metadata files carrying
|
|
138
|
+
* `{ session_id, cwd, updated_at, ... }`. Best-effort: any IO/parse failure yields
|
|
139
|
+
* an empty map (never throws) — a missed capture just means the run isn't
|
|
140
|
+
* resumable, logged by the caller.
|
|
141
|
+
* @param {string} cwd
|
|
142
|
+
* @param {{ dir?: string, readdir?: (d: string) => string[], read?: (p: string) => string, logger?: any }} [deps]
|
|
143
|
+
* @returns {Map<string, number>}
|
|
144
|
+
*/
|
|
145
|
+
export function snapshotSessions(cwd, deps = {}) {
|
|
146
|
+
const dir = deps.dir ?? kiroSessionsDir();
|
|
147
|
+
const readdir = deps.readdir ?? ((d) => readdirSync(d));
|
|
148
|
+
const read = deps.read ?? ((p) => readFileSync(p, "utf8"));
|
|
149
|
+
const logger = deps.logger ?? NOOP_LOGGER;
|
|
150
|
+
const out = new Map();
|
|
151
|
+
let files;
|
|
152
|
+
try {
|
|
153
|
+
files = readdir(dir);
|
|
154
|
+
} catch (err) {
|
|
155
|
+
if (!(err && err.code === "ENOENT")) {
|
|
156
|
+
logger.warn(`[Chorus] kiro session snapshot: readdir failed (${err}) — treating as empty`);
|
|
157
|
+
}
|
|
158
|
+
return out;
|
|
159
|
+
}
|
|
160
|
+
for (const f of files) {
|
|
161
|
+
if (!f.endsWith(".json")) continue; // .jsonl / .history are not the metadata file
|
|
162
|
+
let meta;
|
|
163
|
+
try {
|
|
164
|
+
meta = JSON.parse(read(join(dir, f)));
|
|
165
|
+
} catch {
|
|
166
|
+
continue; // skip an unreadable/partial metadata file
|
|
167
|
+
}
|
|
168
|
+
if (!meta || typeof meta !== "object") continue;
|
|
169
|
+
const sid = typeof meta.session_id === "string" ? meta.session_id : f.replace(/\.json$/, "");
|
|
170
|
+
// Scope to this daemon's cwd so a concurrent run in a different cwd can't be
|
|
171
|
+
// mis-attributed. When cwd is unknown, accept all (single-path daemon).
|
|
172
|
+
if (cwd && typeof meta.cwd === "string" && meta.cwd !== cwd) continue;
|
|
173
|
+
const updated = Date.parse(meta.updated_at ?? meta.updatedAt ?? "") || 0;
|
|
174
|
+
out.set(sid, updated);
|
|
175
|
+
}
|
|
176
|
+
return out;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Decide the run's sessionId by diffing a before/after store snapshot, UNAMBIGUOUSLY.
|
|
181
|
+
*
|
|
182
|
+
* Concurrency (reviewer N1): the WakeQueue serializes wakes per idea-key but runs
|
|
183
|
+
* DIFFERENT keys concurrently (default maxConcurrency 4), and all keys share the
|
|
184
|
+
* daemon's single repo cwd — so two fresh Kiro runs can be in flight in the same
|
|
185
|
+
* cwd at once. A "newest new id wins" heuristic would then mis-attribute one run's
|
|
186
|
+
* sessionId to the other's anchor. To stay correct we require the id to be
|
|
187
|
+
* UNAMBIGUOUS: return the new id ONLY when EXACTLY ONE brand-new id appeared in the
|
|
188
|
+
* window (present in `after`, absent in `before`). If zero or several new ids
|
|
189
|
+
* appeared, return null — the caller degrades to "not resumable this time" (a
|
|
190
|
+
* missed resume is a minor efficiency loss; a wrong resume would cross-wire two
|
|
191
|
+
* ideas' conversations, which is a correctness bug). No "updated_at advanced"
|
|
192
|
+
* fallback: on a fresh run the id is always new-to-the-store; on a resume the
|
|
193
|
+
* caller already knows the id and never calls this.
|
|
194
|
+
* @param {Map<string, number>} before @param {Map<string, number>} after
|
|
195
|
+
* @returns {string|null}
|
|
196
|
+
*/
|
|
197
|
+
export function pickNewSessionId(before, after) {
|
|
198
|
+
const fresh = [];
|
|
199
|
+
for (const sid of after.keys()) {
|
|
200
|
+
if (!before.has(sid)) fresh.push(sid);
|
|
201
|
+
}
|
|
202
|
+
// Exactly one new session created in this run's window → unambiguous.
|
|
203
|
+
return fresh.length === 1 ? fresh[0] : null;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* @typedef {Object} KiroSpawnerOptions
|
|
208
|
+
* @property {string} [kiroPath] Resolved kiro-cli path (resolved lazily if omitted).
|
|
209
|
+
* @property {(o: object) => any} [spawnImpl] Injectable spawn (tests).
|
|
210
|
+
* @property {{info(m:string):void,warn(m:string):void,error(m:string):void}} [logger]
|
|
211
|
+
* @property {"chorus"|"yolo"} [permissionMode] Maps to a Kiro tool-trust posture.
|
|
212
|
+
* @property {{ url: string, apiKey: string }} [creds] Daemon creds — apiKey is exported
|
|
213
|
+
* into the child env as CHORUS_API_KEY (the var the plugin's .kiro/settings/mcp.json references).
|
|
214
|
+
* @property {NodeJS.Platform} [platform] Injectable for tests; gates POSIX `detached`.
|
|
215
|
+
* @property {(anchor: string) => string|null} [getSessionIdFn] Injectable session-map read.
|
|
216
|
+
* @property {(anchor: string, id: string) => void} [setSessionIdFn] Injectable session-map write.
|
|
217
|
+
* @property {(cwd: string) => Map<string, number>} [snapshotSessionsFn] Injectable store snapshot.
|
|
218
|
+
* @property {(o: {sessionId: string, cwd: string, onMessage?: Function, stdout: string, logger: any}) => void} [reconstructTranscript]
|
|
219
|
+
* Injectable transcript reconstruction (task 4) — invoked post-run; a no-op if absent.
|
|
220
|
+
*/
|
|
221
|
+
|
|
222
|
+
export class KiroSpawner {
|
|
223
|
+
/** @param {KiroSpawnerOptions} [opts] */
|
|
224
|
+
constructor(opts = {}) {
|
|
225
|
+
this.kiroPath = opts.kiroPath ?? null;
|
|
226
|
+
this.spawnImpl = opts.spawnImpl ?? spawn;
|
|
227
|
+
this.logger = opts.logger ?? NOOP_LOGGER;
|
|
228
|
+
this.permissionMode = opts.permissionMode ?? "chorus";
|
|
229
|
+
this.creds = opts.creds ?? null;
|
|
230
|
+
this.platform = opts.platform ?? process.platform;
|
|
231
|
+
this.getSessionIdFn = opts.getSessionIdFn ?? defaultGetSessionId;
|
|
232
|
+
this.setSessionIdFn = opts.setSessionIdFn ?? defaultSetSessionId;
|
|
233
|
+
this.resolveKiroPathFn = opts.resolveKiroPathFn ?? resolveKiroPath;
|
|
234
|
+
this.snapshotSessionsFn = opts.snapshotSessionsFn ?? snapshotSessions;
|
|
235
|
+
// Post-run transcript reconstruction from Kiro's on-disk session store (task 4).
|
|
236
|
+
// Defaults to the real reader; injectable/nullable for tests.
|
|
237
|
+
this.reconstructTranscript =
|
|
238
|
+
opts.reconstructTranscript === undefined ? defaultReconstructTranscript : opts.reconstructTranscript;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Spawn a headless Kiro run. Resolves when the subprocess exits. The prompt is
|
|
243
|
+
* written to stdin (never argv). `sessionId` is the Chorus anchor (direct idea
|
|
244
|
+
* uuid, or entity uuid). Kiro owns its session id, so we IGNORE the passed
|
|
245
|
+
* `isNew`/`mcpConfigPath` and decide new-vs-resume from the persisted
|
|
246
|
+
* anchor→sessionId map: a recorded id → `--resume-id`, otherwise a fresh run.
|
|
247
|
+
*
|
|
248
|
+
* @param {{ prompt: string, sessionId: string|null, isNew?: boolean, mcpConfigPath?: string,
|
|
249
|
+
* cwd?: string, onMessage?: (obj: any) => void,
|
|
250
|
+
* onChild?: (child: import("node:child_process").ChildProcess) => void }} params
|
|
251
|
+
* @returns {Promise<{ sessionId: string, exitCode: number|null, isNew: boolean }>}
|
|
252
|
+
*/
|
|
253
|
+
async wake({ prompt, sessionId, cwd, onMessage, onChild }) {
|
|
254
|
+
const anchor = typeof sessionId === "string" ? sessionId : "";
|
|
255
|
+
const runCwd = cwd ?? process.cwd();
|
|
256
|
+
|
|
257
|
+
// new-vs-resume is OWNED by this backend (Kiro session model), not the waker's
|
|
258
|
+
// Claude transcript probe: a recorded sessionId means resume via --resume-id.
|
|
259
|
+
const knownSessionId = anchor ? this.getSessionIdFn(anchor) : null;
|
|
260
|
+
const isNew = !knownSessionId;
|
|
261
|
+
|
|
262
|
+
const kiroPath = this.kiroPath ?? this.resolveKiroPathFn();
|
|
263
|
+
if (!kiroPath) {
|
|
264
|
+
// No crash — surface visibly and resolve with a failure result.
|
|
265
|
+
this.logger.error("[Chorus] cannot locate the `kiro-cli` executable on PATH; skipping wake");
|
|
266
|
+
return { sessionId: anchor, exitCode: null, isNew };
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
const args = buildKiroArgs({ isNew, sessionId: knownSessionId, permissionMode: this.permissionMode });
|
|
270
|
+
const { command, argv } = resolveSpawnCommand(kiroPath, args, this.platform);
|
|
271
|
+
|
|
272
|
+
// POSIX: detached process group so the interrupt path can group-kill the tree
|
|
273
|
+
// (kiro-cli forks child shells for tools). Windows uses taskkill /T. stdio
|
|
274
|
+
// stays piped — prompt over stdin + stdout capture are unaffected.
|
|
275
|
+
const detached = this.platform !== "win32";
|
|
276
|
+
|
|
277
|
+
// Daemon key via ENV as CHORUS_API_KEY — the var the plugin's
|
|
278
|
+
// [mcpServers.chorus] header references (${env:CHORUS_API_KEY}). NEVER argv.
|
|
279
|
+
// Merged over the inherited env so PATH / model auth / KIRO_* survive.
|
|
280
|
+
const childEnv = { ...process.env, CHORUS_DAEMON_HEADLESS: "1" };
|
|
281
|
+
if (this.creds && this.creds.apiKey) childEnv.CHORUS_API_KEY = this.creds.apiKey;
|
|
282
|
+
|
|
283
|
+
// Snapshot the session store BEFORE the run so we can identify the sessionId
|
|
284
|
+
// this run creates (Kiro has no id-bearing stream event). On resume we already
|
|
285
|
+
// know the id, so the snapshot is only needed for a fresh run.
|
|
286
|
+
const before = isNew ? this.#safeSnapshot(runCwd) : new Map();
|
|
287
|
+
|
|
288
|
+
return new Promise((resolve) => {
|
|
289
|
+
let child;
|
|
290
|
+
try {
|
|
291
|
+
child = this.spawnImpl(command, argv, {
|
|
292
|
+
cwd: runCwd,
|
|
293
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
294
|
+
env: childEnv,
|
|
295
|
+
shell: false,
|
|
296
|
+
detached,
|
|
297
|
+
windowsHide: true,
|
|
298
|
+
});
|
|
299
|
+
} catch (err) {
|
|
300
|
+
this.logger.error(`[Chorus] failed to spawn kiro-cli: ${err}`);
|
|
301
|
+
resolve({ sessionId: anchor, exitCode: null, isNew });
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
// Hand the live child to the caller (interrupt registry) before resolving.
|
|
306
|
+
// Never let a throwing callback escape into the spawn path.
|
|
307
|
+
if (onChild) {
|
|
308
|
+
try {
|
|
309
|
+
onChild(child);
|
|
310
|
+
} catch (err) {
|
|
311
|
+
this.logger.warn(`[Chorus] onChild handler threw: ${err}`);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
let stdoutBuf = "";
|
|
316
|
+
|
|
317
|
+
child.stdout?.setEncoding?.("utf8");
|
|
318
|
+
child.stdout?.on("data", (chunk) => {
|
|
319
|
+
stdoutBuf += String(chunk);
|
|
320
|
+
});
|
|
321
|
+
|
|
322
|
+
child.stderr?.setEncoding?.("utf8");
|
|
323
|
+
child.stderr?.on("data", (chunk) => {
|
|
324
|
+
const text = String(chunk).trim();
|
|
325
|
+
if (text) this.logger.warn(`[Chorus] kiro-cli stderr: ${text}`);
|
|
326
|
+
});
|
|
327
|
+
|
|
328
|
+
child.on("error", (err) => {
|
|
329
|
+
this.logger.error(`[Chorus] kiro-cli process error: ${err}`);
|
|
330
|
+
resolve({ sessionId: knownSessionId || anchor, exitCode: null, isNew });
|
|
331
|
+
});
|
|
332
|
+
|
|
333
|
+
child.on("close", (code) => {
|
|
334
|
+
if (code !== 0) {
|
|
335
|
+
this.logger.warn(`[Chorus] kiro-cli exited with code ${code}`);
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
// Resolve the run's sessionId. On resume it's the id we passed; on a fresh
|
|
339
|
+
// run, diff the store snapshot to find the newly-created conversation.
|
|
340
|
+
let observedSessionId = knownSessionId || null;
|
|
341
|
+
if (isNew && code === 0) {
|
|
342
|
+
const after = this.#safeSnapshot(runCwd);
|
|
343
|
+
const found = pickNewSessionId(before, after);
|
|
344
|
+
if (found) {
|
|
345
|
+
observedSessionId = found;
|
|
346
|
+
if (anchor) this.setSessionIdFn(anchor, found);
|
|
347
|
+
} else {
|
|
348
|
+
// Zero or MULTIPLE new sessions in the window (e.g. a concurrent wake
|
|
349
|
+
// in the same cwd — reviewer N1). We refuse to guess: not persisting
|
|
350
|
+
// means a missed resume next time (minor), whereas guessing could
|
|
351
|
+
// cross-wire two ideas' conversations (a correctness bug).
|
|
352
|
+
this.logger.warn(
|
|
353
|
+
"[Chorus] kiro wake: run sessionId ambiguous or absent in the store " +
|
|
354
|
+
"(0 or >1 new sessions this window) — not persisting; next wake starts fresh"
|
|
355
|
+
);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
// Transcript reconstruction (task 4) — post-run, best-effort. Runs even
|
|
360
|
+
// when no sessionId was captured: `kiro-cli chat --no-interactive` does NOT
|
|
361
|
+
// persist a session to the cli store (verified live on 2.12.1 — only
|
|
362
|
+
// interactive/TUI runs do), so the store path finds nothing and the
|
|
363
|
+
// reconstructor falls back to the raw `stdout` blob (the authorized option-1
|
|
364
|
+
// fallback). Gating this on `observedSessionId` would suppress that fallback
|
|
365
|
+
// and leave headless turns with an empty transcript. Never throws into the
|
|
366
|
+
// wake path (the reconstructor is also internally wrapped).
|
|
367
|
+
if (this.reconstructTranscript) {
|
|
368
|
+
try {
|
|
369
|
+
this.reconstructTranscript({
|
|
370
|
+
sessionId: observedSessionId ?? "",
|
|
371
|
+
cwd: runCwd,
|
|
372
|
+
onMessage,
|
|
373
|
+
stdout: stdoutBuf,
|
|
374
|
+
logger: this.logger,
|
|
375
|
+
});
|
|
376
|
+
} catch (err) {
|
|
377
|
+
this.logger.warn(`[Chorus] kiro transcript reconstruction threw (ignored): ${err}`);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
resolve({ sessionId: observedSessionId || anchor, exitCode: code, isNew });
|
|
382
|
+
});
|
|
383
|
+
|
|
384
|
+
// Guard against an ASYNC stdin error (EPIPE) so it never becomes an
|
|
385
|
+
// uncaughtException that kills the daemon.
|
|
386
|
+
child.stdin?.on?.("error", (err) => {
|
|
387
|
+
this.logger.warn(`[Chorus] kiro-cli stdin error (ignored): ${err}`);
|
|
388
|
+
});
|
|
389
|
+
|
|
390
|
+
// Feed the prompt over stdin, then close it so the model runs.
|
|
391
|
+
try {
|
|
392
|
+
child.stdin?.write(prompt);
|
|
393
|
+
child.stdin?.end();
|
|
394
|
+
} catch (err) {
|
|
395
|
+
this.logger.warn(`[Chorus] failed writing prompt to kiro-cli stdin: ${err}`);
|
|
396
|
+
}
|
|
397
|
+
});
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
/** Snapshot the store, swallowing any failure (best-effort id capture). */
|
|
401
|
+
#safeSnapshot(cwd) {
|
|
402
|
+
try {
|
|
403
|
+
return this.snapshotSessionsFn(cwd, { logger: this.logger });
|
|
404
|
+
} catch (err) {
|
|
405
|
+
this.logger.warn(`[Chorus] kiro session snapshot failed (${err}) — id capture degraded`);
|
|
406
|
+
return new Map();
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
// cli/kiro-transcript.mjs
|
|
2
|
+
// Transcript reconstruction for the Kiro backend. `kiro-cli chat --no-interactive`
|
|
3
|
+
// emits no structured per-message stream (its `--format json` is list-commands-
|
|
4
|
+
// only), so unlike Claude/Codex there is nothing to parse live off stdout. Instead
|
|
5
|
+
// we reconstruct the transcript POST-RUN from Kiro's on-disk session store, and
|
|
6
|
+
// fall back to a single plain-text stdout blob if the store can't be read. This
|
|
7
|
+
// encodes the human's transcript decision: prefer store reconstruction, fall back
|
|
8
|
+
// to plain text.
|
|
9
|
+
//
|
|
10
|
+
// ⚠️ VERIFIED LIVE (kiro-cli 2.12.1, integration checkpoint): a `chat
|
|
11
|
+
// --no-interactive` run does NOT persist a session to the cli store — only
|
|
12
|
+
// interactive/TUI runs write `~/.kiro/sessions/cli/<id>.{jsonl,json}`. So on the
|
|
13
|
+
// DAEMON's headless path the store lookup normally finds nothing and the
|
|
14
|
+
// PLAIN-TEXT FALLBACK is the effective path. The store-reconstruction path is kept
|
|
15
|
+
// (it is correct and richer) for two reasons: it works if a future Kiro version
|
|
16
|
+
// persists headless sessions, and it captures reviewer-subagent child sessions
|
|
17
|
+
// when they ARE written. The fallback is not a rare degrade here — it is the
|
|
18
|
+
// common case — so it must produce clean text (see stripAnsi below): headless
|
|
19
|
+
// stdout is ANSI-styled with spinner frames, which must be stripped before storing.
|
|
20
|
+
//
|
|
21
|
+
// Store schema (verified live against kiro-cli 2.12.1):
|
|
22
|
+
// ~/.kiro/sessions/cli/<sessionId>.jsonl — one JSON object per line:
|
|
23
|
+
// { version, kind, data: { message_id, content: [ { kind, data }, ... ] } }
|
|
24
|
+
// kind ∈ { Prompt, AssistantMessage, ToolResults, ... }
|
|
25
|
+
// A content block's kind ∈ { text, thinking, toolUse, toolResult, ... };
|
|
26
|
+
// ONLY `text` blocks are conversation text (data is the string) — thinking /
|
|
27
|
+
// toolUse / toolResult are dropped (parallels the Claude extractor keeping
|
|
28
|
+
// only `text` content blocks).
|
|
29
|
+
// ~/.kiro/sessions/cli/<sessionId>.json — metadata:
|
|
30
|
+
// { session_id, cwd, updated_at, created_at, parent_session_id,
|
|
31
|
+
// session_created_reason, ... }
|
|
32
|
+
// Reviewer subagents get their OWN session with parent_session_id === the
|
|
33
|
+
// run's sessionId. NOTE: session_created_reason can be "subagent" even on a
|
|
34
|
+
// root session, so child detection keys on parent_session_id, NOT on the
|
|
35
|
+
// reason field.
|
|
36
|
+
//
|
|
37
|
+
// Entries are emitted in the CLAUDE stream-json envelope shape
|
|
38
|
+
// { type: "user"|"assistant", message: { role, content: [ { type:"text", text } ] } }
|
|
39
|
+
// so the existing upload-hooks `extractTranscriptText` consumes them with NO
|
|
40
|
+
// dialect change (it already recognizes that shape).
|
|
41
|
+
//
|
|
42
|
+
// CONTRACT: best-effort, MUST NEVER throw into the wake path (the caller also
|
|
43
|
+
// wraps it in try/catch). Any IO/parse failure degrades — worst case, nothing (or
|
|
44
|
+
// the plain-text fallback) is emitted, with a visible log.
|
|
45
|
+
|
|
46
|
+
import { readdirSync, readFileSync } from "node:fs";
|
|
47
|
+
import { join } from "node:path";
|
|
48
|
+
import { kiroSessionsDir } from "./kiro-spawner.mjs";
|
|
49
|
+
|
|
50
|
+
const NOOP_LOGGER = { info() {}, warn() {}, error() {} };
|
|
51
|
+
|
|
52
|
+
// `kiro-cli chat --no-interactive` writes ANSI-styled text + braille spinner
|
|
53
|
+
// frames to stdout (it renders for a terminal even headless). Strip them so the
|
|
54
|
+
// plain-text fallback stores clean conversation text, not escape soup.
|
|
55
|
+
// - CSI sequences: ESC [ … <final byte>
|
|
56
|
+
// - OSC sequences: ESC ] … (BEL | ESC \)
|
|
57
|
+
// - braille spinner glyphs U+2800–U+28FF
|
|
58
|
+
// - a leading "> " prompt marker Kiro prints before the answer
|
|
59
|
+
const ANSI_CSI = /\x1b\[[0-9;?]*[ -/]*[@-~]/g;
|
|
60
|
+
const ANSI_OSC = /\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)/g;
|
|
61
|
+
const SPINNER = /[⠀-⣿]/g;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Strip ANSI escapes + spinner frames from a headless-CLI stdout blob and tidy
|
|
65
|
+
* whitespace. Exported for testing.
|
|
66
|
+
* @param {string} s
|
|
67
|
+
* @returns {string}
|
|
68
|
+
*/
|
|
69
|
+
export function stripAnsi(s) {
|
|
70
|
+
if (typeof s !== "string") return "";
|
|
71
|
+
let out = s.replace(ANSI_OSC, "").replace(ANSI_CSI, "").replace(SPINNER, "");
|
|
72
|
+
// Drop a leading "> " answer marker and collapse runs of blank lines.
|
|
73
|
+
out = out.replace(/^[ \t]*>[ \t]?/gm, "");
|
|
74
|
+
out = out.replace(/\n{3,}/g, "\n\n");
|
|
75
|
+
return out.trim();
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/** Map a store line's `kind` to a transcript role, or null to skip the line. */
|
|
79
|
+
function roleForKind(kind) {
|
|
80
|
+
if (kind === "Prompt") return "user";
|
|
81
|
+
if (kind === "AssistantMessage") return "assistant";
|
|
82
|
+
return null; // ToolResults / lifecycle / unknown → not conversation text
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Concatenate the `text` content blocks of one store line's `data.content[]`,
|
|
87
|
+
* dropping thinking / toolUse / toolResult / non-text blocks. Returns "" when the
|
|
88
|
+
* line carries no conversation text.
|
|
89
|
+
* @param {any} data the line's `data` object
|
|
90
|
+
* @returns {string}
|
|
91
|
+
*/
|
|
92
|
+
export function extractLineText(data) {
|
|
93
|
+
if (!data || typeof data !== "object") return "";
|
|
94
|
+
const content = data.content;
|
|
95
|
+
if (typeof content === "string") return content; // defensive: bare string
|
|
96
|
+
if (!Array.isArray(content)) return "";
|
|
97
|
+
const parts = [];
|
|
98
|
+
for (const block of content) {
|
|
99
|
+
if (block && typeof block === "object" && block.kind === "text" && typeof block.data === "string") {
|
|
100
|
+
parts.push(block.data);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return parts.join("");
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Parse one session `.jsonl` into ordered transcript entries (Claude-dialect
|
|
108
|
+
* envelopes). Skips blank / malformed lines and non-conversation kinds. Never
|
|
109
|
+
* throws — a malformed line is warned-and-skipped.
|
|
110
|
+
* @param {string} raw full file contents
|
|
111
|
+
* @param {{warn(m:string):void}} logger
|
|
112
|
+
* @returns {Array<{ type: "user"|"assistant", message: { role: string, content: Array<{type:"text",text:string}> } }>}
|
|
113
|
+
*/
|
|
114
|
+
export function parseSessionJsonl(raw, logger = NOOP_LOGGER) {
|
|
115
|
+
const out = [];
|
|
116
|
+
const lines = raw.split("\n");
|
|
117
|
+
for (const line of lines) {
|
|
118
|
+
const trimmed = line.trim();
|
|
119
|
+
if (!trimmed) continue;
|
|
120
|
+
let obj;
|
|
121
|
+
try {
|
|
122
|
+
obj = JSON.parse(trimmed);
|
|
123
|
+
} catch {
|
|
124
|
+
logger.warn("[Chorus] kiro-transcript: skipping a malformed store line");
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
if (!obj || typeof obj !== "object") continue;
|
|
128
|
+
const role = roleForKind(obj.kind);
|
|
129
|
+
if (!role) continue;
|
|
130
|
+
const text = extractLineText(obj.data);
|
|
131
|
+
if (!text.trim()) continue; // a message with no conversation text → nothing to store
|
|
132
|
+
out.push({ type: role, message: { role, content: [{ type: "text", text }] } });
|
|
133
|
+
}
|
|
134
|
+
return out;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* List the run's session plus any CHILD sessions (reviewer subagents), ordered so
|
|
139
|
+
* the parent precedes its children and children are in creation order. Each entry
|
|
140
|
+
* is `{ sessionId, createdAt }`. Best-effort: unreadable metadata is skipped.
|
|
141
|
+
* @param {string} sessionId the run's (parent) sessionId
|
|
142
|
+
* @param {{ dir?: string, readdir?: (d:string)=>string[], read?: (p:string)=>string, logger?: any }} [deps]
|
|
143
|
+
* @returns {Array<{ sessionId: string, createdAt: number }>}
|
|
144
|
+
*/
|
|
145
|
+
export function collectSessionChain(sessionId, deps = {}) {
|
|
146
|
+
const dir = deps.dir ?? kiroSessionsDir();
|
|
147
|
+
const readdir = deps.readdir ?? ((d) => readdirSync(d));
|
|
148
|
+
const read = deps.read ?? ((p) => readFileSync(p, "utf8"));
|
|
149
|
+
// (no logging here — collectSessionChain silently skips unreadable metadata.)
|
|
150
|
+
|
|
151
|
+
const children = [];
|
|
152
|
+
let files = [];
|
|
153
|
+
try {
|
|
154
|
+
files = readdir(dir);
|
|
155
|
+
} catch {
|
|
156
|
+
// No store dir → just the run's own session (its jsonl may still exist elsewhere).
|
|
157
|
+
return [{ sessionId, createdAt: 0 }];
|
|
158
|
+
}
|
|
159
|
+
for (const f of files) {
|
|
160
|
+
if (!f.endsWith(".json")) continue;
|
|
161
|
+
let meta;
|
|
162
|
+
try {
|
|
163
|
+
meta = JSON.parse(read(join(dir, f)));
|
|
164
|
+
} catch {
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
if (!meta || typeof meta !== "object") continue;
|
|
168
|
+
// Child detection keys on parent_session_id (NOT session_created_reason, which
|
|
169
|
+
// can be "subagent" on a root session too).
|
|
170
|
+
if (meta.parent_session_id === sessionId) {
|
|
171
|
+
const sid = typeof meta.session_id === "string" ? meta.session_id : f.replace(/\.json$/, "");
|
|
172
|
+
children.push({ sessionId: sid, createdAt: Date.parse(meta.created_at ?? meta.updated_at ?? "") || 0 });
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
children.sort((a, b) => a.createdAt - b.createdAt);
|
|
176
|
+
// Parent first, then children in creation order.
|
|
177
|
+
return [{ sessionId, createdAt: 0 }, ...children];
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Reconstruct the transcript for a completed Kiro run and feed each entry to
|
|
182
|
+
* `onMessage`. This is the hook KiroSpawner invokes post-run. Reads the run's
|
|
183
|
+
* session `.jsonl` (and any child subagent sessions) from the store; if that
|
|
184
|
+
* yields nothing usable, falls back to a single plain-text `stdout` entry. Emits
|
|
185
|
+
* Claude-dialect envelopes so the existing upload-hooks extractor consumes them
|
|
186
|
+
* unchanged. Never throws.
|
|
187
|
+
*
|
|
188
|
+
* @param {{
|
|
189
|
+
* sessionId: string,
|
|
190
|
+
* cwd?: string,
|
|
191
|
+
* onMessage?: (obj: any) => void,
|
|
192
|
+
* stdout?: string,
|
|
193
|
+
* logger?: { info(m:string):void, warn(m:string):void, error(m:string):void },
|
|
194
|
+
* dir?: string,
|
|
195
|
+
* readdir?: (d: string) => string[],
|
|
196
|
+
* read?: (p: string) => string,
|
|
197
|
+
* }} params
|
|
198
|
+
* @returns {void}
|
|
199
|
+
*/
|
|
200
|
+
export function reconstructTranscript(params) {
|
|
201
|
+
const { sessionId, onMessage, stdout } = params;
|
|
202
|
+
const logger = params.logger ?? NOOP_LOGGER;
|
|
203
|
+
if (!onMessage) return; // nothing to feed
|
|
204
|
+
if (typeof sessionId !== "string" || !sessionId) {
|
|
205
|
+
emitFallback(stdout, onMessage, logger, "no sessionId");
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
const dir = params.dir ?? kiroSessionsDir();
|
|
210
|
+
const read = params.read ?? ((p) => readFileSync(p, "utf8"));
|
|
211
|
+
|
|
212
|
+
let emitted = 0;
|
|
213
|
+
let anyStoreRead = false;
|
|
214
|
+
try {
|
|
215
|
+
const chain = collectSessionChain(sessionId, { dir, readdir: params.readdir, read, logger });
|
|
216
|
+
for (const { sessionId: sid } of chain) {
|
|
217
|
+
let raw;
|
|
218
|
+
try {
|
|
219
|
+
raw = read(join(dir, `${sid}.jsonl`));
|
|
220
|
+
} catch {
|
|
221
|
+
continue; // this session has no readable jsonl — skip it
|
|
222
|
+
}
|
|
223
|
+
anyStoreRead = true;
|
|
224
|
+
const entries = parseSessionJsonl(raw, logger);
|
|
225
|
+
for (const entry of entries) {
|
|
226
|
+
try {
|
|
227
|
+
onMessage(entry);
|
|
228
|
+
emitted++;
|
|
229
|
+
} catch (err) {
|
|
230
|
+
logger.warn(`[Chorus] kiro-transcript: onMessage threw (ignored): ${err}`);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
} catch (err) {
|
|
235
|
+
logger.warn(`[Chorus] kiro-transcript: store reconstruction failed (${err}) — trying plain-text fallback`);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
// Fallback (option 1): the store was missing / unreadable / empty of
|
|
239
|
+
// conversation text — emit the raw stdout as a single plain-text entry so the
|
|
240
|
+
// turn is not left with an empty transcript.
|
|
241
|
+
if (emitted === 0) {
|
|
242
|
+
emitFallback(stdout, onMessage, logger, anyStoreRead ? "store had no conversation text" : "store unreadable");
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Emit the run's raw stdout as one plain-text assistant transcript entry. No-op
|
|
248
|
+
* when there is no stdout. Logs the degrade. Never throws.
|
|
249
|
+
*/
|
|
250
|
+
function emitFallback(stdout, onMessage, logger, reason) {
|
|
251
|
+
const text = stripAnsi(stdout);
|
|
252
|
+
if (!text) {
|
|
253
|
+
logger.warn(`[Chorus] kiro-transcript: ${reason} and no stdout — transcript left empty for this turn`);
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
logger.warn(`[Chorus] kiro-transcript: ${reason} — falling back to a plain-text stdout entry`);
|
|
257
|
+
try {
|
|
258
|
+
onMessage({ type: "assistant", message: { role: "assistant", content: [{ type: "text", text }] } });
|
|
259
|
+
} catch (err) {
|
|
260
|
+
logger.warn(`[Chorus] kiro-transcript: fallback onMessage threw (ignored): ${err}`);
|
|
261
|
+
}
|
|
262
|
+
}
|