@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
|
@@ -1,414 +1,29 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# Chorus + Codex CLI
|
|
2
|
+
# Chorus + Codex CLI installer — DEPRECATED.
|
|
3
3
|
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
# # or non-interactive:
|
|
7
|
-
# CHORUS_URL=https://... CHORUS_API_KEY=cho_... \
|
|
8
|
-
# bash <(curl -sSL https://raw.githubusercontent.com/Chorus-AIDLC/Chorus/main/public/install-codex.sh)
|
|
4
|
+
# Chorus setup is now a global install plus a single command that configures
|
|
5
|
+
# every supported agent (claude / codex / opencode / kiro / openclaw / dsh):
|
|
9
6
|
#
|
|
10
|
-
#
|
|
11
|
-
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
#
|
|
16
|
-
#
|
|
17
|
-
#
|
|
18
|
-
# plugin manifest and loaded by Codex after the plugin is installed/enabled.
|
|
7
|
+
# npm install -g @chorus-aidlc/chorus@0.17.0
|
|
8
|
+
# chorus agents add
|
|
9
|
+
#
|
|
10
|
+
# This script is still fetched via curl for backward compatibility, but it no
|
|
11
|
+
# longer installs anything itself — it just points you at `chorus agents add`.
|
|
12
|
+
#
|
|
13
|
+
# Bash 3.2 compatible (macOS /bin/bash): no case-conversion parameter expansion,
|
|
14
|
+
# no associative arrays.
|
|
19
15
|
|
|
20
16
|
set -euo pipefail
|
|
21
17
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
warn() { printf "${YELLOW}!${RESET} %s\n" "$*" >&2; }
|
|
26
|
-
die() { printf "${RED}✗${RESET} %s\n" "$*" >&2; exit 1; }
|
|
27
|
-
hdr() { printf "\n${BOLD}%s${RESET}\n" "$*"; }
|
|
28
|
-
|
|
29
|
-
# ---------- config ----------
|
|
30
|
-
MARKETPLACE_NAME="chorus-plugins"
|
|
31
|
-
MARKETPLACE_SOURCE_DEFAULT="${CHORUS_MARKETPLACE_SOURCE:-https://github.com/Chorus-AIDLC/Chorus}"
|
|
32
|
-
CHORUS_URL_DEFAULT="${CHORUS_URL_DEFAULT:-http://localhost:8637/api/mcp}"
|
|
33
|
-
CODEX_HOME="${CODEX_HOME:-$HOME/.codex}"
|
|
34
|
-
CONFIG_TOML="$CODEX_HOME/config.toml"
|
|
35
|
-
|
|
36
|
-
is_tty() { [ -t 0 ] && [ -t 1 ]; }
|
|
37
|
-
|
|
38
|
-
clean_legacy_chorus_hooks_json() {
|
|
39
|
-
local hooks_json="$1"
|
|
40
|
-
local tmp backup removed
|
|
41
|
-
|
|
42
|
-
tmp="$(mktemp "${TMPDIR:-/tmp}/chorus-hooks.XXXXXX")"
|
|
43
|
-
backup="${hooks_json}.chorus-legacy-bak"
|
|
44
|
-
cp "$hooks_json" "$backup"
|
|
45
|
-
|
|
46
|
-
if command -v node >/dev/null 2>&1; then
|
|
47
|
-
removed="$(node - "$hooks_json" "$tmp" <<'NODE'
|
|
48
|
-
const fs = require("fs");
|
|
49
|
-
const input = process.argv[2];
|
|
50
|
-
const output = process.argv[3];
|
|
51
|
-
let removed = 0;
|
|
52
|
-
|
|
53
|
-
function isLegacyCommand(value) {
|
|
54
|
-
return typeof value === "string" && value.indexOf("hooks/chorus/run-hook.sh") !== -1;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
function clean(value, parentKey) {
|
|
58
|
-
if (Array.isArray(value)) {
|
|
59
|
-
return value
|
|
60
|
-
.map((item) => clean(item, parentKey))
|
|
61
|
-
.filter((item) => item !== undefined);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
if (value && typeof value === "object") {
|
|
65
|
-
if (isLegacyCommand(value.command)) {
|
|
66
|
-
removed += 1;
|
|
67
|
-
return undefined;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
const hadHooksArray = Array.isArray(value.hooks);
|
|
71
|
-
const out = {};
|
|
72
|
-
for (const [key, child] of Object.entries(value)) {
|
|
73
|
-
const cleaned = clean(child, key);
|
|
74
|
-
if (cleaned === undefined) continue;
|
|
75
|
-
if (Array.isArray(cleaned) && cleaned.length === 0 && (key === "hooks" || parentKey === "hooks")) continue;
|
|
76
|
-
out[key] = cleaned;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
if (hadHooksArray && (!Array.isArray(out.hooks) || out.hooks.length === 0)) {
|
|
80
|
-
return undefined;
|
|
81
|
-
}
|
|
82
|
-
return out;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
return value;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
let data = JSON.parse(fs.readFileSync(input, "utf8"));
|
|
89
|
-
data = clean(data, "") || {};
|
|
90
|
-
if (data.hooks && typeof data.hooks === "object" && !Array.isArray(data.hooks)) {
|
|
91
|
-
for (const key of Object.keys(data.hooks)) {
|
|
92
|
-
if (Array.isArray(data.hooks[key]) && data.hooks[key].length === 0) {
|
|
93
|
-
delete data.hooks[key];
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
if (Object.keys(data.hooks).length === 0) {
|
|
97
|
-
delete data.hooks;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
fs.writeFileSync(output, JSON.stringify(data, null, 2) + "\n");
|
|
101
|
-
process.stdout.write(String(removed));
|
|
102
|
-
NODE
|
|
103
|
-
)" || {
|
|
104
|
-
rm -f "$tmp"
|
|
105
|
-
warn "Could not parse $hooks_json with node; leaving legacy hooks unchanged."
|
|
106
|
-
warn "Backup created at $backup"
|
|
107
|
-
return 1
|
|
108
|
-
}
|
|
109
|
-
elif command -v python3 >/dev/null 2>&1; then
|
|
110
|
-
removed="$(python3 - "$hooks_json" "$tmp" <<'PY'
|
|
111
|
-
import json
|
|
112
|
-
import sys
|
|
113
|
-
|
|
114
|
-
input_path = sys.argv[1]
|
|
115
|
-
output_path = sys.argv[2]
|
|
116
|
-
removed = 0
|
|
117
|
-
|
|
118
|
-
def is_legacy_command(value):
|
|
119
|
-
return isinstance(value, str) and "hooks/chorus/run-hook.sh" in value
|
|
120
|
-
|
|
121
|
-
def clean(value, parent_key=""):
|
|
122
|
-
global removed
|
|
123
|
-
if isinstance(value, list):
|
|
124
|
-
return [item for item in (clean(child, parent_key) for child in value) if item is not None]
|
|
125
|
-
if isinstance(value, dict):
|
|
126
|
-
if is_legacy_command(value.get("command")):
|
|
127
|
-
removed += 1
|
|
128
|
-
return None
|
|
129
|
-
had_hooks_array = isinstance(value.get("hooks"), list)
|
|
130
|
-
out = {}
|
|
131
|
-
for key, child in value.items():
|
|
132
|
-
cleaned = clean(child, key)
|
|
133
|
-
if cleaned is None:
|
|
134
|
-
continue
|
|
135
|
-
if isinstance(cleaned, list) and not cleaned and (key == "hooks" or parent_key == "hooks"):
|
|
136
|
-
continue
|
|
137
|
-
out[key] = cleaned
|
|
138
|
-
if had_hooks_array and (not isinstance(out.get("hooks"), list) or not out["hooks"]):
|
|
139
|
-
return None
|
|
140
|
-
return out
|
|
141
|
-
return value
|
|
142
|
-
|
|
143
|
-
with open(input_path, "r", encoding="utf-8") as f:
|
|
144
|
-
data = json.load(f)
|
|
145
|
-
|
|
146
|
-
data = clean(data) or {}
|
|
147
|
-
if isinstance(data.get("hooks"), dict):
|
|
148
|
-
for key in list(data["hooks"].keys()):
|
|
149
|
-
if isinstance(data["hooks"][key], list) and not data["hooks"][key]:
|
|
150
|
-
del data["hooks"][key]
|
|
151
|
-
if not data["hooks"]:
|
|
152
|
-
del data["hooks"]
|
|
153
|
-
|
|
154
|
-
with open(output_path, "w", encoding="utf-8") as f:
|
|
155
|
-
json.dump(data, f, indent=2)
|
|
156
|
-
f.write("\n")
|
|
157
|
-
|
|
158
|
-
print(removed, end="")
|
|
159
|
-
PY
|
|
160
|
-
)" || {
|
|
161
|
-
rm -f "$tmp"
|
|
162
|
-
warn "Could not parse $hooks_json with python3; leaving legacy hooks unchanged."
|
|
163
|
-
warn "Backup created at $backup"
|
|
164
|
-
return 1
|
|
165
|
-
}
|
|
166
|
-
else
|
|
167
|
-
rm -f "$tmp"
|
|
168
|
-
warn "Cannot auto-clean $hooks_json because neither node nor python3 is available."
|
|
169
|
-
warn "Backup created at $backup"
|
|
170
|
-
return 1
|
|
171
|
-
fi
|
|
172
|
-
|
|
173
|
-
if [ "${removed:-0}" = "0" ]; then
|
|
174
|
-
rm -f "$tmp"
|
|
175
|
-
warn "No legacy Chorus hook entries were removed from $hooks_json."
|
|
176
|
-
warn "Backup created at $backup"
|
|
177
|
-
return 1
|
|
178
|
-
fi
|
|
179
|
-
|
|
180
|
-
if grep -q '[^[:space:]{}]' "$tmp" 2>/dev/null; then
|
|
181
|
-
mv "$tmp" "$hooks_json"
|
|
182
|
-
ok "Removed $removed legacy Chorus hook entr$( [ "$removed" = "1" ] && printf 'y' || printf 'ies' ) from $hooks_json"
|
|
183
|
-
else
|
|
184
|
-
rm -f "$tmp" "$hooks_json"
|
|
185
|
-
ok "Removed $removed legacy Chorus hook entr$( [ "$removed" = "1" ] && printf 'y' || printf 'ies' ) and deleted now-empty $hooks_json"
|
|
186
|
-
fi
|
|
187
|
-
ok "Backup saved at $backup"
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
# If piped through `curl | bash`, stdin is the script body. Re-open from /dev/tty
|
|
191
|
-
# so interactive prompts still work — but only if a real TTY is available AND we
|
|
192
|
-
# actually need to prompt for input. Both CHORUS_URL and CHORUS_API_KEY being set
|
|
193
|
-
# lets us run fully non-interactively (useful in CI or unified-exec sandboxes).
|
|
194
|
-
if [ -z "${CHORUS_API_KEY:-}" ] && ! is_tty; then
|
|
195
|
-
if [ -r /dev/tty ] && [ -w /dev/tty ]; then
|
|
196
|
-
exec < /dev/tty
|
|
197
|
-
fi
|
|
198
|
-
fi
|
|
199
|
-
|
|
200
|
-
# ---------- step 1: check codex ----------
|
|
201
|
-
hdr "1/5 Checking Codex CLI"
|
|
202
|
-
command -v codex >/dev/null 2>&1 || die "codex not found in PATH. Install it first: npm i -g @openai/codex"
|
|
203
|
-
ok "Found $(codex --version 2>/dev/null | head -1)"
|
|
204
|
-
|
|
205
|
-
# ---------- step 2: register marketplace ----------
|
|
206
|
-
hdr "2/5 Registering the Chorus plugin marketplace"
|
|
207
|
-
# Extract the currently registered source (if any) for chorus-plugins.
|
|
208
|
-
# awk scoped between the matching [marketplaces.<name>] header and the next [section].
|
|
209
|
-
existing_source=""
|
|
210
|
-
if [ -f "$CONFIG_TOML" ]; then
|
|
211
|
-
existing_source="$(awk -v name="$MARKETPLACE_NAME" '
|
|
212
|
-
$0 ~ "^\\[marketplaces\\." name "\\][[:space:]]*$" { in_block=1; next }
|
|
213
|
-
in_block && /^\[/ { in_block=0 }
|
|
214
|
-
in_block && /^source[[:space:]]*=/ {
|
|
215
|
-
sub(/^source[[:space:]]*=[[:space:]]*/, "")
|
|
216
|
-
gsub(/^"|"$/, "")
|
|
217
|
-
print
|
|
218
|
-
exit
|
|
219
|
-
}
|
|
220
|
-
' "$CONFIG_TOML" 2>/dev/null || true)"
|
|
221
|
-
fi
|
|
222
|
-
|
|
223
|
-
if [ -z "$existing_source" ]; then
|
|
224
|
-
codex plugin marketplace add "$MARKETPLACE_SOURCE_DEFAULT" >/dev/null
|
|
225
|
-
ok "Added marketplace: $MARKETPLACE_SOURCE_DEFAULT"
|
|
226
|
-
elif [ "$existing_source" = "$MARKETPLACE_SOURCE_DEFAULT" ]; then
|
|
227
|
-
# Same source — pull the latest plugin manifest/version.
|
|
228
|
-
if codex plugin marketplace upgrade "$MARKETPLACE_NAME" >/dev/null 2>&1; then
|
|
229
|
-
ok "Upgraded marketplace '${MARKETPLACE_NAME}' to latest"
|
|
230
|
-
else
|
|
231
|
-
warn "Marketplace '${MARKETPLACE_NAME}' already registered; upgrade skipped"
|
|
232
|
-
fi
|
|
233
|
-
else
|
|
234
|
-
# Source changed — remove the stale registration and re-add.
|
|
235
|
-
warn "Marketplace '${MARKETPLACE_NAME}' points at a different source; re-registering"
|
|
236
|
-
warn " old: $existing_source"
|
|
237
|
-
warn " new: $MARKETPLACE_SOURCE_DEFAULT"
|
|
238
|
-
codex plugin marketplace remove "$MARKETPLACE_NAME" >/dev/null 2>&1 || true
|
|
239
|
-
codex plugin marketplace add "$MARKETPLACE_SOURCE_DEFAULT" >/dev/null
|
|
240
|
-
ok "Re-added marketplace: $MARKETPLACE_SOURCE_DEFAULT"
|
|
241
|
-
fi
|
|
242
|
-
|
|
243
|
-
# ---------- step 3: collect Chorus URL + API key ----------
|
|
244
|
-
hdr "3/5 Configuring the Chorus MCP server"
|
|
245
|
-
|
|
246
|
-
# URL
|
|
247
|
-
if [ -n "${CHORUS_URL:-}" ]; then
|
|
248
|
-
url="$CHORUS_URL"
|
|
249
|
-
ok "Using CHORUS_URL from env: $url"
|
|
250
|
-
elif [ -t 0 ]; then
|
|
251
|
-
printf " Chorus MCP URL ${DIM}[default: $CHORUS_URL_DEFAULT]${RESET}: "
|
|
252
|
-
read -r url
|
|
253
|
-
url="${url:-$CHORUS_URL_DEFAULT}"
|
|
254
|
-
else
|
|
255
|
-
url="$CHORUS_URL_DEFAULT"
|
|
256
|
-
warn "No TTY and CHORUS_URL unset — using default: $url"
|
|
257
|
-
fi
|
|
258
|
-
|
|
259
|
-
# API key
|
|
260
|
-
if [ -n "${CHORUS_API_KEY:-}" ]; then
|
|
261
|
-
apikey="$CHORUS_API_KEY"
|
|
262
|
-
ok "Using CHORUS_API_KEY from env"
|
|
263
|
-
elif [ -t 0 ]; then
|
|
264
|
-
printf " Chorus API key (starts with cho_): "
|
|
265
|
-
stty -echo 2>/dev/null || true
|
|
266
|
-
read -r apikey
|
|
267
|
-
stty echo 2>/dev/null || true
|
|
268
|
-
printf "\n"
|
|
269
|
-
[ -n "$apikey" ] || die "API key is required"
|
|
270
|
-
else
|
|
271
|
-
die "No TTY and CHORUS_API_KEY unset — cannot continue"
|
|
272
|
-
fi
|
|
273
|
-
|
|
274
|
-
# Must be http(s).
|
|
275
|
-
case "$url" in
|
|
276
|
-
http://*|https://*) ;;
|
|
277
|
-
*) die "URL must start with http:// or https:// — got: $url" ;;
|
|
278
|
-
esac
|
|
279
|
-
|
|
280
|
-
# Normalize: the Chorus MCP endpoint lives under /api/mcp. If the user gave us
|
|
281
|
-
# just a host (or a host with trailing slash, or any path that doesn't already
|
|
282
|
-
# end in /api/mcp), append it so the MCP handshake hits the right route.
|
|
283
|
-
case "$url" in
|
|
284
|
-
*/api/mcp) ;;
|
|
285
|
-
*/api/mcp/) url="${url%/}" ;;
|
|
286
|
-
*/) url="${url}api/mcp" ;;
|
|
287
|
-
*) url="${url}/api/mcp" ;;
|
|
288
|
-
esac
|
|
289
|
-
ok "MCP endpoint: $url"
|
|
290
|
-
|
|
291
|
-
# ---------- step 4: write config.toml ----------
|
|
292
|
-
hdr "4/5 Writing ~/.codex/config.toml"
|
|
293
|
-
mkdir -p "$CODEX_HOME"
|
|
294
|
-
[ -f "$CONFIG_TOML" ] || touch "$CONFIG_TOML"
|
|
295
|
-
|
|
296
|
-
# Back up once
|
|
297
|
-
if [ ! -f "$CONFIG_TOML.chorus-bak" ]; then
|
|
298
|
-
cp "$CONFIG_TOML" "$CONFIG_TOML.chorus-bak"
|
|
299
|
-
ok "Backed up original config to ${CONFIG_TOML}.chorus-bak"
|
|
300
|
-
fi
|
|
301
|
-
|
|
302
|
-
# Remove any existing [mcp_servers.chorus] and [mcp_servers.chorus.*] sub-tables
|
|
303
|
-
# (idempotent — old rotated keys / headers are wiped, then fresh section appended).
|
|
304
|
-
# Pure awk so we do not require Python on the user's machine.
|
|
305
|
-
tmp="$(mktemp "${TMPDIR:-/tmp}/chorus-config.XXXXXX")"
|
|
306
|
-
awk '
|
|
307
|
-
# A TOML table header line. Match [mcp_servers.chorus] and any
|
|
308
|
-
# [mcp_servers.chorus.<subtable>], plus [plugins."chorus@chorus-plugins"],
|
|
309
|
-
# and suppress lines until the next [section] header appears.
|
|
310
|
-
/^\[mcp_servers\.chorus(\..*)?\][[:space:]]*$/ { skip = 1; next }
|
|
311
|
-
/^\[plugins\."chorus@chorus-plugins"\][[:space:]]*$/ { skip = 1; next }
|
|
312
|
-
/^\[/ { skip = 0 }
|
|
313
|
-
skip != 1 { print }
|
|
314
|
-
' "$CONFIG_TOML" > "$tmp"
|
|
315
|
-
mv "$tmp" "$CONFIG_TOML"
|
|
316
|
-
|
|
317
|
-
# Ensure user-owned file mode 600 (contains secret).
|
|
318
|
-
chmod 600 "$CONFIG_TOML"
|
|
319
|
-
|
|
320
|
-
# Append [mcp_servers.chorus] with literal URL + Authorization header.
|
|
321
|
-
# (Codex does NOT expand ${VAR}; the token is a literal string in the header.)
|
|
322
|
-
cat >> "$CONFIG_TOML" <<TOML
|
|
323
|
-
|
|
324
|
-
[mcp_servers.chorus]
|
|
325
|
-
url = "${url}"
|
|
326
|
-
|
|
327
|
-
[mcp_servers.chorus.http_headers]
|
|
328
|
-
Authorization = "Bearer ${apikey}"
|
|
329
|
-
|
|
330
|
-
[plugins."chorus@chorus-plugins"]
|
|
331
|
-
enabled = true
|
|
332
|
-
TOML
|
|
333
|
-
|
|
334
|
-
ok "Wrote [mcp_servers.chorus] and [plugins.\"chorus@chorus-plugins\"] → ${CONFIG_TOML}"
|
|
335
|
-
|
|
336
|
-
# ---------- step 5: enable hooks ----------
|
|
337
|
-
hdr "5/5 Enabling Codex lifecycle hooks"
|
|
338
|
-
|
|
339
|
-
HOOKS_JSON="$CODEX_HOME/hooks.json"
|
|
340
|
-
if [ -f "$HOOKS_JSON" ] && grep -q "hooks/chorus/run-hook.sh" "$HOOKS_JSON" 2>/dev/null; then
|
|
341
|
-
warn "Found legacy copied Chorus hook entries in $HOOKS_JSON."
|
|
342
|
-
warn "These can duplicate the plugin-bundled Chorus hooks now loaded by Codex."
|
|
343
|
-
warn "Legacy entries:"
|
|
344
|
-
grep -n "hooks/chorus/run-hook.sh" "$HOOKS_JSON" 2>/dev/null | sed 's/^/ /' >&2 || true
|
|
345
|
-
|
|
346
|
-
if [ -r /dev/tty ] && [ -w /dev/tty ]; then
|
|
347
|
-
printf " Clean legacy Chorus entries from %s now? [y/N]: " "$HOOKS_JSON" > /dev/tty
|
|
348
|
-
read -r clean_legacy_hooks_answer < /dev/tty
|
|
349
|
-
case "$clean_legacy_hooks_answer" in
|
|
350
|
-
y|Y|yes|YES|Yes)
|
|
351
|
-
clean_legacy_chorus_hooks_json "$HOOKS_JSON" || true
|
|
352
|
-
;;
|
|
353
|
-
*)
|
|
354
|
-
warn "Keeping legacy hooks unchanged. Use /hooks to disable them or remove matching entries manually to avoid duplicates."
|
|
355
|
-
;;
|
|
356
|
-
esac
|
|
357
|
-
else
|
|
358
|
-
warn "No interactive TTY available; keeping legacy hooks unchanged."
|
|
359
|
-
warn "Re-run this installer in a terminal to auto-clean them, or remove matching entries manually."
|
|
360
|
-
fi
|
|
361
|
-
fi
|
|
362
|
-
|
|
363
|
-
# Keep the current canonical feature key. `codex_hooks` is a deprecated alias;
|
|
364
|
-
# remove any old hook feature setting from [features] before writing `hooks = true`
|
|
365
|
-
# so reruns do not create duplicate TOML keys.
|
|
366
|
-
if grep -qE "^\[features\]" "$CONFIG_TOML"; then
|
|
367
|
-
tmp="$(mktemp "${TMPDIR:-/tmp}/chorus-features.XXXXXX")"
|
|
368
|
-
awk '
|
|
369
|
-
/^\[features\][[:space:]]*$/ {
|
|
370
|
-
in_features = 1
|
|
371
|
-
print
|
|
372
|
-
print "hooks = true"
|
|
373
|
-
next
|
|
374
|
-
}
|
|
375
|
-
/^\[/ {
|
|
376
|
-
in_features = 0
|
|
377
|
-
}
|
|
378
|
-
in_features && /^[[:space:]]*(hooks|codex_hooks)[[:space:]]*=/ {
|
|
379
|
-
next
|
|
380
|
-
}
|
|
381
|
-
{ print }
|
|
382
|
-
' "$CONFIG_TOML" > "$tmp" && mv "$tmp" "$CONFIG_TOML"
|
|
383
|
-
ok "Set [features] hooks = true"
|
|
384
|
-
else
|
|
385
|
-
cat >> "$CONFIG_TOML" <<'TFEAT'
|
|
386
|
-
|
|
387
|
-
[features]
|
|
388
|
-
hooks = true
|
|
389
|
-
TFEAT
|
|
390
|
-
ok "Appended [features] hooks = true"
|
|
391
|
-
fi
|
|
392
|
-
|
|
393
|
-
# ---------- epilogue ----------
|
|
394
|
-
hdr "Done."
|
|
395
|
-
cat <<NEXT
|
|
396
|
-
|
|
397
|
-
Start Codex — the plugin is registered as INSTALLED_BY_DEFAULT so it
|
|
398
|
-
should activate on first launch:
|
|
399
|
-
|
|
400
|
-
${BOLD}codex${RESET}
|
|
401
|
-
|
|
402
|
-
If /plugins does not show "chorus" as installed on first launch, open it
|
|
403
|
-
and click Install once (Codex has no \`plugin install\` CLI command yet,
|
|
404
|
-
so one manual click is the fallback path).
|
|
405
|
-
|
|
406
|
-
Verify anytime:
|
|
407
|
-
${BOLD}codex mcp list${RESET} # 'chorus' row, Auth = 'Bearer token'
|
|
408
|
-
${BOLD}codex features list${RESET} # hooks + plugins both true
|
|
409
|
-
${BOLD}/hooks${RESET} # review/trust bundled Chorus hooks after launch
|
|
18
|
+
BOLD=$'\033[1m'; YELLOW=$'\033[33m'; RESET=$'\033[0m'
|
|
19
|
+
INSTALL_CMD="npm install -g @chorus-aidlc/chorus@0.17.0"
|
|
20
|
+
INIT_CMD="chorus agents add"
|
|
410
21
|
|
|
411
|
-
|
|
412
|
-
|
|
22
|
+
printf "${YELLOW}!${RESET} install-codex.sh is deprecated and installs nothing.\n" >&2
|
|
23
|
+
printf " Chorus setup is now: ${BOLD}%s${RESET} then ${BOLD}%s${RESET}\n" "$INSTALL_CMD" "$INIT_CMD" >&2
|
|
413
24
|
|
|
414
|
-
|
|
25
|
+
# This stub installs nothing. Print the exact commands and exit non-zero so
|
|
26
|
+
# both interactive users and automation that piped the old installer notice
|
|
27
|
+
# they must install the Chorus CLI globally, then run `chorus agents add`.
|
|
28
|
+
printf "\n Run these to set up Chorus:\n\n %s\n %s\n\n" "$INSTALL_CMD" "$INIT_CMD" >&2
|
|
29
|
+
exit 1
|