chorus-codes 0.7.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/cache/.previewinfo +1 -1
  4. package/.next/cache/.rscinfo +1 -1
  5. package/.next/fallback-build-manifest.json +3 -3
  6. package/.next/prerender-manifest.json +3 -3
  7. package/.next/server/app/_global-error.html +1 -1
  8. package/.next/server/app/_global-error.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next/server/app/_not-found.html +1 -1
  15. package/.next/server/app/_not-found.rsc +1 -1
  16. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  18. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  20. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  21. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  22. package/.next/server/app/new.html +1 -1
  23. package/.next/server/app/new.rsc +1 -1
  24. package/.next/server/app/new.segments/_full.segment.rsc +1 -1
  25. package/.next/server/app/new.segments/_head.segment.rsc +1 -1
  26. package/.next/server/app/new.segments/_index.segment.rsc +1 -1
  27. package/.next/server/app/new.segments/_tree.segment.rsc +1 -1
  28. package/.next/server/app/new.segments/new/__PAGE__.segment.rsc +1 -1
  29. package/.next/server/app/new.segments/new.segment.rsc +1 -1
  30. package/.next/server/app/onboarding.html +1 -1
  31. package/.next/server/app/onboarding.rsc +1 -1
  32. package/.next/server/app/onboarding.segments/_full.segment.rsc +1 -1
  33. package/.next/server/app/onboarding.segments/_head.segment.rsc +1 -1
  34. package/.next/server/app/onboarding.segments/_index.segment.rsc +1 -1
  35. package/.next/server/app/onboarding.segments/_tree.segment.rsc +1 -1
  36. package/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +1 -1
  37. package/.next/server/app/onboarding.segments/onboarding.segment.rsc +1 -1
  38. package/.next/server/app/personas.html +1 -1
  39. package/.next/server/app/personas.rsc +1 -1
  40. package/.next/server/app/personas.segments/_full.segment.rsc +1 -1
  41. package/.next/server/app/personas.segments/_head.segment.rsc +1 -1
  42. package/.next/server/app/personas.segments/_index.segment.rsc +1 -1
  43. package/.next/server/app/personas.segments/_tree.segment.rsc +1 -1
  44. package/.next/server/app/personas.segments/personas/__PAGE__.segment.rsc +1 -1
  45. package/.next/server/app/personas.segments/personas.segment.rsc +1 -1
  46. package/.next/server/app/settings.html +1 -1
  47. package/.next/server/app/settings.rsc +1 -1
  48. package/.next/server/app/settings.segments/_full.segment.rsc +1 -1
  49. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  50. package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  51. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  52. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  53. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  54. package/.next/server/app/templates.html +1 -1
  55. package/.next/server/app/templates.rsc +1 -1
  56. package/.next/server/app/templates.segments/_full.segment.rsc +1 -1
  57. package/.next/server/app/templates.segments/_head.segment.rsc +1 -1
  58. package/.next/server/app/templates.segments/_index.segment.rsc +1 -1
  59. package/.next/server/app/templates.segments/_tree.segment.rsc +1 -1
  60. package/.next/server/app/templates.segments/templates/__PAGE__.segment.rsc +1 -1
  61. package/.next/server/app/templates.segments/templates.segment.rsc +1 -1
  62. package/.next/server/middleware-build-manifest.js +3 -3
  63. package/.next/server/pages/404.html +1 -1
  64. package/.next/server/pages/500.html +1 -1
  65. package/.next/server/server-reference-manifest.js +1 -1
  66. package/.next/server/server-reference-manifest.json +1 -1
  67. package/.next/trace +1 -1
  68. package/.next/trace-build +1 -1
  69. package/dist/cli/commands/doctor.js +116 -0
  70. package/dist/cli/commands/doctor.js.map +1 -0
  71. package/dist/cli/commands/init.js +211 -0
  72. package/dist/cli/commands/init.js.map +1 -0
  73. package/dist/cli/commands/start.js +240 -0
  74. package/dist/cli/commands/start.js.map +1 -0
  75. package/dist/cli/commands/status.js +54 -0
  76. package/dist/cli/commands/status.js.map +1 -0
  77. package/dist/cli/commands/stop.js +97 -0
  78. package/dist/cli/commands/stop.js.map +1 -0
  79. package/dist/cli/connect.js +108 -0
  80. package/dist/cli/connect.js.map +1 -0
  81. package/dist/cli/index.js +99 -0
  82. package/dist/cli/index.js.map +1 -0
  83. package/dist/cli/port-utils.js +260 -0
  84. package/dist/cli/port-utils.js.map +1 -0
  85. package/dist/cli/runtime-env.js +60 -0
  86. package/dist/cli/runtime-env.js.map +1 -0
  87. package/dist/cli/shared.js +54 -0
  88. package/dist/cli/shared.js.map +1 -0
  89. package/dist/cli/ui.js +60 -0
  90. package/dist/cli/ui.js.map +1 -0
  91. package/dist/daemon/agents/claude.js +98 -0
  92. package/dist/daemon/agents/claude.js.map +1 -0
  93. package/dist/daemon/agents/codex.js +160 -0
  94. package/dist/daemon/agents/codex.js.map +1 -0
  95. package/dist/daemon/agents/gemini.js +111 -0
  96. package/dist/daemon/agents/gemini.js.map +1 -0
  97. package/dist/daemon/agents/index.js +59 -0
  98. package/dist/daemon/agents/index.js.map +1 -0
  99. package/dist/daemon/agents/kimi.js +206 -0
  100. package/dist/daemon/agents/kimi.js.map +1 -0
  101. package/dist/daemon/agents/opencode.js +228 -0
  102. package/dist/daemon/agents/opencode.js.map +1 -0
  103. package/dist/daemon/agents/openrouter.js +274 -0
  104. package/dist/daemon/agents/openrouter.js.map +1 -0
  105. package/dist/daemon/agents/parsers/claude.js +63 -0
  106. package/dist/daemon/agents/parsers/claude.js.map +1 -0
  107. package/dist/daemon/agents/parsers/codex.js +51 -0
  108. package/dist/daemon/agents/parsers/codex.js.map +1 -0
  109. package/dist/daemon/agents/parsers/gemini.js +144 -0
  110. package/dist/daemon/agents/parsers/gemini.js.map +1 -0
  111. package/dist/daemon/agents/parsers/index.js +31 -0
  112. package/dist/daemon/agents/parsers/index.js.map +1 -0
  113. package/dist/daemon/agents/parsers/kimi.js +8 -0
  114. package/dist/daemon/agents/parsers/kimi.js.map +1 -0
  115. package/dist/daemon/agents/parsers/opencode.js +105 -0
  116. package/dist/daemon/agents/parsers/opencode.js.map +1 -0
  117. package/dist/daemon/agents/parsers/openrouter.js +69 -0
  118. package/dist/daemon/agents/parsers/openrouter.js.map +1 -0
  119. package/dist/daemon/agents/parsers/shared.js +17 -0
  120. package/dist/daemon/agents/parsers/shared.js.map +1 -0
  121. package/dist/daemon/agents/preflight.js +83 -0
  122. package/dist/daemon/agents/preflight.js.map +1 -0
  123. package/dist/daemon/agents/quote.js +45 -0
  124. package/dist/daemon/agents/quote.js.map +1 -0
  125. package/dist/daemon/agents/sandbox-guard.js +69 -0
  126. package/dist/daemon/agents/sandbox-guard.js.map +1 -0
  127. package/dist/daemon/agents/types.js +6 -0
  128. package/dist/daemon/agents/types.js.map +1 -0
  129. package/dist/daemon/api-response.js +65 -0
  130. package/dist/daemon/api-response.js.map +1 -0
  131. package/dist/daemon/error-detector.js +329 -0
  132. package/dist/daemon/error-detector.js.map +1 -0
  133. package/dist/daemon/headless.js +533 -0
  134. package/dist/daemon/headless.js.map +1 -0
  135. package/dist/daemon/index.js +333 -0
  136. package/dist/daemon/index.js.map +1 -0
  137. package/dist/daemon/openrouter.js +192 -0
  138. package/dist/daemon/openrouter.js.map +1 -0
  139. package/dist/daemon/orchestrators/claude.js +163 -0
  140. package/dist/daemon/orchestrators/claude.js.map +1 -0
  141. package/dist/daemon/orchestrators/codex.js +101 -0
  142. package/dist/daemon/orchestrators/codex.js.map +1 -0
  143. package/dist/daemon/orchestrators/cursor-windsurf.js +118 -0
  144. package/dist/daemon/orchestrators/cursor-windsurf.js.map +1 -0
  145. package/dist/daemon/orchestrators/gemini.js +108 -0
  146. package/dist/daemon/orchestrators/gemini.js.map +1 -0
  147. package/dist/daemon/orchestrators/index.js +90 -0
  148. package/dist/daemon/orchestrators/index.js.map +1 -0
  149. package/dist/daemon/orchestrators/kimi.js +108 -0
  150. package/dist/daemon/orchestrators/kimi.js.map +1 -0
  151. package/dist/daemon/orchestrators/opencode.js +152 -0
  152. package/dist/daemon/orchestrators/opencode.js.map +1 -0
  153. package/dist/daemon/orchestrators/shared.js +60 -0
  154. package/dist/daemon/orchestrators/shared.js.map +1 -0
  155. package/dist/daemon/output-watcher.js +131 -0
  156. package/dist/daemon/output-watcher.js.map +1 -0
  157. package/dist/daemon/participant-aborts.js +123 -0
  158. package/dist/daemon/participant-aborts.js.map +1 -0
  159. package/dist/daemon/reaper.js +46 -0
  160. package/dist/daemon/reaper.js.map +1 -0
  161. package/dist/daemon/routes/chats-events.js +62 -0
  162. package/dist/daemon/routes/chats-events.js.map +1 -0
  163. package/dist/daemon/routes/chats-stream.js +241 -0
  164. package/dist/daemon/routes/chats-stream.js.map +1 -0
  165. package/dist/daemon/routes/chats-validation.js +13 -0
  166. package/dist/daemon/routes/chats-validation.js.map +1 -0
  167. package/dist/daemon/routes/chats.js +545 -0
  168. package/dist/daemon/routes/chats.js.map +1 -0
  169. package/dist/daemon/routes/openrouter.js +103 -0
  170. package/dist/daemon/routes/openrouter.js.map +1 -0
  171. package/dist/daemon/routes/settings.js +199 -0
  172. package/dist/daemon/routes/settings.js.map +1 -0
  173. package/dist/daemon/routes/stats.js +155 -0
  174. package/dist/daemon/routes/stats.js.map +1 -0
  175. package/dist/daemon/routes/system.js +208 -0
  176. package/dist/daemon/routes/system.js.map +1 -0
  177. package/dist/daemon/routes/templates-personas.js +254 -0
  178. package/dist/daemon/routes/templates-personas.js.map +1 -0
  179. package/dist/daemon/routes/voices.js +139 -0
  180. package/dist/daemon/routes/voices.js.map +1 -0
  181. package/dist/daemon/runner/doer-driver.js +346 -0
  182. package/dist/daemon/runner/doer-driver.js.map +1 -0
  183. package/dist/daemon/runner/doer.js +336 -0
  184. package/dist/daemon/runner/doer.js.map +1 -0
  185. package/dist/daemon/runner/prior-round.js +140 -0
  186. package/dist/daemon/runner/prior-round.js.map +1 -0
  187. package/dist/daemon/runner/prompt-builder.js +292 -0
  188. package/dist/daemon/runner/prompt-builder.js.map +1 -0
  189. package/dist/daemon/runner/review-only-phase.js +103 -0
  190. package/dist/daemon/runner/review-only-phase.js.map +1 -0
  191. package/dist/daemon/runner/reviewer-driver.js +410 -0
  192. package/dist/daemon/runner/reviewer-driver.js.map +1 -0
  193. package/dist/daemon/runner/reviewer.js +384 -0
  194. package/dist/daemon/runner/reviewer.js.map +1 -0
  195. package/dist/daemon/runner/run-with-fallback.js +56 -0
  196. package/dist/daemon/runner/run-with-fallback.js.map +1 -0
  197. package/dist/daemon/runner/sanitize-name.js +8 -0
  198. package/dist/daemon/runner/sanitize-name.js.map +1 -0
  199. package/dist/daemon/runner/stream-file-writer.js +116 -0
  200. package/dist/daemon/runner/stream-file-writer.js.map +1 -0
  201. package/dist/daemon/runner/swap-sidecar.js +102 -0
  202. package/dist/daemon/runner/swap-sidecar.js.map +1 -0
  203. package/dist/daemon/runner/template-fallback.js +119 -0
  204. package/dist/daemon/runner/template-fallback.js.map +1 -0
  205. package/dist/daemon/runner/types.js +3 -0
  206. package/dist/daemon/runner/types.js.map +1 -0
  207. package/dist/daemon/runner/verdict.js +51 -0
  208. package/dist/daemon/runner/verdict.js.map +1 -0
  209. package/dist/daemon/runner-multiplex.js +364 -0
  210. package/dist/daemon/runner-multiplex.js.map +1 -0
  211. package/dist/daemon/runner.js +427 -0
  212. package/dist/daemon/runner.js.map +1 -0
  213. package/dist/daemon/ship.js +340 -0
  214. package/dist/daemon/ship.js.map +1 -0
  215. package/dist/daemon/template-cache.js +37 -0
  216. package/dist/daemon/template-cache.js.map +1 -0
  217. package/dist/daemon/tmux-types.js +9 -0
  218. package/dist/daemon/tmux-types.js.map +1 -0
  219. package/dist/daemon/tmux.js +341 -0
  220. package/dist/daemon/tmux.js.map +1 -0
  221. package/dist/lib/atomic-write.js +55 -0
  222. package/dist/lib/atomic-write.js.map +1 -0
  223. package/dist/lib/chat-events-bus.js +27 -0
  224. package/dist/lib/chat-events-bus.js.map +1 -0
  225. package/dist/lib/chat-slug.js +105 -0
  226. package/dist/lib/chat-slug.js.map +1 -0
  227. package/dist/lib/cli-detect.js +388 -0
  228. package/dist/lib/cli-detect.js.map +1 -0
  229. package/dist/lib/cli-health.js +156 -0
  230. package/dist/lib/cli-health.js.map +1 -0
  231. package/dist/lib/cli-paths.js +113 -0
  232. package/dist/lib/cli-paths.js.map +1 -0
  233. package/dist/lib/cli-precheck.js +141 -0
  234. package/dist/lib/cli-precheck.js.map +1 -0
  235. package/dist/lib/db/chats.js +244 -0
  236. package/dist/lib/db/chats.js.map +1 -0
  237. package/dist/lib/db/connection.js +254 -0
  238. package/dist/lib/db/connection.js.map +1 -0
  239. package/dist/lib/db/index.js +34 -0
  240. package/dist/lib/db/index.js.map +1 -0
  241. package/dist/lib/db/personas.js +65 -0
  242. package/dist/lib/db/personas.js.map +1 -0
  243. package/dist/lib/db/phase-events.js +172 -0
  244. package/dist/lib/db/phase-events.js.map +1 -0
  245. package/dist/lib/db/secrets.js +53 -0
  246. package/dist/lib/db/secrets.js.map +1 -0
  247. package/dist/lib/db/settings.js +47 -0
  248. package/dist/lib/db/settings.js.map +1 -0
  249. package/dist/lib/db/templates.js +75 -0
  250. package/dist/lib/db/templates.js.map +1 -0
  251. package/dist/lib/db/voices.js +184 -0
  252. package/dist/lib/db/voices.js.map +1 -0
  253. package/dist/lib/lineage-maps.js +200 -0
  254. package/dist/lib/lineage-maps.js.map +1 -0
  255. package/dist/lib/logger.js +186 -0
  256. package/dist/lib/logger.js.map +1 -0
  257. package/dist/lib/personas.js +117 -0
  258. package/dist/lib/personas.js.map +1 -0
  259. package/dist/lib/runtime-path.js +222 -0
  260. package/dist/lib/runtime-path.js.map +1 -0
  261. package/dist/lib/settings/billing.js +58 -0
  262. package/dist/lib/settings/billing.js.map +1 -0
  263. package/dist/lib/settings/permissions.js +81 -0
  264. package/dist/lib/settings/permissions.js.map +1 -0
  265. package/dist/lib/settings/transport.js +113 -0
  266. package/dist/lib/settings/transport.js.map +1 -0
  267. package/dist/lib/telemetry.js +290 -0
  268. package/dist/lib/telemetry.js.map +1 -0
  269. package/dist/lib/template-schema.js +319 -0
  270. package/dist/lib/template-schema.js.map +1 -0
  271. package/dist/lib/template-validation.js +82 -0
  272. package/dist/lib/template-validation.js.map +1 -0
  273. package/dist/lib/voices.js +533 -0
  274. package/dist/lib/voices.js.map +1 -0
  275. package/dist/mcp/client.js +138 -0
  276. package/dist/mcp/client.js.map +1 -0
  277. package/dist/mcp/index.js +178 -0
  278. package/dist/mcp/index.js.map +1 -0
  279. package/dist/mcp/tools.js +355 -0
  280. package/dist/mcp/tools.js.map +1 -0
  281. package/package.json +2 -1
  282. package/.next/dev/static/chunks/05w9_next_dist_shared_lib_0beh7rg._.js +0 -6077
  283. package/.next/dev/static/chunks/05w9_next_dist_shared_lib_0beh7rg._.js.map +0 -69
  284. package/.next/dev/static/chunks/05w9_next_dist_shared_lib_0pjsj.j._.js +0 -6318
  285. package/.next/dev/static/chunks/05w9_next_dist_shared_lib_0pjsj.j._.js.map +0 -71
  286. package/.next/dev/types/cache-life.d.ts +0 -145
  287. package/.next/dev/types/routes.d.ts +0 -84
  288. package/.next/dev/types/validator.ts +0 -178
  289. /package/.next/static/{dJlbRLlhISA0JGtHKVqgQ → 8H2I8TTPlrKuWCV-SxY5f}/_buildManifest.js +0 -0
  290. /package/.next/static/{dJlbRLlhISA0JGtHKVqgQ → 8H2I8TTPlrKuWCV-SxY5f}/_clientMiddlewareManifest.js +0 -0
  291. /package/.next/static/{dJlbRLlhISA0JGtHKVqgQ → 8H2I8TTPlrKuWCV-SxY5f}/_ssgManifest.js +0 -0
