@chorus-aidlc/chorus 0.14.4 → 0.14.6

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.
Files changed (225) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +192 -192
  3. package/.next/standalone/.next/app-path-routes-manifest.json +32 -32
  4. package/.next/standalone/.next/build-manifest.json +2 -2
  5. package/.next/standalone/.next/prerender-manifest.json +27 -27
  6. package/.next/standalone/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
  7. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
  8. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/[ideaUuid]/page_client-reference-manifest.js +1 -1
  9. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/dashboard/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page.js +1 -1
  11. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/[documentUuid]/page_client-reference-manifest.js +1 -1
  12. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page.js +1 -1
  13. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
  14. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/graph/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page.js +1 -1
  16. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/[proposalUuid]/page_client-reference-manifest.js +1 -1
  17. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/new/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page.js +1 -1
  19. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/proposals/page_client-reference-manifest.js +1 -1
  20. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/[taskUuid]/page_client-reference-manifest.js +1 -1
  21. package/.next/standalone/.next/server/app/(dashboard)/projects/[uuid]/tasks/page_client-reference-manifest.js +1 -1
  22. package/.next/standalone/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
  23. package/.next/standalone/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  24. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  25. package/.next/standalone/.next/server/app/_not-found.html +2 -2
  26. package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
  27. package/.next/standalone/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
  28. package/.next/standalone/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
  29. package/.next/standalone/.next/server/app/admin/companies/new.html +2 -2
  30. package/.next/standalone/.next/server/app/admin/companies/new.rsc +1 -1
  31. package/.next/standalone/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
  32. package/.next/standalone/.next/server/app/admin/companies.html +2 -2
  33. package/.next/standalone/.next/server/app/admin/companies.rsc +1 -1
  34. package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  35. package/.next/standalone/.next/server/app/admin.html +2 -2
  36. package/.next/standalone/.next/server/app/admin.rsc +1 -1
  37. package/.next/standalone/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
  38. package/.next/standalone/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
  39. package/.next/standalone/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
  40. package/.next/standalone/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
  41. package/.next/standalone/.next/server/app/api/agent-connections/route_client-reference-manifest.js +1 -1
  42. package/.next/standalone/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
  43. package/.next/standalone/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  44. package/.next/standalone/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
  45. package/.next/standalone/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
  47. package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  48. package/.next/standalone/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/app/api/auth/company-oidc/route_client-reference-manifest.js +1 -1
  50. package/.next/standalone/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
  51. package/.next/standalone/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
  52. package/.next/standalone/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  53. package/.next/standalone/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
  55. package/.next/standalone/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
  56. package/.next/standalone/.next/server/app/api/daemon/connection-heartbeat/route_client-reference-manifest.js +1 -1
  57. package/.next/standalone/.next/server/app/api/daemon/control/route_client-reference-manifest.js +1 -1
  58. package/.next/standalone/.next/server/app/api/daemon/execution-state/route_client-reference-manifest.js +1 -1
  59. package/.next/standalone/.next/server/app/api/daemon/executions/route_client-reference-manifest.js +1 -1
  60. package/.next/standalone/.next/server/app/api/daemon/pending-turns/route_client-reference-manifest.js +1 -1
  61. package/.next/standalone/.next/server/app/api/daemon/report-interrupt/route_client-reference-manifest.js +1 -1
  62. package/.next/standalone/.next/server/app/api/daemon/resume/route_client-reference-manifest.js +1 -1
  63. package/.next/standalone/.next/server/app/api/daemon/transcript/route_client-reference-manifest.js +1 -1
  64. package/.next/standalone/.next/server/app/api/daemon/turn-advance/route_client-reference-manifest.js +1 -1
  65. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/instruction/route_client-reference-manifest.js +1 -1
  66. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/repoint/route_client-reference-manifest.js +1 -1
  67. package/.next/standalone/.next/server/app/api/daemon-sessions/[sessionUuid]/route_client-reference-manifest.js +1 -1
  68. package/.next/standalone/.next/server/app/api/daemon-sessions/ad-hoc/route_client-reference-manifest.js +1 -1
  69. package/.next/standalone/.next/server/app/api/daemon-sessions/route_client-reference-manifest.js +1 -1
  70. package/.next/standalone/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
  71. package/.next/standalone/.next/server/app/api/entities/[type]/[uuid]/root-idea/route_client-reference-manifest.js +1 -1
  72. package/.next/standalone/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
  73. package/.next/standalone/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  74. package/.next/standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/api/ideas/[uuid]/claim/route_client-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/preview/route_client-reference-manifest.js +1 -1
  77. package/.next/standalone/.next/server/app/api/ideas/[uuid]/move/route_client-reference-manifest.js +1 -1
  78. package/.next/standalone/.next/server/app/api/ideas/[uuid]/parent/route_client-reference-manifest.js +1 -1
  79. package/.next/standalone/.next/server/app/api/ideas/[uuid]/release/route_client-reference-manifest.js +1 -1
  80. package/.next/standalone/.next/server/app/api/ideas/[uuid]/route_client-reference-manifest.js +1 -1
  81. package/.next/standalone/.next/server/app/api/ideas/[uuid]/wake-preview/route_client-reference-manifest.js +1 -1
  82. package/.next/standalone/.next/server/app/api/ideas/conversational/route_client-reference-manifest.js +1 -1
  83. package/.next/standalone/.next/server/app/api/mcp/route.js +5 -5
  84. package/.next/standalone/.next/server/app/api/mcp/route.js.nft.json +1 -1
  85. package/.next/standalone/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  86. package/.next/standalone/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
  87. package/.next/standalone/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
  88. package/.next/standalone/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
  89. package/.next/standalone/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
  90. package/.next/standalone/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
  91. package/.next/standalone/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  93. package/.next/standalone/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
  94. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
  95. package/.next/standalone/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
  96. package/.next/standalone/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
  97. package/.next/standalone/.next/server/app/api/project-visits/pin/route_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/api/project-visits/route_client-reference-manifest.js +1 -1
  99. package/.next/standalone/.next/server/app/api/project-visits/visit/route_client-reference-manifest.js +1 -1
  100. package/.next/standalone/.next/server/app/api/projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
  101. package/.next/standalone/.next/server/app/api/projects/[uuid]/available/route_client-reference-manifest.js +1 -1
  102. package/.next/standalone/.next/server/app/api/projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
  103. package/.next/standalone/.next/server/app/api/projects/[uuid]/group/route_client-reference-manifest.js +1 -1
  104. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/route_client-reference-manifest.js +1 -1
  105. package/.next/standalone/.next/server/app/api/projects/[uuid]/ideas/tracker/route_client-reference-manifest.js +1 -1
  106. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/[proposalUuid]/validate/route_client-reference-manifest.js +1 -1
  107. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/route_client-reference-manifest.js +1 -1
  108. package/.next/standalone/.next/server/app/api/projects/[uuid]/proposals/summary/route_client-reference-manifest.js +1 -1
  109. package/.next/standalone/.next/server/app/api/projects/[uuid]/resource-graph/route_client-reference-manifest.js +1 -1
  110. package/.next/standalone/.next/server/app/api/projects/[uuid]/route_client-reference-manifest.js +1 -1
  111. package/.next/standalone/.next/server/app/api/projects/[uuid]/stats/route_client-reference-manifest.js +1 -1
  112. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/dependencies/route_client-reference-manifest.js +1 -1
  113. package/.next/standalone/.next/server/app/api/projects/[uuid]/tasks/route_client-reference-manifest.js +1 -1
  114. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  115. package/.next/standalone/.next/server/app/api/proposals/[uuid]/approve/route_client-reference-manifest.js +1 -1
  116. package/.next/standalone/.next/server/app/api/proposals/[uuid]/close/route_client-reference-manifest.js +1 -1
  117. package/.next/standalone/.next/server/app/api/proposals/[uuid]/reject/route_client-reference-manifest.js +1 -1
  118. package/.next/standalone/.next/server/app/api/proposals/[uuid]/revoke/route_client-reference-manifest.js +1 -1
  119. package/.next/standalone/.next/server/app/api/proposals/[uuid]/route_client-reference-manifest.js +1 -1
  120. package/.next/standalone/.next/server/app/api/references/[uuid]/route_client-reference-manifest.js +1 -1
  121. package/.next/standalone/.next/server/app/api/references/route_client-reference-manifest.js +1 -1
  122. package/.next/standalone/.next/server/app/api/search/route.js +1 -1
  123. package/.next/standalone/.next/server/app/api/search/route.js.nft.json +1 -1
  124. package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  125. package/.next/standalone/.next/server/app/api/session/route_client-reference-manifest.js +1 -1
  126. package/.next/standalone/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
  127. package/.next/standalone/.next/server/app/api/tasks/[uuid]/claim/route_client-reference-manifest.js +1 -1
  128. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/[dependsOnUuid]/route_client-reference-manifest.js +1 -1
  129. package/.next/standalone/.next/server/app/api/tasks/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
  130. package/.next/standalone/.next/server/app/api/tasks/[uuid]/release/route_client-reference-manifest.js +1 -1
  131. package/.next/standalone/.next/server/app/api/tasks/[uuid]/route_client-reference-manifest.js +1 -1
  132. package/.next/standalone/.next/server/app/api/tasks/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  133. package/.next/standalone/.next/server/app/index.html +2 -2
  134. package/.next/standalone/.next/server/app/index.rsc +1 -1
  135. package/.next/standalone/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
  136. package/.next/standalone/.next/server/app/login/admin.html +2 -2
  137. package/.next/standalone/.next/server/app/login/admin.rsc +1 -1
  138. package/.next/standalone/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
  139. package/.next/standalone/.next/server/app/login/callback.html +2 -2
  140. package/.next/standalone/.next/server/app/login/callback.rsc +1 -1
  141. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  142. package/.next/standalone/.next/server/app/login/pick-workspace/page_client-reference-manifest.js +1 -1
  143. package/.next/standalone/.next/server/app/login/pick-workspace.html +2 -2
  144. package/.next/standalone/.next/server/app/login/pick-workspace.rsc +1 -1
  145. package/.next/standalone/.next/server/app/login.html +2 -2
  146. package/.next/standalone/.next/server/app/login.rsc +1 -1
  147. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  148. package/.next/standalone/.next/server/app/onboarding.html +2 -2
  149. package/.next/standalone/.next/server/app/onboarding.rsc +1 -1
  150. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  151. package/.next/standalone/.next/server/app/projects.html +2 -2
  152. package/.next/standalone/.next/server/app/projects.rsc +1 -1
  153. package/.next/standalone/.next/server/app/settings.html +2 -2
  154. package/.next/standalone/.next/server/app/settings.rsc +1 -1
  155. package/.next/standalone/.next/server/app-paths-manifest.json +32 -32
  156. package/.next/standalone/.next/server/chunks/1114.js +1 -1
  157. package/.next/standalone/.next/server/chunks/3219.js +1 -1
  158. package/.next/standalone/.next/server/chunks/6515.js +2 -2
  159. package/.next/standalone/.next/server/chunks/6528.js +1 -0
  160. package/.next/standalone/.next/server/chunks/8454.js +1 -1
  161. package/.next/standalone/.next/server/middleware-manifest.json +1 -1
  162. package/.next/standalone/.next/server/pages/404.html +2 -2
  163. package/.next/standalone/.next/server/pages/500.html +1 -1
  164. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  165. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  166. package/.next/standalone/package.json +1 -1
  167. package/.next/standalone/public/chorus-plugin/.claude-plugin/plugin.json +1 -1
  168. package/.next/standalone/public/chorus-plugin/agents/code-reviewer.md +1 -1
  169. package/.next/standalone/public/chorus-plugin/bin/chorus-api.sh +18 -4
  170. package/.next/standalone/public/chorus-plugin/bin/chorus-paths.sh +69 -0
  171. package/.next/standalone/public/chorus-plugin/bin/on-post-verify-task.sh +7 -1
  172. package/.next/standalone/public/chorus-plugin/bin/on-pre-spawn-agent.sh +10 -2
  173. package/.next/standalone/public/chorus-plugin/bin/on-session-end.sh +36 -23
  174. package/.next/standalone/public/chorus-plugin/bin/on-session-start.sh +6 -0
  175. package/.next/standalone/public/chorus-plugin/bin/on-subagent-start.sh +15 -5
  176. package/.next/standalone/public/chorus-plugin/bin/on-subagent-stop.sh +10 -2
  177. package/.next/standalone/public/chorus-plugin/bin/on-task-completed.sh +6 -0
  178. package/.next/standalone/public/chorus-plugin/bin/on-teammate-idle.sh +6 -0
  179. package/.next/standalone/public/chorus-plugin/bin/on-user-prompt.sh +14 -2
  180. package/.next/standalone/public/chorus-plugin/bin/test-syntax.sh +65 -1
  181. package/.next/standalone/public/chorus-plugin/bin/tests/test-code-review-recovery-contract.sh +75 -0
  182. package/.next/standalone/public/chorus-plugin/bin/tests/test-quick-dev-verification-contract.sh +47 -0
  183. package/.next/standalone/public/chorus-plugin/skills/brainstorm/SKILL.md +1 -1
  184. package/.next/standalone/public/chorus-plugin/skills/chorus/SKILL.md +5 -3
  185. package/.next/standalone/public/chorus-plugin/skills/develop/SKILL.md +2 -2
  186. package/.next/standalone/public/chorus-plugin/skills/idea/SKILL.md +1 -1
  187. package/.next/standalone/public/chorus-plugin/skills/openspec-aware/SKILL.md +1 -1
  188. package/.next/standalone/public/chorus-plugin/skills/proposal/SKILL.md +1 -1
  189. package/.next/standalone/public/chorus-plugin/skills/quick-dev/SKILL.md +15 -11
  190. package/.next/standalone/public/chorus-plugin/skills/review/SKILL.md +2 -2
  191. package/.next/standalone/public/chorus-plugin/skills/yolo/SKILL.md +2 -2
  192. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-brainstorm/SKILL.md +1 -1
  193. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-develop/SKILL.md +2 -2
  194. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-idea/SKILL.md +1 -1
  195. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-openspec-aware/SKILL.md +1 -1
  196. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-proposal/SKILL.md +1 -1
  197. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-quick-dev/SKILL.md +15 -11
  198. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-review/SKILL.md +2 -2
  199. package/.next/standalone/public/kiro-plugin/.kiro/skills/chorus-yolo/SKILL.md +2 -2
  200. package/.next/standalone/public/kiro-plugin/.kiro/steering/chorus.md +3 -1
  201. package/.next/standalone/public/kiro-plugin/bin/chorus-api.sh +1 -1
  202. package/.next/standalone/public/kiro-plugin/bin/on-post-verify-task.sh +2 -1
  203. package/.next/standalone/public/skill/brainstorm-chorus/SKILL.md +1 -1
  204. package/.next/standalone/public/skill/chorus/SKILL.md +5 -3
  205. package/.next/standalone/public/skill/code-reviewer-chorus/SKILL.md +2 -2
  206. package/.next/standalone/public/skill/develop-chorus/SKILL.md +2 -2
  207. package/.next/standalone/public/skill/idea-chorus/SKILL.md +1 -1
  208. package/.next/standalone/public/skill/package.json +1 -1
  209. package/.next/standalone/public/skill/proposal-chorus/SKILL.md +1 -1
  210. package/.next/standalone/public/skill/proposal-reviewer-chorus/SKILL.md +1 -1
  211. package/.next/standalone/public/skill/quick-dev-chorus/SKILL.md +15 -11
  212. package/.next/standalone/public/skill/review-chorus/SKILL.md +2 -2
  213. package/.next/standalone/public/skill/task-reviewer-chorus/SKILL.md +1 -1
  214. package/.next/standalone/public/skill/yolo-chorus/SKILL.md +2 -2
  215. package/README.ja.md +2 -0
  216. package/README.ko.md +2 -0
  217. package/README.md +2 -0
  218. package/README.zh.md +2 -0
  219. package/cli/claude-spawner.mjs +11 -8
  220. package/cli/codex-spawner.mjs +46 -11
  221. package/cli/kiro-spawner.mjs +8 -6
  222. package/cli/spawner-select.mjs +1 -6
  223. package/package.json +1 -1
  224. /package/.next/standalone/.next/static/{WVmgQzimrMNvGtHx6Cqm1 → t-ZaS6bNyv62NUlewVISp}/_buildManifest.js +0 -0
  225. /package/.next/standalone/.next/static/{WVmgQzimrMNvGtHx6Cqm1 → t-ZaS6bNyv62NUlewVISp}/_ssgManifest.js +0 -0
