chorus-codes 0.8.44 → 0.8.46

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 (154) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +1 -1
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  6. package/.next/server/app/_global-error.html +1 -1
  7. package/.next/server/app/_global-error.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_global-error.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/page_client-reference-manifest.js +1 -1
  15. package/.next/server/app/_not-found.html +1 -1
  16. package/.next/server/app/_not-found.rsc +2 -2
  17. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  18. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  20. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  21. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  22. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  23. package/.next/server/app/connect/page.js +1 -1
  24. package/.next/server/app/connect/page_client-reference-manifest.js +1 -1
  25. package/.next/server/app/demo/[scenario]/page_client-reference-manifest.js +1 -1
  26. package/.next/server/app/new/page.js +1 -1
  27. package/.next/server/app/new/page_client-reference-manifest.js +1 -1
  28. package/.next/server/app/new.html +1 -1
  29. package/.next/server/app/new.rsc +3 -3
  30. package/.next/server/app/new.segments/_full.segment.rsc +3 -3
  31. package/.next/server/app/new.segments/_head.segment.rsc +1 -1
  32. package/.next/server/app/new.segments/_index.segment.rsc +2 -2
  33. package/.next/server/app/new.segments/_tree.segment.rsc +2 -2
  34. package/.next/server/app/new.segments/new/__PAGE__.segment.rsc +2 -2
  35. package/.next/server/app/new.segments/new.segment.rsc +1 -1
  36. package/.next/server/app/onboarding/page.js +2 -2
  37. package/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  38. package/.next/server/app/onboarding.html +1 -1
  39. package/.next/server/app/onboarding.rsc +3 -3
  40. package/.next/server/app/onboarding.segments/_full.segment.rsc +3 -3
  41. package/.next/server/app/onboarding.segments/_head.segment.rsc +1 -1
  42. package/.next/server/app/onboarding.segments/_index.segment.rsc +2 -2
  43. package/.next/server/app/onboarding.segments/_tree.segment.rsc +2 -2
  44. package/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +2 -2
  45. package/.next/server/app/onboarding.segments/onboarding.segment.rsc +1 -1
  46. package/.next/server/app/page.js +1 -1
  47. package/.next/server/app/page_client-reference-manifest.js +1 -1
  48. package/.next/server/app/personas/page_client-reference-manifest.js +1 -1
  49. package/.next/server/app/personas.html +1 -1
  50. package/.next/server/app/personas.rsc +3 -3
  51. package/.next/server/app/personas.segments/_full.segment.rsc +3 -3
  52. package/.next/server/app/personas.segments/_head.segment.rsc +1 -1
  53. package/.next/server/app/personas.segments/_index.segment.rsc +2 -2
  54. package/.next/server/app/personas.segments/_tree.segment.rsc +2 -2
  55. package/.next/server/app/personas.segments/personas/__PAGE__.segment.rsc +2 -2
  56. package/.next/server/app/personas.segments/personas.segment.rsc +1 -1
  57. package/.next/server/app/runs/[runId]/page_client-reference-manifest.js +1 -1
  58. package/.next/server/app/runs/page_client-reference-manifest.js +1 -1
  59. package/.next/server/app/settings/page.js +2 -2
  60. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  61. package/.next/server/app/settings/permissions/page_client-reference-manifest.js +1 -1
  62. package/.next/server/app/settings.html +1 -1
  63. package/.next/server/app/settings.rsc +3 -3
  64. package/.next/server/app/settings.segments/_full.segment.rsc +3 -3
  65. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  66. package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  67. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  68. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  69. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  70. package/.next/server/app/templates/page.js +1 -1
  71. package/.next/server/app/templates/page_client-reference-manifest.js +1 -1
  72. package/.next/server/app/templates.html +1 -1
  73. package/.next/server/app/templates.rsc +3 -3
  74. package/.next/server/app/templates.segments/_full.segment.rsc +3 -3
  75. package/.next/server/app/templates.segments/_head.segment.rsc +1 -1
  76. package/.next/server/app/templates.segments/_index.segment.rsc +2 -2
  77. package/.next/server/app/templates.segments/_tree.segment.rsc +2 -2
  78. package/.next/server/app/templates.segments/templates/__PAGE__.segment.rsc +2 -2
  79. package/.next/server/app/templates.segments/templates.segment.rsc +1 -1
  80. package/.next/server/app-paths-manifest.json +1 -1
  81. package/.next/server/chunks/189.js +1 -1
  82. package/.next/server/chunks/325.js +1 -1
  83. package/.next/server/chunks/642.js +1 -1
  84. package/.next/server/chunks/681.js +1 -1
  85. package/.next/server/middleware-build-manifest.js +1 -1
  86. package/.next/server/pages/404.html +1 -1
  87. package/.next/server/pages/500.html +1 -1
  88. package/.next/server/server-reference-manifest.json +1 -1
  89. package/.next/static/chunks/245-f3d2948b0049e981.js +1 -0
  90. package/.next/static/chunks/{641-66f3ba81d2479b02.js → 641-81dca4fb9dc808be.js} +1 -1
  91. package/.next/static/chunks/744-c2e8529e7a5b0221.js +1 -0
  92. package/.next/static/chunks/app/connect/page-14d8e3fa9505959f.js +1 -0
  93. package/.next/static/chunks/app/new/page-4452a15141b14ef3.js +1 -0
  94. package/.next/static/chunks/app/onboarding/page-cc53c4eeeb372cda.js +1 -0
  95. package/.next/static/chunks/app/page-de91de3476faae94.js +1 -0
  96. package/.next/static/chunks/app/settings/page-9e139cc529c0a91c.js +25 -0
  97. package/.next/static/chunks/app/templates/page-4984d1f588c30038.js +1 -0
  98. package/.next/static/css/e8fdba3e08fd4c61.css +3 -0
  99. package/.next/trace +20 -20
  100. package/.next/trace-build +1 -1
  101. package/dist/cli/commands/doctor.js +1 -0
  102. package/dist/cli/commands/doctor.js.map +1 -1
  103. package/dist/cli/commands/init.js +1 -0
  104. package/dist/cli/commands/init.js.map +1 -1
  105. package/dist/cli/commands/quickstart.js +1 -0
  106. package/dist/cli/commands/quickstart.js.map +1 -1
  107. package/dist/daemon/agents/antigravity.js +87 -0
  108. package/dist/daemon/agents/antigravity.js.map +1 -0
  109. package/dist/daemon/agents/index.js +4 -1
  110. package/dist/daemon/agents/index.js.map +1 -1
  111. package/dist/daemon/agents/parsers/antigravity.js +119 -0
  112. package/dist/daemon/agents/parsers/antigravity.js.map +1 -0
  113. package/dist/daemon/agents/parsers/index.js +4 -1
  114. package/dist/daemon/agents/parsers/index.js.map +1 -1
  115. package/dist/daemon/chat-gate.js +285 -0
  116. package/dist/daemon/chat-gate.js.map +1 -0
  117. package/dist/daemon/error-detector.js +20 -2
  118. package/dist/daemon/error-detector.js.map +1 -1
  119. package/dist/daemon/resource-stats.js +80 -0
  120. package/dist/daemon/resource-stats.js.map +1 -0
  121. package/dist/daemon/routes/settings.js +54 -0
  122. package/dist/daemon/routes/settings.js.map +1 -1
  123. package/dist/daemon/runner.js +48 -0
  124. package/dist/daemon/runner.js.map +1 -1
  125. package/dist/lib/cli-detect.js +9 -0
  126. package/dist/lib/cli-detect.js.map +1 -1
  127. package/dist/lib/cli-health.js +1 -0
  128. package/dist/lib/cli-health.js.map +1 -1
  129. package/dist/lib/cli-paths.js +1 -0
  130. package/dist/lib/cli-paths.js.map +1 -1
  131. package/dist/lib/cli-precheck.js +9 -0
  132. package/dist/lib/cli-precheck.js.map +1 -1
  133. package/dist/lib/db/voices.js +1 -1
  134. package/dist/lib/db/voices.js.map +1 -1
  135. package/dist/lib/lineage-maps.js +31 -0
  136. package/dist/lib/lineage-maps.js.map +1 -1
  137. package/dist/lib/settings/chat-concurrency.js +104 -0
  138. package/dist/lib/settings/chat-concurrency.js.map +1 -0
  139. package/dist/lib/template-schema.js +2 -2
  140. package/dist/lib/template-schema.js.map +1 -1
  141. package/dist/lib/voices.js +6 -0
  142. package/dist/lib/voices.js.map +1 -1
  143. package/package.json +1 -1
  144. package/.next/static/chunks/245-686f2a9a3d4d5554.js +0 -1
  145. package/.next/static/chunks/744-a5a2f718e91700bd.js +0 -1
  146. package/.next/static/chunks/app/connect/page-e216744a2daa061b.js +0 -1
  147. package/.next/static/chunks/app/new/page-d65ea7687a1b37ad.js +0 -1
  148. package/.next/static/chunks/app/onboarding/page-9f2b388be3008bdc.js +0 -1
  149. package/.next/static/chunks/app/page-75f1f750029680bd.js +0 -1
  150. package/.next/static/chunks/app/settings/page-e2f6b190d3794681.js +0 -25
  151. package/.next/static/chunks/app/templates/page-0cfb5ce79f29fcd5.js +0 -1
  152. package/.next/static/css/a2b7a8d35dba10d3.css +0 -3
  153. /package/.next/static/{wtStgSmENkySuN6zbUBM6 → W97_xq3XcOw4uiCeSVQNz}/_buildManifest.js +0 -0
  154. /package/.next/static/{wtStgSmENkySuN6zbUBM6 → W97_xq3XcOw4uiCeSVQNz}/_ssgManifest.js +0 -0
