@chorus-aidlc/chorus 0.15.1 → 0.16.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-build-manifest.json +394 -393
- package/.next/standalone/.next/app-path-routes-manifest.json +46 -46
- package/.next/standalone/.next/build-manifest.json +5 -5
- package/.next/standalone/.next/prerender-manifest.json +21 -21
- 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 +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/settings/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +2 -2
- package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
- package/.next/standalone/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin/companies/new.html +2 -2
- package/.next/standalone/.next/server/app/admin/companies/new.rsc +2 -2
- package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin/companies.html +2 -2
- package/.next/standalone/.next/server/app/admin/companies.rsc +2 -2
- package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/admin.html +2 -2
- package/.next/standalone/.next/server/app/admin.rsc +2 -2
- package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agent-connections/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent-connections/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/comments/route.js +1 -1
- package/.next/standalone/.next/server/app/api/comments/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/connection-heartbeat/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/connection-heartbeat/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/control/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/control/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/directory-request/report/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/directory-request/report/route_client-reference-manifest.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.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/executions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/pending-turns/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/pending-turns/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/resume/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/resume/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/resume/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/transcript/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/transcript/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/transcript/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon/turn-advance/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-directory-requests/[uuid]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-directory-requests/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-directory-requests/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/daemon-directory-requests/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.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/conversational/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/conversational/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/conversational/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mcp/route.js +2 -2
- package/.next/standalone/.next/server/app/api/mcp/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/me/assignments/route.js +1 -1
- package/.next/standalone/.next/server/app/api/me/assignments/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mentionables/route.js +1 -1
- package/.next/standalone/.next/server/app/api/mentionables/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/preferences/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/preferences/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/read-all/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/read-all/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/unread-count/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-visits/pin/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-visits/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/project-visits/visit/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/agent-cwds/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/agent-cwds/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/agent-cwd-options/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/agent-cwd-options/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/references/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/references/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/session/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/sessions/[uuid]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/index.html +2 -2
- package/.next/standalone/.next/server/app/index.rsc +2 -2
- package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/admin.html +2 -2
- package/.next/standalone/.next/server/app/login/admin.rsc +2 -2
- package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/callback.html +2 -2
- package/.next/standalone/.next/server/app/login/callback.rsc +2 -2
- package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login/pick-workspace.html +2 -2
- package/.next/standalone/.next/server/app/login/pick-workspace.rsc +2 -2
- package/.next/standalone/.next/server/app/login.html +2 -2
- package/.next/standalone/.next/server/app/login.rsc +2 -2
- package/.next/standalone/.next/server/app/onboarding/page.js +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 +2 -2
- package/.next/standalone/.next/server/app/onboarding.rsc +3 -3
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects.html +2 -2
- package/.next/standalone/.next/server/app/projects.rsc +3 -3
- package/.next/standalone/.next/server/app/settings.html +2 -2
- package/.next/standalone/.next/server/app/settings.rsc +4 -4
- package/.next/standalone/.next/server/app-paths-manifest.json +46 -46
- package/.next/standalone/.next/server/chunks/1318.js +1 -1
- package/.next/standalone/.next/server/chunks/1559.js +2 -2
- package/.next/standalone/.next/server/chunks/2570.js +2 -2
- package/.next/standalone/.next/server/chunks/2572.js +1 -1
- 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/3594.js +1 -0
- package/.next/standalone/.next/server/chunks/{2547.js → 4011.js} +3 -3
- package/.next/standalone/.next/server/chunks/4394.js +1 -0
- package/.next/standalone/.next/server/chunks/4827.js +1 -1
- package/.next/standalone/.next/server/chunks/5205.js +1 -0
- package/.next/standalone/.next/server/chunks/5245.js +1 -1
- package/.next/standalone/.next/server/chunks/{2282.js → 5351.js} +3 -3
- 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/6506.js +3 -3
- package/.next/standalone/.next/server/chunks/6667.js +1 -0
- package/.next/standalone/.next/server/chunks/679.js +1 -1
- package/.next/standalone/.next/server/chunks/6995.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 -1
- package/.next/standalone/.next/server/chunks/920.js +1 -1
- package/.next/standalone/.next/server/chunks/9213.js +1 -1
- package/.next/standalone/.next/server/chunks/9378.js +1 -1
- package/.next/standalone/.next/server/chunks/9793.js +1 -0
- 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/pages/404.html +2 -2
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/pages-manifest.json +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/chunks/11595.b6f8ad33572b32fe.js +1 -0
- package/.next/standalone/.next/static/chunks/19887-9f459ee9e8d0855f.js +1 -0
- package/.next/standalone/.next/static/chunks/29108-b9b232255811ffa8.js +1 -0
- package/.next/standalone/.next/static/chunks/{31308-bb4a97b3f39c22dd.js → 31308-fda6febfb2882a28.js} +1 -1
- package/.next/standalone/.next/static/chunks/33456.e8550ad410031e29.js +1 -0
- package/.next/standalone/.next/static/chunks/35432-ee83da56c49ef6f8.js +1 -0
- package/.next/standalone/.next/static/chunks/4860.b405fc235b36271b.js +1 -0
- package/.next/standalone/.next/static/chunks/53073-5fd399cb25a11740.js +1 -0
- package/.next/standalone/.next/static/chunks/6603-07faab08560f7ecd.js +1 -0
- package/.next/standalone/.next/static/chunks/66980-652990fcf3212c94.js +10 -0
- package/.next/standalone/.next/static/chunks/78155-db70d9684a1e77a2.js +1 -0
- package/.next/standalone/.next/static/chunks/78917-7354d3b6908da7d1.js +1 -0
- package/.next/standalone/.next/static/chunks/82751-de255af4418d53e4.js +1 -0
- package/.next/standalone/.next/static/chunks/94643-6d31df78aa3074b5.js +1 -0
- package/.next/standalone/.next/static/chunks/96170-75da13decdb6f73f.js +1 -0
- package/.next/standalone/.next/static/chunks/99366-425e9ef22e60e3e2.js +1 -0
- package/.next/standalone/.next/static/chunks/99373.9dce8f30802824fc.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-cea0bb3e3a295bea.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-007278623926490f.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-b6ecaf52f6b81ec7.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/{page-2c9d3f4c6e0ff807.js → page-82404154708e48a9.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/page-f5a351c544ed23d7.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-3cd46bec9383b191.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-d5b222f379b2e8ca.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/{page-ed9415921188b4d3.js → page-6abc7d1785e2b999.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/{page-c70af8cac7bdc483.js → page-7f87113e5d8bcf6e.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/{page-715b000c156a080c.js → page-30ab1573c4bd466f.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-b21d4184d9ca0b25.js +1 -0
- package/.next/standalone/.next/static/chunks/app/onboarding/page-3b6c54f887108635.js +1 -0
- package/.next/standalone/.next/static/chunks/{webpack-e181cbbb1e041891.js → webpack-b54e0c78eded76be.js} +1 -1
- package/.next/standalone/.next/static/css/893d99a21153c9b0.css +1 -0
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/public/chorus-plugin/.claude-plugin/plugin.json +1 -1
- package/.next/standalone/public/chorus-plugin/agents/code-reviewer.md +1 -1
- package/.next/standalone/public/chorus-plugin/agents/proposal-reviewer.md +1 -0
- package/.next/standalone/public/chorus-plugin/agents/task-reviewer.md +2 -0
- package/.next/standalone/public/chorus-plugin/skills/brainstorm/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +4 -3
- package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/docs/SKILL.md +68 -0
- package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/openspec-aware/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/quick-dev/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/review/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/yolo/SKILL.md +1 -1
- package/.next/standalone/public/install-kiro.sh +10 -7
- package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus-code-reviewer.json +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus-proposal-reviewer.json +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus-task-reviewer.json +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/agents/chorus.json +1 -0
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-brainstorm/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-develop/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-docs/SKILL.md +68 -0
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-idea/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-openspec-aware/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-proposal/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-quick-dev/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-review/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-yolo/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/steering/chorus.md +3 -2
- package/.next/standalone/public/kiro-plugin/bin/chorus-api.sh +1 -1
- package/.next/standalone/public/skill/brainstorm-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/chorus/SKILL.md +4 -3
- package/.next/standalone/public/skill/code-reviewer-chorus/SKILL.md +2 -2
- package/.next/standalone/public/skill/develop-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/docs-chorus/SKILL.md +70 -0
- package/.next/standalone/public/skill/idea-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/package.json +9 -5
- package/.next/standalone/public/skill/proposal-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/proposal-reviewer-chorus/SKILL.md +2 -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 +2 -1
- package/.next/standalone/public/skill/yolo-chorus/SKILL.md +1 -1
- package/README.ja.md +31 -359
- package/README.ko.md +33 -360
- package/README.md +39 -367
- package/README.zh.md +36 -341
- package/cli/claude-spawner.mjs +15 -6
- package/cli/client-args.mjs +8 -0
- package/cli/codex-spawner.mjs +7 -3
- package/cli/control-handler.mjs +13 -3
- package/cli/credentials.mjs +41 -0
- package/cli/daemon-config.mjs +202 -1
- package/cli/daemon-install-config.mjs +38 -1
- package/cli/daemon-rest-client.mjs +11 -3
- package/cli/daemon.mjs +274 -11
- package/cli/event-router.mjs +17 -5
- package/cli/login.mjs +90 -2
- package/cli/prompts.mjs +116 -1
- package/cli/turn-reporter.mjs +5 -1
- package/cli/wake-queue.mjs +57 -35
- package/cli/waker.mjs +125 -36
- package/package.json +1 -1
- package/prisma/migrations/20260814101500_add_typed_assignment_provenance/migration.sql +2 -0
- package/prisma/schema.prisma +4 -2
- package/.next/standalone/.next/server/chunks/1114.js +0 -1
- package/.next/standalone/.next/server/chunks/1524.js +0 -1
- package/.next/standalone/.next/server/chunks/330.js +0 -1
- package/.next/standalone/.next/server/chunks/3525.js +0 -1
- package/.next/standalone/.next/server/chunks/4070.js +0 -1
- package/.next/standalone/.next/server/chunks/8540.js +0 -1
- package/.next/standalone/.next/static/chunks/11595.69e774e65ffda45f.js +0 -1
- package/.next/standalone/.next/static/chunks/18351-12dc856208d79e10.js +0 -1
- package/.next/standalone/.next/static/chunks/33456.48112aa459fd9c68.js +0 -1
- package/.next/standalone/.next/static/chunks/37938-0b9a2b891c04b166.js +0 -1
- package/.next/standalone/.next/static/chunks/4340-a33120fb742af57e.js +0 -1
- package/.next/standalone/.next/static/chunks/4860.496d21fc6db9e153.js +0 -1
- package/.next/standalone/.next/static/chunks/68326-61feeb2f6cddd338.js +0 -1
- package/.next/standalone/.next/static/chunks/72974-7e63b565a9ef443b.js +0 -1
- package/.next/standalone/.next/static/chunks/78917-f91904c6c2d12dab.js +0 -1
- package/.next/standalone/.next/static/chunks/80748-e971c5a5d6ef967d.js +0 -1
- package/.next/standalone/.next/static/chunks/80904-973284d1fe916c38.js +0 -1
- package/.next/standalone/.next/static/chunks/94426-39b6da238425f9b7.js +0 -10
- package/.next/standalone/.next/static/chunks/94470-cae3b3ad4e51d2ff.js +0 -1
- package/.next/standalone/.next/static/chunks/94643-ba1ebff5769d2b50.js +0 -1
- package/.next/standalone/.next/static/chunks/99373.5ac319a55a8f99a1.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/layout-177a3fa88be94b4a.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-ae7c9d32fa1c2532.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-4a8ac49308a4e23b.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/page-03408be00dc4822b.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-dd5a0d1e50226c78.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-596d97796dd55e2f.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-e786a59c24eb5bda.js +0 -1
- package/.next/standalone/.next/static/chunks/app/onboarding/page-df7c97cefb508201.js +0 -1
- package/.next/standalone/.next/static/css/ef995b001437e3ef.css +0 -1
- /package/.next/standalone/.next/static/{8kqUZqMF8xgdDXm_I4XdF → YTZwWTfE0BsJnjCDYCEHi}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{8kqUZqMF8xgdDXm_I4XdF → YTZwWTfE0BsJnjCDYCEHi}/_ssgManifest.js +0 -0
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<img src="packages/landing/public/images/chorus-slug.png" alt="Chorus" width="240" />
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
|
-
<p align="center"><strong>The
|
|
5
|
+
<p align="center"><strong>The harness for your coding agents. Agents propose, humans verify, software ships.</strong></p>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
8
|
<a href="https://discord.gg/SwcCMaMmR">
|
|
@@ -15,7 +15,9 @@
|
|
|
15
15
|
|
|
16
16
|
<p align="center"><strong>English</strong> · <a href="README.zh.md">中文</a> · <a href="README.ko.md">한국어</a> · <a href="README.ja.md">日本語</a></p>
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
<p align="center"><a href="https://doc.chorus-ai.dev"><strong>📖 Documentation</strong></a></p>
|
|
19
|
+
|
|
20
|
+
Chorus is the harness for your coding agents. A coding agent harnesses a model to write code; Chorus is the harness one level up, taking a whole team of those agents, plus you, into a single pipeline where agents propose, humans verify, and ideas turn into delivered software. Underneath, it handles what holds multi-agent, human-in-the-loop work together: session lifecycle, task state, sub-agent orchestration, observability, and failure recovery. Every AI Agent gets fine-grained, configurable permissions.
|
|
19
21
|
|
|
20
22
|
Inspired by the **[AI-DLC (AI-Driven Development Lifecycle)](https://aws.amazon.com/blogs/devops/ai-driven-development-life-cycle/)** methodology. Core philosophy: **Reversed Conversation** — AI proposes, humans verify.
|
|
21
23
|
|
|
@@ -30,283 +32,80 @@ Human idea:write proposal:write task:write *:admin *:admin
|
|
|
30
32
|
creates + elaborate + drafts + reports + verifies + closes
|
|
31
33
|
```
|
|
32
34
|
|
|
33
|
-
The labels under each stage are the **permissions** an actor needs
|
|
35
|
+
The labels under each stage are the **permissions** an actor needs there — granted to a human, an Agent, or both. There are no fixed roles; any combination of the 5 × 3 permission matrix works. → [Agent permissions](https://doc.chorus-ai.dev/guides/manage-agents/)
|
|
34
36
|
|
|
35
37
|
---
|
|
36
38
|
|
|
37
39
|
## What's New
|
|
38
40
|
|
|
41
|
+
**[v0.16.1](https://chorus-ai.dev/blog/chorus-v0.16.1-release/)** — One `chorus daemon` now serves many independent agents at once — each with its own key, working directories, backend, and permissions via an `agents[]` array — and agents can hand work to each other by @-mention, with each wake landing in that agent's own project directory.
|
|
42
|
+
|
|
43
|
+
**[v0.16.0](https://chorus-ai.dev/blog/chorus-v0.16.0-release/)** — A `docs` skill that points agents at the live docs site ([doc.chorus-ai.dev](https://doc.chorus-ai.dev)), so they answer from the current docs instead of reciting from memory.
|
|
44
|
+
|
|
39
45
|
**[v0.15.0](https://chorus-ai.dev/blog/chorus-v0.15.0-release/)** — Project-level Agent working directories: each user can bind every Agent in a project to a host and cwd, browse only daemon-approved roots, and use the same target across assignment, wake, resume, and later turns without moving active sessions. Codex now persists its resumable backend thread ID separately and drops obsolete Chorus session-management steps.
|
|
40
46
|
|
|
41
47
|
**[v0.14.1](https://chorus-ai.dev/blog/chorus-v0.14.1-release/)** — Amazon Kiro CLI is the fourth way to connect (Kiro CLI v2): a one-command `install-kiro.sh` plugin and a `--agent kiro` daemon backend, plus daemon fixes.
|
|
42
48
|
|
|
43
49
|
**[v0.14.0](https://chorus-ai.dev/blog/chorus-v0.14.0-release/)** — Dark mode across the app (light / dark / system). Reference artifacts: attach docs, repos, issues, and articles to any idea, proposal, or task, readable inline and over MCP. Korean and Japanese locales (Korean contributed by the community). **Theme** ideas for grouping, plus daemon Start Development / Yolo buttons, conversational idea entry, crash-resume, and `chorus daemon install`.
|
|
44
50
|
|
|
45
|
-
**[v0.13.0](https://chorus-ai.dev/blog/chorus-v0.13.0-release/)** — Per-project resource mind-map: a new Graph view wires each project's Ideas, Proposals, Documents, and Tasks into one collapsible tree, generated from the project's own structure. Every card carries its current status (ideas show the derived pipeline status the idea tracker uses), a title search auto-expands the path to every match with highlight/dim and prev/next navigation, and the same zoom/pan canvas renders on desktop and mobile (pinch + double-tap).
|
|
46
|
-
|
|
47
|
-
**[v0.12.0](https://chorus-ai.dev/blog/chorus-v0.12.0-release/)** — Addressable daemon instances: one `chorus daemon` can serve multiple working directories (`--cwd`), and each `(agent, host, cwd)` becomes an individually visible, individually targetable instance across presence, @-mention, and assignment. Pin an instance once on an idea and its proposals, tasks, and wakes inherit it; pinned wakes are delivered to exactly that instance instead of broadcast. Comment @-mentions render as live online-status badges, and comments switch to cursor-based infinite scroll.
|
|
48
|
-
|
|
49
|
-
**[v0.11.0](https://chorus-ai.dev/blog/chorus-v0.11.0-release/)** — The Chorus Daemon: `chorus daemon` turns your machine into a resident agent runtime that wakes a local Claude Code on each dispatch. An Agent Connections surface gives live observability and control — streaming transcripts, instruction injection, and interrupt / resume — and a "Verify Elaborate" button wakes the assigned agent to write the proposal.
|
|
50
|
-
|
|
51
|
-
**[v0.10.0](https://chorus-ai.dev/blog/chorus-v0.10.0-release/)** — Single-parent idea lineage: an idea may derive a child or be attached under another, forming a forest. The relation is intentionally weak — a parent surfaces a read-only "+N derived" rollup and does not constrain any child's elaboration, proposal, or task flow. Idea browsing consolidates onto the Dashboard (a three-way Ideas / Lineage / Stats view switch with an adaptive default); the standalone Idea List page is retired and its URLs 308-redirect to the Dashboard.
|
|
52
|
-
|
|
53
|
-
**[v0.9.4](https://chorus-ai.dev/blog/chorus-v0.9.4-release/)** — OpenClaw plugin rewritten on the OpenClaw 2026.4.27 Plugin SDK (native MCP registration, `runEmbeddedAgent` for SSE wake, reviewers as native skills); Codex plugin hooks now ship inside the package, with an installer that cleans up legacy hook copies in the user directory.
|
|
54
|
-
|
|
55
|
-
**[v0.9.0](https://chorus-ai.dev/blog/chorus-v0.9.0-release/)** — Brainstorm skill for fuzzy ideas (open-ended chat before structured Q&A) and idea-completion reports (every shipped idea gets a Summary / Decisions / Follow-ups writeup, surfaced on the idea overview).
|
|
56
|
-
|
|
57
|
-
**[v0.8.0](https://chorus-ai.dev/blog/chorus-v0.8.0-release/)** — OpenSpec-aware mode (Claude Code): auto-activates when an `openspec/` directory and the `openspec` CLI are both present, adds `/opsx/{explore,propose,apply,archive}` and a post-verify archive-trigger hook.
|
|
58
|
-
|
|
59
51
|
> Full changelog: [CHANGELOG.md](CHANGELOG.md)
|
|
60
52
|
|
|
61
53
|
---
|
|
62
54
|
|
|
63
55
|
## Quick Start
|
|
64
56
|
|
|
65
|
-
|
|
57
|
+
Two commands. No database, no Docker, no config files.
|
|
66
58
|
|
|
67
59
|
```bash
|
|
68
60
|
npm install -g @chorus-aidlc/chorus
|
|
69
61
|
chorus
|
|
70
62
|
```
|
|
71
63
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
> **Note:** PGlite is an embedded, single-process PostgreSQL — great for local single-user usage, but its connection handling has limits under concurrent load. If you plan to run multiple agents or users simultaneously, use an external PostgreSQL via `DATABASE_URL=postgresql://...` or the full [Docker Compose](#quick-start-with-docker-recommended) stack.
|
|
75
|
-
|
|
76
|
-
Default login: `admin@chorus.local` / `chorus`
|
|
77
|
-
|
|
78
|
-
### Options
|
|
79
|
-
|
|
80
|
-
```bash
|
|
81
|
-
# Custom port
|
|
82
|
-
chorus --port 3000
|
|
83
|
-
|
|
84
|
-
# Custom data directory (default: ~/.chorus-data)
|
|
85
|
-
chorus --data-dir /path/to/data
|
|
86
|
-
|
|
87
|
-
# Custom credentials
|
|
88
|
-
DEFAULT_USER=me@example.com DEFAULT_PASSWORD=secret chorus
|
|
89
|
-
|
|
90
|
-
# Use an external PostgreSQL instead of embedded PGlite
|
|
91
|
-
DATABASE_URL=postgresql://user:pass@host:5432/chorus chorus
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
### Other deployment options
|
|
95
|
-
|
|
96
|
-
| Method | Command |
|
|
97
|
-
|--------|---------|
|
|
98
|
-
| **npm** (simplest) | `npm i -g @chorus-aidlc/chorus && chorus` |
|
|
99
|
-
| **Docker (standalone)** | [`docker compose -f docker-compose.local.yml up`](#quick-start-with-docker-recommended) |
|
|
100
|
-
| **Docker (full stack)** | [`docker compose up`](#quick-start-with-docker-recommended) (PostgreSQL + Redis + Chorus) |
|
|
101
|
-
| **AWS CDK** | [Deploy to AWS](#deploy-to-aws) |
|
|
102
|
-
|
|
103
|
-
### `chorus daemon` — Connect as Agent Runtime
|
|
104
|
-
|
|
105
|
-
The `chorus daemon` connects your local machine to a remote Chorus server as an agent runtime and executes tasks assigned by Chorus.
|
|
106
|
-
|
|
107
|
-
> **Agent backends:** **Claude Code** (default) and **Codex** are supported — select with `--agent codex` (or `CHORUS_AGENT=codex`). Support for other agent CLIs (Copilot, etc.) is planned for future releases.
|
|
108
|
-
|
|
109
|
-
```bash
|
|
110
|
-
chorus login # Authenticate (opens browser)
|
|
111
|
-
chorus daemon # Start daemon in foreground
|
|
112
|
-
chorus daemon -d # Start daemon in background (detached)
|
|
113
|
-
chorus daemon install # Install as a boot-autostart service (Linux) — recommended
|
|
114
|
-
chorus daemon uninstall # Remove the installed service
|
|
115
|
-
chorus daemon stop # Stop the daemon (delegates to systemd when installed)
|
|
116
|
-
chorus daemon stop --force # Force-clean the pidfile if a stuck pid blocks stop
|
|
117
|
-
chorus daemon status # Check daemon status
|
|
118
|
-
chorus daemon restart # Restart the daemon
|
|
119
|
-
chorus daemon logs # View daemon logs
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
**Key features:**
|
|
123
|
-
|
|
124
|
-
- **Claude Code & Codex backends** — Auto-detects the `claude` (or `codex`) CLI on your PATH; pick with `--agent codex`
|
|
125
|
-
- **Background mode** — Run with `-d` flag; manage with `stop/restart/logs`
|
|
126
|
-
- **Boot-autostart service** — `chorus daemon install` generates a correct `systemd --user` unit and starts it (see below); `status/stop/restart/logs` then transparently delegate to systemd
|
|
127
|
-
- **Permission modes** — Default is full access (yolo); use `--chorus-only` to restrict to Chorus MCP tools only
|
|
128
|
-
- **Multi-path** — Serve several working directories from one daemon with repeatable `--cwd` (see below)
|
|
129
|
-
- **Interactive setup** — Prompts for credentials on first start if not already configured
|
|
64
|
+
Chorus starts with an embedded PostgreSQL (PGlite), runs migrations, and opens at **http://localhost:8637**. Default login: `admin@chorus.local` / `chorus`.
|
|
130
65
|
|
|
131
|
-
|
|
66
|
+
> Running multiple agents or deploying to production? Use an external PostgreSQL, Docker, or AWS → **[Deploy & self-host](https://doc.chorus-ai.dev/guides/deployment-overview/)**.
|
|
132
67
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
```bash
|
|
136
|
-
chorus daemon install --cwd ~/work/repo-a --cwd ~/work/repo-b # install + start now, autostart at login
|
|
137
|
-
chorus daemon uninstall # disable + remove the service
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
On Linux, `install` generates a `systemd --user` unit that runs the daemon in the **foreground** (`Type=simple`, no `-d`) so systemd owns the process directly, then `daemon-reload` + `enable --now`. It captures the `--cwd`/`--agent`/`--chorus-only` flags you pass. Do **not** hand-write a `Type=forking` unit around `chorus daemon -d` — the daemon self-daemonizes, which systemd can't track and which loops on restart; let `install` write the right unit. On macOS/Windows, `install` prints a correct template you install manually. Run `chorus login` first so the unit can see your credentials. See [docs/DAEMON.md](docs/DAEMON.md) for details.
|
|
141
|
-
|
|
142
|
-
#### Serve multiple working directories
|
|
143
|
-
|
|
144
|
-
One daemon can serve several local working directories at once — each declared path registers as an independent connection (its own session + wake loop) under the same agent. A path is **just** a directory the daemon serves; it carries no project binding.
|
|
145
|
-
|
|
146
|
-
```bash
|
|
147
|
-
chorus daemon --cwd ~/work/repo-a --cwd ~/work/repo-b # repeatable flag
|
|
148
|
-
CHORUS_DAEMON_CWDS="~/work/repo-a:~/work/repo-b" chorus daemon # or env (`:`- or `,`-separated)
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
With no `--cwd`, the daemon serves the single directory it was launched from.
|
|
152
|
-
|
|
153
|
-
#### Configuration file — `~/.chorus/daemon.json`
|
|
154
|
-
|
|
155
|
-
`chorus login` writes credentials here (mode `0600`). You can also add daemon tunables to the **same** file. Every field is optional; flags and environment variables always take precedence over the file.
|
|
156
|
-
|
|
157
|
-
```json
|
|
158
|
-
{
|
|
159
|
-
"url": "https://chorus.example.com",
|
|
160
|
-
"apiKey": "cho_xxxxxxxxxxxxxxxxxxxxxxxx",
|
|
161
|
-
"agentUuid": "00000000-0000-0000-0000-000000000000",
|
|
162
|
-
"agentName": "My Daemon Agent",
|
|
163
|
-
"cwds": ["~/work/repo-a", "~/work/repo-b"],
|
|
164
|
-
"agent": "codex",
|
|
165
|
-
"sigintTimeoutMs": 10000
|
|
166
|
-
}
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
| Field | Type | Written by / used for | Precedence (highest first) |
|
|
170
|
-
|-------|------|-----------------------|----------------------------|
|
|
171
|
-
| `url` | string | Remote Chorus server URL | `--url` flag → `CHORUS_URL` → file |
|
|
172
|
-
| `apiKey` | string | Agent API key (`cho_…`) | `--api-key` flag → `CHORUS_API_KEY` → file |
|
|
173
|
-
| `agentUuid` / `agentName` | string | Authenticated identity (recorded at login) | written by `chorus login` |
|
|
174
|
-
| `cwds` | string[] | Working directories the daemon serves (multi-path) | `--cwd` flag(s) → `CHORUS_DAEMON_CWDS` → file → launch dir |
|
|
175
|
-
| `browseRoots` | string[] | Roots allowed for project and temporary directory browsing | `--browse-root` flag(s) → `CHORUS_DAEMON_BROWSE_ROOTS` → file → user home |
|
|
176
|
-
| `agent` | string | Local agent backend to wake (`claude-code` / `codex` / `kiro`) | `--agent` flag → `CHORUS_AGENT` → file → `claude-code` |
|
|
177
|
-
| `sigintTimeoutMs` | number | Grace window (ms) after SIGINT before a forceful kill (default `10000`) | `--sigint-timeout` flag → `CHORUS_DAEMON_SIGINT_TIMEOUT` → file → `10000` |
|
|
178
|
-
| `yoloAckAt` | string | Internal — timestamp of a TTY yolo confirmation (managed automatically) | — |
|
|
179
|
-
|
|
180
|
-
On startup the daemon banner prints the **exact `daemon.json` path it read** (and whether the file exists), so you always know which file to edit.
|
|
68
|
+
To turn your local machine into an agent runtime that picks up assigned tasks, run `chorus daemon` → **[Daemon operations](https://doc.chorus-ai.dev/guides/daemon-operations/)** · **[Remote control](https://doc.chorus-ai.dev/guides/remote-control/)**.
|
|
181
69
|
|
|
182
70
|
---
|
|
183
71
|
|
|
184
|
-
##
|
|
72
|
+
## See It in Action
|
|
185
73
|
|
|
186
|
-
### Remote Agent Wake —
|
|
74
|
+
### Remote Agent Wake — dispatch to a directory, watch it run
|
|
187
75
|
|
|
188
76
|

|
|
189
77
|
|
|
190
|
-
Assign an idea to a
|
|
78
|
+
Assign an idea to a directory on a remote agent, then open the conversation and watch the local Claude Code pick up the work and run in real time — no terminal, no manual resume.
|
|
191
79
|
|
|
192
|
-
### Project Resource Graph —
|
|
80
|
+
### Project Resource Graph — the whole project as a live mind-map
|
|
193
81
|
|
|
194
82
|

|
|
195
83
|
|
|
196
|
-
|
|
84
|
+
Ideas, Proposals, Documents, and Tasks laid out as one connected tree, with each card's status updating live as the agents work.
|
|
197
85
|
|
|
198
|
-
### Proposal — AI
|
|
86
|
+
### Proposal — AI generates plans in real time
|
|
199
87
|
|
|
200
88
|

|
|
201
89
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
### Pixel Workspace — Real-time Agent Status
|
|
205
|
-
|
|
206
|
-

|
|
90
|
+
A PM Agent analyzes requirements and generates a PRD plus a task DAG, with live presence indicators showing agent activity.
|
|
207
91
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
### Kanban — Real-time Task Flow
|
|
92
|
+
### Kanban — real-time task flow
|
|
211
93
|
|
|
212
94
|

|
|
213
95
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
### Kanban & Task DAG
|
|
217
|
-
|
|
218
|
-

|
|
219
|
-
|
|
220
|
-
Kanban board for task status tracking alongside a dependency DAG showing execution order and parallel paths.
|
|
221
|
-
|
|
222
|
-
### Idea & Requirements Elaboration
|
|
223
|
-
|
|
224
|
-

|
|
225
|
-
|
|
226
|
-
PM Agents clarify requirements through structured Q&A rounds before creating Proposals. The panel shows idea details alongside completed elaboration rounds with answers and category tags.
|
|
227
|
-
|
|
228
|
-
### Proposal Review
|
|
229
|
-
|
|
230
|
-

|
|
231
|
-
|
|
232
|
-
Proposals generated by the PM Agent contain document drafts and task DAG drafts. Admins review and approve or reject on this panel.
|
|
233
|
-
|
|
234
|
-
### Acceptance Criteria — Dual-Path Verification
|
|
235
|
-
|
|
236
|
-

|
|
237
|
-
|
|
238
|
-
Dev Agent self-checks and Admin reviews each acceptance criterion independently, with structured pass/fail evidence for every item.
|
|
239
|
-
|
|
240
|
-
### Universal Search — Cmd+K Command Palette
|
|
241
|
-
|
|
242
|
-

|
|
243
|
-
|
|
244
|
-
A Cmd+K command palette for searching across all 6 entity types (Tasks, Ideas, Proposals, Documents, Projects, Project Groups). Supports scope filtering (Global / Group / Project), filter tabs per entity type, and keyboard navigation. Both the Web UI and AI agents (via `chorus_search` MCP tool) share the same search backend.
|
|
96
|
+
Task cards flow between To Do → In Progress → To Verify as agents work, with presence indicators on whatever is being touched.
|
|
245
97
|
|
|
246
98
|
---
|
|
247
99
|
|
|
248
|
-
##
|
|
249
|
-
|
|
250
|
-
- **Session Lifecycle** — Persistent sessions with heartbeats, auto-expiry, and failure recovery
|
|
251
|
-
- **Task DAG** — Dependency modeling, cycle detection, and interactive visualization
|
|
252
|
-
- **Kanban** — Real-time task flow with Worker badges and agent presence
|
|
253
|
-
- **Multi-Agent Collaboration** — Claude Code Agent Teams (Swarm Mode) for parallel execution
|
|
254
|
-
- **Fine-Grained Agent Permissions** — 5 resources × 3 actions grid with preset + custom combinations ([details](docs/PERMISSIONS.md))
|
|
255
|
-
- **Chorus Plugin** — Lifecycle hooks automate session create/close, heartbeats, and context injection
|
|
256
|
-
- **Requirements Elaboration** — Structured Q&A rounds before proposal creation
|
|
257
|
-
- **Proposal Approval Flow** — PM drafts, Admin approves, drafts materialize into real entities
|
|
258
|
-
- **Notifications** — In-app + SSE push + Redis Pub/Sub with per-user preferences ([design doc](src/app/api/notifications/README.md))
|
|
259
|
-
- **@Mention** — Tiptap autocomplete, permission-scoped search, mention notifications ([design doc](src/app/api/mentionables/README.md))
|
|
260
|
-
- **Activity Stream** — Full audit trail with session attribution
|
|
261
|
-
- **Universal Search** — Cmd+K across 6 entity types, 3 scope levels, snippet generation ([design doc](docs/SEARCH.md))
|
|
262
|
-
---
|
|
100
|
+
## Connect an Agent
|
|
263
101
|
|
|
264
|
-
|
|
102
|
+
The fastest path is the in-app wizard: open **Settings → Setup Guide**. It creates the API key and shows the exact commands for your client — Claude Code, Codex, Kiro, OpenCode, OpenClaw, Pi, or any MCP-compatible agent.
|
|
265
103
|
|
|
266
|
-
|
|
267
|
-
┌──────────────────────────────────────────────────────────────────┐
|
|
268
|
-
│ Chorus — Agent Harness (:8637) │
|
|
269
|
-
│ │
|
|
270
|
-
│ ┌── Harness Capabilities ───────────────────────────────────┐ │
|
|
271
|
-
│ │ Session Lifecycle │ Task State Machine │ Context Inject │ │
|
|
272
|
-
│ │ Sub-Agent Orchestration │ Observability │ Failure Recovery│ │
|
|
273
|
-
│ └───────────────────────────────────────────────────────────┘ │
|
|
274
|
-
│ │
|
|
275
|
-
│ ┌── Chorus Plugin (lifecycle hooks) ────────────────────────┐ │
|
|
276
|
-
│ │ SubagentStart/Stop │ Heartbeat │ Skill & Context Inject │ │
|
|
277
|
-
│ └───────────────────────────────────────────────────────────┘ │
|
|
278
|
-
│ │
|
|
279
|
-
│ ┌── API Layer ──────────────────────────────────────────────┐ │
|
|
280
|
-
│ │ /api/mcp — MCP Streaming (50+ tools, permission-gated) │ │
|
|
281
|
-
│ │ /api/* — REST API (Web UI + SSE push) │ │
|
|
282
|
-
│ └───────────────────────────────────────────────────────────┘ │
|
|
283
|
-
│ │
|
|
284
|
-
│ ┌── Service Layer ──────────────────────────────────────────┐ │
|
|
285
|
-
│ │ AI-DLC Workflow │ UUID-first │ Multi-tenant │ │
|
|
286
|
-
│ └───────────────────────────────────────────────────────────┘ │
|
|
287
|
-
│ │
|
|
288
|
-
│ ┌── Web UI (React 19 + Tailwind + shadcn/ui) ──────────────┐ │
|
|
289
|
-
│ │ Kanban │ Task DAG │ Proposals │ Activity │ Sessions │ │
|
|
290
|
-
│ └───────────────────────────────────────────────────────────┘ │
|
|
291
|
-
└──────────────────────────────────────────────────────────────────┘
|
|
292
|
-
↑ ↑ ↑ ↑
|
|
293
|
-
Agent w/ Agent w/ Agent w/ Human
|
|
294
|
-
idea+proposal task:write *:admin perms (Browser)
|
|
295
|
-
:write perms perms (proxy approval)
|
|
296
|
-
(LLM) (LLM) (LLM)
|
|
297
|
-
│
|
|
298
|
-
┌──────────▼──────────┐ ┌─────────────────────┐
|
|
299
|
-
│ PostgreSQL + Prisma │ │ Redis (optional) │
|
|
300
|
-
└─────────────────────┘ │ Pub/Sub for SSE │
|
|
301
|
-
└─────────────────────┘
|
|
302
|
-
```
|
|
104
|
+
Full per-client guides → **[Agent platforms](https://doc.chorus-ai.dev/reference/agents/)**.
|
|
303
105
|
|
|
304
|
-
|
|
106
|
+
API keys are created under **Settings → Agents → Create API Key**. They start with `cho_` and are shown only once.
|
|
305
107
|
|
|
306
|
-
|
|
307
|
-
|---------|-------------|
|
|
308
|
-
| [`packages/openclaw-plugin`](packages/openclaw-plugin) | **OpenClaw Plugin** — Connects [OpenClaw](https://openclaw.ai) to Chorus via persistent SSE + MCP bridge. |
|
|
309
|
-
| [`packages/chorus-cdk`](packages/chorus-cdk) | **AWS CDK** — Infrastructure-as-code for deploying Chorus to AWS. |
|
|
108
|
+
---
|
|
310
109
|
|
|
311
110
|
## Tech Stack
|
|
312
111
|
|
|
@@ -314,152 +113,25 @@ A Cmd+K command palette for searching across all 6 entity types (Tasks, Ideas, P
|
|
|
314
113
|
|-----------|-----------|
|
|
315
114
|
| Framework | Next.js 15 (App Router, Turbopack) |
|
|
316
115
|
| Language | TypeScript 5 (strict mode) |
|
|
317
|
-
| Frontend | React 19, Tailwind CSS 4, shadcn/ui
|
|
318
|
-
|
|
|
319
|
-
|
|
|
320
|
-
| Cache/Pub-Sub | Redis 7 (ioredis) — optional |
|
|
321
|
-
| Agent Integration | MCP SDK 1.26 (HTTP Streamable Transport) |
|
|
116
|
+
| Frontend | React 19, Tailwind CSS 4, shadcn/ui |
|
|
117
|
+
| Data | PostgreSQL 16 + Prisma 7, Redis 7 (optional) |
|
|
118
|
+
| Agent Integration | MCP SDK (HTTP Streamable Transport) |
|
|
322
119
|
| Auth | OIDC + PKCE / API Key / SuperAdmin |
|
|
323
120
|
| i18n | next-intl (en, zh, ko, ja) |
|
|
324
|
-
| Deployment |
|
|
325
|
-
|
|
326
|
-
---
|
|
327
|
-
|
|
328
|
-
## Getting Started
|
|
329
|
-
|
|
330
|
-
### Quick Start with Docker (Recommended)
|
|
331
|
-
|
|
332
|
-
No build tools or external databases required. The image bundles [PGlite](https://pglite.dev) (embedded PostgreSQL):
|
|
333
|
-
|
|
334
|
-
```bash
|
|
335
|
-
git clone https://github.com/Chorus-AIDLC/chorus.git
|
|
336
|
-
cd chorus
|
|
337
|
-
|
|
338
|
-
DEFAULT_USER=admin@example.com DEFAULT_PASSWORD=changeme \
|
|
339
|
-
docker compose -f docker-compose.local.yml up -d
|
|
340
|
-
```
|
|
341
|
-
|
|
342
|
-
Open [http://localhost:8637](http://localhost:8637) and log in with the credentials above.
|
|
343
|
-
|
|
344
|
-
> Data is persisted in a Docker volume. The embedded mode is single-instance only (no Redis).
|
|
345
|
-
|
|
346
|
-
#### Production Deployment (PostgreSQL + Redis)
|
|
347
|
-
|
|
348
|
-
For production with multiple replicas:
|
|
349
|
-
|
|
350
|
-
```bash
|
|
351
|
-
DEFAULT_USER=admin@example.com DEFAULT_PASSWORD=changeme \
|
|
352
|
-
docker compose up -d
|
|
353
|
-
```
|
|
354
|
-
|
|
355
|
-
> See [Docker Documentation](docs/DOCKER.md) for all environment variables and configuration options.
|
|
356
|
-
|
|
357
|
-
---
|
|
358
|
-
|
|
359
|
-
### Local Development
|
|
360
|
-
|
|
361
|
-
Prerequisites: Node.js 22+, pnpm 9+, Docker (for PostgreSQL/Redis)
|
|
362
|
-
|
|
363
|
-
```bash
|
|
364
|
-
cp .env.example .env
|
|
365
|
-
pnpm docker:db
|
|
366
|
-
pnpm install
|
|
367
|
-
pnpm db:migrate:dev
|
|
368
|
-
pnpm dev
|
|
369
|
-
# Open http://localhost:8637
|
|
370
|
-
```
|
|
371
|
-
|
|
372
|
-
### Local Development (no Docker)
|
|
373
|
-
|
|
374
|
-
Prerequisites: Node.js 22+, pnpm 9+
|
|
375
|
-
|
|
376
|
-
```bash
|
|
377
|
-
cp .env.example .env
|
|
378
|
-
pnpm install
|
|
379
|
-
pnpm dev:local # Dev server on http://localhost:8637
|
|
380
|
-
```
|
|
381
|
-
|
|
382
|
-
PGlite runs embedded PostgreSQL on port 5433. Data stored in `.pglite/` — delete to reset.
|
|
383
|
-
|
|
384
|
-
### Deploy to AWS
|
|
385
|
-
|
|
386
|
-
```bash
|
|
387
|
-
./install.sh
|
|
388
|
-
```
|
|
389
|
-
|
|
390
|
-
The interactive installer provisions VPC, Aurora Serverless v2, ElastiCache Serverless, ECS Fargate, and ALB with HTTPS. Configuration saved to `default_deploy.sh` for re-deploys.
|
|
391
|
-
|
|
392
|
-
### Connect AI Agents
|
|
393
|
-
|
|
394
|
-
The fastest path is the in-app setup wizard: open the Web UI, go to **Settings → Setup Guide → Open setup guide**, and follow the step-by-step instructions for your client (Claude Code, Codex, Kiro, OpenCode, OpenClaw, or other agents). The wizard creates the API key for you, shows the exact commands, and walks through verifying the connection.
|
|
395
|
-
|
|
396
|
-
If you'd rather read the full docs:
|
|
397
|
-
|
|
398
|
-
| Client | Guide |
|
|
399
|
-
|--------|-------|
|
|
400
|
-
| Claude Code | [CONNECT_CLAUDE_CODE.md](docs/CONNECT_CLAUDE_CODE.md) |
|
|
401
|
-
| Codex CLI | [CONNECT_CODEX.md](docs/CONNECT_CODEX.md) |
|
|
402
|
-
| Pi coding agent | [CONNECT_PI.md](docs/CONNECT_PI.md) |
|
|
403
|
-
| Kiro CLI | [CONNECT_KIRO.md](docs/CONNECT_KIRO.md) |
|
|
404
|
-
| OpenCode † | [CONNECT_OPENCODE.md](docs/CONNECT_OPENCODE.md) |
|
|
405
|
-
| Other MCP agents (Cursor, Continue, custom, …) | [CONNECT_OTHER_AGENTS.md](docs/CONNECT_OTHER_AGENTS.md) |
|
|
406
|
-
|
|
407
|
-
† OpenCode support is provided by the community-maintained [`opencode-chorus`](https://github.com/etnperlong/opencode-chorus) plugin (npm: [`opencode-chorus`](https://www.npmjs.com/package/opencode-chorus)), authored by [@etnperlong](https://github.com/etnperlong). Thanks!
|
|
408
|
-
|
|
409
|
-
Create API Keys in the Web UI under **Settings → Agents → Create API Key**. Keys start with `cho_` and are shown only once.
|
|
410
|
-
|
|
411
|
-

|
|
412
|
-
|
|
413
|
-
---
|
|
414
|
-
|
|
415
|
-
## Skill Documentation
|
|
416
|
-
|
|
417
|
-
| Method | Location | Use Case |
|
|
418
|
-
|--------|----------|----------|
|
|
419
|
-
| **Plugin-embedded (Claude Code)** | `public/chorus-plugin/skills/` | Claude Code + Chorus plugin, automated Sessions and lifecycle hooks |
|
|
420
|
-
| **Plugin-embedded (Codex CLI)** | `plugins/chorus/skills/` | Codex CLI + Chorus plugin, ported skills with `$`-prefixed slash commands |
|
|
421
|
-
| **Package-embedded (Pi)** | `packages/chorus-pi/skills/` | Pi + Chorus package, automated Sessions and lifecycle hooks |
|
|
422
|
-
| **Standalone** | `public/skill/` (served at `/skill/`) | Any other MCP-capable Agent (Cursor, Continue, custom), manual Session management |
|
|
423
|
-
|
|
424
|
-
### OpenSpec mode (opt-in, plugin 0.8.1+)
|
|
425
|
-
|
|
426
|
-
PM agents that have the [OpenSpec](https://github.com/Fission-AI/OpenSpec)
|
|
427
|
-
CLI installed can author proposals in a structured `proposal.md` +
|
|
428
|
-
`design.md` + `specs/<capability>/spec.md` layout. Local files are the
|
|
429
|
-
working copy and Chorus `documentDrafts` are the mirror; reviewers see a
|
|
430
|
-
predictable shape (`## ADDED Requirements`, `### Requirement:`,
|
|
431
|
-
`#### Scenario:`) instead of free-form Markdown. A PostToolUse hook on
|
|
432
|
-
`chorus_admin_verify_task` injects an `openspec archive <slug>` reminder
|
|
433
|
-
when the last task of an OpenSpec idea is verified, so finalized specs
|
|
434
|
-
are merged into the long-term spec set right after sign-off. The mode is
|
|
435
|
-
strictly opt-in: when `openspec` is not installed, behavior is unchanged.
|
|
436
|
-
Master switch on Claude Code is `enableOpenSpec` (plugin userConfig,
|
|
437
|
-
default `true`); both clients also honor `CHORUS_OPENSPEC_MODE=off`. No
|
|
438
|
-
new MCP tools or schema changes ship in this mode; the canonical skill
|
|
439
|
-
reuses the existing `chorus_pm_*` draft and document tools, with mirror
|
|
440
|
-
calls routed through the `chorus-api.sh` wrapper to keep multi-thousand-
|
|
441
|
-
line markdown out of LLM context. See
|
|
442
|
-
[OPENSPEC_MODE.md](docs/OPENSPEC_MODE.md) for the full guide.
|
|
121
|
+
| Deployment | npm / Docker / AWS CDK |
|
|
443
122
|
|
|
444
123
|
---
|
|
445
124
|
|
|
446
125
|
## Documentation
|
|
447
126
|
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
| [Search](docs/SEARCH.md) | Global Search Technical Design |
|
|
457
|
-
| [AI-DLC Gap Analysis](docs/AIDLC_GAP_ANALYSIS.md) | AI-DLC Methodology Gap Analysis |
|
|
458
|
-
| [AIG Implementation Plan](docs/CHORUS_AIG_PLAN.md) | Agent transparency roadmap |
|
|
459
|
-
| [Presence Design](docs/PRESENCE_DESIGN.md) | Real-time agent presence system |
|
|
460
|
-
| [Docker](docs/DOCKER.md) | Docker image usage & deployment |
|
|
461
|
-
| [Logging](docs/LOGGING.md) | Structured logging architecture |
|
|
462
|
-
| [CLAUDE.md](CLAUDE.md) | Development Guide |
|
|
127
|
+
**📖 Full documentation: [doc.chorus-ai.dev](https://doc.chorus-ai.dev)**
|
|
128
|
+
|
|
129
|
+
- [Getting started](https://doc.chorus-ai.dev/guides/getting-started/)
|
|
130
|
+
- [Connect an agent](https://doc.chorus-ai.dev/reference/agents/)
|
|
131
|
+
- [The AI-DLC workflow](https://doc.chorus-ai.dev/guides/ai-dlc-workflow/)
|
|
132
|
+
- [Plugins & commands](https://doc.chorus-ai.dev/guides/plugin-commands/)
|
|
133
|
+
- [MCP tools reference](https://doc.chorus-ai.dev/reference/mcp-tools/)
|
|
134
|
+
- [Deploy & self-host](https://doc.chorus-ai.dev/guides/deployment-overview/)
|
|
463
135
|
|
|
464
136
|
---
|
|
465
137
|
|