package/README.ja.md CHANGED
@@ -394,6 +394,7 @@ PGlite はポート 5433 で組み込み PostgreSQL を実行します。デー
394
394
  |--------|-------|
395
395
  | Claude Code | [CONNECT_CLAUDE_CODE.md](docs/CONNECT_CLAUDE_CODE.md) |
396
396
  | Codex CLI | [CONNECT_CODEX.md](docs/CONNECT_CODEX.md) |
397
+ | Pi coding agent | [CONNECT_PI.md](docs/CONNECT_PI.md) |
397
398
  | Kiro CLI | [CONNECT_KIRO.md](docs/CONNECT_KIRO.md) |
398
399
  | OpenCode † | [CONNECT_OPENCODE.md](docs/CONNECT_OPENCODE.md) |
399
400
  | その他の MCP エージェント(Cursor、Continue、自作など) | [CONNECT_OTHER_AGENTS.md](docs/CONNECT_OTHER_AGENTS.md) |
@@ -412,6 +413,7 @@ API キーは Web UI の **Settings → Agents → Create API Key** から作成
412
413
  |--------|----------|----------|
413
414
  | **プラグイン同梱(Claude Code)** | `public/chorus-plugin/skills/` | Claude Code + Chorus プラグイン、自動化されたセッションとライフサイクルフック |