@@ -0,0 +1,285 @@
1
+ "use strict";
2
+ /**
3
+ * Daemon-wide chat admission gate.
4
+ *
5
+ * Sits at the runner-entry: every `runChat` call awaits `admitChat(...)`
6
+ * before fanning out reviewers. When at cap (or under resource pressure)
7
+ * the call blocks; the chat row stays in `drafting` and the cockpit's
8
+ * SSE stream gets a `chat_progress` event tagged with `reason: 'queued'`
9
+ * so the run page can show "Waiting for slot — N chats ahead".
10
+ *
11
+ * Design mirrors `cli-semaphore.ts` (mutex + FIFO queue + dynamic
12
+ * settings re-read). Differences:
13
+ *
14
+ * - Single queue (no per-lineage subqueue) — admission is whole-chat.
15
+ * - Admission check is multi-factor: chat count + free swap +
16
+ * load-per-core, all from settings.
17
+ * - Periodic resource-recheck: even with no chat-end event, the gate
18
+ * re-evaluates every 30s so a transient swap spike clears
19
+ * automatically.
20
+ *
21
+ * The gate is daemon-wide module state — there's exactly one daemon
22
+ * process so this is the authoritative counter. Tests use
23
+ * `_testing.reset()` between cases.
24
+ */
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports._testing = void 0;
27
+ exports.evaluateAdmission = evaluateAdmission;
28
+ exports.admitChat = admitChat;
29
+ exports.snapshot = snapshot;
30
+ exports.pokeGate = pokeGate;
31
+ const chat_concurrency_js_1 = require("../lib/settings/chat-concurrency.js");
32
+ const resource_stats_js_1 = require("./resource-stats.js");
33
+ /**
34
+ * Pure decision function — given current admitted count + resource
35
+ * snapshot + config, return whether to admit. No I/O, easy to unit
36
+ * test exhaustively.
37
+ *
38
+ * Order of checks matters for the `reason` field: chats_at_cap wins
39
+ * over swap_low wins over load_high, so the cockpit message is stable
40
+ * across multi-constraint blocks (otherwise UI would flap between
41
+ * "Queued (swap low)" and "Queued (load high)" as conditions oscillate).
42
+ */
43
+ function evaluateAdmission(activeChats, stats, config) {
44
+ if (activeChats >= config.maxConcurrentChats) {
45
+ return {
46
+ admit: false,
47
+ reason: 'chats_at_cap',
48
+ message: `${activeChats}/${config.maxConcurrentChats} chats already running`,
49
+ };
50
+ }
51
+ // swapMinFreeMb=0 → user disabled the check.
52
+ // stats.swapFreeMb=-1 → platform doesn't expose swap (macOS,
53
+ // containers without /proc/meminfo) — skip rather than block.
54
+ // stats.swapFreeMb=0 → swap is genuinely exhausted; THIS is the
55
+ // incident-2026-05-20 case we MUST catch (prior revision used 0
56
+ // as a sentinel and silently bypassed the check at the worst
57
+ // possible moment).
58
+ if (config.swapMinFreeMb > 0 &&
59
+ stats.swapFreeMb >= 0 &&
60
+ stats.swapFreeMb < config.swapMinFreeMb) {
61
+ return {
62
+ admit: false,
63
+ reason: 'swap_low',
64
+ message: `free swap ${stats.swapFreeMb}MB below threshold ${config.swapMinFreeMb}MB`,
65
+ };
66
+ }
67
+ if (config.loadAvgMaxPerCore > 0 && stats.cpuCount > 0) {
68
+ const perCore = stats.loadAvg1 / stats.cpuCount;
69
+ if (perCore > config.loadAvgMaxPerCore) {
70
+ return {
71
+ admit: false,
72
+ reason: 'load_high',
73
+ message: `load/core ${perCore.toFixed(2)} above threshold ${config.loadAvgMaxPerCore}`,
74
+ };
75
+ }
76
+ }
77
+ return { admit: true };
78
+ }
79
+ let activeChats = 0;
80
+ const waiters = [];
81
+ let granting = false;
82
+ let dirty = false;
83
+ /**
84
+ * Recheck cadence when the queue head is blocked on resource pressure
85
+ * (swap/load) rather than chat-cap. Without this, a queue that's
86
+ * blocked purely on swap_low would never re-evaluate until a chat
87
+ * ends — but if no chat is running, that's never.
88
+ */
89
+ const RESOURCE_RECHECK_MS = 30_000;
90
+ let recheckTimer = null;
91
+ function scheduleRecheck() {
92
+ if (recheckTimer)
93
+ return;
94
+ if (waiters.length === 0)
95
+ return;
96
+ recheckTimer = setTimeout(() => {
97
+ recheckTimer = null;
98
+ void tryGrantHead();
99
+ }, RESOURCE_RECHECK_MS);
100
+ }
101
+ function cancelRecheck() {
102
+ if (recheckTimer) {
103
+ clearTimeout(recheckTimer);
104
+ recheckTimer = null;
105
+ }
106
+ }
107
+ /**
108
+ * Try to grant the head waiter. Recursive in spirit (re-runs after
109
+ * each grant) but flattened into a loop. Reentrant-safe via the
110
+ * granting/dirty mutex — same pattern as cli-semaphore.
111
+ *
112
+ * When the head can't be admitted but the reason is resource pressure
113
+ * (not chats_at_cap), notify the waiter so the cockpit shows the
114
+ * current reason, and schedule a periodic recheck so transient
115
+ * swap/load spikes clear.
116
+ */
117
+ async function tryGrantHead() {
118
+ if (granting) {
119
+ dirty = true;
120
+ return;
121
+ }
122
+ granting = true;
123
+ dirty = false;
124
+ try {
125
+ do {
126
+ dirty = false;
127
+ while (waiters.length > 0) {
128
+ const config = await (0, chat_concurrency_js_1.getChatConcurrency)();
129
+ if (waiters.length === 0)
130
+ break;
131
+ const stats = (0, resource_stats_js_1.readResourceStats)();
132
+ const decision = evaluateAdmission(activeChats, stats, config);
133
+ if (!decision.admit) {
134
+ // Notify all waiting chats of their queue position + current
135
+ // reason. Position = 1-indexed slot in the FIFO.
136
+ for (let i = 0; i < waiters.length; i++) {
137
+ try {
138
+ waiters[i].onWait?.(decision, i + 1);
139
+ }
140
+ catch {
141
+ /* swallow — a buggy onWait should not deadlock the gate */
142
+ }
143
+ }
144
+ // If blocked on resource pressure, schedule a periodic recheck
145
+ // since no chat_end event will arrive. chats_at_cap unblocks
146
+ // naturally on release().
147
+ if (decision.reason !== 'chats_at_cap') {
148
+ scheduleRecheck();
149
+ }
150
+ break;
151
+ }
152
+ const head = waiters.shift();
153
+ activeChats++;
154
+ head.cleanup?.();
155
+ head.resolve();
156
+ }
157
+ } while (dirty);
158
+ }
159
+ catch (err) {
160
+ // Settings DB unreadable, resource stats read failed, anything
161
+ // unexpected. Pre-fix this just logged and exited, leaving the
162
+ // queue stranded — convergent self-review (6/6 reviewers on PR
163
+ // #64) flagged this. Two-pronged recovery:
164
+ // 1. Schedule a recheck so the queue gets another chance once
165
+ // the transient issue clears.
166
+ // 2. If the failure persists, the recheck will hit the same
167
+ // catch again; that's acceptable — better a noisy log than
168
+ // a silently stalled queue. For a circuit-breaker we'd add
169
+ // a consecutive-failure counter, but the simpler retry
170
+ // handles the common DB-busy / disk-blip cases.
171
+ console.error('[chorus] chat-gate tryGrantHead failed:', err);
172
+ if (waiters.length > 0) {
173
+ scheduleRecheck();
174
+ }
175
+ }
176
+ finally {
177
+ granting = false;
178
+ }
179
+ }
180
+ /**
181
+ * Acquire an admission slot. Returns a release() function the caller
182
+ * MUST invoke (typically in a finally block) when the chat reaches a
183
+ * terminal state. Idempotent on release — calling twice is a no-op.
184
+ *
185
+ * The chat's row stays at status='drafting' in the DB while queued;
186
+ * onWait fires immediately with the current decision so the cockpit
187
+ * knows whether to render "Drafting" or "Queued (reason)" right away.
188
+ */
189
+ async function admitChat(opts = {}) {
190
+ return new Promise((resolve, reject) => {
191
+ if (opts.signal?.aborted) {
192
+ reject(opts.signal.reason ?? new Error('aborted'));
193
+ return;
194
+ }
195
+ // settled flag prevents double-resolution if abort fires AFTER
196
+ // tryGrantHead has shifted+resolved this waiter but BEFORE the
197
+ // resolve's microtask runs. Node tolerates redundant resolve/
198
+ // reject calls on a settled promise, but a future Promise impl
199
+ // change could surface it as an unhandled rejection — belt-and-
200
+ // suspenders. Convergent self-review (PR #64, ocg-4) flagged it.
201
+ let settled = false;
202
+ const waiter = {
203
+ resolve: () => {
204
+ if (settled)
205
+ return;
206
+ settled = true;
207
+ resolve(makeRelease());
208
+ },
209
+ reject: (err) => {
210
+ if (settled)
211
+ return;
212
+ settled = true;
213
+ reject(err);
214
+ },
215
+ onWait: opts.onWait,
216
+ };
217
+ if (opts.signal) {
218
+ const onAbort = () => {
219
+ const i = waiters.indexOf(waiter);
220
+ if (i >= 0)
221
+ waiters.splice(i, 1);
222
+ // Re-poke in case the abort frees up something at the head.
223
+ void tryGrantHead();
224
+ waiter.reject(opts.signal.reason ?? new Error('aborted'));
225
+ };
226
+ opts.signal.addEventListener('abort', onAbort, { once: true });
227
+ waiter.cleanup = () => opts.signal.removeEventListener('abort', onAbort);
228
+ }
229
+ waiters.push(waiter);
230
+ void tryGrantHead();
231
+ });
232
+ }
233
+ function makeRelease() {
234
+ let released = false;
235
+ return () => {
236
+ if (released)
237
+ return;
238
+ released = true;
239
+ activeChats = Math.max(0, activeChats - 1);
240
+ // Cancel any pending resource recheck — a real release event is
241
+ // a stronger signal than the periodic poll.
242
+ cancelRecheck();
243
+ void tryGrantHead();
244
+ };
245
+ }
246
+ /** Diagnostic snapshot for /api/v1/diagnostics + tests. */
247
+ function snapshot() {
248
+ return {
249
+ activeChats,
250
+ queueDepth: waiters.length,
251
+ };
252
+ }
253
+ /**
254
+ * External poke for "settings changed, re-evaluate the queue". Called
255
+ * by the PUT /settings/chat-concurrency route after a successful save
256
+ * so that an increased maxConcurrentChats / loosened swap floor /
257
+ * loosened load cap admits queued chats immediately — without it,
258
+ * users bumping the cap up would have to wait for an active chat to
259
+ * end before queued chats could proceed. Convergent self-review
260
+ * (2/6 reviewers on PR #64) flagged the gap.
261
+ */
262
+ function pokeGate() {
263
+ void tryGrantHead();
264
+ }
265
+ exports._testing = {
266
+ reset: () => {
267
+ activeChats = 0;
268
+ granting = false;
269
+ dirty = false;
270
+ cancelRecheck();
271
+ while (waiters.length > 0) {
272
+ const w = waiters.shift();
273
+ if (!w)
274
+ break;
275
+ w.cleanup?.();
276
+ try {
277
+ w.reject(new Error('chat-gate reset (tests)'));
278
+ }
279
+ catch {
280
+ /* defensive */
281
+ }
282
+ }
283
+ },
284
+ };
285
+ //# sourceMappingURL=chat-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-gate.js","sourceRoot":"","sources":["../../src/daemon/chat-gate.ts"],"names":[],"mappings":"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"}
@@ -187,13 +187,31 @@ class ErrorDetector {
187
187
  };
