@chorus-aidlc/chorus 0.16.3 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-build-manifest.json +445 -445
- package/.next/standalone/.next/app-path-routes-manifest.json +54 -54
- package/.next/standalone/.next/build-manifest.json +5 -5
- package/.next/standalone/.next/prerender-manifest.json +42 -42
- package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page_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_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_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page_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_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 +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_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 +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 +2 -2
- package/.next/standalone/.next/server/app/admin/companies.rsc +1 -1
- 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 +1 -1
- package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agent-connections/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/executions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/pending-turns/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/resume/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/transcript/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/turn-advance/route.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon/turn-advance/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-directory-requests/[uuid]/route_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/daemon-sessions/route_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_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/events/route_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_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ideas/conversational/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mcp/route.js +3 -3
- package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/me/assignments/route.js +1 -1
- package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/notifications/unread-count/route_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_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route_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_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/agent-cwd-options/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/references/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/references/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/session/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/index.html +2 -2
- package/.next/standalone/.next/server/app/index.rsc +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 +2 -2
- package/.next/standalone/.next/server/app/login/admin.rsc +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 +2 -2
- package/.next/standalone/.next/server/app/login/callback.rsc +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_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 +1 -1
- package/.next/standalone/.next/server/app/login.html +2 -2
- package/.next/standalone/.next/server/app/login.rsc +1 -1
- 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 +2 -2
- 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 +2 -2
- package/.next/standalone/.next/server/app/settings.html +2 -2
- package/.next/standalone/.next/server/app/settings.rsc +3 -3
- package/.next/standalone/.next/server/app-paths-manifest.json +54 -54
- package/.next/standalone/.next/server/chunks/1114.js +1 -1
- package/.next/standalone/.next/server/chunks/1318.js +1 -1
- package/.next/standalone/.next/server/chunks/1437.js +1 -0
- package/.next/standalone/.next/server/chunks/1559.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/{9793.js → 3045.js} +1 -1
- package/.next/standalone/.next/server/chunks/3831.js +37 -0
- package/.next/standalone/.next/server/chunks/4827.js +1 -1
- package/.next/standalone/.next/server/chunks/5245.js +1 -1
- package/.next/standalone/.next/server/chunks/{4394.js → 5706.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/6506.js +2 -2
- package/.next/standalone/.next/server/chunks/6515.js +2 -2
- package/.next/standalone/.next/server/chunks/679.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/8454.js +1 -1
- package/.next/standalone/.next/server/chunks/920.js +1 -1
- package/.next/standalone/.next/server/chunks/9213.js +1 -1
- package/.next/standalone/.next/server/chunks/9378.js +1 -1
- package/.next/standalone/.next/server/chunks/9449.js +1 -0
- package/.next/standalone/.next/server/chunks/9458.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/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/chunks/{11595.97e534422c57aee1.js → 11595.bbe40924d18958bf.js} +1 -1
- package/.next/standalone/.next/static/chunks/18139-e6ef4b5869593f8e.js +1 -0
- package/.next/standalone/.next/static/chunks/28856-ef2cb58fbd404ef9.js +1 -0
- package/.next/standalone/.next/static/chunks/{31308-fda6febfb2882a28.js → 31308-bb4a97b3f39c22dd.js} +1 -1
- package/.next/standalone/.next/static/chunks/{33456.6dc44a6aca1a01fd.js → 33456.5499eb8e892b110a.js} +1 -1
- package/.next/standalone/.next/static/chunks/{4860.7873ebc9ba435c8c.js → 4860.be77046fb2b3a2bd.js} +1 -1
- package/.next/standalone/.next/static/chunks/66873-e3be53f41b3f2255.js +1 -0
- package/.next/standalone/.next/static/chunks/70303-aec3d52ad87602a3.js +1 -0
- package/.next/standalone/.next/static/chunks/76201-83b26515f85ce37c.js +1 -0
- package/.next/standalone/.next/static/chunks/78917-a8a8dff98857c045.js +1 -0
- package/.next/standalone/.next/static/chunks/{94643-01be319472d751b3.js → 94643-ffa140f765c73daf.js} +1 -1
- package/.next/standalone/.next/static/chunks/97663-9c3ae4fd60b353db.js +1 -0
- package/.next/standalone/.next/static/chunks/{99373.d0e808c18408b8da.js → 99373.111493dc260a2a04.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/{layout-b742c51c0a764daf.js → layout-40fe7d026c5a7c6d.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-87d4d0fe90fca28c.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-1206abaee85dc915.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/{page-425acbe9ade5fa83.js → page-474e494097c8945f.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/page-e902b19328092ccf.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-f273288c3530aa0f.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-6568a7b08bf9a54b.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-fbd3c27b68666234.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/{page-58b48aa0a11603c3.js → page-15bb6e1696668512.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/tasks/{page-286faced32c6133f.js → page-2bea97214b1595cc.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-2bf7ceee62b574c7.js +1 -0
- package/.next/standalone/.next/static/chunks/app/onboarding/{page-5c82cf3abd856301.js → page-540da64d7ba16dc7.js} +1 -1
- package/.next/standalone/.next/static/chunks/{webpack-fa066d7ff9ab2b29.js → webpack-7cbb3ba6792f1fb3.js} +1 -1
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/public/chorus-plugin/.claude-plugin/plugin.json +1 -1
- package/.next/standalone/public/chorus-plugin/bin/chorus-api.sh +44 -1
- package/.next/standalone/public/chorus-plugin/bin/on-session-start.sh +4 -3
- package/.next/standalone/public/chorus-plugin/bin/tests/test-mcp-cli-delegation.sh +244 -0
- package/.next/standalone/public/chorus-plugin/skills/brainstorm/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +19 -1
- package/.next/standalone/public/chorus-plugin/skills/chorus-cli/SKILL.md +57 -0
- package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +2 -2
- package/.next/standalone/public/chorus-plugin/skills/docs/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/openspec-aware/SKILL.md +85 -42
- package/.next/standalone/public/chorus-plugin/skills/orchestrate/SKILL.md +1 -1
- package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +2 -2
- 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 +3 -3
- package/.next/standalone/public/dsh-credentials.sh +30 -0
- package/.next/standalone/public/install-codex.sh +21 -406
- package/.next/standalone/public/install-kiro.sh +20 -344
- package/.next/standalone/public/install-opencode.sh +20 -275
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-brainstorm/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-cli/SKILL.md +57 -0
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-develop/SKILL.md +2 -2
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-docs/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-idea/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-openspec-aware/SKILL.md +85 -42
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-orchestrate/SKILL.md +1 -1
- package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-proposal/SKILL.md +2 -2
- 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 +3 -3
- package/.next/standalone/public/kiro-plugin/bin/chorus-api.sh +44 -1
- package/.next/standalone/public/kiro-plugin/bin/on-agent-spawn.sh +6 -4
- package/.next/standalone/public/kiro-plugin/manifest.txt +41 -0
- package/.next/standalone/public/skill/brainstorm-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/chorus/SKILL.md +19 -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/docs-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/idea-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/orchestrate-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/proposal-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/proposal-reviewer-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/quick-dev-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/review-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/task-reviewer-chorus/SKILL.md +1 -1
- package/.next/standalone/public/skill/yolo-chorus/SKILL.md +1 -1
- package/.next/standalone/public/test-dsh-credentials.sh +39 -0
- package/.next/standalone/public/test-install-codex.sh +31 -79
- package/README.ja.md +5 -3
- package/README.ko.md +5 -3
- package/README.md +5 -3
- package/README.zh.md +5 -3
- package/chorus.mjs +35 -1
- package/cli/agent-backend-prompt.mjs +94 -0
- package/cli/agents.mjs +329 -0
- package/cli/chorus-client.mjs +69 -0
- package/cli/claude-spawner.mjs +4 -0
- package/cli/client-args.mjs +11 -5
- package/cli/codex-spawner.mjs +11 -6
- package/cli/credentials.mjs +185 -3
- package/cli/daemon-agent.mjs +30 -5
- package/cli/daemon-banner.mjs +3 -3
- package/cli/daemon-config.mjs +27 -2
- package/cli/daemon-install-config.mjs +21 -14
- package/cli/daemon-rest-client.mjs +31 -8
- package/cli/daemon-service.mjs +120 -33
- package/cli/daemon.mjs +175 -28
- package/cli/dsh-managed-config.mjs +407 -0
- package/cli/dsh-spawner.mjs +445 -0
- package/cli/init/adapters.mjs +137 -0
- package/cli/init/agent-type-map.mjs +60 -0
- package/cli/init/chorus-plugin-consts.mjs +16 -0
- package/cli/init/codex-mcp-config.mjs +183 -0
- package/cli/init/contracts.mjs +120 -0
- package/cli/init/detect.mjs +97 -0
- package/cli/init/file-template.mjs +248 -0
- package/cli/init/install-methods.mjs +508 -0
- package/cli/init/registry.mjs +74 -0
- package/cli/init/run-command.mjs +30 -0
- package/cli/init/select.mjs +111 -0
- package/cli/init/steps/credential-seed.mjs +751 -0
- package/cli/init/steps/daemon-setup.mjs +246 -0
- package/cli/init/steps/plugin-install.mjs +37 -0
- package/cli/init-args.mjs +137 -0
- package/cli/init.mjs +198 -0
- package/cli/kiro-spawner.mjs +4 -0
- package/cli/login.mjs +26 -4
- package/cli/mcp-args.mjs +280 -0
- package/cli/mcp.mjs +164 -0
- package/cli/spawner-select.mjs +54 -2
- package/cli/turn-reporter.mjs +5 -2
- package/cli/upload-hooks.mjs +31 -1
- package/cli/waker.mjs +49 -6
- package/package.json +1 -1
- package/prisma/migrations/20260818024700_add_turn_backend_session_id/migration.sql +1 -0
- package/prisma/schema.prisma +3 -0
- package/.next/standalone/.next/server/chunks/3594.js +0 -1
- package/.next/standalone/.next/server/chunks/5351.js +0 -32
- package/.next/standalone/.next/server/chunks/6667.js +0 -1
- package/.next/standalone/.next/server/chunks/6995.js +0 -1
- package/.next/standalone/.next/static/chunks/19887-c0bb297a78a1c7cd.js +0 -1
- package/.next/standalone/.next/static/chunks/29108-5a11eea003f4cc11.js +0 -1
- package/.next/standalone/.next/static/chunks/53073-a7ed20af6538a178.js +0 -1
- package/.next/standalone/.next/static/chunks/6603-e70ddeab6ad09c50.js +0 -1
- package/.next/standalone/.next/static/chunks/78917-1b59cbb806b3ecfc.js +0 -1
- package/.next/standalone/.next/static/chunks/82751-3e161e1d8dbda3ac.js +0 -1
- package/.next/standalone/.next/static/chunks/99366-425e9ef22e60e3e2.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/dashboard/page-f636e00c28f425ea.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page-c004f1a194af7fa5.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/graph/page-fdd617457730a116.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page-6b3fb08d53826d02.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/new/page-d5b222f379b2e8ca.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/projects/[uuid]/proposals/page-0a6c2d0e1b68e0e4.js +0 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/settings/page-1507a761e67c2aa9.js +0 -1
- /package/.next/standalone/.next/static/{K8qIdwvKoIWbwQ_f01mnM → 0spgxl3lP26Fl1otd1D7R}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{K8qIdwvKoIWbwQ_f01mnM → 0spgxl3lP26Fl1otd1D7R}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Tests for public/dsh-credentials.sh — now a DEPRECATION STUB that redirects to
|
|
3
|
+
# `chorus agents add`. Verifies the stub shape: a non-interactive run names the
|
|
4
|
+
# replacement command, prints a deprecation notice, exits non-zero, and writes
|
|
5
|
+
# NO $DSH_HOME/.env (installs/writes nothing). Bash 3.2 compatible.
|
|
6
|
+
set -uo pipefail
|
|
7
|
+
|
|
8
|
+
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
9
|
+
SCRIPT="$HERE/dsh-credentials.sh"
|
|
10
|
+
fail=0
|
|
11
|
+
|
|
12
|
+
ok() { printf 'ok %s\n' "$1"; }
|
|
13
|
+
no() { printf 'FAIL %s\n' "$1"; fail=1; }
|
|
14
|
+
|
|
15
|
+
# 1. Non-interactive (no TTY): prints the chorus agents add command + deprecation
|
|
16
|
+
# notice, exits non-zero, and writes no .env. stdin from /dev/null and stdout
|
|
17
|
+
# captured (command substitution) → neither is a TTY → print-and-fail path.
|
|
18
|
+
T="$(mktemp -d)"
|
|
19
|
+
out="$(env -u CHORUS_URL -u CHORUS_API_KEY DSH_HOME="$T" bash "$SCRIPT" </dev/null 2>&1)"
|
|
20
|
+
rc=$?
|
|
21
|
+
[ "$rc" -ne 0 ] && ok "exits non-zero when non-interactive" || no "exits non-zero when non-interactive"
|
|
22
|
+
printf '%s\n' "$out" | grep -q 'npm install -g @chorus-aidlc/chorus' && ok "names npm install -g @chorus-aidlc/chorus" || no "names npm install -g @chorus-aidlc/chorus"
|
|
23
|
+
printf '%s\n' "$out" | grep -q 'chorus agents add' && ok "names chorus agents add" || no "names chorus agents add"
|
|
24
|
+
printf '%s\n' "$out" | grep -qi 'deprecat' && ok "prints a deprecation notice" || no "prints a deprecation notice"
|
|
25
|
+
[ ! -f "$T/.env" ] && ok "writes no .env" || no "writes no .env"
|
|
26
|
+
rm -rf "$T"
|
|
27
|
+
|
|
28
|
+
# 2. Even with CHORUS_URL/CHORUS_API_KEY set, the stub installs nothing: it still
|
|
29
|
+
# exits non-zero (no TTY) and writes no .env. This proves the old inline
|
|
30
|
+
# credential-writing logic is gone.
|
|
31
|
+
T="$(mktemp -d)"
|
|
32
|
+
env DSH_HOME="$T" CHORUS_URL="https://c.example" CHORUS_API_KEY="cho_x" bash "$SCRIPT" </dev/null >/dev/null 2>&1
|
|
33
|
+
rc=$?
|
|
34
|
+
[ "$rc" -ne 0 ] && ok "non-zero even with creds set (installs nothing)" || no "non-zero even with creds set"
|
|
35
|
+
[ ! -f "$T/.env" ] && ok "writes no .env even with creds set" || no "writes no .env even with creds set"
|
|
36
|
+
rm -rf "$T"
|
|
37
|
+
|
|
38
|
+
if [ "$fail" -eq 0 ]; then printf '\nALL PASS\n'; else printf '\nFAILURES\n'; fi
|
|
39
|
+
exit "$fail"
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# Test public/install-codex.sh
|
|
2
|
+
# Test public/install-codex.sh — now a DEPRECATION STUB that redirects to
|
|
3
|
+
# `chorus agents add`. Verifies bash 3.2 compatibility + the stub shape:
|
|
4
|
+
# - names the replacement `npm install -g @chorus-aidlc/chorus@0.17.0` + `chorus agents add`
|
|
5
|
+
# - prints a deprecation notice
|
|
6
|
+
# - run non-interactively (no TTY, e.g. curl | bash in CI) it exits non-zero
|
|
7
|
+
# - installs nothing (writes no config.toml)
|
|
3
8
|
#
|
|
4
9
|
# Usage:
|
|
5
10
|
# bash public/test-install-codex.sh
|
|
@@ -24,7 +29,7 @@ else
|
|
|
24
29
|
TEST_BASH="$(command -v bash)"
|
|
25
30
|
fi
|
|
26
31
|
|
|
27
|
-
BOLD=$'\033[1m'; GREEN=$'\033[32m'; RED=$'\033[31m';
|
|
32
|
+
BOLD=$'\033[1m'; GREEN=$'\033[32m'; RED=$'\033[31m'; RESET=$'\033[0m'
|
|
28
33
|
|
|
29
34
|
PASS=0; FAIL=0; FAIL_NOTES=""
|
|
30
35
|
|
|
@@ -36,8 +41,8 @@ echo "${BOLD}Testing:${RESET} $SCRIPT"
|
|
|
36
41
|
echo "${BOLD}Using:${RESET} $TEST_BASH ($("$TEST_BASH" --version | head -1))"
|
|
37
42
|
echo ""
|
|
38
43
|
|
|
39
|
-
# [1/
|
|
40
|
-
echo "${BOLD}[1/
|
|
44
|
+
# [1/3] Static scan — reject bash 4+ constructs
|
|
45
|
+
echo "${BOLD}[1/3]${RESET} Static scan for bash 4+ constructs"
|
|
41
46
|
scan() {
|
|
42
47
|
local label="$1"; local pattern="$2"
|
|
43
48
|
if grep -nE "$pattern" "$SCRIPT" >/tmp/install-codex-scan.$$ 2>/dev/null; then
|
|
@@ -55,9 +60,9 @@ scan 'no "&>" redirection' '[^|]&>[^>]'
|
|
|
55
60
|
scan 'no "|&" redirection' '\|&'
|
|
56
61
|
scan 'no ";;&" case fallthrough' ';;&'
|
|
57
62
|
|
|
58
|
-
# [2/
|
|
63
|
+
# [2/3] Parse
|
|
59
64
|
echo ""
|
|
60
|
-
echo "${BOLD}[2/
|
|
65
|
+
echo "${BOLD}[2/3]${RESET} Parse with $TEST_BASH -n"
|
|
61
66
|
if "$TEST_BASH" -n "$SCRIPT" 2>/tmp/install-codex-parse.$$; then
|
|
62
67
|
pass "parses without syntax errors"
|
|
63
68
|
else
|
|
@@ -66,99 +71,46 @@ else
|
|
|
66
71
|
fi
|
|
67
72
|
rm -f /tmp/install-codex-parse.$$
|
|
68
73
|
|
|
69
|
-
# [3/
|
|
74
|
+
# [3/3] Non-interactive stub behavior: redirect to `chorus agents add`, exit non-zero,
|
|
75
|
+
# install nothing. Stdin from /dev/null + stdout redirected to a file → neither
|
|
76
|
+
# is a TTY, so the stub must take the print-and-fail path (never exec).
|
|
70
77
|
echo ""
|
|
71
|
-
echo "${BOLD}[3/
|
|
78
|
+
echo "${BOLD}[3/3]${RESET} Non-interactive stub behavior (no TTY → print + non-zero)"
|
|
72
79
|
|
|
73
80
|
TMP_HOME="$(mktemp -d -t chorus-install-test.XXXXXX)"
|
|
74
81
|
trap 'rm -rf "$TMP_HOME"' EXIT
|
|
75
82
|
|
|
76
|
-
FAKE_BIN="$TMP_HOME/bin"
|
|
77
|
-
mkdir -p "$FAKE_BIN"
|
|
78
|
-
cat > "$FAKE_BIN/codex" <<'FAKE'
|
|
79
|
-
#!/usr/bin/env bash
|
|
80
|
-
case "${1:-}" in
|
|
81
|
-
--version) echo "codex 0.125.0-test" ;;
|
|
82
|
-
plugin)
|
|
83
|
-
if [ "${2:-}" = "marketplace" ] && [ "${3:-}" = "list" ]; then
|
|
84
|
-
echo ""
|
|
85
|
-
exit 0
|
|
86
|
-
fi
|
|
87
|
-
exit 0
|
|
88
|
-
;;
|
|
89
|
-
*) exit 0 ;;
|
|
90
|
-
esac
|
|
91
|
-
FAKE
|
|
92
|
-
chmod +x "$FAKE_BIN/codex"
|
|
93
|
-
|
|
94
83
|
run_out="$TMP_HOME/run.log"
|
|
95
84
|
set +e
|
|
96
85
|
env \
|
|
97
|
-
PATH="$FAKE_BIN:$PATH" \
|
|
98
86
|
HOME="$TMP_HOME" \
|
|
99
87
|
CODEX_HOME="$TMP_HOME/.codex" \
|
|
100
|
-
|
|
101
|
-
CHORUS_API_KEY="cho_test_key_abc123" \
|
|
102
|
-
CHORUS_MARKETPLACE_SOURCE="https://github.com/Chorus-AIDLC/Chorus" \
|
|
103
|
-
"$TEST_BASH" "$SCRIPT" >"$run_out" 2>&1
|
|
88
|
+
"$TEST_BASH" "$SCRIPT" </dev/null >"$run_out" 2>&1
|
|
104
89
|
rc=$?
|
|
105
90
|
set -e
|
|
106
91
|
|
|
107
92
|
if [ "$rc" -ne 0 ]; then
|
|
108
|
-
|
|
109
|
-
sed 's/^/ /' "$run_out"
|
|
93
|
+
pass "exits non-zero when non-interactive (rc=$rc)"
|
|
110
94
|
else
|
|
111
|
-
|
|
95
|
+
fail "exited 0 (expected non-zero for a no-TTY deprecation stub)"
|
|
96
|
+
sed 's/^/ /' "$run_out"
|
|
112
97
|
fi
|
|
113
98
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
fail "
|
|
117
|
-
else
|
|
118
|
-
pass "config.toml created"
|
|
119
|
-
grep -q '^\[mcp_servers\.chorus\]' "$cfg" && pass "[mcp_servers.chorus] block present" || fail "[mcp_servers.chorus] missing"
|
|
120
|
-
grep -q 'url = "https://chorus.test/api/mcp"' "$cfg" && pass "url written literally" || fail "url not literal"
|
|
121
|
-
grep -q 'Authorization = "Bearer cho_test_key_abc123"' "$cfg" && pass "Authorization header literal" || fail "Authorization not literal"
|
|
122
|
-
grep -q '^hooks = true' "$cfg" && pass "hooks feature enabled" || fail "hooks feature not enabled"
|
|
123
|
-
grep -q '^codex_hooks =' "$cfg" && fail "deprecated codex_hooks key written" || pass "deprecated codex_hooks key not written"
|
|
124
|
-
[ ! -f "$TMP_HOME/.codex/hooks.json" ] && pass "installer does not write user hooks.json" || fail "installer wrote user hooks.json"
|
|
125
|
-
[ ! -e "$TMP_HOME/.codex/hooks/chorus/run-hook.sh" ] && pass "installer does not write hook wrapper" || fail "installer wrote hook wrapper"
|
|
126
|
-
if command -v stat >/dev/null 2>&1; then
|
|
127
|
-
mode="$(stat -c '%a' "$cfg" 2>/dev/null || stat -f '%OLp' "$cfg" 2>/dev/null || echo "")"
|
|
128
|
-
if [ "$mode" = "600" ]; then
|
|
129
|
-
pass "config.toml mode=600"
|
|
130
|
-
elif [ -n "$mode" ]; then
|
|
131
|
-
fail "config.toml mode=$mode (expected 600)"
|
|
132
|
-
fi
|
|
133
|
-
fi
|
|
134
|
-
fi
|
|
99
|
+
grep -q 'npm install -g @chorus-aidlc/chorus' "$run_out" \
|
|
100
|
+
&& pass "names 'npm install -g @chorus-aidlc/chorus'" \
|
|
101
|
+
|| { fail "did not print the npm install guidance"; sed 's/^/ /' "$run_out"; }
|
|
135
102
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
set +e
|
|
140
|
-
env \
|
|
141
|
-
PATH="$FAKE_BIN:$PATH" \
|
|
142
|
-
HOME="$TMP_HOME" \
|
|
143
|
-
CODEX_HOME="$TMP_HOME/.codex" \
|
|
144
|
-
CHORUS_URL="https://chorus.test/api/mcp" \
|
|
145
|
-
CHORUS_API_KEY="cho_rotated_key_xyz789" \
|
|
146
|
-
"$TEST_BASH" "$SCRIPT" >"$run_out" 2>&1
|
|
147
|
-
rc=$?
|
|
148
|
-
set -e
|
|
149
|
-
[ "$rc" -eq 0 ] && pass "rerun exited 0" || { fail "rerun exited non-zero ($rc)"; sed 's/^/ /' "$run_out"; }
|
|
150
|
-
|
|
151
|
-
blocks="$(grep -c '^\[mcp_servers\.chorus\]' "$cfg" 2>/dev/null || echo 0)"
|
|
152
|
-
[ "$blocks" = "1" ] && pass "exactly one [mcp_servers.chorus] block" || fail "found $blocks [mcp_servers.chorus] blocks"
|
|
103
|
+
grep -q 'chorus agents add' "$run_out" \
|
|
104
|
+
&& pass "names 'chorus agents add'" \
|
|
105
|
+
|| { fail "did not print the chorus agents add command"; sed 's/^/ /' "$run_out"; }
|
|
153
106
|
|
|
154
|
-
|
|
155
|
-
|
|
107
|
+
grep -qi 'deprecat' "$run_out" \
|
|
108
|
+
&& pass "prints a deprecation notice" \
|
|
109
|
+
|| { fail "no deprecation notice printed"; sed 's/^/ /' "$run_out"; }
|
|
156
110
|
|
|
157
|
-
|
|
158
|
-
pass "
|
|
159
|
-
|
|
160
|
-
fail "rotated key not applied cleanly"
|
|
161
|
-
fi
|
|
111
|
+
[ ! -f "$TMP_HOME/.codex/config.toml" ] \
|
|
112
|
+
&& pass "installs nothing (no config.toml written)" \
|
|
113
|
+
|| fail "wrote config.toml (stub must install nothing)"
|
|
162
114
|
|
|
163
115
|
echo ""
|
|
164
116
|
echo "${BOLD}Summary:${RESET} $PASS passed, $FAIL failed"
|
package/README.ja.md
CHANGED
|
@@ -38,13 +38,15 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
|
|
|
38
38
|
|
|
39
39
|
## 最近の更新
|
|
40
40
|
|
|
41
|
+
**[v0.16.4](https://chorus-ai.dev/blog/chorus-v0.16.4-release/)** — DeepSeek Harness(dsh)が 6 つ目の接続方法に。`@chorus-aidlc/chorus-dsh` バンドルが Chorus のスキル・ペルソナ・MCP 設定を任意の dsh プロファイルに追加します。現時点は対話的な利用のみ、デーモンウェイクは後日対応。
|
|
42
|
+
|
|
41
43
|
**[v0.16.1](https://chorus-ai.dev/blog/chorus-v0.16.1-release/)** — 1 つの `chorus daemon` が、互いに独立した複数のエージェントを同時に扱えるようになりました。各エージェントは `agents[]` 配列で自分のキー・作業ディレクトリ・バックエンド・権限を持ちます。エージェント同士は @メンションで作業を渡し合え、各ウェイクはそのエージェント自身のプロジェクトディレクトリに届きます。
|
|
42
44
|
|
|
43
45
|
**[v0.16.0](https://chorus-ai.dev/blog/chorus-v0.16.0-release/)** — エージェントをドキュメントサイト([doc.chorus-ai.dev](https://doc.chorus-ai.dev))へ案内する `docs` スキルを追加し、記憶に頼らず現在のドキュメントを読んで回答するようにしました。
|
|
44
46
|
|
|
45
47
|
**[v0.15.0](https://chorus-ai.dev/blog/chorus-v0.15.0-release/)** — プロジェクト単位の Agent 作業ディレクトリ:各ユーザーがプロジェクト内の Agent ごとにホストと cwd を設定し、デーモンが許可したルートだけを参照できます。割り当て、ウェイク、再開、後続ターンで同じ実行先を使い、進行中のセッションは移動しません。Codex は再開可能なバックエンド thread ID を別に保存し、不要になった Chorus の session 管理手順を削除しました。
|
|
46
48
|
|
|
47
|
-
**[v0.14.1](https://chorus-ai.dev/blog/chorus-v0.14.1-release/)** — Amazon Kiro CLI が 4 つ目の接続方法になりました(Kiro CLI v2
|
|
49
|
+
**[v0.14.1](https://chorus-ai.dev/blog/chorus-v0.14.1-release/)** — Amazon Kiro CLI が 4 つ目の接続方法になりました(Kiro CLI v2):`chorus agents add` によるワンコマンドの Kiro プラグイン導入と `--agent kiro` デーモンバックエンド、加えていくつかのデーモン修正。
|
|
48
50
|
|
|
49
51
|
**[v0.14.0](https://chorus-ai.dev/blog/chorus-v0.14.0-release/)** — アプリ全体のダークモード(ライト / ダーク / システム)。参考資料をあらゆる着想・提案・課題に添付でき、インラインでも MCP 経由でも読み取れます。韓国語と日本語を追加(韓国語はコミュニティによる貢献)。グループ化のための**テーマ**着想、デーモンの「開発を開始」/「Yolo」ボタン、対話式の着想入力、クラッシュからの再開、`chorus daemon install`。
|
|
50
52
|
|
|
@@ -57,7 +59,7 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
|
|
|
57
59
|
2 つのコマンドだけです — データベースも Docker も設定ファイルも不要です。
|
|
58
60
|
|
|
59
61
|
```bash
|
|
60
|
-
npm install -g @chorus-aidlc/chorus
|
|
62
|
+
npm install -g @chorus-aidlc/chorus@0.17.0
|
|
61
63
|
chorus
|
|
62
64
|
```
|
|
63
65
|
|
|
@@ -99,7 +101,7 @@ PM エージェントが要件を分析し、PRD と課題 DAG を含む提案
|
|
|
99
101
|
|
|
100
102
|
## AI エージェントを接続する
|
|
101
103
|
|
|
102
|
-
最も手早い方法は、アプリ内のセットアップウィザードです:**Settings → Setup Guide** を開いてください。ウィザードが API キーを作成し、お使いのクライアント(Claude Code、Codex、Kiro、OpenCode、OpenClaw、Pi、その他 MCP 互換のエージェント)向けの正確なコマンドを表示します。
|
|
104
|
+
最も手早い方法は、アプリ内のセットアップウィザードです:**Settings → Setup Guide** を開いてください。ウィザードが API キーを作成し、お使いのクライアント(Claude Code、Codex、Kiro、dsh、OpenCode、OpenClaw、Pi、その他 MCP 互換のエージェント)向けの正確なコマンドを表示します。
|
|
103
105
|
|
|
104
106
|
クライアントごとの詳細なガイド → **[エージェントプラットフォーム](https://doc.chorus-ai.dev/ja/reference/agents/)**。
|
|
105
107
|
|
package/README.ko.md
CHANGED
|
@@ -38,13 +38,15 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
|
|
|
38
38
|
|
|
39
39
|
## 최근 업데이트
|
|
40
40
|
|
|
41
|
+
**[v0.16.4](https://chorus-ai.dev/blog/chorus-v0.16.4-release/)** — DeepSeek Harness(dsh)가 여섯 번째 연결 방식으로 추가됩니다: `@chorus-aidlc/chorus-dsh` 번들이 Chorus의 스킬·페르소나·MCP 설정을 임의의 dsh 프로파일에 추가합니다. 현재는 대화식 사용만, 데몬 웨이크는 추후 지원.
|
|
42
|
+
|
|
41
43
|
**[v0.16.1](https://chorus-ai.dev/blog/chorus-v0.16.1-release/)** — 이제 하나의 `chorus daemon`이 서로 독립적인 여러 에이전트를 동시에 서비스합니다. 각 에이전트는 `agents[]` 배열로 자신의 키·작업 디렉터리·백엔드·권한을 가집니다. 에이전트끼리 @멘션으로 작업을 넘길 수 있고, 각 웨이크는 해당 에이전트 자신의 프로젝트 디렉터리에 도착합니다.
|
|
42
44
|
|
|
43
45
|
**[v0.16.0](https://chorus-ai.dev/blog/chorus-v0.16.0-release/)** — 에이전트를 문서 사이트([doc.chorus-ai.dev](https://doc.chorus-ai.dev))로 안내하는 `docs` 스킬을 추가해, 기억에 의존하지 않고 현재 문서를 읽고 답하도록 했습니다.
|
|
44
46
|
|
|
45
47
|
**[v0.15.0](https://chorus-ai.dev/blog/chorus-v0.15.0-release/)** — 프로젝트별 Agent 작업 디렉터리: 각 사용자가 프로젝트의 Agent마다 호스트와 cwd를 지정하고, 데몬이 허용한 루트만 탐색할 수 있습니다. 배정, 웨이크, 재개, 후속 턴에서 같은 실행 위치를 사용하며 진행 중인 세션은 이동하지 않습니다. Codex는 재개 가능한 백엔드 thread ID를 별도로 저장하고, 더 이상 필요하지 않은 Chorus session 관리 단계를 제거했습니다.
|
|
46
48
|
|
|
47
|
-
**[v0.14.1](https://chorus-ai.dev/blog/chorus-v0.14.1-release/)** — Amazon Kiro CLI가 네 번째 연결 방식이 되었습니다(Kiro CLI v2): 명령 한 줄로 설치하는
|
|
49
|
+
**[v0.14.1](https://chorus-ai.dev/blog/chorus-v0.14.1-release/)** — Amazon Kiro CLI가 네 번째 연결 방식이 되었습니다(Kiro CLI v2): `chorus agents add` 명령 한 줄로 설치하는 Kiro 플러그인과 `--agent kiro` 데몬 백엔드, 여기에 몇 가지 데몬 수정.
|
|
48
50
|
|
|
49
51
|
**[v0.14.0](https://chorus-ai.dev/blog/chorus-v0.14.0-release/)** — 앱 전체 다크 모드(라이트 / 다크 / 시스템). 참고 자료를 어떤 아이디어·제안·작업에도 첨부할 수 있고, 인라인으로도 MCP를 통해서도 읽을 수 있습니다. 한국어와 일본어 추가(한국어는 커뮤니티 기여). 그룹화를 위한 **테마** 아이디어, 그리고 데몬의 개발 시작 / Yolo 버튼, 대화식 아이디어 입력, 크래시 복구, `chorus daemon install`.
|
|
50
52
|
|
|
@@ -57,7 +59,7 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
|
|
|
57
59
|
두 개의 명령이면 됩니다. 데이터베이스도, Docker도, 설정 파일도 필요 없습니다.
|
|
58
60
|
|
|
59
61
|
```bash
|
|
60
|
-
npm install -g @chorus-aidlc/chorus
|
|
62
|
+
npm install -g @chorus-aidlc/chorus@0.17.0
|
|
61
63
|
chorus
|
|
62
64
|
```
|
|
63
65
|
|
|
@@ -99,7 +101,7 @@ PM 에이전트가 요구사항을 분석해 PRD와 작업 DAG를 생성하며,
|
|
|
99
101
|
|
|
100
102
|
## 에이전트 연결하기
|
|
101
103
|
|
|
102
|
-
가장 빠른 방법은 앱 내 마법사입니다: **Settings → Setup Guide**를 여세요. 마법사가 API 키를 만들고, 사용하는 클라이언트(Claude Code, Codex, Kiro, OpenCode, OpenClaw, Pi, 또는 그 밖의 MCP 호환 에이전트)에 맞는 정확한 명령을 보여줍니다.
|
|
104
|
+
가장 빠른 방법은 앱 내 마법사입니다: **Settings → Setup Guide**를 여세요. 마법사가 API 키를 만들고, 사용하는 클라이언트(Claude Code, Codex, Kiro, dsh, OpenCode, OpenClaw, Pi, 또는 그 밖의 MCP 호환 에이전트)에 맞는 정확한 명령을 보여줍니다.
|
|
103
105
|
|
|
104
106
|
클라이언트별 전체 가이드 → **[에이전트 플랫폼](https://doc.chorus-ai.dev/ko/reference/agents/)**.
|
|
105
107
|
|
package/README.md
CHANGED
|
@@ -38,13 +38,15 @@ The labels under each stage are the **permissions** an actor needs there — gra
|
|
|
38
38
|
|
|
39
39
|
## What's New
|
|
40
40
|
|
|
41
|
+
**[v0.16.4](https://chorus-ai.dev/blog/chorus-v0.16.4-release/)** — DeepSeek Harness (dsh) is the sixth way to connect: the `@chorus-aidlc/chorus-dsh` bundle drops Chorus's skills, persona, and MCP config into any dsh profile. Interactive for now; daemon wake comes later.
|
|
42
|
+
|
|
41
43
|
**[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
44
|
|
|
43
45
|
**[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
46
|
|
|
45
47
|
**[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.
|
|
46
48
|
|
|
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 `
|
|
49
|
+
**[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 Kiro plugin via `chorus agents add` and a `--agent kiro` daemon backend, plus daemon fixes.
|
|
48
50
|
|
|
49
51
|
**[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`.
|
|
50
52
|
|
|
@@ -57,7 +59,7 @@ The labels under each stage are the **permissions** an actor needs there — gra
|
|
|
57
59
|
Two commands. No database, no Docker, no config files.
|
|
58
60
|
|
|
59
61
|
```bash
|
|
60
|
-
npm install -g @chorus-aidlc/chorus
|
|
62
|
+
npm install -g @chorus-aidlc/chorus@0.17.0
|
|
61
63
|
chorus
|
|
62
64
|
```
|
|
63
65
|
|
|
@@ -99,7 +101,7 @@ Task cards flow between To Do → In Progress → To Verify as agents work, with
|
|
|
99
101
|
|
|
100
102
|
## Connect an Agent
|
|
101
103
|
|
|
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.
|
|
104
|
+
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, dsh, OpenCode, OpenClaw, Pi, or any MCP-compatible agent.
|
|
103
105
|
|
|
104
106
|
Full per-client guides → **[Agent platforms](https://doc.chorus-ai.dev/reference/agents/)**.
|
|
105
107
|
|
package/README.zh.md
CHANGED
|
@@ -29,13 +29,15 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
|
|
|
29
29
|
|
|
30
30
|
## 最近更新
|
|
31
31
|
|
|
32
|
+
**[v0.16.4](https://chorus-ai.dev/zh/blog/chorus-v0.16.4-release/)** — DeepSeek Harness(dsh)成为第六种接入方式:`@chorus-aidlc/chorus-dsh` bundle 把 Chorus 的 skill、persona 和 MCP 配置装进任意 dsh profile。目前仅交互式使用,daemon 唤醒稍后支持。
|
|
33
|
+
|
|
32
34
|
**[v0.16.1](https://chorus-ai.dev/zh/blog/chorus-v0.16.1-release/)** — 一个 `chorus daemon` 现在可以同时服务多个互相独立的 agent,每个都有自己的密钥、工作目录、后端和权限(通过 `agents[]` 配置);agent 之间还能通过 @ 把活递给对方,每次唤醒都落在该 agent 自己的项目目录里。
|
|
33
35
|
|
|
34
36
|
**[v0.16.0](https://chorus-ai.dev/zh/blog/chorus-v0.16.0-release/)** — 新增 `docs` skill,引导 Agent 查阅文档站点([doc.chorus-ai.dev](https://doc.chorus-ai.dev)),基于当前文档作答,而不是凭记忆复述。
|
|
35
37
|
|
|
36
38
|
**[v0.15.0](https://chorus-ai.dev/zh/blog/chorus-v0.15.0-release/)** — 项目级 Agent 工作目录:每位用户可以为项目中的每个 Agent 绑定主机和 cwd,只浏览 daemon 允许的目录,并让任务分配、唤醒、恢复和后续对话使用同一个执行位置,且不迁移进行中的会话。Codex 现在会单独保存可恢复的后端 thread ID,并移除不再需要的 Chorus session 管理步骤。
|
|
37
39
|
|
|
38
|
-
**[v0.14.1](https://chorus-ai.dev/zh/blog/chorus-v0.14.1-release/)** — Amazon Kiro CLI 成为第四种接入方式(Kiro CLI v2
|
|
40
|
+
**[v0.14.1](https://chorus-ai.dev/zh/blog/chorus-v0.14.1-release/)** — Amazon Kiro CLI 成为第四种接入方式(Kiro CLI v2):通过 `chorus agents add` 一条命令安装的 Kiro 插件,以及 `--agent kiro` 的 daemon 后端,另有若干 daemon 修复。
|
|
39
41
|
|
|
40
42
|
**[v0.14.0](https://chorus-ai.dev/zh/blog/chorus-v0.14.0-release/)** — 全应用深色模式(浅色 / 深色 / 跟随系统)。参考资料可挂到任意想法、提案或任务上,行内可读,也能通过 MCP 读写。新增韩语和日语(韩语由社区贡献)。用于归类的**主题**想法,以及 daemon 的「开始开发」/「Yolo」按钮、对话式建想法、崩溃恢复与 `chorus daemon install`。
|
|
41
43
|
|
|
@@ -48,7 +50,7 @@ Idea ──> Proposal ──> [Document + Task DAG] ──> Execute ──> Veri
|
|
|
48
50
|
两条命令即可,无需数据库、无需 Docker、无需配置文件。
|
|
49
51
|
|
|
50
52
|
```bash
|
|
51
|
-
npm install -g @chorus-aidlc/chorus
|
|
53
|
+
npm install -g @chorus-aidlc/chorus@0.17.0
|
|
52
54
|
chorus
|
|
53
55
|
```
|
|
54
56
|
|
|
@@ -90,7 +92,7 @@ Kanban 看板随 Agent 工作进度自动更新,任务卡片在 To Do → In P
|
|
|
90
92
|
|
|
91
93
|
## 连接 Agent
|
|
92
94
|
|
|
93
|
-
最快的方式是应用内的 setup 向导:打开 **Settings → Setup Guide**。它会创建 API Key,并给出适配你所用客户端的完整命令,无论是 Claude Code、Codex、Kiro、OpenCode、OpenClaw、Pi,还是任何兼容 MCP 的 agent。
|
|
95
|
+
最快的方式是应用内的 setup 向导:打开 **Settings → Setup Guide**。它会创建 API Key,并给出适配你所用客户端的完整命令,无论是 Claude Code、Codex、Kiro、dsh、OpenCode、OpenClaw、Pi,还是任何兼容 MCP 的 agent。
|
|
94
96
|
|
|
95
97
|
按客户端分的完整接入指南 → **[Agent 接入平台](https://doc.chorus-ai.dev/zh/reference/agents/)**。
|
|
96
98
|
|
package/chorus.mjs
CHANGED
|
@@ -24,7 +24,7 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
|
24
24
|
// client commands that connect OUT to a remote Chorus server. Their modules are
|
|
25
25
|
// lazy-imported so the server-launch path pays no startup cost.
|
|
26
26
|
|
|
27
|
-
const SUBCOMMANDS = new Set(["daemon", "login"]);
|
|
27
|
+
const SUBCOMMANDS = new Set(["daemon", "login", "mcp", "agents"]);
|
|
28
28
|
|
|
29
29
|
// Client-subcommand arg parsing + help text live in cli/client-args.mjs so they
|
|
30
30
|
// are pure and unit-testable (this entry module runs side effects at import).
|
|
@@ -54,6 +54,19 @@ function pkgVersion() {
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
async function runSubcommand(name, rest) {
|
|
57
|
+
// `agents` and `mcp` own their arg parsing + help (they handle `--help`
|
|
58
|
+
// themselves), so they are dispatched before the shared client-flag/help
|
|
59
|
+
// block below. (`chorus init` was renamed to `chorus agents add` — the bare
|
|
60
|
+
// `chorus init` word is intercepted with a rename hint before server boot.)
|
|
61
|
+
if (name === "mcp") {
|
|
62
|
+
const { runMcp } = await import("./cli/mcp.mjs");
|
|
63
|
+
return runMcp(rest, { version: pkgVersion() });
|
|
64
|
+
}
|
|
65
|
+
if (name === "agents") {
|
|
66
|
+
const { runAgents } = await import("./cli/agents.mjs");
|
|
67
|
+
return runAgents(rest, { version: pkgVersion() });
|
|
68
|
+
}
|
|
69
|
+
|
|
57
70
|
const flags = parseClientFlags(rest);
|
|
58
71
|
|
|
59
72
|
// Per-subcommand --help / -h fast-path: print subcommand-specific help and
|
|
@@ -82,6 +95,18 @@ async function runSubcommand(name, rest) {
|
|
|
82
95
|
|
|
83
96
|
{
|
|
84
97
|
const sub = process.argv[2];
|
|
98
|
+
// `chorus init` was renamed to `chorus agents add`. Intercept the old word
|
|
99
|
+
// with an actionable hint and exit — never fall through to the server-launch
|
|
100
|
+
// path below (a muscle-memory `chorus init` must not silently boot Postgres).
|
|
101
|
+
if (sub === "init") {
|
|
102
|
+
process.stderr.write(
|
|
103
|
+
"`chorus init` has been renamed to `chorus agents add`.\n" +
|
|
104
|
+
" • configure agents: chorus agents add (same flags as before)\n" +
|
|
105
|
+
" • list configured: chorus agents\n" +
|
|
106
|
+
" • remove one: chorus agents remove <name|uuid>\n",
|
|
107
|
+
);
|
|
108
|
+
process.exit(1);
|
|
109
|
+
}
|
|
85
110
|
if (sub && SUBCOMMANDS.has(sub)) {
|
|
86
111
|
runSubcommand(sub, process.argv.slice(3))
|
|
87
112
|
.then((code) => process.exit(typeof code === "number" ? code : 0))
|
|
@@ -146,10 +171,16 @@ Chorus v${pkg.version} — AI Agent & Human collaboration platform
|
|
|
146
171
|
|
|
147
172
|
USAGE
|
|
148
173
|
chorus [options] Start the Chorus server (default)
|
|
174
|
+
chorus agents [list|add|remove] Manage this machine's configured agents:
|
|
175
|
+
list (default), add (detect + install plugin + seed
|
|
176
|
+
creds; formerly 'chorus init'), remove <name|uuid>
|
|
177
|
+
(see 'chorus agents --help')
|
|
149
178
|
chorus login [--url --api-key] Authenticate as an agent; saves ~/.chorus/daemon.json
|
|
150
179
|
chorus daemon [--url --api-key] Connect to a remote Chorus server, subscribe to the
|
|
151
180
|
agent notification stream, and wake a local headless
|
|
152
181
|
Claude Code on task dispatch
|
|
182
|
+
chorus mcp <call|whoami|list> Native MCP client — call any tool, print this agent's
|
|
183
|
+
UUID, or list callable tools (see 'chorus mcp --help')
|
|
153
184
|
|
|
154
185
|
SERVER OPTIONS
|
|
155
186
|
-p, --port <port> HTTP server port (default: 8637, env: PORT)
|
|
@@ -203,6 +234,9 @@ EXAMPLES
|
|
|
203
234
|
chorus daemon # Connect & wake local Claude Code (full autonomy by default)
|
|
204
235
|
chorus daemon --chorus-only # Restrict the woken Claude to Chorus MCP tools only
|
|
205
236
|
CHORUS_URL=https://... CHORUS_API_KEY=cho_... chorus daemon
|
|
237
|
+
chorus mcp whoami # Print this agent's own UUID
|
|
238
|
+
chorus mcp call chorus_get_task '{"taskUuid":"..."}' # Call a tool with JSON args
|
|
239
|
+
chorus mcp call chorus_pm_add_document_draft --arg proposalUuid=P1 --arg type=prd --arg-file content=doc.md
|
|
206
240
|
`);
|
|
207
241
|
process.exit(0);
|
|
208
242
|
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
// cli/agent-backend-prompt.mjs
|
|
2
|
+
// Single source of truth for the interactive "which agent backend?" menu shared
|
|
3
|
+
// by the daemon credential-capture entry points: `chorus login` (single-agent),
|
|
4
|
+
// `chorus login --add` / `chorus daemon add`, and the `chorus install` "add
|
|
5
|
+
// another agent" loop (see cli/login.mjs, cli/daemon-install-config.mjs).
|
|
6
|
+
//
|
|
7
|
+
// The same AGENT_MENU list also feeds resolveInstallAgent's daemon-level backend
|
|
8
|
+
// prompt in daemon-install-config.mjs, so every surface advertises EXACTLY the
|
|
9
|
+
// same backends and never drifts — re-advertising a backend (e.g. dsh) is a
|
|
10
|
+
// one-line edit here that all prompts pick up.
|
|
11
|
+
//
|
|
12
|
+
// promptAgentBackend deliberately differs from resolveInstallAgent's inline menu
|
|
13
|
+
// in ONE way: an empty / unrecognized answer returns `undefined` ("no explicit
|
|
14
|
+
// choice") rather than DEFAULT_AGENT, so the add/login callers can OMIT the
|
|
15
|
+
// backend field and let resolve-time inheritance apply (the daemon top-level
|
|
16
|
+
// default). resolveInstallAgent must always produce a concrete daemon-level
|
|
17
|
+
// backend, so it keeps its own empty→DEFAULT_AGENT behavior and does NOT use
|
|
18
|
+
// this helper.
|
|
19
|
+
//
|
|
20
|
+
// Lives in its own module to avoid an import cycle: daemon-install-config.mjs
|
|
21
|
+
// already imports appendAgentConfig from login.mjs, so the shared menu cannot
|
|
22
|
+
// live in either of those files.
|
|
23
|
+
|
|
24
|
+
import { KNOWN_AGENTS } from "./daemon-agent.mjs";
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The interactive agent-backend menu. Order mirrors KNOWN_AGENTS with claude-code
|
|
28
|
+
* first (it is the default). Kept as the single shared list so the numbered
|
|
29
|
+
* prompt and the accepted values never drift across entry points.
|
|
30
|
+
*
|
|
31
|
+
* NOTE: the dsh JSON-RPC daemon backend is temporarily de-advertised (offline).
|
|
32
|
+
* The code path (probeAgentCli/resolveDshPath, spawner-select, dsh-spawner) is
|
|
33
|
+
* kept dormant — re-add this menu entry to bring it back online. It remains
|
|
34
|
+
* reachable by name (e.g. `--agent dsh`, or typing "dsh" at the prompt).
|
|
35
|
+
*/
|
|
36
|
+
export const AGENT_MENU = [
|
|
37
|
+
{ value: "claude-code", label: "Claude Code (default)" },
|
|
38
|
+
{ value: "codex", label: "Codex CLI" },
|
|
39
|
+
{ value: "kiro", label: "Kiro CLI" },
|
|
40
|
+
];
|
|
41
|
+
|
|
42
|
+
/** A non-empty trimmed string, or undefined. */
|
|
43
|
+
function nonEmpty(value) {
|
|
44
|
+
return typeof value === "string" && value.trim() ? value.trim() : undefined;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Prompt the operator to pick an agent backend for the agent being configured,
|
|
49
|
+
* shared by the add / login / install-add flows.
|
|
50
|
+
*
|
|
51
|
+
* Returns the chosen backend value, or `undefined` when the operator makes no
|
|
52
|
+
* explicit choice — meaning "inherit the daemon default" (the caller then omits
|
|
53
|
+
* the `agentType` / top-level `agent` field). `undefined` is returned when:
|
|
54
|
+
* - `isTTY` is false (non-interactive / piped) — returns immediately, prints
|
|
55
|
+
* nothing, never blocks (mirrors resolveInstallAgent / resolveDaemonCwds);
|
|
56
|
+
* - the answer is empty (Enter);
|
|
57
|
+
* - the answer is an out-of-range number or is otherwise unrecognized.
|
|
58
|
+
*
|
|
59
|
+
* Accepts either a menu number (1..AGENT_MENU.length) or a KNOWN_AGENTS value
|
|
60
|
+
* typed by name (e.g. "codex", or "dsh" even though it is de-advertised).
|
|
61
|
+
*
|
|
62
|
+
* @param {{
|
|
63
|
+
* ask: (query: string, opts?: object) => Promise<string>,
|
|
64
|
+
* log?: (m: string) => void,
|
|
65
|
+
* isTTY?: boolean,
|
|
66
|
+
* }} deps
|
|
67
|
+
* @returns {Promise<string|undefined>}
|
|
68
|
+
*/
|
|
69
|
+
export async function promptAgentBackend({ ask, log = () => {}, isTTY = false } = {}) {
|
|
70
|
+
// Non-TTY (piped / scripted) must never block on a menu — return immediately
|
|
71
|
+
// with no output. The caller falls back to --agent or inherits the default.
|
|
72
|
+
if (!isTTY || typeof ask !== "function") return undefined;
|
|
73
|
+
|
|
74
|
+
log("[Chorus] Which agent backend should this agent use?");
|
|
75
|
+
for (let i = 0; i < AGENT_MENU.length; i += 1) {
|
|
76
|
+
log(`[Chorus] ${i + 1}) ${AGENT_MENU[i].label}`);
|
|
77
|
+
}
|
|
78
|
+
const answer = nonEmpty(
|
|
79
|
+
await ask(`Select [1-${AGENT_MENU.length}] (Enter to inherit the daemon default): `),
|
|
80
|
+
);
|
|
81
|
+
if (!answer) return undefined; // Enter → inherit default.
|
|
82
|
+
|
|
83
|
+
const n = Number(answer);
|
|
84
|
+
if (Number.isInteger(n) && n >= 1 && n <= AGENT_MENU.length) {
|
|
85
|
+
return AGENT_MENU[n - 1].value;
|
|
86
|
+
}
|
|
87
|
+
// A backend typed by name (muscle memory). KNOWN_AGENTS includes the
|
|
88
|
+
// de-advertised `dsh` backend AND the non-wakeable `offline` classification, so a
|
|
89
|
+
// by-name pick can still reach either even though neither is in the numbered menu.
|
|
90
|
+
if (KNOWN_AGENTS.includes(answer)) return answer;
|
|
91
|
+
|
|
92
|
+
// Out-of-range / garbage → no explicit choice; the caller inherits the default.
|
|
93
|
+
return undefined;
|
|
94
|
+
}
|