414
415
  | **プラグイン同梱(Codex CLI)** | `plugins/chorus/skills/` | Codex CLI + Chorus プラグイン、`$` プレフィックスのスラッシュコマンドを持つ移植版スキル |
416
+ | **パッケージ同梱(Pi)** | `packages/chorus-pi/skills/` | Pi + Chorus パッケージ、自動化されたセッションとライフサイクルフック |
415
417
  | **スタンドアロン** | `public/skill/`(`/skill/` で配信) | その他の MCP 対応エージェント(Cursor、Continue、自作)、手動のセッション管理 |
416
418
 
417
419
  ### OpenSpec モード(オプトイン、プラグイン 0.8.1+)
package/README.ko.md CHANGED
@@ -394,6 +394,7 @@ PGlite는 포트 5433에서 내장 PostgreSQL을 실행합니다. 데이터는 `
394
394
  |--------|-------|
395
395
  | Claude Code | [CONNECT_CLAUDE_CODE.md](docs/CONNECT_CLAUDE_CODE.md) |
396
396
  | Codex CLI | [CONNECT_CODEX.md](docs/CONNECT_CODEX.md) |
397
+ | Pi coding agent | [CONNECT_PI.md](docs/CONNECT_PI.md) |
397
398
  | Kiro CLI | [CONNECT_KIRO.md](docs/CONNECT_KIRO.md) |
398
399
  | OpenCode † | [CONNECT_OPENCODE.md](docs/CONNECT_OPENCODE.md) |
399
400
  | 그 밖의 MCP 에이전트(Cursor, Continue, 커스텀 등) | [CONNECT_OTHER_AGENTS.md](docs/CONNECT_OTHER_AGENTS.md) |
@@ -412,6 +413,7 @@ API 키는 Web UI의 **Settings → Agents → Create API Key**에서 만듭니
412
413
  |--------|----------|----------|
413
414
  | **플러그인 내장(Claude Code)** | `public/chorus-plugin/skills/` | Claude Code + Chorus 플러그인, 자동화된 세션과 라이프사이클 훅 |
414
415
  | **플러그인 내장(Codex CLI)** | `plugins/chorus/skills/` | Codex CLI + Chorus 플러그인, `$` 접두사 슬래시 명령을 갖춘 이식판 스킬 |
416
+ | **패키지 내장(Pi)** | `packages/chorus-pi/skills/` | Pi + Chorus 패키지, 자동화된 세션과 라이프사이클 훅 |
415
417
  | **스탠드얼론** | `public/skill/`(`/skill/`에서 제공) | 그 밖의 MCP 지원 에이전트(Cursor, Continue, 커스텀), 수동 세션 관리 |
416
418
 
417
419
  ### OpenSpec 모드 (옵트인, 플러그인 0.8.1+)
package/README.md CHANGED
@@ -396,6 +396,7 @@ If you'd rather read the full docs:
396
396
  |--------|-------|
397
397
  | Claude Code | [CONNECT_CLAUDE_CODE.md](docs/CONNECT_CLAUDE_CODE.md) |
398
398
  | Codex CLI | [CONNECT_CODEX.md](docs/CONNECT_CODEX.md) |
399
+ | Pi coding agent | [CONNECT_PI.md](docs/CONNECT_PI.md) |
399
400
  | Kiro CLI | [CONNECT_KIRO.md](docs/CONNECT_KIRO.md) |
400
401
  | OpenCode † | [CONNECT_OPENCODE.md](docs/CONNECT_OPENCODE.md) |
401
402
  | Other MCP agents (Cursor, Continue, custom, …) | [CONNECT_OTHER_AGENTS.md](docs/CONNECT_OTHER_AGENTS.md) |
@@ -414,6 +415,7 @@ Create API Keys in the Web UI under **Settings → Agents → Create API Key**.
414
415
  |--------|----------|----------|
415
416
  | **Plugin-embedded (Claude Code)** | `public/chorus-plugin/skills/` | Claude Code + Chorus plugin, automated Sessions and lifecycle hooks |
416
417
  | **Plugin-embedded (Codex CLI)** | `plugins/chorus/skills/` | Codex CLI + Chorus plugin, ported skills with `$`-prefixed slash commands |
418
+ | **Package-embedded (Pi)** | `packages/chorus-pi/skills/` | Pi + Chorus package, automated Sessions and lifecycle hooks |
417
419
  | **Standalone** | `public/skill/` (served at `/skill/`) | Any other MCP-capable Agent (Cursor, Continue, custom), manual Session management |
418
420
 
419
421
  ### OpenSpec mode (opt-in, plugin 0.8.1+)
package/README.zh.md CHANGED
@@ -385,6 +385,7 @@ PGlite 在端口 5433 运行嵌入式 PostgreSQL。数据存储在 `.pglite/`,
385
385
  |--------|---------|
386
386
  | Claude Code | [CONNECT_CLAUDE_CODE.zh.md](docs/CONNECT_CLAUDE_CODE.zh.md) |
387
387
  | Codex CLI | [CONNECT_CODEX.zh.md](docs/CONNECT_CODEX.zh.md) |
388
+ | Pi coding agent | [CONNECT_PI.md](docs/CONNECT_PI.md) |
388
389
  | Kiro CLI | [CONNECT_KIRO.md](docs/CONNECT_KIRO.md) |
389
390
  | OpenCode † | [CONNECT_OPENCODE.zh.md](docs/CONNECT_OPENCODE.zh.md) |
390
391
  | 其他 MCP agent(Cursor / Continue / 自研等) | [CONNECT_OTHER_AGENTS.zh.md](docs/CONNECT_OTHER_AGENTS.zh.md) |
@@ -403,6 +404,7 @@ PGlite 在端口 5433 运行嵌入式 PostgreSQL。数据存储在 `.pglite/`,
403
404
  |------|------|---------|
404
405
  | **Plugin 内嵌(Claude Code)** | `public/chorus-plugin/skills/` | Claude Code + Chorus 插件,Session 自动化与生命周期 hook |
405
406
  | **Plugin 内嵌(Codex CLI)** | `plugins/chorus/skills/` | Codex CLI + Chorus 插件,移植版技能(`$` 前缀斜杠命令)|
407
+ | **Package 内嵌(Pi)** | `packages/chorus-pi/skills/` | Pi + Chorus package,Session 自动化与生命周期 hook |
406
408
  | **独立分发** | `public/skill/`(`/skill/` 路径静态托管)| 其他 MCP 客户端(Cursor / Continue / 自研),手动 Session 管理 |
407
409
 
408
410
  ---
@@ -241,6 +241,8 @@ export function parseNdjsonChunk(buffer, chunk, onObject, onWarn = () => {}) {
241
241
  * @property {(o: object) => { stdin: any, stdout: any, stderr: any, on: Function, kill?: Function }} [spawnImpl]
242
242
  * @property {{info(m:string):void,warn(m:string):void,error(m:string):void}} [logger]
243
243
  * @property {PermissionMode} [permissionMode] How much the woken Claude may do (default "chorus").
244
+ * @property {{ url: string, apiKey: string }} [creds] Daemon credentials exported
245
+ * to the child for plugin hooks and shell-based Chorus tooling.
244
246
  * @property {NodeJS.Platform} [platform] Injectable for tests; gates `detached` (POSIX-only).
245
247
  */
246
248
 
@@ -255,6 +257,7 @@ export class ClaudeSpawner {
255
257
  this.spawnImpl = opts.spawnImpl ?? spawn;
256
258
  this.logger = opts.logger ?? NOOP_LOGGER;
257
259
  this.permissionMode = opts.permissionMode ?? "chorus";
260
+ this.creds = opts.creds ?? null;
258
261
  // POSIX spawns `detached: true` (process-group leader) so the interrupt path
259
262
  // can group-kill the tree; Windows does not. Injectable so a POSIX test host
260
263
  // can exercise the Windows branch and vice versa.
@@ -318,6 +321,11 @@ export class ClaudeSpawner {
318
321
  // stream and observe the exit. On Windows `detached` is NOT used: taskkill /T
319
322
  // walks the tree by pid, and detached there only spawns a new console window.
320
323
  const detached = (this.platform ?? process.platform) !== "win32";
324
+ const childEnv = { ...process.env, CHORUS_DAEMON_HEADLESS: "1" };
325
+ if (this.creds) {
326
+ if (this.creds.url) childEnv.CHORUS_URL = this.creds.url;
327
+ if (this.creds.apiKey) childEnv.CHORUS_API_KEY = this.creds.apiKey;
328
+ }
321
329
 
322
330
  return new Promise((resolve) => {
323
331
  let child;
@@ -325,14 +333,9 @@ export class ClaudeSpawner {
325
333
  child = this.spawnImpl(command, argv, {
326
334
  cwd: cwd ?? process.cwd(),
327
335
  stdio: ["pipe", "pipe", "pipe"],
328
- // Mark the child as a headless daemon-woken session (add-daemon-headless-
329
- // interaction-guard). Merged OVER the inherited env so PATH, the Bedrock /
330
- // credential vars, CLAUDE_CONFIG_DIR, etc. all survive — only this one var is
331
- // added. It is a machine-checkable signal (the wake prompt also states it in
332
- // text); this change only LAYS IT DOWN — no code here reads it back. Set
333
- // unconditionally: the spawner only ever runs headless daemon wakes, so both
334
- // "chorus" and "yolo" permission modes get it.
335
- env: { ...process.env, CHORUS_DAEMON_HEADLESS: "1" },
336
+ // Preserve the inherited runtime environment while giving hooks and
337
+ // shell-based Chorus tooling the daemon's authoritative connection pair.
338
+ env: childEnv,
336
339
  // No shell:true — command is either the real executable or cmd.exe
337
340
  // with the script as an argv element. Avoids shell word-splitting /
338
341
  // injection; .cmd is handled explicitly via cmd.exe above.
@@ -13,17 +13,18 @@
13
13
  // it and persist anchor→thread_id (codex-session-map.mjs) so a later wake can
14
14
  // `resume <thread_id>`. (serde: ThreadEvent tag="type", rename="thread.started";
15
15
  // ThreadStartedEvent.thread_id: String — codex-rs/exec/src/exec_events.rs.)
16
- // • No `--mcp-config`: MCP comes from the user's ~/.codex/config.toml; the daemon
17
- // key reaches it via the configured bearer_token_env_var (default
18
- // CHORUS_API_KEY) exported into the child ENV — never argv.
16
+ // • No `--mcp-config`: MCP comes from the user's ~/.codex/config.toml. The daemon
17
+ // exports its resolved URL for SessionStart hooks and its key for the configured
18
+ // bearer_token_env_var (default CHORUS_API_KEY) — never argv.
19
19
  // • Permission is a SANDBOX mode, not a tool allowlist.
20
20
  //
21
21
  // Reuses claude-spawner's platform-neutral helpers: parseNdjsonChunk (NDJSON
22
22
  // stream parse) and the PATH-walk shape of resolveClaudePath.
23
23
 
24
24
  import { spawn } from "node:child_process";
25
- import { statSync } from "node:fs";
26
- import { win32 as pathWin32, posix as pathPosix } from "node:path";
25
+ import { readFileSync, statSync } from "node:fs";
26
+ import { homedir } from "node:os";
27
+ import { join, win32 as pathWin32, posix as pathPosix } from "node:path";
27
28
  import { parseNdjsonChunk } from "./claude-spawner.mjs";
28
29
  import { getThreadId as defaultGetThreadId, setThreadId as defaultSetThreadId } from "./codex-session-map.mjs";
29
30
  import {
@@ -34,6 +35,25 @@ import {
34
35
 
35
36
  const NOOP_LOGGER = { info() {}, warn() {}, error() {} };
36
37
 
38
+ /**
39
+ * Check whether the user's Codex config declares the Chorus MCP server.
40
+ * This is diagnostic only: a missing or unreadable config must never block a wake.
41
+ * @param {{ env?: NodeJS.ProcessEnv, readFile?: typeof readFileSync, home?: string }} [deps]
42
+ * @returns {boolean}
43
+ */
44
+ export function hasChorusMcpServer(deps = {}) {
45
+ const env = deps.env ?? process.env;
46
+ const readFile = deps.readFile ?? readFileSync;
47
+ const home = deps.home ?? homedir();
48
+ const configPath = join(env.CODEX_HOME || join(home, ".codex"), "config.toml");
49
+ try {
50
+ const config = readFile(configPath, "utf8");
51
+ return /^\s*\[mcp_servers\.chorus\]\s*(?:#.*)?$/m.test(config);
52
+ } catch {
53
+ return false;
54
+ }
55
+ }
56
+
37
57
  /**
38
58
  * @typedef {Object} Spawner
39
59
  * @property {(params: {
@@ -165,13 +185,14 @@ export function resolveSpawnCommand(codexPath, args, platform = process.platform
165
185
  * @property {(o: object) => any} [spawnImpl] Injectable spawn (tests).
166
186
  * @property {{info(m:string):void,warn(m:string):void,error(m:string):void}} [logger]
167
187
  * @property {"chorus"|"yolo"} [permissionMode] Maps to a Codex sandbox posture.
168
- * @property {{ url: string, apiKey: string }} [creds] Daemon creds apiKey is exported
169
- * into the child env under the user config's bearer_token_env_var (default CHORUS_API_KEY).
188
+ * @property {{ url: string, apiKey: string }} [creds] Daemon creds exported into
189
+ * the child env for SessionStart hooks and the user-configured MCP bearer token.
170
190
  * @property {NodeJS.Platform} [platform] Injectable for tests; gates POSIX `detached`.
171
191
  * @property {(anchor: string) => string|null} [getThreadIdFn] Injectable session-map read.
172
192
  * @property {(anchor: string, threadId: string) => void} [setThreadIdFn] Injectable session-map write.
173
193
  * @property {(anchor: string, threadId: string) => object|null} [getUsageSnapshotFn]
174
194
  * @property {(anchor: string, threadId: string, usage: object) => void} [setUsageSnapshotFn]
195
+ * @property {() => boolean} [hasChorusMcpServerFn] Injectable config probe.
175
196
  */
176
197
 
177
198
  export class CodexSpawner {
@@ -189,6 +210,8 @@ export class CodexSpawner {
189
210
  this.getUsageSnapshotFn = opts.getUsageSnapshotFn ?? defaultGetUsageSnapshot;
190
211
  this.setUsageSnapshotFn = opts.setUsageSnapshotFn ?? defaultSetUsageSnapshot;
191
212
  this.resolveCodexPathFn = opts.resolveCodexPathFn ?? resolveCodexPath;
213
+ this.hasChorusMcpServerFn = opts.hasChorusMcpServerFn ?? hasChorusMcpServer;
214
+ this.mcpConfigChecked = false;
192
215
  }
193
216
 
194
217
  /**
@@ -225,6 +248,15 @@ export class CodexSpawner {
225
248
  return { sessionId: anchor, exitCode: null, isNew };
226
249
  }
227
250
 
251
+ if (!this.mcpConfigChecked) {
252
+ this.mcpConfigChecked = true;
253
+ if (!this.hasChorusMcpServerFn()) {
254
+ this.logger.warn(
255
+ "[Chorus] Codex config has no [mcp_servers.chorus] entry; wake will continue without Chorus MCP tools",
256
+ );
257
+ }
258
+ }
259
+
228
260
  const args = buildCodexArgs({ isNew, threadId: knownThreadId, permissionMode: this.permissionMode });
229
261
  const { command, argv } = resolveSpawnCommand(codexPath, args, this.platform);
230
262
 
@@ -233,11 +265,14 @@ export class CodexSpawner {
233
265
  // stays piped — prompt over stdin + NDJSON stdout parse are unaffected.
234
266
  const detached = this.platform !== "win32";
235
267
 
236
- // Daemon key via ENV under the var the user's [mcp_servers.chorus] references
237
- // (bearer_token_env_var, default CHORUS_API_KEY) NEVER argv. Merged over the
238
- // inherited env so PATH / model auth (Bedrock profile) / CODEX_HOME survive.
268
+ // Export the daemon's resolved connection pair for both Codex MCP auth and
269
+ // SessionStart hooks. Explicitly overwrite inherited values so the hook and
270
+ // daemon cannot disagree about which Chorus instance this wake belongs to.
239
271
  const childEnv = { ...process.env, CHORUS_DAEMON_HEADLESS: "1" };
240
- if (this.creds && this.creds.apiKey) childEnv.CHORUS_API_KEY = this.creds.apiKey;
272
+ if (this.creds) {
273
+ if (this.creds.url) childEnv.CHORUS_URL = this.creds.url;
274
+ if (this.creds.apiKey) childEnv.CHORUS_API_KEY = this.creds.apiKey;
275
+ }
241
276
 
242
277
  return new Promise((resolve) => {
243
278
  let child;
@@ -209,8 +209,8 @@ export function pickNewSessionId(before, after) {
209
209
  * @property {(o: object) => any} [spawnImpl] Injectable spawn (tests).
210
210
  * @property {{info(m:string):void,warn(m:string):void,error(m:string):void}} [logger]
211
211
  * @property {"chorus"|"yolo"} [permissionMode] Maps to a Kiro tool-trust posture.
212
- * @property {{ url: string, apiKey: string }} [creds] Daemon creds — apiKey is exported
213
- * into the child env as CHORUS_API_KEY (the var the plugin's .kiro/settings/mcp.json references).
212
+ * @property {{ url: string, apiKey: string }} [creds] Daemon credentials exported
213
+ * into the child env for plugin hooks, shell tooling, and MCP authentication.
214
214
  * @property {NodeJS.Platform} [platform] Injectable for tests; gates POSIX `detached`.
215
215
  * @property {(anchor: string) => string|null} [getSessionIdFn] Injectable session-map read.
216
216
  * @property {(anchor: string, id: string) => void} [setSessionIdFn] Injectable session-map write.
@@ -274,11 +274,13 @@ export class KiroSpawner {
274
274
  // stays piped — prompt over stdin + stdout capture are unaffected.
275
275
  const detached = this.platform !== "win32";
276
276
 
277
- // Daemon key via ENV as CHORUS_API_KEY the var the plugin's
278
- // [mcpServers.chorus] header references (${env:CHORUS_API_KEY}). NEVER argv.
279
- // Merged over the inherited env so PATH / model auth / KIRO_* survive.
277
+ // Export the daemon's authoritative connection pair. CHORUS_API_KEY is also
278
+ // referenced by the plugin's MCP config; neither value is placed in argv.
280
279
  const childEnv = { ...process.env, CHORUS_DAEMON_HEADLESS: "1" };
281
- if (this.creds && this.creds.apiKey) childEnv.CHORUS_API_KEY = this.creds.apiKey;
280
+ if (this.creds) {
281
+ if (this.creds.url) childEnv.CHORUS_URL = this.creds.url;
282
+ if (this.creds.apiKey) childEnv.CHORUS_API_KEY = this.creds.apiKey;
283
+ }
282
284
 
283
285
  // Snapshot the session store BEFORE the run so we can identify the sessionId
284
286
  // this run creates (Kiro has no id-bearing stream event). On resume we already
@@ -25,12 +25,7 @@ export function selectSpawner(agentType, opts = {}) {
25
25
  return new CodexSpawner({ logger, permissionMode, creds });
26
26
  }
27
27
  if (agentType === "kiro") {
28
- // Kiro follows the Codex model — MCP from the user's plugin config, daemon key
29
- // via env — so it takes the same { logger, permissionMode, creds } shape.
30
28
  return new KiroSpawner({ logger, permissionMode, creds });
31
29
  }
32
- // Default / "claude-code": construction byte-identical to the prior daemon
33
- // (ClaudeSpawner takes only { logger, permissionMode } — creds are not used by
34
- // the Claude backend, which gets its key via the --mcp-config file).
35
- return new ClaudeSpawner({ logger, permissionMode });
30
+ return new ClaudeSpawner({ logger, permissionMode, creds });
36
31
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chorus-aidlc/chorus",
3
- "version": "0.14.4",
3
+ "version": "0.14.6",
4
4
  "description": "The Agent Harness for AI-Human Collaboration — session lifecycle, task state, sub-agent orchestration, observability, and failure recovery",
5
5
  "homepage": "https://github.com/Chorus-AIDLC/Chorus",
6
6
  "repository": {