188
188
  }
189
189
  }
190
+ // Pattern 3b: Antigravity CLI specific signatures (ordering rule
191
+ // from the integration doc — CLI-specific patterns BEFORE the
192
+ // generic auth-prompt regex so they route to the right `kind`).
193
+ if (lineage === 'antigravity') {
194
+ // Match the same alternations as parseAntigravityExit so the pane-
195
+ // scraper and exit-handler agree on what counts as a quota error
196
+ // (self-review caught the drift between the two).
197
+ if (/quota[\s-]?(?:exhausted|exceeded)|rate[\s-]?limit|resource[\s-]?exhausted|\b429\b/i.test(paneText)) {
198
+ return {
199
+ kind: 'quota_exhausted',
200
+ lineage,
201
+ message: 'Antigravity (Gemini 3.5 Flash) quota exhausted on your Google AI Pro subscription.',
202
+ cta: 'Wait for the period reset or upgrade your Google AI plan.',
203
+ detail: 'quota_exhausted',
204
+ };
205
+ }
206
+ }
190
207
  if (lineage === 'anthropic' ||
191
208
  lineage === 'openai' ||
192
209
  lineage === 'google' ||
193
210
  lineage === 'opencode' ||
194
211
  lineage === 'moonshot' ||
195
- lineage === 'grok') {
196
- const authPrompt = /(?:please (?:run|log\s*in|sign\s*in)|run\s+`?(?:claude|codex|gemini|opencode|kimi|grok)\s+login|to\s+sign\s+in|not logged in|not authenticated|no active session|authentication required|api key (?:invalid|missing|expired|revoked|not (?:found|set))|(?:[A-Z_]+_)?API_KEY\s+(?:environment variable\s+)?not\s+(?:found|set)|Signing in with Grok|Open this URL to sign in)/i.exec(paneText);
212
+ lineage === 'grok' ||
213
+ lineage === 'antigravity') {
214
+ const authPrompt = /(?:please (?:run|log\s*in|sign\s*in)|run\s+`?(?:claude|codex|gemini|opencode|kimi|grok|agy)\s+login|to\s+sign\s+in|not logged in|not authenticated|no active session|authentication required|api key (?:invalid|missing|expired|revoked|not (?:found|set))|(?:[A-Z_]+_)?API_KEY\s+(?:environment variable\s+)?not\s+(?:found|set)|Signing in with Grok|Open this URL to sign in|antigravity-oauth-token)/i.exec(paneText);
197
215
  if (authPrompt) {
198
216
  return {
199
217
  kind: 'token_refresh_lost', // maps to auth_invalid health status
@@ -1 +1 @@
1
- {"version":3,"file":"error-detector.js","sourceRoot":"","sources":["../../src/daemon/error-detector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"error-detector.js","sourceRoot":"","sources":["../../src/daemon/error-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ /**
3
+ * Lightweight resource stats for the chat-gate admission check.
4
+ *
5
+ * Pure-ish: reads `/proc/meminfo` + `os.loadavg()` synchronously. No
6
+ * subprocess, no network. Both calls are sub-millisecond on Linux.
7
+ * macOS has no /proc/meminfo — swap is reported as 0 free there, which
8
+ * effectively disables the swap-check on macOS (the gate's default
9
+ * `swapMinFreeMb=1024` would refuse every chat). Users on macOS should
10
+ * lower swapMinFreeMb to 0 if they want the gate active.
11
+ *
12
+ * Output shape kept narrow so the admit-decision function (in chat-gate)
13
+ * stays a pure function of (state, config) — no side effects, easy to
14
+ * unit-test.
15
+ */
16
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ var desc = Object.getOwnPropertyDescriptor(m, k);
19
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
20
+ desc = { enumerable: true, get: function() { return m[k]; } };
21
+ }
22
+ Object.defineProperty(o, k2, desc);
23
+ }) : (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ o[k2] = m[k];
26
+ }));
27
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
28
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
29
+ }) : function(o, v) {
30
+ o["default"] = v;
31
+ });
32
+ var __importStar = (this && this.__importStar) || (function () {
33
+ var ownKeys = function(o) {
34
+ ownKeys = Object.getOwnPropertyNames || function (o) {
35
+ var ar = [];
36
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
37
+ return ar;
38
+ };
39
+ return ownKeys(o);
40
+ };
41
+ return function (mod) {
42
+ if (mod && mod.__esModule) return mod;
43
+ var result = {};
44
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
45
+ __setModuleDefault(result, mod);
46
+ return result;
47
+ };
48
+ })();
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.readResourceStats = readResourceStats;
51
+ const fs = __importStar(require("node:fs"));
52
+ const node_os_1 = require("node:os");
53
+ /**
54
+ * Read free swap from /proc/meminfo. Returns -1 (not 0) when
55
+ * unavailable so callers can distinguish "platform reports nothing"
56
+ * from "SwapFree is genuinely 0 — host is OOM-imminent".
57
+ */
58
+ function readSwapFreeMb() {
59
+ if ((0, node_os_1.platform)() !== 'linux')
60
+ return -1;
61
+ try {
62
+ const meminfo = fs.readFileSync('/proc/meminfo', 'utf-8');
63
+ const match = meminfo.match(/^SwapFree:\s+(\d+)\s+kB/m);
64
+ if (!match)
65
+ return -1;
66
+ return Math.floor(parseInt(match[1], 10) / 1024);
67
+ }
68
+ catch {
69
+ return -1;
70
+ }
71
+ }
72
+ /** Snapshot of current resource pressure. Called per admission attempt. */
73
+ function readResourceStats() {
74
+ return {
75
+ swapFreeMb: readSwapFreeMb(),
76
+ loadAvg1: (0, node_os_1.loadavg)()[0] ?? 0,
77
+ cpuCount: (0, node_os_1.cpus)().length,
78
+ };
79
+ }
80
+ //# sourceMappingURL=resource-stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-stats.js","sourceRoot":"","sources":["../../src/daemon/resource-stats.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CH,8CAMC;AA9CD,4CAA8B;AAC9B,qCAAkD;AAqBlD;;;;GAIG;AACH,SAAS,cAAc;IACrB,IAAI,IAAA,kBAAQ,GAAE,KAAK,OAAO;QAAE,OAAO,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,SAAgB,iBAAiB;IAC/B,OAAO;QACL,UAAU,EAAE,cAAc,EAAE;QAC5B,QAAQ,EAAE,IAAA,iBAAO,GAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3B,QAAQ,EAAE,IAAA,cAAI,GAAE,CAAC,MAAM;KACxB,CAAC;AACJ,CAAC"}
@@ -135,6 +135,60 @@ function registerSettingsRoutes(fastify) {
135
135
  return (0, api_response_js_1.errorResponse)('validation', message);
136
136
  }