@@ -0,0 +1,355 @@
1
+ "use strict";
2
+ /**
3
+ * Chorus MCP tools — 7 tools wrapping daemon REST API.
4
+ * Each tool has a Zod input schema and calls daemonFetch.
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.InvokePersonaSchema = exports.ListPersonasSchema = exports.ListTemplatesSchema = exports.CancelChatSchema = exports.ResumeChatSchema = exports.ListBlockedSchema = exports.GetChatStatusSchema = exports.WaitForChatSchema = exports.CreateChatSchema = void 0;
11
+ exports.createChat = createChat;
12
+ exports.waitForChat = waitForChat;
13
+ exports.getChatStatus = getChatStatus;
14
+ exports.listBlocked = listBlocked;
15
+ exports.resumeChat = resumeChat;
16
+ exports.cancelChat = cancelChat;
17
+ exports.listTemplates = listTemplates;
18
+ exports.listPersonas = listPersonas;
19
+ exports.invokePersona = invokePersona;
20
+ const zod_1 = require("zod");
21
+ const yaml_1 = __importDefault(require("yaml"));
22
+ const client_1 = require("./client");
23
+ function chatRowToRef(row) {
24
+ const webBase = process.env.CHORUS_WEB_URL || "http://127.0.0.1:5050";
25
+ // Prefer slug for the user-visible URL (it's what the cockpit uses
26
+ // too). Falls back to ULID for legacy rows the daemon couldn't
27
+ // backfill — both forms resolve identically server-side.
28
+ const segment = row.slug || row.id;
29
+ return {
30
+ chatId: row.id,
31
+ status: row.status,
32
+ url: `${webBase}/runs/${segment}`,
33
+ };
34
+ }
35
+ function chatRowToStatus(row) {
36
+ return {
37
+ chatId: row.id,
38
+ status: row.status,
39
+ phase: row.current_phase_idx,
40
+ blocked: row.status === "blocked",
41
+ };
42
+ }
43
+ function parseTemplateRow(row) {
44
+ let parsed = {};
45
+ if (row.yaml) {
46
+ try {
47
+ parsed = yaml_1.default.parse(row.yaml) ?? {};
48
+ }
49
+ catch {
50
+ // ignore — fall through to id-only fallback
51
+ }
52
+ }
53
+ const lineages = new Set();
54
+ for (const p of parsed.phases ?? []) {
55
+ if (p.doer?.lineage)
56
+ lineages.add(p.doer.lineage);
57
+ for (const c of p.reviewer?.candidates ?? []) {
58
+ if (c.lineage)
59
+ lineages.add(c.lineage);
60
+ }
61
+ }
62
+ return {
63
+ id: row.id,
64
+ name: parsed.name ?? row.id,
65
+ description: parsed.description ?? "",
66
+ lineages: Array.from(lineages),
67
+ };
68
+ }
69
+ // ─── Input schemas ───────────────────────────────────────────────────────
70
+ /**
71
+ * Pre-launch (v0.7) naming sweep landed `templateId` as the canonical
72
+ * field — matches the REST POST /chats body shape and the
73
+ * `<resource>Id` pattern used elsewhere (`chatId`, `personaId`).
74
+ * The legacy `template` alias is accepted so existing scripts keep
75
+ * working through v0.7; will be dropped in v0.8.
76
+ */
77
+ exports.CreateChatSchema = zod_1.z
78
+ .object({
79
+ work: zod_1.z.string().min(1, "work prompt is required"),
80
+ templateId: zod_1.z.string().optional(),
81
+ template: zod_1.z.string().optional(),
82
+ files: zod_1.z.array(zod_1.z.string()).optional(),
83
+ /**
84
+ * Artifact text for review-only templates (e.g. `templateId: "review-only"`).
85
+ * Required when the chosen template's first phase has `kind: review_only`.
86
+ * Ignored for full-pipeline templates. Capped by the template's
87
+ * artifact.maxBytes (default 1 MiB).
88
+ */
89
+ artifact: zod_1.z.string().optional(),
90
+ })
91
+ .transform((input) => ({
92
+ ...input,
93
+ // `??` only falls through on null/undefined; an empty string would
94
+ // pass through and the daemon would reject it. Treat empty as
95
+ // missing so the legacy alias / default fires.
96
+ templateId: (input.templateId && input.templateId.length > 0
97
+ ? input.templateId
98
+ : undefined) ??
99
+ (input.template && input.template.length > 0
100
+ ? input.template
101
+ : undefined) ??
102
+ "code-review",
103
+ }));
104
+ exports.WaitForChatSchema = zod_1.z.object({
105
+ chatId: zod_1.z.string().min(1, "chatId is required"),
106
+ timeoutSec: zod_1.z.number().int().positive().optional().default(600),
107
+ });
108
+ exports.GetChatStatusSchema = zod_1.z.object({
109
+ chatId: zod_1.z.string().min(1, "chatId is required"),
110
+ });
111
+ exports.ListBlockedSchema = zod_1.z.object({});
112
+ exports.ResumeChatSchema = zod_1.z.object({
113
+ chatId: zod_1.z.string().min(1, "chatId is required"),
114
+ answer: zod_1.z.string().min(1, "answer is required"),
115
+ });
116
+ exports.CancelChatSchema = zod_1.z.object({
117
+ chatId: zod_1.z.string().min(1, "chatId is required"),
118
+ });
119
+ exports.ListTemplatesSchema = zod_1.z.object({});
120
+ exports.ListPersonasSchema = zod_1.z.object({});
121
+ exports.InvokePersonaSchema = zod_1.z
122
+ .object({
123
+ personaId: zod_1.z.string().min(1, "personaId is required"),
124
+ brief: zod_1.z.string().min(1, "brief is required"),
125
+ files: zod_1.z.array(zod_1.z.string()).optional(),
126
+ templateId: zod_1.z.string().optional(),
127
+ template: zod_1.z.string().optional(),
128
+ repoPath: zod_1.z.string().optional(),
129
+ })
130
+ .transform((input) => ({
131
+ ...input,
132
+ // `??` only falls through on null/undefined; an empty string would
133
+ // pass through and the daemon would reject it. Treat empty as
134
+ // missing so the legacy alias / default fires.
135
+ templateId: (input.templateId && input.templateId.length > 0
136
+ ? input.templateId
137
+ : undefined) ??
138
+ (input.template && input.template.length > 0
139
+ ? input.template
140
+ : undefined) ??
141
+ "code-review",
142
+ }));
143
+ // ─── Output schemas ─────────────────────────────────────────────────────
144
+ const ChatRefSchema = zod_1.z.object({
145
+ chatId: zod_1.z.string(),
146
+ status: zod_1.z.string(),
147
+ url: zod_1.z.string(),
148
+ });
149
+ const ChatStatusSchema = zod_1.z.object({
150
+ chatId: zod_1.z.string(),
151
+ status: zod_1.z.string(),
152
+ phase: zod_1.z.number().optional(),
153
+ progress: zod_1.z.number().optional(),
154
+ blocked: zod_1.z.boolean().optional(),
155
+ });
156
+ const ChatResultSchema = zod_1.z.object({
157
+ status: zod_1.z.string(),
158
+ verdict: zod_1.z.string().optional(),
159
+ summary: zod_1.z.string().optional(),
160
+ blocked: zod_1.z.boolean().optional(),
161
+ });
162
+ const BlockedChatSchema = zod_1.z.object({
163
+ chatId: zod_1.z.string(),
164
+ work: zod_1.z.string(),
165
+ blockedReason: zod_1.z.string(),
166
+ since: zod_1.z.number(),
167
+ });
168
+ const TemplateSchema = zod_1.z.object({
169
+ id: zod_1.z.string(),
170
+ name: zod_1.z.string(),
171
+ description: zod_1.z.string(),
172
+ lineages: zod_1.z.array(zod_1.z.string()).optional(),
173
+ });
174
+ const PersonaSchema = zod_1.z.object({
175
+ id: zod_1.z.string(),
176
+ label: zod_1.z.string(),
177
+ oneLiner: zod_1.z.string(),
178
+ recommendedLineage: zod_1.z.string().nullable().optional(),
179
+ builtin: zod_1.z.boolean(),
180
+ });
181
+ function personaRowToRef(row) {
182
+ return {
183
+ id: row.id,
184
+ label: row.label,
185
+ oneLiner: row.one_liner,
186
+ recommendedLineage: row.recommended_lineage,
187
+ builtin: Boolean(row.builtin),
188
+ };
189
+ }
190
+ // ─── Tools ──────────────────────────────────────────────────────────────
191
+ /**
192
+ * Create a new chat.
193
+ * Returns immediately with chatId and status.
194
+ */
195
+ async function createChat(input) {
196
+ const parsed = exports.CreateChatSchema.parse(input);
197
+ const result = await (0, client_1.daemonFetch)("/chats", {
198
+ method: "POST",
199
+ body: JSON.stringify({
200
+ work: parsed.work,
201
+ templateId: parsed.templateId,
202
+ files: parsed.files,
203
+ ...(parsed.artifact !== undefined ? { artifact: parsed.artifact } : {}),
204
+ }),
205
+ });
206
+ return ChatRefSchema.parse(chatRowToRef(result));
207
+ }
208
+ /**
209
+ * Long-poll a chat until terminal state.
210
+ * Emits progress events via SSE stream.
211
+ * Resolves when status flips to terminal.
212
+ */
213
+ async function waitForChat(input, onProgress) {
214
+ const parsed = exports.WaitForChatSchema.parse(input);
215
+ for await (const event of (0, client_1.streamChat)(parsed.chatId, parsed.timeoutSec)) {
216
+ onProgress(event);
217
+ // Check if we've reached a terminal state
218
+ if (event && typeof event === "object") {
219
+ const status = event.status;
220
+ if (status === "approved" ||
221
+ status === "merged" ||
222
+ status === "blocked" ||
223
+ status === "cancelled" ||
224
+ status === "failed") {
225
+ return ChatResultSchema.parse(event);
226
+ }
227
+ }
228
+ }
229
+ // If stream closed without reaching terminal, fetch final status
230
+ const result = await (0, client_1.daemonFetch)(`/chats/${parsed.chatId}`);
231
+ return ChatResultSchema.parse(result);
232
+ }
233
+ /**
234
+ * Get current chat status without blocking.
235
+ */
236
+ async function getChatStatus(input) {
237
+ const parsed = exports.GetChatStatusSchema.parse(input);
238
+ const result = await (0, client_1.daemonFetch)(`/chats/${parsed.chatId}`);
239
+ return ChatStatusSchema.parse(chatRowToStatus(result));
240
+ }
241
+ /**
242
+ * List all blocked chats.
243
+ */
244
+ async function listBlocked(input) {
245
+ exports.ListBlockedSchema.parse(input);
246
+ // input is empty object, but we validate it anyway for schema consistency
247
+ const result = await (0, client_1.daemonFetch)("/blocked");
248
+ // Daemon now returns the canonical list envelope `{items, total, hasMore}`.
249
+ // Array fallback covers legacy callers; `.chats` fallback covers an even
250
+ // older shape that lived briefly during the v0.6 daemon refactor.
251
+ const obj = result || {};
252
+ const rows = Array.isArray(result)
253
+ ? result
254
+ : Array.isArray(obj.items)
255
+ ? obj.items
256
+ : Array.isArray(obj.chats)
257
+ ? obj.chats
258
+ : [];
259
+ const chats = zod_1.z.array(BlockedChatSchema).parse(rows.map((row) => ({
260
+ chatId: row.id,
261
+ work: row.work,
262
+ blockedReason: row.ship_error ?? "Awaiting user input",
263
+ since: row.updated_at,
264
+ })));
265
+ return { chats };
266
+ }
267
+ /**
268
+ * Resume a blocked chat with a user answer.
269
+ */
270
+ async function resumeChat(input) {
271
+ const parsed = exports.ResumeChatSchema.parse(input);
272
+ const result = await (0, client_1.daemonFetch)(`/chats/${parsed.chatId}/resume`, {
273
+ method: "POST",
274
+ body: JSON.stringify({ answer: parsed.answer }),
275
+ });
276
+ return { ok: true, status: ChatStatusSchema.parse(chatRowToStatus(result)) };
277
+ }
278
+ /**
279
+ * Cancel a chat.
280
+ */
281
+ async function cancelChat(input) {
282
+ const parsed = exports.CancelChatSchema.parse(input);
283
+ await (0, client_1.daemonFetch)(`/chats/${parsed.chatId}/cancel`, {
284
+ method: "POST",
285
+ });
286
+ return { ok: true };
287
+ }
288
+ /**
289
+ * List all available templates.
290
+ */
291
+ async function listTemplates(input) {
292
+ exports.ListTemplatesSchema.parse(input);
293
+ const result = await (0, client_1.daemonFetch)("/templates");
294
+ const obj = result || {};
295
+ const rows = Array.isArray(result)
296
+ ? result
297
+ : Array.isArray(obj.items)
298
+ ? obj.items
299
+ : Array.isArray(obj.templates)
300
+ ? obj.templates
301
+ : [];
302
+ const templates = zod_1.z.array(TemplateSchema).parse(rows.map(parseTemplateRow));
303
+ return { templates };
304
+ }
305
+ /**
306
+ * List all personas (built-in + user-defined).
307
+ * Returns enough metadata for a picker — full system prompt is fetched
308
+ * via /personas/:id when needed.
309
+ */
310
+ async function listPersonas(input) {
311
+ exports.ListPersonasSchema.parse(input);
312
+ const result = await (0, client_1.daemonFetch)("/personas");
313
+ const obj = result || {};
314
+ const rows = Array.isArray(result)
315
+ ? result
316
+ : Array.isArray(obj.items)
317
+ ? obj.items
318
+ : Array.isArray(obj.personas)
319
+ ? obj.personas
320
+ : [];
321
+ const personas = zod_1.z.array(PersonaSchema).parse(rows.map(personaRowToRef));
322
+ return { personas };
323
+ }
324
+ /**
325
+ * Fire a chat that wears a chosen persona.
326
+ *
327
+ * The persona's `system_prompt` is prepended to the user's brief so the
328
+ * downstream CLI sees both the worldview and the request. Voice routing is
329
+ * handled by the existing template machinery (template's `doer.lineage`
330
+ * decides which CLI runs); v0.7 keeps voice selection implicit via template
331
+ * choice and v0.8 will add explicit per-phase voice override.
332
+ */
333
+ async function invokePersona(input) {
334
+ const parsed = exports.InvokePersonaSchema.parse(input);
335
+ // Pull full persona so we have the system_prompt.
336
+ const persona = await (0, client_1.daemonFetch)(`/personas/${encodeURIComponent(parsed.personaId)}`);
337
+ const composedBrief = [
338
+ `# Persona: ${persona.label}`,
339
+ persona.system_prompt.trim(),
340
+ `---`,
341
+ `# User request`,
342
+ parsed.brief.trim(),
343
+ ].join("\n\n");
344
+ const result = await (0, client_1.daemonFetch)("/chats", {
345
+ method: "POST",
346
+ body: JSON.stringify({
347
+ work: composedBrief,
348
+ templateId: parsed.templateId,
349
+ files: parsed.files,
350
+ repoPath: parsed.repoPath,
351
+ }),
352
+ });
353
+ return ChatRefSchema.parse(chatRowToRef(result));
354
+ }
355
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chorus-codes",
3
- "version": "0.7.0",
3
+ "version": "0.7.1",
4
4
  "description": "Driver-agnostic multi-LLM peer review for code decisions. Bring your own CLI; Chorus convenes 2-4 other LLMs to review the work before you ship.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "99x Agency",
@@ -28,6 +28,7 @@
28
28
  "test": "vitest run",
29
29
  "test:watch": "vitest",
30
30
  "test:coverage": "vitest run --coverage",
31
+ "prepublishOnly": "rm -rf dist .next *.tsbuildinfo && pnpm build && pnpm build:server && test -f dist/cli/index.js && test -f dist/daemon/index.js && test -f dist/mcp/index.js",
31
32
  "postinstall": "node scripts/postinstall.mjs"
32
33
  },
33
34
  "dependencies": {