chorus-codes 0.7.5 → 0.8.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 (150) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +2 -1
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/routes-manifest.json +8 -0
  6. package/.next/server/app/_global-error/page.js +2 -2
  7. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/_global-error.html +1 -1
  9. package/.next/server/app/_global-error.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  16. package/.next/server/app/_not-found/page.js +2 -2
  17. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  18. package/.next/server/app/_not-found.html +1 -1
  19. package/.next/server/app/_not-found.rsc +1 -1
  20. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  21. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  22. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  23. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  24. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  25. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  26. package/.next/server/app/api/daemon/[...path]/route.js +1 -1
  27. package/.next/server/app/api/run-artifacts/[chatId]/route.js +1 -1
  28. package/.next/server/app/connect/page.js +2 -2
  29. package/.next/server/app/connect/page_client-reference-manifest.js +1 -1
  30. package/.next/server/app/demo/[scenario]/page.js +2 -0
  31. package/.next/server/app/demo/[scenario]/page.js.nft.json +1 -0
  32. package/.next/server/app/demo/[scenario]/page_client-reference-manifest.js +1 -0
  33. package/.next/server/app/favicon.ico/route.js +1 -1
  34. package/.next/server/app/icon.svg/route.js +1 -1
  35. package/.next/server/app/new/page.js +2 -2
  36. package/.next/server/app/new/page_client-reference-manifest.js +1 -1
  37. package/.next/server/app/new.html +1 -1
  38. package/.next/server/app/new.rsc +2 -2
  39. package/.next/server/app/new.segments/_full.segment.rsc +2 -2
  40. package/.next/server/app/new.segments/_head.segment.rsc +1 -1
  41. package/.next/server/app/new.segments/_index.segment.rsc +1 -1
  42. package/.next/server/app/new.segments/_tree.segment.rsc +1 -1
  43. package/.next/server/app/new.segments/new/__PAGE__.segment.rsc +2 -2
  44. package/.next/server/app/new.segments/new.segment.rsc +1 -1
  45. package/.next/server/app/onboarding/page.js +2 -2
  46. package/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  47. package/.next/server/app/onboarding.html +1 -1
  48. package/.next/server/app/onboarding.rsc +2 -2
  49. package/.next/server/app/onboarding.segments/_full.segment.rsc +2 -2
  50. package/.next/server/app/onboarding.segments/_head.segment.rsc +1 -1
  51. package/.next/server/app/onboarding.segments/_index.segment.rsc +1 -1
  52. package/.next/server/app/onboarding.segments/_tree.segment.rsc +1 -1
  53. package/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +2 -2
  54. package/.next/server/app/onboarding.segments/onboarding.segment.rsc +1 -1
  55. package/.next/server/app/page.js +2 -2
  56. package/.next/server/app/page.js.nft.json +1 -1
  57. package/.next/server/app/page_client-reference-manifest.js +1 -1
  58. package/.next/server/app/personas/page.js +2 -2
  59. package/.next/server/app/personas/page_client-reference-manifest.js +1 -1
  60. package/.next/server/app/personas.html +1 -1
  61. package/.next/server/app/personas.rsc +2 -2
  62. package/.next/server/app/personas.segments/_full.segment.rsc +2 -2
  63. package/.next/server/app/personas.segments/_head.segment.rsc +1 -1
  64. package/.next/server/app/personas.segments/_index.segment.rsc +1 -1
  65. package/.next/server/app/personas.segments/_tree.segment.rsc +1 -1
  66. package/.next/server/app/personas.segments/personas/__PAGE__.segment.rsc +2 -2
  67. package/.next/server/app/personas.segments/personas.segment.rsc +1 -1
  68. package/.next/server/app/runs/[runId]/page.js +2 -2
  69. package/.next/server/app/runs/[runId]/page.js.nft.json +1 -1
  70. package/.next/server/app/runs/[runId]/page_client-reference-manifest.js +1 -1
  71. package/.next/server/app/runs/page.js +2 -2
  72. package/.next/server/app/runs/page_client-reference-manifest.js +1 -1
  73. package/.next/server/app/settings/page.js +3 -3
  74. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  75. package/.next/server/app/settings/permissions/page.js +2 -2
  76. package/.next/server/app/settings/permissions/page_client-reference-manifest.js +1 -1
  77. package/.next/server/app/settings.html +1 -1
  78. package/.next/server/app/settings.rsc +2 -2
  79. package/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  80. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  81. package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  82. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  83. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  84. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  85. package/.next/server/app/templates/page.js +2 -2
  86. package/.next/server/app/templates/page_client-reference-manifest.js +1 -1
  87. package/.next/server/app/templates.html +1 -1
  88. package/.next/server/app/templates.rsc +2 -2
  89. package/.next/server/app/templates.segments/_full.segment.rsc +2 -2
  90. package/.next/server/app/templates.segments/_head.segment.rsc +1 -1
  91. package/.next/server/app/templates.segments/_index.segment.rsc +1 -1
  92. package/.next/server/app/templates.segments/_tree.segment.rsc +1 -1
  93. package/.next/server/app/templates.segments/templates/__PAGE__.segment.rsc +2 -2
  94. package/.next/server/app/templates.segments/templates.segment.rsc +1 -1
  95. package/.next/server/app-paths-manifest.json +2 -1
  96. package/.next/server/chunks/597.js +1 -0
  97. package/.next/server/chunks/668.js +1 -1
  98. package/.next/server/chunks/681.js +1 -1
  99. package/.next/server/chunks/946.js +1 -1
  100. package/.next/server/middleware-build-manifest.js +1 -1
  101. package/.next/server/pages/404.html +1 -1
  102. package/.next/server/pages/500.html +1 -1
  103. package/.next/server/server-reference-manifest.json +1 -1
  104. package/.next/static/{VWSkj_Yx6OKSjPmYY8ewj → bbzOQo_mKxMPrYmXUbnSg}/_buildManifest.js +1 -1
  105. package/.next/static/chunks/{116-0372d11bc2a9ac4d.js → 116-8bf7e014066cedde.js} +1 -1
  106. package/.next/static/chunks/344-57b337448af965da.js +1 -0
  107. package/.next/static/chunks/641-9a68e56c49410f66.js +1 -0
  108. package/.next/static/chunks/977-26354f62110c63d4.js +1 -0
  109. package/.next/static/chunks/app/connect/{page-c09d9fb410c468b7.js → page-052be1ded639feb8.js} +1 -1
  110. package/.next/static/chunks/app/demo/[scenario]/page-1e694db85f44db1d.js +1 -0
  111. package/.next/static/chunks/app/new/{page-e4923b87c7a7b6ae.js → page-e84d8e7864dd8059.js} +1 -1
  112. package/.next/static/chunks/app/onboarding/page-8794913af4e5d34c.js +1 -0
  113. package/.next/static/chunks/app/{page-3c0d23c063b036eb.js → page-f18ee044fb5c3f79.js} +1 -1
  114. package/.next/static/chunks/app/personas/{page-a130cd11d8cbd832.js → page-c1a7624aea8c6ae2.js} +1 -1
  115. package/.next/static/chunks/app/runs/[runId]/page-9ce1e87a5e513d8b.js +1 -0
  116. package/.next/static/chunks/app/runs/{page-503439d57f433574.js → page-a91204fa64867e92.js} +1 -1
  117. package/.next/static/chunks/app/settings/{page-64d7d48d2413a18b.js → page-69e9f3ca7747b72c.js} +1 -1
  118. package/.next/static/chunks/app/settings/permissions/{page-18bf0e6d84be8fad.js → page-1004af2ee3990f03.js} +1 -1
  119. package/.next/static/chunks/app/templates/{page-db5165c6311bf6e1.js → page-9d588b21525591e0.js} +1 -1
  120. package/.next/trace +20 -19
  121. package/.next/trace-build +1 -1
  122. package/.next/types/app/demo/[scenario]/page.ts +87 -0
  123. package/.next/types/routes.d.ts +2 -1
  124. package/.next/types/validator.ts +9 -0
  125. package/dist/cli/commands/start.js +395 -167
  126. package/dist/cli/commands/start.js.map +1 -1
  127. package/dist/cli/commands/status.js +6 -4
  128. package/dist/cli/commands/status.js.map +1 -1
  129. package/dist/cli/commands/stop.js +34 -19
  130. package/dist/cli/commands/stop.js.map +1 -1
  131. package/dist/cli/index.js +12 -4
  132. package/dist/cli/index.js.map +1 -1
  133. package/dist/cli/shared.js +1 -16
  134. package/dist/cli/shared.js.map +1 -1
  135. package/dist/daemon/index.js +25 -2
  136. package/dist/daemon/index.js.map +1 -1
  137. package/dist/lib/daemon-discovery.js +219 -0
  138. package/dist/lib/daemon-discovery.js.map +1 -0
  139. package/dist/mcp/client.js +125 -15
  140. package/dist/mcp/client.js.map +1 -1
  141. package/dist/mcp/index.js +21 -1
  142. package/dist/mcp/index.js.map +1 -1
  143. package/dist/mcp/tools.js +16 -1
  144. package/dist/mcp/tools.js.map +1 -1
  145. package/package.json +1 -1
  146. package/.next/server/chunks/418.js +0 -1
  147. package/.next/static/chunks/344-1f06059a92faa936.js +0 -1
  148. package/.next/static/chunks/app/onboarding/page-4c87427335371aaa.js +0 -1
  149. package/.next/static/chunks/app/runs/[runId]/page-aa118bfeb6508779.js +0 -1
  150. /package/.next/static/{VWSkj_Yx6OKSjPmYY8ewj → bbzOQo_mKxMPrYmXUbnSg}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-discovery.js","sourceRoot":"","sources":["../../src/lib/daemon-discovery.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,24 @@
1
1
  "use strict";
2
2
  /**
3
- * Fetch wrapper around the daemon REST API on http://127.0.0.1:7707.
4
- * Handles connection errors with user-friendly guidance.
3
+ * Fetch wrapper around the daemon REST API.
4
+ *
5
+ * Daemon location is resolved at runtime from `~/.chorus/daemon.json`
6
+ * (v0.8+) with `CHORUS_DAEMON_URL` and `http://127.0.0.1:7707` as
7
+ * fallbacks. See lib/daemon-discovery.ts for the resolution order.
8
+ *
9
+ * Auto-start: if the daemon isn't running when an MCP tool is called,
10
+ * the shim spawns `chorus start` (daemon-only, no cockpit) detached
11
+ * and waits up to 10 s for it to come up. Disable via
12
+ * `CHORUS_AUTOSTART=0`. The auto-start path uses stderr for status
13
+ * messages because stdout is reserved for the MCP JSON-RPC protocol.
5
14
  */
6
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.__test = void 0;
7
17
  exports.daemonFetch = daemonFetch;
8
18
  exports.streamChat = streamChat;
19
+ const node_child_process_1 = require("node:child_process");
9
20
  const zod_1 = require("zod");
10
- const DAEMON_BASE = "http://127.0.0.1:7707";
21
+ const daemon_discovery_js_1 = require("../lib/daemon-discovery.js");
11
22
  const API_PREFIX = "/api/v1";