137
137
  });
138
+ // ─── Chat concurrency (daemon-wide max-active-chats + resource caps) ─
139
+ // Distinct from cli-concurrency above: this caps the NUMBER OF CHATS
140
+ // that can fan out reviewers simultaneously, plus refuses admission
141
+ // when swap/load are under pressure. Added after the 2026-05-20
142
+ // incident where 3 concurrent chats × 8 reviewers each crushed the
143
+ // host (load 320, swap exhausted).
144
+ fastify.get('/settings/chat-concurrency', async () => {
145
+ try {
146
+ const { getChatConcurrency, _defaults } = await import('../../lib/settings/chat-concurrency.js');
147
+ const { snapshot } = await import('../chat-gate.js');
148
+ const { readResourceStats } = await import('../resource-stats.js');
149
+ return (0, api_response_js_1.successResponse)({
150
+ ...(await getChatConcurrency()),
151
+ defaults: _defaults,
152
+ // Live snapshot so the cockpit can show "currently 2/3 chats
153
+ // active, swap 4200MB free, load/core 1.2" alongside the
154
+ // sliders — actionable feedback rather than blind tuning.
155
+ live: {
156
+ ...snapshot(),
157
+ ...readResourceStats(),
158
+ },
159
+ });
160
+ }
161
+ catch (error) {
162
+ const message = error instanceof Error ? error.message : 'Unknown error';
163
+ return (0, api_response_js_1.errorResponse)('internal', message);
164
+ }
165
+ });
166
+ fastify.put('/settings/chat-concurrency', async (request) => {
167
+ try {
168
+ const { getChatConcurrency, setChatConcurrency, ChatConcurrencySchema, } = await import('../../lib/settings/chat-concurrency.js');
169
+ const current = await getChatConcurrency();
170
+ const body = request.body ?? {};
171
+ const merged = {
172
+ maxConcurrentChats: body.maxConcurrentChats ?? current.maxConcurrentChats,
173
+ swapMinFreeMb: body.swapMinFreeMb ?? current.swapMinFreeMb,
174
+ loadAvgMaxPerCore: body.loadAvgMaxPerCore ?? current.loadAvgMaxPerCore,
175
+ };
176
+ const validated = ChatConcurrencySchema.parse(merged);
177
+ await setChatConcurrency(validated);
178
+ // Poke the gate so a loosened cap (3 → 5, or 1024MB → 512MB)
179
+ // admits queued waiters immediately. Without this, queued chats
180
+ // would wait for an active chat to finish before the new cap
181
+ // takes effect — surprising UX. Convergent self-review (2/6
182
+ // reviewers on PR #64) flagged the gap.
183
+ const { pokeGate } = await import('../chat-gate.js');
184
+ pokeGate();
185
+ return (0, api_response_js_1.successResponse)(validated);
186
+ }
187
+ catch (error) {
188
+ const message = error instanceof Error ? error.message : 'Unknown error';
189
+ return (0, api_response_js_1.errorResponse)('validation', message);
190
+ }
191
+ });
138
192
  // ─── Telemetry (anonymous heartbeat opt-out) ─────────────────────────
