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.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +1 -1
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/connect/page.js +1 -1
- package/.next/server/app/connect/page_client-reference-manifest.js +1 -1
- package/.next/server/app/demo/[scenario]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/new/page.js +1 -1
- package/.next/server/app/new/page_client-reference-manifest.js +1 -1
- package/.next/server/app/new.html +1 -1
- package/.next/server/app/new.rsc +3 -3
- package/.next/server/app/new.segments/_full.segment.rsc +3 -3
- package/.next/server/app/new.segments/_head.segment.rsc +1 -1
- package/.next/server/app/new.segments/_index.segment.rsc +2 -2
- package/.next/server/app/new.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/new.segments/new/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/new.segments/new.segment.rsc +1 -1
- package/.next/server/app/onboarding/page.js +2 -2
- package/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
- package/.next/server/app/onboarding.html +1 -1
- package/.next/server/app/onboarding.rsc +3 -3
- package/.next/server/app/onboarding.segments/_full.segment.rsc +3 -3
- package/.next/server/app/onboarding.segments/_head.segment.rsc +1 -1
- package/.next/server/app/onboarding.segments/_index.segment.rsc +2 -2
- package/.next/server/app/onboarding.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/onboarding.segments/onboarding.segment.rsc +1 -1
- package/.next/server/app/page.js +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/personas/page_client-reference-manifest.js +1 -1
- package/.next/server/app/personas.html +1 -1
- package/.next/server/app/personas.rsc +3 -3
- package/.next/server/app/personas.segments/_full.segment.rsc +3 -3
- package/.next/server/app/personas.segments/_head.segment.rsc +1 -1
- package/.next/server/app/personas.segments/_index.segment.rsc +2 -2
- package/.next/server/app/personas.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/personas.segments/personas/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/personas.segments/personas.segment.rsc +1 -1
- package/.next/server/app/runs/[runId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/runs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page.js +2 -2
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/permissions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +3 -3
- package/.next/server/app/settings.segments/_full.segment.rsc +3 -3
- package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/.next/server/app/templates/page.js +1 -1
- package/.next/server/app/templates/page_client-reference-manifest.js +1 -1
- package/.next/server/app/templates.html +1 -1
- package/.next/server/app/templates.rsc +3 -3
- package/.next/server/app/templates.segments/_full.segment.rsc +3 -3
- package/.next/server/app/templates.segments/_head.segment.rsc +1 -1
- package/.next/server/app/templates.segments/_index.segment.rsc +2 -2
- package/.next/server/app/templates.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/templates.segments/templates/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/templates.segments/templates.segment.rsc +1 -1
- package/.next/server/app-paths-manifest.json +1 -1
- package/.next/server/chunks/189.js +1 -1
- package/.next/server/chunks/325.js +1 -1
- package/.next/server/chunks/642.js +1 -1
- package/.next/server/chunks/681.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/245-f3d2948b0049e981.js +1 -0
- package/.next/static/chunks/{641-66f3ba81d2479b02.js → 641-81dca4fb9dc808be.js} +1 -1
- package/.next/static/chunks/744-c2e8529e7a5b0221.js +1 -0
- package/.next/static/chunks/app/connect/page-14d8e3fa9505959f.js +1 -0
- package/.next/static/chunks/app/new/page-4452a15141b14ef3.js +1 -0
- package/.next/static/chunks/app/onboarding/page-cc53c4eeeb372cda.js +1 -0
- package/.next/static/chunks/app/page-de91de3476faae94.js +1 -0
- package/.next/static/chunks/app/settings/page-9e139cc529c0a91c.js +25 -0
- package/.next/static/chunks/app/templates/page-4984d1f588c30038.js +1 -0
- package/.next/static/css/e8fdba3e08fd4c61.css +3 -0
- package/.next/trace +20 -20
- package/.next/trace-build +1 -1
- package/dist/cli/commands/doctor.js +1 -0
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/init.js +1 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/quickstart.js +1 -0
- package/dist/cli/commands/quickstart.js.map +1 -1
- package/dist/daemon/agents/antigravity.js +87 -0
- package/dist/daemon/agents/antigravity.js.map +1 -0
- package/dist/daemon/agents/index.js +4 -1
- package/dist/daemon/agents/index.js.map +1 -1
- package/dist/daemon/agents/parsers/antigravity.js +119 -0
- package/dist/daemon/agents/parsers/antigravity.js.map +1 -0
- package/dist/daemon/agents/parsers/index.js +4 -1
- package/dist/daemon/agents/parsers/index.js.map +1 -1
- package/dist/daemon/chat-gate.js +285 -0
- package/dist/daemon/chat-gate.js.map +1 -0
- package/dist/daemon/error-detector.js +20 -2
- package/dist/daemon/error-detector.js.map +1 -1
- package/dist/daemon/resource-stats.js +80 -0
- package/dist/daemon/resource-stats.js.map +1 -0
- package/dist/daemon/routes/settings.js +54 -0
- package/dist/daemon/routes/settings.js.map +1 -1
- package/dist/daemon/runner.js +48 -0
- package/dist/daemon/runner.js.map +1 -1
- package/dist/lib/cli-detect.js +9 -0
- package/dist/lib/cli-detect.js.map +1 -1
- package/dist/lib/cli-health.js +1 -0
- package/dist/lib/cli-health.js.map +1 -1
- package/dist/lib/cli-paths.js +1 -0
- package/dist/lib/cli-paths.js.map +1 -1
- package/dist/lib/cli-precheck.js +9 -0
- package/dist/lib/cli-precheck.js.map +1 -1
- package/dist/lib/db/voices.js +1 -1
- package/dist/lib/db/voices.js.map +1 -1
- package/dist/lib/lineage-maps.js +31 -0
- package/dist/lib/lineage-maps.js.map +1 -1
- package/dist/lib/settings/chat-concurrency.js +104 -0
- package/dist/lib/settings/chat-concurrency.js.map +1 -0
- package/dist/lib/template-schema.js +2 -2
- package/dist/lib/template-schema.js.map +1 -1
- package/dist/lib/voices.js +6 -0
- package/dist/lib/voices.js.map +1 -1
- package/package.json +1 -1
- package/.next/static/chunks/245-686f2a9a3d4d5554.js +0 -1
- package/.next/static/chunks/744-a5a2f718e91700bd.js +0 -1
- package/.next/static/chunks/app/connect/page-e216744a2daa061b.js +0 -1
- package/.next/static/chunks/app/new/page-d65ea7687a1b37ad.js +0 -1
- package/.next/static/chunks/app/onboarding/page-9f2b388be3008bdc.js +0 -1
- package/.next/static/chunks/app/page-75f1f750029680bd.js +0 -1
- package/.next/static/chunks/app/settings/page-e2f6b190d3794681.js +0 -25
- package/.next/static/chunks/app/templates/page-0cfb5ce79f29fcd5.js +0 -1
- package/.next/static/css/a2b7a8d35dba10d3.css +0 -3
- /package/.next/static/{wtStgSmENkySuN6zbUBM6 → W97_xq3XcOw4uiCeSVQNz}/_buildManifest.js +0 -0
- /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
|
-
|
|
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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"}
|
package/dist/daemon/runner.js
CHANGED
|
@@ -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
|
/**
|