12
23
  /**
13
24
  * Prepend /api/v1 to a daemon path unless the caller already supplied
@@ -33,12 +44,91 @@ const ApiResponseSchema = zod_1.z.object({
33
44
  })
34
45
  .optional(),
35
46
  });
47
+ /**
48
+ * Cache the resolved daemon URL once per MCP shim process so we don't
49
+ * pay the readDaemonInfo + health-probe cost on every tool call. The
50
+ * shim is a short-lived stdio process (one per editor session), so a
51
+ * lifetime-of-process cache is safe — when the daemon shifts ports
52
+ * the editor will spawn a new shim eventually.
53
+ *
54
+ * Reset to null on auto-start so the first post-start call re-resolves.
55
+ */
56
+ let cachedDaemonUrl = null;
57
+ async function getDaemonUrl() {
58
+ if (cachedDaemonUrl)
59
+ return cachedDaemonUrl;
60
+ cachedDaemonUrl = await (0, daemon_discovery_js_1.resolveDaemonUrl)();
61
+ return cachedDaemonUrl;
62
+ }
63
+ /**
64
+ * Auto-start the daemon when an MCP tool call hits a dead daemon.
65
+ * Best-effort: spawn `chorus start` detached, poll daemon.json for
66
+ * up to 10 s, return true once a healthy daemon exists.
67
+ *
68
+ * Skipped entirely when `CHORUS_AUTOSTART=0` — for users who want to
69
+ * manage the daemon lifecycle themselves and prefer a hard error.
70
+ */
71
+ async function tryAutoStart() {
72
+ if (process.env.CHORUS_AUTOSTART === "0")
73
+ return false;
74
+ // Locate the chorus binary. process.execPath is `node`; argv[1] is
75
+ // dist/mcp/index.js when launched via `chorus mcp`. The bin wrapper
76
+ // sits two levels up at bin/chorus.mjs.
77
+ //
78
+ // The build emits CommonJS, so __dirname is the runtime-available
79
+ // path to this file's directory (dist/mcp at install time, src/mcp
80
+ // under tsx dev). Either way, packageRoot = __dirname/../...
81
+ const path = await import("node:path");
82
+ const fs = await import("node:fs");
83
+ const packageRoot = path.resolve(__dirname, "..", "..");
84
+ const binPath = path.resolve(packageRoot, "bin", "chorus.mjs");
85
+ if (!fs.existsSync(binPath)) {
86
+ process.stderr.write(`chorus: cannot auto-start — bin/chorus.mjs not found at ${binPath}\n`);
87
+ return false;
88
+ }
89
+ process.stderr.write("chorus: daemon not running, auto-starting...\n");
90
+ try {
91
+ // --daemon-only: MCP-triggered auto-start should NOT boot the
92
+ // cockpit (Next.js). The user invoked us via tool call from their
93
+ // editor; the cockpit UI isn't requested. Spec requirement, also
94
+ // saves ~150 MB and several seconds of cold-start time.
95
+ const child = (0, node_child_process_1.spawn)(process.execPath, [binPath, "start", "--daemon-only"], {
96
+ detached: true,
97
+ stdio: "ignore",
98
+ });
99
+ child.unref();
100
+ }
101
+ catch (err) {
102
+ const msg = err instanceof Error ? err.message : String(err);
103
+ process.stderr.write(`chorus: failed to spawn chorus start: ${msg}\n`);
104
+ return false;
105
+ }
106
+ // Poll for daemon.json + healthy status. 10 s deadline covers WSL
107
+ // cold start (slow loopback) without making MCP calls hang forever.
108
+ const deadline = Date.now() + 10_000;
109
+ while (Date.now() < deadline) {
110
+ await new Promise((r) => setTimeout(r, 200));
111
+ const info = (0, daemon_discovery_js_1.readDaemonInfo)();
112
+ if (info && (await (0, daemon_discovery_js_1.isDaemonHealthy)(info.daemonPort, 500))) {
113
+ cachedDaemonUrl = `http://127.0.0.1:${info.daemonPort}`;
114
+ process.stderr.write(`chorus: daemon ready on port ${info.daemonPort}\n`);
115
+ return true;
116
+ }
117
+ }
118
+ process.stderr.write("chorus: auto-start timed out after 10s. Run `chorus start` manually and check ~/.chorus/logs/daemon.log.\n");
119
+ return false;
120
+ }
36
121
  /**
37
122
  * Fetch JSON from daemon, parse response, handle errors.
38
- * Throws an error if daemon is unreachable or response is invalid.
123
+ * On the first failure (connection refused), attempt one auto-start
124
+ * and retry once. Subsequent failures throw.
39
125
  */