139
193
  fastify.get('/settings/telemetry', async () => {
140
194
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/daemon/routes/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/daemon/routes/settings.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,7 @@ const atomic_write_js_1 = require("../lib/atomic-write.js");
23
23
  const index_js_1 = require("../lib/db/index.js");
24
24
  const logger_js_1 = require("../lib/logger.js");
25
25
  const template_schema_js_1 = require("../lib/template-schema.js");
26
+ const chat_gate_js_1 = require("./chat-gate.js");
26
27
  const doer_driver_js_1 = require("./runner/doer-driver.js");
27
28
  const prior_round_js_1 = require("./runner/prior-round.js");
28
29
  const reviewer_driver_js_1 = require("./runner/reviewer-driver.js");
@@ -84,6 +85,50 @@ async function runChat(opts) {
84
85
  emitChatDone({ status: 'cancelled' });
85
86
  };
86
87
  abortSignal.addEventListener('abort', abortListener);
88
+ // Daemon-wide admission gate. Caps the number of chats actively
89
+ // fanning out reviewers (separate from cli-semaphore which caps
90
+ // subprocesses per binary family). Configurable in /settings; default
91
+ // 3 concurrent chats + refuse on low swap or high load. The chat row
92
+ // stays at status='drafting' while queued; we emit `chat_queued`
93
+ // events so the cockpit can render "Waiting for slot — N chats ahead".
94
+ // On admission failure (signal abort), exit cleanly — emitChatDone
95
+ // with cancelled was already wired via the abortListener above.
96
+ let releaseAdmission = null;
97
+ try {
98
+ releaseAdmission = await (0, chat_gate_js_1.admitChat)({
99
+ signal: abortSignal,
100
+ onWait: (decision, position) => {
101
+ // decision.reason is always populated when admit=false (the
102
+ // gate guarantees this — see evaluateAdmission). The `??`
103
+ // fallback is a defensive no-op; we keep it to satisfy the
104
+ // type checker without inventing a sentinel string that
105
+ // isn't in AdmitDenyReason.
106
+ const reason = decision.reason ?? 'chats_at_cap';
107
+ onEvent({
108
+ chatId,
109
+ type: 'chat_queued',
110
+ payload: {
111
+ reason,
112
+ position,
113
+ message: decision.message ?? '',
114
+ },
115
+ ts: Date.now(),
116
+ });
117
+ },
118
+ });
119
+ }
120
+ catch (err) {
121
+ // Aborted while queued — abortListener already fired chat_done.
122
+ // Cleanly exit without proceeding into the doer/reviewer fan-out.
123
+ abortSignal.removeEventListener('abort', abortListener);
124
+ if (!chatDoneEmitted) {
125
+ emitChatDone({
126
+ status: 'cancelled',
127
+ error: err instanceof Error ? err.message : String(err),
128
+ });
129
+ }
130
+ return;
131
+ }
87
132
  // Track whether any phase failed because every reviewer in it failed
88
133
  // (timeout/quota/crash). If so, the chat ends in 'no_review' rather
89
134
  // than 'approved' — there was no actual peer review to approve from.
@@ -471,6 +516,9 @@ async function runChat(opts) {
471
516
  }
472
517
  finally {
473
518
  abortSignal.removeEventListener('abort', abortListener);
519
+ // Release the daemon-wide admission slot so the next queued chat
520
+ // can proceed. Idempotent — releaseAdmission swallows double-release.
521
+ releaseAdmission?.();
474
522
  }
475
523
  }
476
524
  /**