40
126
  async function daemonFetch(path, options) {
41
- const url = `${DAEMON_BASE}${v1(path)}`;
127
+ return await daemonFetchWithRetry(path, options, true);
128
+ }
129
+ async function daemonFetchWithRetry(path, options, allowAutoStart) {
130
+ const base = await getDaemonUrl();
131
+ const url = `${base}${v1(path)}`;
42
132
  let response;
43
133
  try {
44
134
  response = await fetch(url, {
@@ -50,17 +140,22 @@ async function daemonFetch(path, options) {
50
140
  });
51
141
  }
52
142
  catch (error) {
53
- // Connection refused or network error
54
- if (error instanceof Error && error.message.includes("ECONNREFUSED")) {
55
- throw new Error("Chorus daemon not running. Run 'chorus start' first.");
143
+ const message = error instanceof Error ? error.message : String(error);
144
+ const looksConnRefused = message.includes("ECONNREFUSED") ||
145
+ message.includes("fetch failed") ||
146
+ message.includes("ENOTFOUND");
147
+ if (looksConnRefused && allowAutoStart) {
148
+ // Invalidate cached URL — daemon may come up on a different port.
149
+ cachedDaemonUrl = null;
150
+ const started = await tryAutoStart();
151
+ if (started) {
152
+ return daemonFetchWithRetry(path, options, false);
153
+ }
154
+ throw new Error("Chorus daemon not running and auto-start failed. Run 'chorus start' first " +
155
+ "(set CHORUS_AUTOSTART=0 to disable auto-start prompts).");
56
156
  }
57
157
  throw error;
58
158
  }
59
- // Parse the JSON envelope FIRST, regardless of HTTP status. The
60
- // daemon now returns 4xx for client errors (validation/not_found/
61
- // conflict) per the v0.7 shape-freeze; without this, MCP consumers
62
- // would see ugly raw-text errors like `Daemon returned 400: {...}`
63
- // instead of the nice `error.message` they get on 200+ok:false.
64
159
  let json;
65
160
  try {
66
161
  json = await response.json();
@@ -77,9 +172,14 @@ async function daemonFetch(path, options) {
77
172
  /**
78
173
  * Consume SSE stream and emit progress events.
79
174
  * Yields one item per event until the stream closes or timeout expires.
175
+ *
176
+ * No auto-start retry here — long-running streams shouldn't restart
177
+ * the daemon mid-flight. If the user closes the daemon during a
178
+ * stream, we let the abort propagate.
80
179
  */
81
180
  async function* streamChat(chatId, timeoutSec = 600) {
82
- const url = `${DAEMON_BASE}${v1(`/chats/${chatId}/stream`)}`;
181
+ const base = await getDaemonUrl();
182
+ const url = `${base}${v1(`/chats/${chatId}/stream`)}`;
83
183
  const controller = new AbortController();
84
184
  const timeoutId = setTimeout(() => controller.abort(), timeoutSec * 1000);
85
185
  try {
@@ -116,7 +216,6 @@ async function* streamChat(chatId, timeoutSec = 600) {
116
216
  }
117
217
  }
118
218
  }
119
- // Flush remaining buffer
120
219
  if (buffer) {
121
220
  if (buffer.startsWith("data: ")) {
122
221
  const data = buffer.slice(6);
@@ -135,4 +234,15 @@ async function* streamChat(chatId, timeoutSec = 600) {
135
234
  clearTimeout(timeoutId);
136
235
  }
137
236
  }
237
+ // Exported for tests.
238
+ exports.__test = {
239
+ resetCache: () => {
240
+ cachedDaemonUrl = null;
241
+ },
242
+ getCache: () => cachedDaemonUrl,
243
+ setCache: (url) => {
244
+ cachedDaemonUrl = url;
245
+ },
246
+ defaultUrl: daemon_discovery_js_1.DEFAULT_DAEMON_URL,
247
+ };
138
248
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":"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"}
package/dist/mcp/index.js CHANGED
@@ -5,13 +5,33 @@
5
5
  * Exposes 9 tools to orchestrators (Claude Code, Codex, Cursor).
6
6
  * Each tool calls the daemon REST API on http://127.0.0.1:7707.
7
7
  */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
8
11
  Object.defineProperty(exports, "__esModule", { value: true });
9
12
  const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
10
13
  const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
14
+ const node_fs_1 = __importDefault(require("node:fs"));
15
+ const node_path_1 = __importDefault(require("node:path"));
11
16
  const tools_js_1 = require("./tools.js");
17
+ // Read version from the shipped package.json — single source of truth,
18
+ // per feedback_version_from_package_json. __dirname is dist/mcp (built)
19
+ // or src/mcp (tsx dev); ../../package.json resolves to the package root
20
+ // in both layouts.
21
+ const mcpVersion = (() => {
22
+ try {
23
+ const pkgPath = node_path_1.default.resolve(__dirname, "..", "..", "package.json");
24
+ const raw = node_fs_1.default.readFileSync(pkgPath, "utf-8");
25
+ const parsed = JSON.parse(raw);
26
+ return parsed.version ?? "0.0.0";
27
+ }
28
+ catch {
29
+ return "0.0.0";
30
+ }
31
+ })();
12
32
  const mcpServer = new mcp_js_1.McpServer({
13
33
  name: "chorus",
14
- version: "0.7.5",
34
+ version: mcpVersion,
15
35
  });
16
36
  /**
17
37
  * Register the 7 MCP tools.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"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"}
package/dist/mcp/tools.js CHANGED
@@ -19,9 +19,24 @@ exports.listPersonas = listPersonas;
19
19
  exports.invokePersona = invokePersona;
20
20
  const zod_1 = require("zod");
21
21
  const yaml_1 = __importDefault(require("yaml"));
22
+ const daemon_discovery_js_1 = require("../lib/daemon-discovery.js");
22
23
  const client_1 = require("./client");
24
+ /**
25
+ * Resolve the cockpit URL the run links should point at. Sync read from
26
+ * daemon.json (no health probe — the link is informational; if the
27
+ * cockpit is dead the user finds out when they click it). CHORUS_WEB_URL
28
+ * env override remains the explicit escape hatch.
29
+ */
30
+ function cockpitBase() {
31
+ if (process.env.CHORUS_WEB_URL)
32
+ return process.env.CHORUS_WEB_URL;
33
+ const info = (0, daemon_discovery_js_1.readDaemonInfo)();
34
+ if (info)
35
+ return `http://127.0.0.1:${info.cockpitPort}`;
36
+ return daemon_discovery_js_1.DEFAULT_COCKPIT_URL;
37
+ }
23
38
  function chatRowToRef(row) {
24
- const webBase = process.env.CHORUS_WEB_URL || "http://127.0.0.1:5050";
39
+ const webBase = cockpitBase();
25
40
  // Prefer slug for the user-visible URL (it's what the cockpit uses
26
41
  // too). Falls back to ULID for legacy rows the daemon couldn't
27
42
  // backfill — both forms resolve identically server-side.
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
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.5",
3
+ "version": "0.8.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",
@@ -1 +0,0 @@
1
- "use strict";exports.id=418,exports.ids=[418],exports.modules={5609:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return function a(b){if((0,g.isNextRouterError)(b)||(0,f.isBailoutToCSRError)(b)||(0,i.isDynamicServerError)(b)||(0,h.isDynamicPostpone)(b)||(0,e.isPostpone)(b)||(0,d.isHangingPromiseRejectionError)(b)||(0,h.isPrerenderInterruptedError)(b))throw b;b instanceof Error&&"cause"in b&&a(b.cause)}}});let d=c(52745),e=c(27194),f=c(51),g=c(63559),h=c(69636),i=c(85626);("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},6506:(a,b,c)=>{c.d(b,{JR:()=>k,QJ:()=>f,VW:()=>g,YM:()=>m,m_:()=>h,r2:()=>n,u5:()=>j,x0:()=>l,ze:()=>d});let d={anthropic:"Claude",openai:"Codex",google:"Gemini",opencode:"OpenCode",moonshot:"Kimi"},e={anthropic:"bg-violet-400",openai:"bg-orange-400",google:"bg-blue-400",opencode:"bg-emerald-400",moonshot:"bg-pink-400"};function f(a){return a?d[a]??a:""}function g(a){return a?e[a]??"bg-muted":"bg-muted"}let h={claude:"Claude",codex:"Codex",gemini:"Gemini",opencode:"OpenCode",kimi:"Kimi",openrouter:"OpenRouter"},i={claude:"bg-violet-400",codex:"bg-orange-400",gemini:"bg-blue-400",opencode:"bg-emerald-400",kimi:"bg-pink-400",openrouter:"bg-cyan-400"};function j(a){return a?h[a]??a:""}function k(a){return a?i[a]??"bg-muted":"bg-muted"}let l={claude:"claude-opus-4-7",codex:"gpt-5.5",gemini:"gemini-3.1-pro-preview",opencode:"kimi-k2.6",kimi:"kimi-k2.6",openrouter:""};function m(a){if(a)return l[a]}let n={claude:{dot:"bg-violet-400",ring:"ring-violet-400/40",gradient:"bg-gradient-to-b from-violet-500/15 to-card"},codex:{dot:"bg-orange-400",ring:"ring-orange-400/40",gradient:"bg-gradient-to-b from-orange-500/15 to-card"},gemini:{dot:"bg-blue-400",ring:"ring-blue-400/40",gradient:"bg-gradient-to-b from-blue-500/15 to-card"},opencode:{dot:"bg-emerald-400",ring:"ring-emerald-400/40",gradient:"bg-gradient-to-b from-emerald-500/15 to-card"},kimi:{dot:"bg-pink-400",ring:"ring-pink-400/40",gradient:"bg-gradient-to-b from-pink-500/15 to-card"},openrouter:{dot:"bg-cyan-400",ring:"ring-cyan-400/40",gradient:"bg-gradient-to-b from-cyan-500/15 to-card"}}},15070:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"ReadonlyURLSearchParams",{enumerable:!0,get:function(){return d}});class c extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class d extends URLSearchParams{append(){throw new c}delete(){throw new c}set(){throw new c}sort(){throw new c}}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},16063:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});var d={ReadonlyURLSearchParams:function(){return f.ReadonlyURLSearchParams},RedirectType:function(){return m},forbidden:function(){return i.forbidden},notFound:function(){return h.notFound},permanentRedirect:function(){return g.permanentRedirect},redirect:function(){return g.redirect},unauthorized:function(){return j.unauthorized},unstable_isUnrecognizedActionError:function(){return l},unstable_rethrow:function(){return k.unstable_rethrow}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(15070),g=c(87928),h=c(37834),i=c(17963),j=c(44254),k=c(36810);function l(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}let m={push:"push",replace:"replace"};("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},17963:(a,b,c)=>{function d(){throw Object.defineProperty(Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E488",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"forbidden",{enumerable:!0,get:function(){return d}}),c(80019).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},36810:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return d}});let d=c(5609).unstable_rethrow;("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},37834:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"notFound",{enumerable:!0,get:function(){return f}});let d=c(80019),e=`${d.HTTP_ERROR_FALLBACK_ERROR_CODE};404`;function f(){let a=Object.defineProperty(Error(e),"__NEXT_ERROR_CODE",{value:"E1041",enumerable:!1,configurable:!0});throw a.digest=e,a}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},44254:(a,b,c)=>{function d(){throw Object.defineProperty(Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E411",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unauthorized",{enumerable:!0,get:function(){return d}}),c(80019).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},52343:(a,b,c)=>{var d=c(16063);c.o(d,"notFound")&&c.d(b,{notFound:function(){return d.notFound}}),c.o(d,"redirect")&&c.d(b,{redirect:function(){return d.redirect}})},55932:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(52449).A)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]])},65850:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(52449).A)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},72069:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(52449).A)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]])},87928:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0});var d={getRedirectError:function(){return i},getRedirectStatusCodeFromError:function(){return n},getRedirectTypeFromError:function(){return m},getURLFromRedirectError:function(){return l},permanentRedirect:function(){return k},redirect:function(){return j}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(91957),g=c(16023),h=c(19121).actionAsyncStorage;function i(a,b,c=f.RedirectStatusCode.TemporaryRedirect){let d=Object.defineProperty(Error(g.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return d.digest=`${g.REDIRECT_ERROR_CODE};${b};${a};${c};`,d}function j(a,b){throw i(a,b??=h?.getStore()?.isAction?"push":"replace",f.RedirectStatusCode.TemporaryRedirect)}function k(a,b="replace"){throw i(a,b,f.RedirectStatusCode.PermanentRedirect)}function l(a){return(0,g.isRedirectError)(a)?a.digest.split(";").slice(2,-2).join(";"):null}function m(a){if(!(0,g.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return a.digest.split(";",2)[1]}function n(a){if(!(0,g.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(a.digest.split(";").at(-2))}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},95047:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(52449).A)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]])}};
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[344],{821:(e,t,n)=>{n.d(t,{AppSidebar:()=>$,P:()=>k});var r=n(9442),a=n(6074),o=n(2573),s=n.n(o),i=n(5902),d=n(4134),l=n(3838),c=n(8821),u=n(8659),m=n(6823),h=n(9036),f=n(3478),p=n(3896),x=n(9315),g=n(4284),y=n(6185),b=n(7296);let v="chorus.sidebar.collapsed";function w(e){if(!e)return!1;try{return"1"===e.getItem(v)}catch{return!1}}var j=n(7362);let N=[{href:"/",label:"Home",icon:d.A},{href:"/runs",label:"Runs",icon:l.A},{href:"/templates",label:"Templates",icon:c.A},{href:"/personas",label:"Personas",icon:u.A},{href:"/connect",label:"Connect",icon:m.A},{href:"/settings",label:"Settings",icon:h.A}],T={drafting:"bg-amber-400",reviewing:"bg-primary animate-pulse-soft",approved:"bg-emerald-400",no_review:"bg-amber-400",merged:"bg-emerald-500",blocked:"bg-amber-500 animate-pulse-soft",cancelled:"bg-muted-foreground",failed:"bg-destructive"};function k({onNavigate:e,collapsed:t=!1,onToggleCollapsed:n}){let o=(0,i.usePathname)(),[d,l]=(0,a.useState)([]),[c,u]=(0,a.useState)("loading"),[m,h]=(0,a.useState)(null);return(0,a.useEffect)(()=>{let e=!1;return fetch("/api/daemon/api/v1/health").then(e=>e.ok?e.json():null).then(t=>{if(e||!t)return;let n=t?.data?.version??t?.version;"string"==typeof n&&n.length>0&&h(n)}).catch(()=>{}),()=>{e=!0}},[]),(0,a.useEffect)(()=>{let e=!1,t=async()=>{try{let t=await (0,y.Ih)({limit:12});if(e)return;l(t),u("ready")}catch(t){if(e)return;u((t instanceof y.$v,"error"))}};t();let n=null,r=null,a=!1,o=()=>{r||(r=setInterval(t,2e3))},s=()=>{r&&(clearInterval(r),r=null)},i=()=>{if(!n)try{(n=new EventSource("/api/daemon/api/v1/chats/events")).onopen=()=>{a=!0,s()},n.onmessage=()=>{t()},n.onerror=()=>{a=!1,o()}}catch{o()}},d=()=>{n&&(n.close(),n=null,a=!1)},c=()=>{document.hidden?(d(),s()):(t(),i(),a||o())};return"u">typeof document&&!document.hidden&&(i(),o()),"u">typeof document&&document.addEventListener("visibilitychange",c),()=>{e=!0,d(),s(),"u">typeof document&&document.removeEventListener("visibilitychange",c)}},[o]),(0,r.jsxs)("div",{className:"flex h-full flex-col",children:[(0,r.jsxs)("div",{className:"flex h-14 items-center gap-2 border-b border-border px-3",children:[(0,r.jsx)("div",{className:"grid h-7 w-7 shrink-0 place-items-center rounded-md bg-primary/15 text-primary",children:(0,r.jsx)(g.U,{className:"h-[18px] w-[18px]"})}),!t&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"text-sm font-semibold tracking-tight",children:"Chorus"}),(0,r.jsx)("span",{className:"ml-auto rounded-md border border-border px-1.5 py-0.5 font-mono text-[10px] text-muted-foreground",children:m?`v${m.replace(/^v/,"").replace(/-dev\.\d+$/,"")}`:"—"})]}),n&&(0,r.jsx)("button",{type:"button",onClick:n,"aria-label":t?"Expand sidebar":"Collapse sidebar",className:(0,j.cn)("rounded p-1 text-muted-foreground transition hover:bg-accent hover:text-foreground",t&&"ml-auto"),children:t?(0,r.jsx)(f.A,{className:"h-3.5 w-3.5"}):(0,r.jsx)(p.A,{className:"h-3.5 w-3.5"})})]}),(0,r.jsx)("nav",{className:(0,j.cn)("py-3",t?"px-1.5":"px-2"),children:(0,r.jsx)("ul",{className:"flex flex-col gap-0.5",children:N.map(n=>{let a,i=n.icon;return(0,r.jsx)("li",{children:(0,r.jsxs)(s(),{href:n.href,onClick:e,title:t?n.label:void 0,className:(0,j.cn)("flex items-center rounded-md text-sm transition-colors",t?"justify-center px-2 py-2":"gap-2 px-2 py-1.5",("/"===(a=n.href)?"/"===o:o.startsWith(a))?"bg-accent text-foreground":"text-muted-foreground hover:bg-accent/50 hover:text-foreground"),children:[(0,r.jsx)(i,{className:"h-4 w-4 shrink-0"}),!t&&(0,r.jsx)("span",{children:n.label})]})},n.href)})})}),t?(0,r.jsx)("div",{className:"min-h-0 flex-1"}):(0,r.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col border-t border-border",children:[(0,r.jsxs)("div",{className:"flex shrink-0 flex-col gap-2 bg-card/40 px-3 py-3",children:[(0,r.jsxs)(s(),{href:"/new",onClick:e,"aria-label":"New chat",className:"inline-flex h-8 w-full items-center justify-center gap-1.5 rounded-md bg-primary px-2.5 text-xs font-medium text-primary-foreground transition hover:bg-primary/90",children:[(0,r.jsx)(x.A,{className:"h-3.5 w-3.5"}),(0,r.jsx)("span",{children:"New chat"})]}),(0,r.jsx)("div",{className:"mt-1 px-1 text-[10px] font-medium uppercase tracking-wider text-muted-foreground",children:"Recent"})]}),(0,r.jsx)("nav",{className:"min-h-0 flex-1 overflow-y-auto px-2 py-2",children:"loading"===c?(0,r.jsx)("div",{className:"px-2 py-4 text-xs text-muted-foreground",children:"Loading…"}):"error"===c?(0,r.jsxs)("div",{className:"px-2 py-4 text-xs text-muted-foreground",children:["Can't reach Chorus. Try restarting it from your terminal:"," ",(0,r.jsx)("code",{className:"rounded bg-muted/40 px-1 font-mono text-[10px] text-foreground/80",children:"chorus start"})]}):0===d.length?(0,r.jsxs)("div",{className:"px-2 py-4 text-xs text-muted-foreground",children:["No chats yet."," ",(0,r.jsx)(s(),{href:"/new",onClick:e,className:"text-primary transition hover:underline",children:"Start one →"})]}):(0,r.jsx)("ul",{className:"flex flex-col gap-0.5",children:d.map(t=>{let n=`/runs/${t.slug||t.id}`,a=o===n,i=(0,b.t)(t.work),d=i.length>60?`${i.slice(0,60)}…`:i;return(0,r.jsx)("li",{children:(0,r.jsxs)(s(),{href:n,onClick:e,className:(0,j.cn)("group flex items-center gap-2 rounded-md px-2 py-1.5 text-sm transition-colors",a?"bg-accent text-foreground":"text-muted-foreground hover:bg-accent/50 hover:text-foreground"),children:[(0,r.jsx)("span",{className:(0,j.cn)("h-1.5 w-1.5 shrink-0 rounded-full",T[t.status])}),(0,r.jsx)("span",{className:"min-w-0 flex-1 truncate leading-snug",title:i,children:d})]})},t.id)})})})]})]})}let S=e=>(window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)),C=()=>!1;function $(){let[e,t]=(0,a.useState)(0),n=(0,a.useSyncExternalStore)(S,()=>w(window.localStorage),C),o=(0,a.useCallback)(()=>{let e=!w(window.localStorage);var n=window.localStorage;if(n)try{n.setItem(v,e?"1":"0")}catch{}t(e=>e+1)},[]);return(0,r.jsx)("aside",{className:(0,j.cn)("hidden h-screen shrink-0 flex-col border-r border-border bg-card/30 transition-[width] duration-200 ease-out md:flex",n?"w-14":"w-60"),children:(0,r.jsx)(k,{collapsed:n,onToggleCollapsed:o})})}},1993:(e,t,n)=>{n.d(t,{K7:()=>d,UT:()=>o,dW:()=>s,qI:()=>i});var r=n(4411);function a(e){return{id:e.id,label:e.label,one_liner:e.one_liner,system_prompt:e.system_prompt,recommended_lineage:e.recommended_lineage,builtin:!!e.builtin,forked_from:e.forked_from??null,created_at:e.created_at,updated_at:e.updated_at}}async function o(){return(await (0,r.T)("/personas")).items.map(a)}async function s(e){return a(await (0,r.T)(`/personas/${encodeURIComponent(e)}`))}async function i(e){return a(await (0,r.T)("/personas",{method:"POST",body:JSON.stringify(e)}))}async function d(e){await (0,r.T)(`/personas/${encodeURIComponent(e)}`,{method:"DELETE"})}},4284:(e,t,n)=>{n.d(t,{U:()=>a});var r=n(9442);function a({className:e}){return(0,r.jsxs)("svg",{viewBox:"0 0 32 32","aria-hidden":"true",className:e,fill:"currentColor",children:[(0,r.jsx)("circle",{cx:"11",cy:"20",r:"3.2",fillOpacity:"0.55"}),(0,r.jsx)("circle",{cx:"21",cy:"20",r:"3.2",fillOpacity:"0.55"}),(0,r.jsx)("circle",{cx:"16",cy:"11",r:"3.2"})]})}},4411:(e,t,n)=>{n.d(t,{$:()=>a,T:()=>o}),n(9298).env.CHORUS_DAEMON_URL;let r="/api/v1";class a extends Error{constructor(e,t,n,r){super(n),this.code=e,this.statusCode=t,this.details=r,this.name="DaemonError"}}async function o(e,t={}){let n=new URL("/api/daemon",window.location.origin).toString(),s=e.startsWith("/")?e:`/${e}`,i=s===r||s.startsWith(`${r}/`)?s:`${r}${s}`,d=`${n.replace(/\/$/,"")}${i}`;try{let e=await fetch(d,{...t,headers:{"Content-Type":"application/json",...t.headers}}),n=await e.json().catch(()=>({ok:!1,error:{code:"parse_error",message:"Failed to parse response"}}));if(!n.ok)throw new a(n.error?.code||"unknown",e.status,n.error?.message||"Unknown error",n.error?.details);return n.data}catch(e){if(e instanceof a)throw e;if(e instanceof TypeError&&e.message.includes("fetch"))throw new a("connection_failed",0,"Failed to connect to Chorus daemon. Is it running?");throw new a("unknown",0,e instanceof Error?e.message:"Unknown error")}}},6185:(e,t,n)=>{n.d(t,{$v:()=>r.$,jb:()=>g.jb,RL:()=>s,K7:()=>y.K7,I7:()=>p,dW:()=>y.dW,Ih:()=>o,UT:()=>y.UT,eG:()=>h,qI:()=>y.qI,AI:()=>f,Xx:()=>x.Xx,WH:()=>x.WH});var r=n(4411);function a(e){let t;if(e.attached_files)try{let n=JSON.parse(e.attached_files);Array.isArray(n)&&(t=n)}catch{}return{id:e.id,slug:e.slug??void 0,work:e.work,templateId:e.template_id,status:e.status,currentPhaseIdx:e.current_phase_idx??0,yolo:!!e.yolo,attachedFiles:t,repoPath:e.repo_path??void 0,prUrl:e.pr_url??void 0,shipError:e.ship_error??void 0,artifact:e.artifact??void 0,verdict:e.verdict??void 0,createdAt:e.created_at,updatedAt:e.updated_at,finishedAt:e.finished_at??void 0}}async function o(e){let t=new URLSearchParams;e?.limit&&t.append("limit",e.limit.toString()),e?.offset&&t.append("offset",e.offset.toString()),e?.status&&t.append("status",e.status);let n=t.toString();return(await (0,r.T)(`/chats${n?`?${n}`:""}`)).items.map(a)}async function s(e){return a(await (0,r.T)("/chats",{method:"POST",body:JSON.stringify(e)}))}var i=n(599);let d=new Set(["anthropic","openai","google","opencode","moonshot","any","xai"]),l={anthropic:"claude",openai:"codex",google:"gemini",opencode:"opencode",moonshot:"kimi",any:"claude",xai:"opencode"};function c(e){return e?l[e]??"claude":"claude"}function u(e){let t=e.kind??"review";return{id:e.id??"phase",name:e.title??e.name??e.id??"Phase",description:e.description??"",kind:t,gate:"auto",doer:{lineage:c(e.doer?.lineage),models:e.doer?.models??[],...e.doer?.persona?{persona:e.doer.persona}:{}},reviewer:{require:e.reviewer?.require??1,crossLineage:e.reviewer?.crossLineage??!0,candidates:(e.reviewer?.candidates??[]).map(e=>c(e.lineage)).filter(e=>d.has(Object.keys(l).find(t=>l[t]===e)??"")),candidatesWithModels:(e.reviewer?.candidates??[]).map(e=>({lineage:c(e.lineage),models:e.models??[],...e.persona?{persona:e.persona}:{}}))},inputs:{include:e.inputs?.include??[],exclude:e.inputs?.exclude??[]},iterate:{max:e.iterate?.maxRounds??2,onMax:"ask-user"},blindSpots:[],execution:"parallel",builtin:!0,..."review_only"===t?{artifact:{label:e.artifact?.label??"Artifact to review",hint:e.artifact?.hint??"Paste a unified diff, a markdown draft, code, or any text blob.",maxBytes:e.artifact?.maxBytes??1048576}}:{}}}function m(e){let t={};try{t=i.Ay.parse(e.yaml)??{}}catch{}let n="majority";"number"==typeof t.agreementThreshold?n=t.agreementThreshold>=.99?"unanimous":t.agreementThreshold>=.5?"majority":"any":"string"==typeof t.agreementThreshold&&(n=t.agreementThreshold);let r=(t.phases??[]).map(u);return{id:e.id,name:t.name??e.id,description:t.description??"",category:function(e,t){if(e.category)return e.category;let n=t.toLowerCase();return n.includes("bug")||n.includes("debug")||n.includes("diagnose")?"debug":n.includes("plan")||n.includes("architect")?"plan":n.includes("decide")||n.includes("decision")?"decide":"review"}(t,e.id),phases:r,agreementThreshold:n,onThresholdMet:"auto-finalize"===t.onThresholdMet?"auto-finalize":"ask-user",maxRounds:t.maxRounds??3,driver:"external",driverHandoff:!1,verificationGate:"auto",costCapUsd:0,yoloDefault:t.yoloDefault??!1,estimatedBaselineTokens:t.estimatedBaselineTokens,onError:"ask-user",notify:"dashboard-only",yaml:e.yaml,authorHandle:t.author??"chorus",forks:0,popularity:0,source:e.source}}async function h(){return(await (0,r.T)("/templates")).items.map(m)}async function f(e){return m(await (0,r.T)("/templates",{method:"POST",body:JSON.stringify(e)}))}async function p(e){await (0,r.T)(`/templates/${encodeURIComponent(e)}`,{method:"DELETE"})}var x=n(6441),g=n(8141),y=n(1993);n(7847)},6441:(e,t,n)=>{n.d(t,{A1:()=>m,Ci:()=>h,Df:()=>s,Dl:()=>u,Ep:()=>i,WH:()=>p,WK:()=>f,Xx:()=>d,fk:()=>a,iW:()=>o,nr:()=>c,oD:()=>l});var r=n(4411);async function a(){return(await (0,r.T)("/onboard/detect-clis")).items}async function o(e,t){return(0,r.T)("/onboard/validate-cli-path",{method:"POST",body:JSON.stringify({id:e,path:t})})}async function s(e,t){return(0,r.T)("/onboard/save-cli-path",{method:"POST",body:JSON.stringify({id:e,path:t})})}async function i(e){return(0,r.T)("/settings/permissions",{method:"PUT",body:JSON.stringify(e)})}async function d(e){return(0,r.T)("/settings",{method:"PUT",body:JSON.stringify(e)})}async function l(){return(0,r.T)("/settings/transport")}async function c(e){return(0,r.T)("/settings/transport",{method:"PUT",body:JSON.stringify(e)})}async function u(){return(0,r.T)("/settings/billing")}async function m(e){return(0,r.T)("/settings/billing",{method:"PUT",body:JSON.stringify(e)})}async function h(){return(0,r.T)("/settings/telemetry")}async function f(e){return(0,r.T)("/settings/telemetry",{method:"PUT",body:JSON.stringify({enabled:e})})}async function p(e,t){return(0,r.T)(`/secrets/${e}`,{method:"PUT",body:JSON.stringify(t)})}},7296:(e,t,n)=>{n.d(t,{t:()=>a});let r=/^# Persona: (.+?)\n[\s\S]+?\n---\n\n# User request\n\n([\s\S]+)$/;function a(e){if(!e)return"";let t=e.length>8192?e.slice(0,8192):e;if(!t.startsWith("# Persona:")||!t.includes("\n---\n\n# User request\n\n"))return e;let n=r.exec(e);if(n){let e=n[1].trim(),t=n[2].trim();return`[${e}] ${t}`}return e}},7362:(e,t,n)=>{n.d(t,{cn:()=>o});var r=n(142),a=n(9317);function o(...e){return(0,a.QP)((0,r.$)(e))}},7847:(e,t,n)=>{n.d(t,{createVoice:()=>s,listVoices:()=>a,updateVoice:()=>o});var r=n(4411);async function a(e){return(await (0,r.T)(`/voices${function(e){if(!e)return"";let t=[];return e.lineage&&t.push(`lineage=${encodeURIComponent(e.lineage)}`),e.source&&t.push(`source=${encodeURIComponent(e.source)}`),e.provider&&t.push(`provider=${encodeURIComponent(e.provider)}`),void 0!==e.enabled&&t.push(`enabled=${e.enabled?"true":"false"}`),0===t.length?"":`?${t.join("&")}`}(e)}`)).items}async function o(e,t){return(0,r.T)(`/voices/${encodeURIComponent(e)}`,{method:"PUT",body:JSON.stringify(t)})}async function s(e){return(0,r.T)("/voices",{method:"POST",body:JSON.stringify(e)})}},8141:(e,t,n)=>{n.d(t,{Ay:()=>o,jb:()=>a});var r=n(4411);async function a(e){return(0,r.T)(`/orchestrators/${e}/connect`,{method:"POST"})}async function o(){return(0,r.T)("/orchestrators/opencode/models")}},8344:(e,t,n)=>{n.d(t,{MobileTopBar:()=>y});var r=n(9442),a=n(6074),o=n(3606),s=n(6891),i=n(3703),d=n(7362);function l({...e}){return(0,r.jsx)(i.bL,{"data-slot":"sheet",...e})}function c({...e}){return(0,r.jsx)(i.l9,{"data-slot":"sheet-trigger",...e})}function u({...e}){return(0,r.jsx)(i.ZL,{"data-slot":"sheet-portal",...e})}function m({className:e,...t}){return(0,r.jsx)(i.hJ,{"data-slot":"sheet-overlay",className:(0,d.cn)("fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0",e),...t})}function h({className:e,children:t,side:n="right",showCloseButton:a=!0,...o}){return(0,r.jsxs)(u,{children:[(0,r.jsx)(m,{}),(0,r.jsxs)(i.UC,{"data-slot":"sheet-content",className:(0,d.cn)("fixed z-50 flex flex-col gap-4 bg-background shadow-lg transition ease-in-out data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:animate-in data-[state=open]:duration-500","right"===n&&"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm","left"===n&&"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm","top"===n&&"inset-x-0 top-0 h-auto border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top","bottom"===n&&"inset-x-0 bottom-0 h-auto border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",e),...o,children:[t,a&&(0,r.jsxs)(i.bm,{className:"absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-secondary",children:[(0,r.jsx)(s.A,{className:"size-4"}),(0,r.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function f({className:e,...t}){return(0,r.jsx)("div",{"data-slot":"sheet-header",className:(0,d.cn)("flex flex-col gap-1.5 p-4",e),...t})}function p({className:e,...t}){return(0,r.jsx)(i.hE,{"data-slot":"sheet-title",className:(0,d.cn)("font-semibold text-foreground",e),...t})}var x=n(821);function g(){let[e,t]=(0,a.useState)(!1);return(0,r.jsxs)(l,{open:e,onOpenChange:t,children:[(0,r.jsx)(c,{asChild:!0,children:(0,r.jsx)("button",{type:"button","aria-label":"Open navigation",className:"-ml-1 inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-md text-muted-foreground transition hover:bg-accent hover:text-foreground md:hidden",children:(0,r.jsx)(o.A,{className:"h-5 w-5"})})}),(0,r.jsxs)(h,{side:"left",className:"w-72 border-border bg-card p-0",children:[(0,r.jsx)(f,{className:"sr-only",children:(0,r.jsx)(p,{children:"Navigation"})}),(0,r.jsx)(x.P,{onNavigate:()=>t(!1)})]})]})}function y(){return(0,r.jsx)("header",{className:"flex h-12 items-center border-b border-border bg-background/60 px-3 backdrop-blur md:hidden",children:(0,r.jsx)(g,{})})}}}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[566],{63:(e,t,r)=>{"use strict";r.d(t,{Zp:()=>i});var n=r(9442);r(6074);var a=r(7362);function i({className:e,...t}){return(0,n.jsx)("div",{"data-slot":"card",className:(0,a.cn)("flex flex-col gap-6 rounded-xl border bg-card py-6 text-card-foreground shadow-sm",e),...t})}},1749:(e,t,r)=>{"use strict";r.d(t,{$:()=>d});var n=r(9442);r(6074);var a=r(9056),i=r(8113),s=r(7362);let o=(0,a.F)("inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",xs:"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-xs":"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function d({className:e,variant:t="default",size:r="default",asChild:a=!1,...l}){let c=a?i.bL:"button";return(0,n.jsx)(c,{"data-slot":"button","data-variant":t,"data-size":r,className:(0,s.cn)(o({variant:t,size:r,className:e})),...l})}},1993:(e,t,r)=>{"use strict";r.d(t,{K7:()=>d,UT:()=>i,dW:()=>s,qI:()=>o});var n=r(4411);function a(e){return{id:e.id,label:e.label,one_liner:e.one_liner,system_prompt:e.system_prompt,recommended_lineage:e.recommended_lineage,builtin:!!e.builtin,forked_from:e.forked_from??null,created_at:e.created_at,updated_at:e.updated_at}}async function i(){return(await (0,n.T)("/personas")).items.map(a)}async function s(e){return a(await (0,n.T)(`/personas/${encodeURIComponent(e)}`))}async function o(e){return a(await (0,n.T)("/personas",{method:"POST",body:JSON.stringify(e)}))}async function d(e){await (0,n.T)(`/personas/${encodeURIComponent(e)}`,{method:"DELETE"})}},1996:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>L});var n=r(9442),a=r(3149),i=r(6289),s=r(5902),o=r(6074),d=r(4284),l=r(1749),c=r(6441),u=r(8141),m=r(7847),p=r(63),g=r(7362);function h({className:e,type:t,...r}){return(0,n.jsx)("input",{type:t,"data-slot":"input",className:(0,g.cn)("h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30","focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50","aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",e),...r})}var x=r(2545),f=r(9707),b=r(4030),y=r(2881);let v=["anthropic/claude-sonnet-4.5","openai/gpt-5","google/gemini-2.5-pro","deepseek/deepseek-chat-v3.1","moonshotai/kimi-k2"];function w({apiKeys:e,updateApiKey:t}){let r=e.openrouter??"",[i,s]=(0,o.useState)({kind:"idle"}),[d,l]=(0,o.useState)(null),[c,u]=(0,o.useState)(new Set(v)),[m,k]=(0,o.useState)(!1),[j,N]=(0,o.useState)(null);async function S(){if(0!==r.trim().length&&"saving"!==i.kind){s({kind:"saving"});try{let e=await (0,y.M5)(r.trim());if(!e.valid)return void s({kind:"invalid",message:e.error??"OpenRouter rejected this key."});await C()}catch(e){s({kind:"invalid",message:e instanceof Error?e.message:String(e)})}}}async function C(){s({kind:"loading_catalog"});try{let{models:e}=await (0,y.Y8)();e.sort((e,t)=>e.id.localeCompare(t.id)),l(e),s({kind:"valid",modelCount:e.length})}catch(e){s({kind:"catalog_failed",message:e instanceof Error?e.message:String(e)})}}async function T(){if(0!==c.size&&!m){k(!0),N(null);try{let e=await (0,y.Eu)(Array.from(c)),t=e.added.length,r=e.skipped.length;N(`Added ${t} voice${1===t?"":"s"}`+(r>0?` \xb7 skipped ${r} (unknown id)`:""))}catch(e){N(`Couldn't add voices: ${e instanceof Error?e.message:String(e)}`)}finally{k(!1)}}}return(0,n.jsxs)("section",{className:"mb-8",children:[(0,n.jsxs)("h2",{className:"mb-3 flex flex-wrap items-baseline gap-x-2 text-xs font-semibold uppercase tracking-wider text-muted-foreground",children:[(0,n.jsx)("span",{children:"API access"}),(0,n.jsx)("span",{className:"font-normal normal-case text-muted-foreground/70",children:"optional — gives you any model on OpenRouter as a chorus voice"})]}),(0,n.jsxs)(p.Zp,{className:"space-y-3 bg-card p-4",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("label",{htmlFor:"apikey-openrouter",className:"text-sm font-medium",children:"OpenRouter API key"}),(0,n.jsxs)("a",{href:"https://openrouter.ai/keys",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-[11px] text-muted-foreground hover:text-foreground",children:["Get a key ",(0,n.jsx)(x.A,{className:"h-2.5 w-2.5"})]})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)(h,{id:"apikey-openrouter",type:"password",autoComplete:"off",spellCheck:!1,placeholder:"sk-or-v1-…",value:r,onChange:e=>{t("openrouter",e.target.value),"idle"!==i.kind&&s({kind:"idle"}),l(null)},className:"flex-1 font-mono text-xs",disabled:"saving"===i.kind||"loading_catalog"===i.kind}),(0,n.jsxs)("button",{type:"button",onClick:S,disabled:0===r.trim().length||"saving"===i.kind||"loading_catalog"===i.kind||"valid"===i.kind,className:(0,g.cn)("inline-flex h-9 items-center gap-1.5 rounded-md border px-3 text-[11px] font-medium transition disabled:cursor-not-allowed disabled:opacity-50","valid"===i.kind?"border-emerald-500/40 bg-emerald-500/10 text-emerald-300":"border-primary/40 bg-primary/10 text-primary hover:bg-primary/20"),children:[("saving"===i.kind||"loading_catalog"===i.kind)&&(0,n.jsx)(a.A,{className:"h-3 w-3 animate-spin"}),"valid"===i.kind&&(0,n.jsx)(f.A,{className:"h-3 w-3"}),"saving"===i.kind?"Validating…":"loading_catalog"===i.kind?"Loading models…":"valid"===i.kind?"Validated":"Validate & save"]})]}),"invalid"===i.kind&&(0,n.jsxs)("p",{className:"flex items-center gap-1.5 text-xs text-destructive",children:[(0,n.jsx)(b.A,{className:"h-3 w-3"}),i.message]}),"catalog_failed"===i.kind&&(0,n.jsxs)("div",{className:"flex items-start justify-between gap-3 rounded-md border border-amber-500/40 bg-amber-500/5 px-3 py-2",children:[(0,n.jsxs)("p",{className:"flex items-start gap-1.5 text-xs text-amber-100",children:[(0,n.jsx)(b.A,{className:"mt-0.5 h-3 w-3 shrink-0"}),(0,n.jsxs)("span",{children:["Key saved, but couldn't load the model catalog:"," ",i.message]})]}),(0,n.jsx)("button",{type:"button",onClick:C,className:"shrink-0 rounded-md border border-amber-500/40 bg-amber-500/10 px-2.5 py-1 text-[11px] font-medium text-amber-100 hover:bg-amber-500/20",children:"Reload models"})]}),"valid"===i.kind&&d&&(0,n.jsxs)("div",{className:"space-y-2 rounded-md border border-emerald-500/20 bg-emerald-500/5 p-3",children:[(0,n.jsxs)("p",{className:"text-[11px] text-emerald-300",children:["✓ Key valid \xb7 ",i.modelCount," models available. Pick a starter set now or browse the full catalog on the Connect page later."]}),(0,n.jsx)("div",{className:"grid grid-cols-1 gap-1 sm:grid-cols-2",children:v.filter(e=>d.some(t=>t.id===e)).map(e=>{let t=c.has(e),r=d.find(t=>t.id===e);return(0,n.jsxs)("label",{className:(0,g.cn)("flex cursor-pointer items-center gap-2 rounded border px-2 py-1.5 text-[11px] transition",t?"border-primary/50 bg-primary/10 text-foreground":"border-border bg-card text-muted-foreground hover:border-muted-foreground/30"),children:[(0,n.jsx)("input",{type:"checkbox",checked:t,onChange:t=>{u(r=>{let n=new Set(r);return t.target.checked?n.add(e):n.delete(e),n})},className:"h-3 w-3 shrink-0"}),(0,n.jsx)("span",{className:"truncate font-mono",children:r?.id??e})]},e)})}),(0,n.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,n.jsxs)("button",{type:"button",onClick:T,disabled:0===c.size||m,className:"inline-flex h-7 items-center gap-1.5 rounded-md border border-primary/40 bg-primary/10 px-2.5 text-[11px] font-medium text-primary transition hover:bg-primary/20 disabled:cursor-not-allowed disabled:opacity-50",children:[m?(0,n.jsx)(a.A,{className:"h-3 w-3 animate-spin"}):null,"Add ",c.size>0?c.size:""," voice",1===c.size?"":"s"]}),j&&(0,n.jsx)("p",{className:"text-[11px] text-emerald-300",children:j})]})]}),(0,n.jsxs)("p",{className:"text-[11px] leading-relaxed text-muted-foreground/80",children:["Stored locally in ",(0,n.jsx)("code",{children:"~/.chorus/chorus.db"}),". Used only to call OpenRouter on your behalf. Direct API support for other providers (Anthropic, OpenAI, Google, xAI) is on the roadmap — today, route those models via OpenRouter."]})]})]})}var k=r(3734);let j=[{id:"claude-code",provider:"anthropic",label:"Claude Code",hint:"Anthropic — uses your existing Claude login"},{id:"codex-cli",provider:"openai",label:"Codex CLI",hint:"OpenAI — ChatGPT Plus/Pro subscription"},{id:"gemini-cli",provider:"google",label:"Gemini CLI",hint:"Google — uses your gcloud auth"},{id:"opencode-cli",provider:"opencode",label:"OpenCode",hint:"OpenCode Go — routes Kimi, DeepSeek, Grok"},{id:"kimi-cli",provider:"moonshot",label:"Kimi CLI",hint:"MoonshotAI — kimi-k2 plan"},{id:"cursor",provider:"cursor",label:"Cursor",hint:"Cursor IDE — invoke chorus from inside it"},{id:"windsurf",provider:"windsurf",label:"Windsurf",hint:"Windsurf IDE — invoke chorus from inside it"}],N={"claude-code":"claude","codex-cli":"codex","gemini-cli":"gemini","opencode-cli":"opencode","kimi-cli":"kimi"},S={"claude-code":"claude-code","codex-cli":"codex-cli","gemini-cli":"gemini-cli","opencode-cli":"opencode-cli","kimi-cli":"kimi-cli"},C={dot:"bg-muted-foreground/40",gradient:"bg-gradient-to-br from-muted/30 via-card to-card"},T=j.filter(e=>"cursor"!==e.id&&"windsurf"!==e.id);function A(e){return(0,n.jsxs)("section",{className:"mb-8",children:[(0,n.jsx)("h2",{className:"mb-3 text-xs font-semibold uppercase tracking-wider text-muted-foreground",children:"CLI subscriptions"}),(0,n.jsx)("div",{className:"grid grid-cols-1 items-start gap-2 lg:grid-cols-2",children:T.map(t=>{let r=e.selectedClis.has(t.id),i=e.detection[t.id],s=i?.found===!0,o=e.detecting&&!i,d=!s&&!o&&e.manualOpen.has(t.id),l=e.manualBusy.has(t.id),c=s?k.r2[N[t.id]]??C:C;return(0,n.jsxs)("div",{className:(0,g.cn)("flex h-72 flex-col rounded-lg border transition",s?"border-border":"border-border/60 opacity-70",c.gradient),children:[(0,n.jsxs)("button",{type:"button",onClick:()=>s&&e.toggleCli(t.id),disabled:!s,className:(0,g.cn)("flex shrink-0 items-center gap-3 px-4 py-3 text-left transition",s?"hover:bg-card/30":"cursor-not-allowed"),children:[(0,n.jsx)("div",{className:(0,g.cn)("grid h-5 w-5 shrink-0 place-items-center rounded border transition",!s&&"opacity-50",r?"border-primary bg-primary text-primary-foreground":"border-border"),children:r&&(0,n.jsx)(f.A,{className:"h-3 w-3"})}),(0,n.jsxs)("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[(0,n.jsx)("span",{className:(0,g.cn)("h-2 w-2 shrink-0 rounded-full",c.dot)}),(0,n.jsx)("h3",{className:"whitespace-nowrap text-sm font-semibold",children:t.label}),s?(0,n.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full bg-emerald-500/10 px-2 py-0.5 text-[10px] font-medium uppercase tracking-wider text-emerald-300",children:[(0,n.jsx)(f.A,{className:"h-3 w-3"})," Installed"]}):o?(0,n.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full border border-border bg-card px-2 py-0.5 text-[10px] font-medium text-muted-foreground",children:[(0,n.jsx)(a.A,{className:"h-3 w-3 animate-spin"})," Searching…"]}):(0,n.jsx)("span",{className:"inline-flex items-center rounded-full border border-border bg-card px-2 py-0.5 text-[10px] font-medium text-muted-foreground",children:"Not found"})]})]}),(0,n.jsxs)("div",{className:"flex flex-1 flex-col gap-2 overflow-y-auto border-t border-border bg-card/30 p-4",children:[(0,n.jsx)("p",{className:"text-[11px] leading-relaxed text-muted-foreground",children:s&&i.path?(0,n.jsx)("code",{className:"rounded bg-muted/60 px-1.5 py-0.5 font-mono",children:i.path}):o?(0,n.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-muted-foreground",children:[(0,n.jsx)(a.A,{className:"h-3 w-3 animate-spin"}),"Probing PATH and known install dirs…"]}):t.hint}),!s&&!o&&(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)("button",{type:"button",onClick:()=>e.toggleManual(t.id),className:"text-[11px] text-muted-foreground transition hover:text-foreground",children:d?"Cancel":"Don't see it? Set path manually →"}),d&&(0,n.jsx)(P,{cliId:t.id,value:e.manualPath[t.id]??"",onChange:r=>e.setManualPath(e=>({...e,[t.id]:r})),error:e.manualError[t.id],busy:l,onSubmit:()=>e.submitManualPath(t.id)})]}),s&&"opencode-cli"===t.id&&r&&(0,n.jsx)(O,{loading:e.opencodeModelsLoading,error:e.opencodeModelsError,models:e.opencodeModels,selected:e.selectedOpencodeModels,onToggle:e.toggleOpencodeModel}),s&&"opencode-cli"!==t.id&&r&&(0,n.jsx)(_,{cliId:t.id,voices:e.cliVoices,savingVoiceIds:e.savingVoiceIds,saveError:e.voiceSaveError,onToggle:e.toggleVoice})]})]},t.id)})}),(0,n.jsx)("p",{className:"mt-3 text-[11px] text-muted-foreground",children:"Cursor and Windsurf are IDEs that invoke chorus, not voices — wire them up on the Connect page after onboarding."})]})}function _({cliId:e,voices:t,savingVoiceIds:r,saveError:a,onToggle:i}){let s=S[e],o=t.filter(e=>e.provider===s).slice().sort((e,t)=>e.id===s?-1:t.id===s?1:e.model_id.localeCompare(t.model_id));if(0===o.length)return(0,n.jsx)("p",{className:"text-[11px] italic text-muted-foreground/70",children:"Models will populate after the daemon finishes seeding (refresh in a few seconds)."});let d=o.filter(e=>e.enabled).length;return(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsxs)("div",{className:"flex items-baseline justify-between gap-2",children:[(0,n.jsx)("p",{className:"text-[11px] font-medium uppercase tracking-wider text-muted-foreground",children:"Models"}),(0,n.jsxs)("p",{className:"text-[11px] text-muted-foreground/70",children:[d,"/",o.length," enabled"]})]}),a&&(0,n.jsx)("p",{className:"text-[11px] text-destructive",children:a}),(0,n.jsx)("div",{className:"grid grid-cols-1 gap-1",children:o.map(e=>{let t=e.enabled,a=e.id===s;return(0,n.jsxs)("button",{type:"button",disabled:r.has(e.id),onClick:()=>i(e),title:e.model_id,className:(0,g.cn)("flex items-center gap-2 rounded border px-2 py-1.5 text-left text-[11px] transition disabled:opacity-60",t?"border-primary/50 bg-primary/10 text-foreground":"border-border bg-card text-muted-foreground hover:border-muted-foreground/30"),children:[(0,n.jsx)("div",{className:(0,g.cn)("grid h-3 w-3 shrink-0 place-items-center rounded-sm border transition",t?"border-primary bg-primary text-primary-foreground":"border-border"),children:t&&(0,n.jsx)(f.A,{className:"h-2 w-2"})}),(0,n.jsx)("span",{className:"truncate font-mono",children:e.model_id}),a&&(0,n.jsx)("span",{className:"shrink-0 rounded-full bg-emerald-500/10 px-1.5 py-0.5 text-[9px] font-medium uppercase tracking-wider text-emerald-300",children:"current"})]},e.id)})})]})}function O({loading:e,error:t,models:r,selected:i,onToggle:s}){return(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsxs)("div",{className:"flex items-baseline justify-between gap-2",children:[(0,n.jsx)("p",{className:"text-[11px] font-medium uppercase tracking-wider text-muted-foreground",children:"Pick models to enable"}),(0,n.jsxs)("p",{className:"text-[11px] text-muted-foreground/70",children:[i.size," selected"]})]}),e&&(0,n.jsxs)("p",{className:"flex items-center gap-2 text-[11px] text-muted-foreground",children:[(0,n.jsx)(a.A,{className:"h-3 w-3 animate-spin"}),"Listing models from"," ",(0,n.jsx)("code",{className:"rounded bg-muted px-1",children:"opencode models"}),"…"]}),t&&(0,n.jsx)("p",{className:"text-[11px] text-destructive",children:t}),r&&(0,n.jsxs)("div",{className:"space-y-2",children:[Object.entries(r.gateways).filter(([e])=>e.startsWith("opencode")).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>(0,n.jsxs)("div",{className:"space-y-1",children:[(0,n.jsxs)("p",{className:"text-[10px] font-mono text-muted-foreground/80",children:[e,"/"]}),(0,n.jsx)("div",{className:"grid grid-cols-1 gap-1",children:t.map(t=>{let r=i.has(t);return(0,n.jsxs)("button",{type:"button",onClick:()=>s(t),title:t,className:(0,g.cn)("flex items-center gap-2 rounded border px-2 py-1.5 text-left text-[11px] transition",r?"border-primary/50 bg-primary/10 text-foreground":"border-border bg-card text-muted-foreground hover:border-muted-foreground/30"),children:[(0,n.jsx)("div",{className:(0,g.cn)("grid h-3 w-3 shrink-0 place-items-center rounded-sm border transition",r?"border-primary bg-primary text-primary-foreground":"border-border"),children:r&&(0,n.jsx)(f.A,{className:"h-2 w-2"})}),(0,n.jsx)("span",{className:"truncate font-mono",children:t.slice(e.length+1)})]},t)})})]},e)),(0,n.jsxs)("p",{className:"text-[11px] leading-relaxed text-muted-foreground/70",children:["Pre-selected: ",r.defaultPicks.join(", ")||"none",". Change anytime in ",(0,n.jsx)("code",{className:"rounded bg-muted px-1",children:"Settings"}),"."]})]})]})}function P({cliId:e,value:t,onChange:r,error:i,busy:s,onSubmit:o}){let d=function(e){switch(e){case"claude-code":return"claude";case"codex-cli":return"codex";case"gemini-cli":return"gemini";case"opencode-cli":return"opencode";default:return"kimi"}}(e);return(0,n.jsxs)("div",{className:"space-y-2 rounded-md border border-border bg-card/50 p-3",children:[(0,n.jsxs)("p",{className:"text-[11px] leading-relaxed text-muted-foreground",children:["Paste the full path to the"," ",(0,n.jsx)("code",{className:"rounded bg-muted px-1",children:d})," binary. Run"," ",(0,n.jsxs)("code",{className:"rounded bg-muted px-1",children:["which ",d]})," (macOS / Linux) or ",(0,n.jsxs)("code",{className:"rounded bg-muted px-1",children:["where ",d]})," ","(Windows) to find it. The daemon will run"," ",(0,n.jsxs)("code",{className:"rounded bg-muted px-1",children:[d," --version"]})," with a 2s timeout to confirm the binary works and identifies as the"," ",d," CLI."]}),(0,n.jsxs)("div",{className:"flex gap-2",children:[(0,n.jsx)(h,{value:t,onChange:e=>r(e.target.value),placeholder:`/full/path/to/${d}`,className:"flex-1 font-mono text-xs",spellCheck:!1,autoComplete:"off"}),(0,n.jsx)(l.$,{type:"button",variant:"secondary",disabled:s,onClick:o,children:s?(0,n.jsx)(a.A,{className:"h-4 w-4 animate-spin"}):"Verify"})]}),i&&(0,n.jsx)("p",{className:"text-[11px] text-destructive",children:i})]})}let I=[{id:"strict",label:"Strict",hint:"Read-only. Reviewers can inspect code but can't write files, exec shell, or hit the network."},{id:"workspace",label:"Workspace (recommended)",hint:"Read+write inside the chat dir, scoped shell, no network. Default for most teams."},{id:"full",label:"Full access",hint:"No sandbox at all. Only on a personal machine you fully trust."}];function $({sandboxProfile:e,setSandboxProfile:t,autoApprovePrompts:r,setAutoApprovePrompts:a,networkAccess:i,setNetworkAccess:s}){return(0,n.jsxs)("section",{className:"mb-8",children:[(0,n.jsx)("h2",{className:"mb-3 text-xs font-semibold uppercase tracking-wider text-muted-foreground",children:"Permissions & sandbox"}),(0,n.jsx)("p",{className:"mb-4 text-xs leading-relaxed text-muted-foreground",children:"Controls what reviewers can do on your machine. You can change this anytime in Settings → Permissions."}),(0,n.jsx)("div",{className:"space-y-2",children:I.map(r=>{let a=e===r.id;return(0,n.jsxs)("button",{type:"button",onClick:()=>t(r.id),className:(0,g.cn)("flex w-full items-start gap-3 rounded-lg border p-4 text-left transition",a?"border-primary/50 bg-primary/10":"border-border bg-card hover:border-muted-foreground/30"),children:[(0,n.jsx)("div",{className:(0,g.cn)("mt-0.5 grid h-5 w-5 shrink-0 place-items-center rounded-full border transition",a?"border-primary bg-primary text-primary-foreground":"border-border"),children:a&&(0,n.jsx)(f.A,{className:"h-3 w-3"})}),(0,n.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,n.jsx)("div",{className:"text-sm font-medium",children:r.label}),(0,n.jsx)("div",{className:"mt-1 text-xs leading-relaxed text-muted-foreground",children:r.hint})]})]},r.id)})}),(0,n.jsxs)("div",{className:"mt-3 space-y-2",children:[(0,n.jsxs)("label",{className:"flex cursor-pointer items-start gap-3 rounded-lg border border-border bg-card p-3",children:[(0,n.jsx)("input",{type:"checkbox",checked:r,onChange:e=>a(e.target.checked),className:"mt-1 h-4 w-4 cursor-pointer accent-primary"}),(0,n.jsxs)("div",{className:"min-w-0 flex-1 text-xs leading-relaxed",children:[(0,n.jsx)("div",{className:"text-sm font-medium",children:"Skip in-CLI permission prompts"}),(0,n.jsxs)("div",{className:"mt-0.5 text-muted-foreground",children:["Passes ",(0,n.jsx)("code",{className:"rounded bg-muted px-1",children:"--afk"})," /"," ",(0,n.jsx)("code",{className:"rounded bg-muted px-1",children:"auto_edit"}),"to spawned reviewers so they don't hang on per-tool prompts. Off = every action requires explicit consent in the CLI's TUI."]})]})]}),(0,n.jsxs)("label",{className:"flex cursor-pointer items-start gap-3 rounded-lg border border-border bg-card p-3",children:[(0,n.jsx)("input",{type:"checkbox",checked:i,onChange:e=>s(e.target.checked),className:"mt-1 h-4 w-4 cursor-pointer accent-primary"}),(0,n.jsxs)("div",{className:"min-w-0 flex-1 text-xs leading-relaxed",children:[(0,n.jsx)("div",{className:"text-sm font-medium",children:"Allow outbound network from reviewers"}),(0,n.jsx)("div",{className:"mt-0.5 text-muted-foreground",children:"Off by default. Templates that explicitly need network override per phase."})]})]})]})]})}var M=r(6185);async function E(e){for(let t of e.selectedClis){let e=j.find(e=>e.id===t);e&&await (0,M.WH)(e.provider,{kind:"cli_subscription",value:e.id,updatedAt:Date.now()})}for(let[t,r]of Object.entries(e.apiKeys)){let e=r.trim();e&&await (0,M.WH)(t,{kind:"api_key",value:e,updatedAt:Date.now()})}await (0,c.Ep)({sandboxProfile:e.sandboxProfile,autoApprovePrompts:e.autoApprovePrompts,networkAccess:e.networkAccess}),e.selectedClis.has("opencode-cli")&&e.opencodeModels&&await z(e),await (0,M.Xx)({onboarded:!0})}async function z(e){let{listVoices:t,updateVoice:n,createVoice:a}=await Promise.resolve().then(r.bind(r,7847)),i=new Map((await t({provider:"opencode-cli"}).catch(()=>[])).map(e=>[e.id,e])),s=e.opencodeModels;s&&await Promise.all(s.flat.map(async t=>{let r=`opencode-cli:${t}`,s=e.selectedOpencodeModels.has(t),o=i.get(r);try{if(o)o.enabled!==s&&await n(r,{enabled:s});else{let e,r,{lineage:n,vendor_family:i}=(r=((e=t.indexOf("/"))>=0?t.slice(e+1):t).toLowerCase()).includes("kimi")?{lineage:"moonshot",vendor_family:null}:r.includes("claude")?{lineage:"anthropic",vendor_family:null}:r.includes("gpt")||/(?:^|[^a-z])o[1-9](?:$|[^a-z0-9])/.test(r)?{lineage:"openai",vendor_family:null}:r.includes("gemini")?{lineage:"google",vendor_family:null}:r.includes("deepseek")?{lineage:"opencode",vendor_family:"deepseek"}:r.includes("llama")||r.includes("meta")?{lineage:"opencode",vendor_family:"meta"}:r.includes("mistral")||r.includes("mixtral")?{lineage:"opencode",vendor_family:"mistral"}:r.includes("grok")||r.includes("xai")?{lineage:"opencode",vendor_family:"xai"}:{lineage:"opencode",vendor_family:null};await a({provider:"opencode-cli",model_id:t,label:t,source:"cli",lineage:n,vendor_family:i,enabled:s})}}catch{}}))}function L(){let e=(0,s.useRouter)(),[t,r]=(0,o.useTransition)(),[p,g]=(0,o.useState)(null),[h,x]=(0,o.useState)(new Set),[f,b]=(0,o.useState)([]),[y,v]=(0,o.useState)(new Set),[k,j]=(0,o.useState)(null),[N,S]=(0,o.useState)({}),[C,T]=(0,o.useState)("workspace"),[_,O]=(0,o.useState)(!0),[P,I]=(0,o.useState)(!1),[z,L]=(0,o.useState)({}),[U,R]=(0,o.useState)(!0),[V,W]=(0,o.useState)(new Set),[D,J]=(0,o.useState)({}),[K,G]=(0,o.useState)({}),[q,H]=(0,o.useState)(new Set),[F,B]=(0,o.useState)(null),[Y,X]=(0,o.useState)(null),[Q,Z]=(0,o.useState)(!1),[ee,et]=(0,o.useState)(new Set);(0,o.useEffect)(()=>{let e=!1;return(0,c.fk)().then(t=>{if(e)return;let r={},n=new Set;for(let e of t)r[e.id]=e,e.found&&n.add(e.id);L(r),n.size>0&&x(n)}).catch(()=>{}).finally(()=>{e||R(!1)}),(0,m.listVoices)({source:"cli"}).then(t=>{e||b(t)}).catch(()=>{}),()=>{e=!0}},[]);let er=async e=>{v(t=>new Set(t).add(e.id)),j(null);try{let t=await (0,m.updateVoice)(e.id,{enabled:!e.enabled});b(e=>e.map(e=>e.id===t.id?t:e))}catch(e){j(e instanceof Error?e.message:"Couldn't save voice toggle.")}finally{v(t=>{let r=new Set(t);return r.delete(e.id),r})}};(0,o.useEffect)(()=>{!h.has("opencode-cli")||!z["opencode-cli"]?.found||F||Q||Y||(Z(!0),X(null),(0,u.Ay)().then(e=>{B(e),et(t=>t.size>0?t:new Set(e.defaultPicks))}).catch(e=>{X(e instanceof Error?e.message:"Couldn't list OpenCode models. Is the CLI authed (run `opencode auth login`)?")}).finally(()=>Z(!1)))},[h,z,F,Q,Y]);let en=async e=>{let t=(D[e]||"").trim();if(!t)return void G(t=>({...t,[e]:"Enter the full path to the CLI program (e.g. /usr/local/bin/claude)."}));H(t=>new Set(t).add(e)),G(t=>({...t,[e]:""}));try{let r=await (0,c.iW)(e,t);if(r.found){try{await (0,c.Df)(e,r.path??t)}catch(t){G(r=>({...r,[e]:`Validation passed but save failed: ${t instanceof Error?t.message:"unknown error"}. Try again, or paste the path again.`}));return}L(t=>({...t,[e]:r})),x(t=>new Set(t).add(e)),(0,m.listVoices)({source:"cli"}).then(b).catch(()=>{}),W(t=>{let r=new Set(t);return r.delete(e),r})}else{let t=r.reason??"couldn't run that path";G(r=>({...r,[e]:`Validation failed: ${t}.`}))}}catch{G(t=>({...t,[e]:"Validation failed. Is the daemon running?"}))}finally{H(t=>{let r=new Set(t);return r.delete(e),r})}},ea=h.size+Object.values(N).filter(e=>e.trim().length>0).length;return(0,n.jsx)("main",{className:"min-h-screen bg-background text-foreground",children:(0,n.jsxs)("div",{className:"mx-auto w-full max-w-5xl px-4 py-10 sm:px-6 sm:py-14",children:[(0,n.jsxs)("div",{className:"mb-8 flex items-center gap-3",children:[(0,n.jsx)("div",{className:"grid h-10 w-10 place-items-center rounded-md bg-primary/15 text-primary",children:(0,n.jsx)(d.U,{className:"h-6 w-6"})}),(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"text-xs uppercase tracking-wider text-muted-foreground",children:"Welcome to Chorus"}),(0,n.jsx)("h1",{className:"text-2xl font-semibold tracking-tight",children:"Connect at least one model to begin"})]})]}),(0,n.jsx)("p",{className:"mb-8 text-sm leading-relaxed text-muted-foreground",children:"Chorus runs your prompt past 2–4 LLMs of different lineages and synthesises consensus. Pick the CLI subscriptions you already have, or paste API keys. You can change these later in Settings."}),(0,n.jsx)(A,{selectedClis:h,toggleCli:e=>{x(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})},detection:z,detecting:U,cliVoices:f,savingVoiceIds:y,voiceSaveError:k,toggleVoice:er,manualOpen:V,toggleManual:e=>{W(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r}),G(t=>({...t,[e]:""}))},manualPath:D,setManualPath:J,manualError:K,manualBusy:q,submitManualPath:en,opencodeModels:F,opencodeModelsError:Y,opencodeModelsLoading:Q,selectedOpencodeModels:ee,toggleOpencodeModel:e=>{et(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})}}),(0,n.jsx)(w,{apiKeys:N,updateApiKey:(e,t)=>{S(r=>({...r,[e]:t}))}}),(0,n.jsx)($,{sandboxProfile:C,setSandboxProfile:T,autoApprovePrompts:_,setAutoApprovePrompts:O,networkAccess:P,setNetworkAccess:I}),p&&(0,n.jsx)("div",{className:"mb-6 rounded-md border border-destructive/50 bg-destructive/10 px-4 py-3 text-sm text-destructive",children:p}),(0,n.jsxs)("div",{className:"flex flex-col-reverse gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,n.jsx)("p",{className:"text-xs text-muted-foreground",children:0===ea?"Pick at least one to continue.":`${ea} ${1===ea?"credential":"credentials"} ready to save.`}),(0,n.jsx)(l.$,{onClick:()=>{(g(null),0===ea)?g("Pick at least one CLI or paste at least one API key to continue."):r(async()=>{try{await E({selectedClis:h,apiKeys:N,sandboxProfile:C,autoApprovePrompts:_,networkAccess:P,opencodeModels:F,selectedOpencodeModels:ee}),e.push("/"),e.refresh()}catch(e){g(e instanceof M.$v?e.message:"Could not save. Is the Chorus daemon running?")}})},disabled:t||0===ea,className:"w-full sm:w-auto",children:t?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a.A,{className:"mr-1 h-4 w-4 animate-spin"}),"Saving…"]}):(0,n.jsxs)(n.Fragment,{children:["Get started",(0,n.jsx)(i.A,{className:"ml-1 h-4 w-4"})]})})]})]})})}},2545:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(3884).A)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]])},2881:(e,t,r)=>{"use strict";r.d(t,{Eu:()=>s,M5:()=>a,Y8:()=>i});var n=r(4411);async function a(e){return(0,n.T)("/openrouter/save-key",{method:"POST",body:JSON.stringify({apiKey:e})})}async function i(){return(0,n.T)("/openrouter/models")}async function s(e,t){return(0,n.T)("/openrouter/voices",{method:"POST",body:JSON.stringify(t?{modelIds:e,apiKey:t}:{modelIds:e})})}},3149:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(3884).A)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},3734:(e,t,r)=>{"use strict";r.d(t,{JR:()=>c,QJ:()=>i,VW:()=>s,YM:()=>m,m_:()=>o,r2:()=>p,u5:()=>l,x0:()=>u,ze:()=>n});let n={anthropic:"Claude",openai:"Codex",google:"Gemini",opencode:"OpenCode",moonshot:"Kimi"},a={anthropic:"bg-violet-400",openai:"bg-orange-400",google:"bg-blue-400",opencode:"bg-emerald-400",moonshot:"bg-pink-400"};function i(e){return e?n[e]??e:""}function s(e){return e?a[e]??"bg-muted":"bg-muted"}let o={claude:"Claude",codex:"Codex",gemini:"Gemini",opencode:"OpenCode",kimi:"Kimi",openrouter:"OpenRouter"},d={claude:"bg-violet-400",codex:"bg-orange-400",gemini:"bg-blue-400",opencode:"bg-emerald-400",kimi:"bg-pink-400",openrouter:"bg-cyan-400"};function l(e){return e?o[e]??e:""}function c(e){return e?d[e]??"bg-muted":"bg-muted"}let u={claude:"claude-opus-4-7",codex:"gpt-5.5",gemini:"gemini-3.1-pro-preview",opencode:"kimi-k2.6",kimi:"kimi-k2.6",openrouter:""};function m(e){if(e)return u[e]}let p={claude:{dot:"bg-violet-400",ring:"ring-violet-400/40",gradient:"bg-gradient-to-b from-violet-500/15 to-card"},codex:{dot:"bg-orange-400",ring:"ring-orange-400/40",gradient:"bg-gradient-to-b from-orange-500/15 to-card"},gemini:{dot:"bg-blue-400",ring:"ring-blue-400/40",gradient:"bg-gradient-to-b from-blue-500/15 to-card"},opencode:{dot:"bg-emerald-400",ring:"ring-emerald-400/40",gradient:"bg-gradient-to-b from-emerald-500/15 to-card"},kimi:{dot:"bg-pink-400",ring:"ring-pink-400/40",gradient:"bg-gradient-to-b from-pink-500/15 to-card"},openrouter:{dot:"bg-cyan-400",ring:"ring-cyan-400/40",gradient:"bg-gradient-to-b from-cyan-500/15 to-card"}}},4030:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(3884).A)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},4284:(e,t,r)=>{"use strict";r.d(t,{U:()=>a});var n=r(9442);function a({className:e}){return(0,n.jsxs)("svg",{viewBox:"0 0 32 32","aria-hidden":"true",className:e,fill:"currentColor",children:[(0,n.jsx)("circle",{cx:"11",cy:"20",r:"3.2",fillOpacity:"0.55"}),(0,n.jsx)("circle",{cx:"21",cy:"20",r:"3.2",fillOpacity:"0.55"}),(0,n.jsx)("circle",{cx:"16",cy:"11",r:"3.2"})]})}},4411:(e,t,r)=>{"use strict";r.d(t,{$:()=>a,T:()=>i}),r(9298).env.CHORUS_DAEMON_URL;let n="/api/v1";class a extends Error{constructor(e,t,r,n){super(r),this.code=e,this.statusCode=t,this.details=n,this.name="DaemonError"}}async function i(e,t={}){let r=new URL("/api/daemon",window.location.origin).toString(),s=e.startsWith("/")?e:`/${e}`,o=s===n||s.startsWith(`${n}/`)?s:`${n}${s}`,d=`${r.replace(/\/$/,"")}${o}`;try{let e=await fetch(d,{...t,headers:{"Content-Type":"application/json",...t.headers}}),r=await e.json().catch(()=>({ok:!1,error:{code:"parse_error",message:"Failed to parse response"}}));if(!r.ok)throw new a(r.error?.code||"unknown",e.status,r.error?.message||"Unknown error",r.error?.details);return r.data}catch(e){if(e instanceof a)throw e;if(e instanceof TypeError&&e.message.includes("fetch"))throw new a("connection_failed",0,"Failed to connect to Chorus daemon. Is it running?");throw new a("unknown",0,e instanceof Error?e.message:"Unknown error")}}},6185:(e,t,r)=>{"use strict";r.d(t,{$v:()=>n.$,jb:()=>f.jb,RL:()=>s,K7:()=>b.K7,I7:()=>h,dW:()=>b.dW,Ih:()=>i,UT:()=>b.UT,eG:()=>p,qI:()=>b.qI,AI:()=>g,Xx:()=>x.Xx,WH:()=>x.WH});var n=r(4411);function a(e){let t;if(e.attached_files)try{let r=JSON.parse(e.attached_files);Array.isArray(r)&&(t=r)}catch{}return{id:e.id,slug:e.slug??void 0,work:e.work,templateId:e.template_id,status:e.status,currentPhaseIdx:e.current_phase_idx??0,yolo:!!e.yolo,attachedFiles:t,repoPath:e.repo_path??void 0,prUrl:e.pr_url??void 0,shipError:e.ship_error??void 0,artifact:e.artifact??void 0,verdict:e.verdict??void 0,createdAt:e.created_at,updatedAt:e.updated_at,finishedAt:e.finished_at??void 0}}async function i(e){let t=new URLSearchParams;e?.limit&&t.append("limit",e.limit.toString()),e?.offset&&t.append("offset",e.offset.toString()),e?.status&&t.append("status",e.status);let r=t.toString();return(await (0,n.T)(`/chats${r?`?${r}`:""}`)).items.map(a)}async function s(e){return a(await (0,n.T)("/chats",{method:"POST",body:JSON.stringify(e)}))}var o=r(599);let d=new Set(["anthropic","openai","google","opencode","moonshot","any","xai"]),l={anthropic:"claude",openai:"codex",google:"gemini",opencode:"opencode",moonshot:"kimi",any:"claude",xai:"opencode"};function c(e){return e?l[e]??"claude":"claude"}function u(e){let t=e.kind??"review";return{id:e.id??"phase",name:e.title??e.name??e.id??"Phase",description:e.description??"",kind:t,gate:"auto",doer:{lineage:c(e.doer?.lineage),models:e.doer?.models??[],...e.doer?.persona?{persona:e.doer.persona}:{}},reviewer:{require:e.reviewer?.require??1,crossLineage:e.reviewer?.crossLineage??!0,candidates:(e.reviewer?.candidates??[]).map(e=>c(e.lineage)).filter(e=>d.has(Object.keys(l).find(t=>l[t]===e)??"")),candidatesWithModels:(e.reviewer?.candidates??[]).map(e=>({lineage:c(e.lineage),models:e.models??[],...e.persona?{persona:e.persona}:{}}))},inputs:{include:e.inputs?.include??[],exclude:e.inputs?.exclude??[]},iterate:{max:e.iterate?.maxRounds??2,onMax:"ask-user"},blindSpots:[],execution:"parallel",builtin:!0,..."review_only"===t?{artifact:{label:e.artifact?.label??"Artifact to review",hint:e.artifact?.hint??"Paste a unified diff, a markdown draft, code, or any text blob.",maxBytes:e.artifact?.maxBytes??1048576}}:{}}}function m(e){let t={};try{t=o.Ay.parse(e.yaml)??{}}catch{}let r="majority";"number"==typeof t.agreementThreshold?r=t.agreementThreshold>=.99?"unanimous":t.agreementThreshold>=.5?"majority":"any":"string"==typeof t.agreementThreshold&&(r=t.agreementThreshold);let n=(t.phases??[]).map(u);return{id:e.id,name:t.name??e.id,description:t.description??"",category:function(e,t){if(e.category)return e.category;let r=t.toLowerCase();return r.includes("bug")||r.includes("debug")||r.includes("diagnose")?"debug":r.includes("plan")||r.includes("architect")?"plan":r.includes("decide")||r.includes("decision")?"decide":"review"}(t,e.id),phases:n,agreementThreshold:r,onThresholdMet:"auto-finalize"===t.onThresholdMet?"auto-finalize":"ask-user",maxRounds:t.maxRounds??3,driver:"external",driverHandoff:!1,verificationGate:"auto",costCapUsd:0,yoloDefault:t.yoloDefault??!1,estimatedBaselineTokens:t.estimatedBaselineTokens,onError:"ask-user",notify:"dashboard-only",yaml:e.yaml,authorHandle:t.author??"chorus",forks:0,popularity:0,source:e.source}}async function p(){return(await (0,n.T)("/templates")).items.map(m)}async function g(e){return m(await (0,n.T)("/templates",{method:"POST",body:JSON.stringify(e)}))}async function h(e){await (0,n.T)(`/templates/${encodeURIComponent(e)}`,{method:"DELETE"})}var x=r(6441),f=r(8141),b=r(1993);r(7847)},6289:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(3884).A)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]])},6441:(e,t,r)=>{"use strict";r.d(t,{A1:()=>m,Ci:()=>p,Df:()=>s,Dl:()=>u,Ep:()=>o,WH:()=>h,WK:()=>g,Xx:()=>d,fk:()=>a,iW:()=>i,nr:()=>c,oD:()=>l});var n=r(4411);async function a(){return(await (0,n.T)("/onboard/detect-clis")).items}async function i(e,t){return(0,n.T)("/onboard/validate-cli-path",{method:"POST",body:JSON.stringify({id:e,path:t})})}async function s(e,t){return(0,n.T)("/onboard/save-cli-path",{method:"POST",body:JSON.stringify({id:e,path:t})})}async function o(e){return(0,n.T)("/settings/permissions",{method:"PUT",body:JSON.stringify(e)})}async function d(e){return(0,n.T)("/settings",{method:"PUT",body:JSON.stringify(e)})}async function l(){return(0,n.T)("/settings/transport")}async function c(e){return(0,n.T)("/settings/transport",{method:"PUT",body:JSON.stringify(e)})}async function u(){return(0,n.T)("/settings/billing")}async function m(e){return(0,n.T)("/settings/billing",{method:"PUT",body:JSON.stringify(e)})}async function p(){return(0,n.T)("/settings/telemetry")}async function g(e){return(0,n.T)("/settings/telemetry",{method:"PUT",body:JSON.stringify({enabled:e})})}async function h(e,t){return(0,n.T)(`/secrets/${e}`,{method:"PUT",body:JSON.stringify(t)})}},7362:(e,t,r)=>{"use strict";r.d(t,{cn:()=>i});var n=r(142),a=r(9317);function i(...e){return(0,a.QP)((0,n.$)(e))}},7847:(e,t,r)=>{"use strict";r.d(t,{createVoice:()=>s,listVoices:()=>a,updateVoice:()=>i});var n=r(4411);async function a(e){return(await (0,n.T)(`/voices${function(e){if(!e)return"";let t=[];return e.lineage&&t.push(`lineage=${encodeURIComponent(e.lineage)}`),e.source&&t.push(`source=${encodeURIComponent(e.source)}`),e.provider&&t.push(`provider=${encodeURIComponent(e.provider)}`),void 0!==e.enabled&&t.push(`enabled=${e.enabled?"true":"false"}`),0===t.length?"":`?${t.join("&")}`}(e)}`)).items}async function i(e,t){return(0,n.T)(`/voices/${encodeURIComponent(e)}`,{method:"PUT",body:JSON.stringify(t)})}async function s(e){return(0,n.T)("/voices",{method:"POST",body:JSON.stringify(e)})}},8141:(e,t,r)=>{"use strict";r.d(t,{Ay:()=>i,jb:()=>a});var n=r(4411);async function a(e){return(0,n.T)(`/orchestrators/${e}/connect`,{method:"POST"})}async function i(){return(0,n.T)("/orchestrators/opencode/models")}},8600:(e,t,r)=>{Promise.resolve().then(r.bind(r,1996))},9056:(e,t,r)=>{"use strict";r.d(t,{F:()=>s});var n=r(142);let a=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,i=n.$,s=(e,t)=>r=>{var n;if((null==t?void 0:t.variants)==null)return i(e,null==r?void 0:r.class,null==r?void 0:r.className);let{variants:s,defaultVariants:o}=t,d=Object.keys(s).map(e=>{let t=null==r?void 0:r[e],n=null==o?void 0:o[e];if(null===t)return null;let i=a(t)||a(n);return s[e][i]}),l=r&&Object.entries(r).reduce((e,t)=>{let[r,n]=t;return void 0===n||(e[r]=n),e},{});return i(e,d,null==t||null==(n=t.compoundVariants)?void 0:n.reduce((e,t)=>{let{class:r,className:n,...a}=t;return Object.entries(a).every(e=>{let[t,r]=e;return Array.isArray(r)?r.includes({...o,...l}[t]):({...o,...l})[t]===r})?[...e,r,n]:e},[]),null==r?void 0:r.class,null==r?void 0:r.className)}},9707:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(3884).A)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]])}},e=>{e.O(0,[116,506,128,358],()=>e(e.s=8600)),_N_E=e.O()}]);