agent-nuvira 1.45.2 → 1.45.4
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/README.md +14 -0
- package/dist/cli/chat.d.ts.map +1 -1
- package/dist/cli/chat.js +10 -1
- package/dist/cli/chat.js.map +1 -1
- package/dist/cli/model.d.ts +2 -0
- package/dist/cli/model.d.ts.map +1 -1
- package/dist/cli/model.js +23 -0
- package/dist/cli/model.js.map +1 -1
- package/dist/learning/quota-ledger.d.ts +35 -1
- package/dist/learning/quota-ledger.d.ts.map +1 -1
- package/dist/learning/quota-ledger.js +96 -1
- package/dist/learning/quota-ledger.js.map +1 -1
- package/dist/web-dashboard/server.d.ts.map +1 -1
- package/dist/web-dashboard/server.js +121 -3
- package/dist/web-dashboard/server.js.map +1 -1
- package/package.json +1 -1
|
@@ -34,6 +34,11 @@ function memoryDir() {
|
|
|
34
34
|
function ledgerPath() {
|
|
35
35
|
return join(memoryDir(), 'quota-ledger.json');
|
|
36
36
|
}
|
|
37
|
+
function eventsPath() {
|
|
38
|
+
return join(memoryDir(), 'quota-events.jsonl');
|
|
39
|
+
}
|
|
40
|
+
/** Cap on persisted timeline events — trim oldest beyond this. */
|
|
41
|
+
const MAX_EVENTS = 200;
|
|
37
42
|
function emptyState() {
|
|
38
43
|
return { version: CURRENT_VERSION, entries: {} };
|
|
39
44
|
}
|
|
@@ -47,6 +52,8 @@ function entryKey(provider, model) {
|
|
|
47
52
|
*/
|
|
48
53
|
export class QuotaLedger {
|
|
49
54
|
state;
|
|
55
|
+
/** In-memory dedupe of emitted window-reset events (prevents read-path dupes). */
|
|
56
|
+
emittedResets = new Set();
|
|
50
57
|
constructor() {
|
|
51
58
|
this.state = this.load();
|
|
52
59
|
}
|
|
@@ -99,13 +106,34 @@ export class QuotaLedger {
|
|
|
99
106
|
* RE-ENABLE: a provider parked for exhaustion un-parks the moment its
|
|
100
107
|
* reset window rolls. Explicit cooldowns (cooldownUntil) survive rotation
|
|
101
108
|
* so a manual park isn't wiped by an unrelated window roll.
|
|
109
|
+
*
|
|
110
|
+
* Records a `re-enabled` timeline event ONCE per real window roll (a window
|
|
111
|
+
* that actually carried usage) — deduped by windowStart so the many read
|
|
112
|
+
* paths that call rotateWindow (getStatus, getCostSummary, router feed)
|
|
113
|
+
* can't emit the same reset twice. The rotation is PERSISTED (save()) so a
|
|
114
|
+
* fresh process re-reading the ledger sees the advanced windowStart instead
|
|
115
|
+
* of re-rotating and re-emitting a duplicate 're-enabled' event.
|
|
102
116
|
*/
|
|
103
117
|
rotateWindow(entry) {
|
|
104
118
|
const now = Date.now();
|
|
105
119
|
if (now - entry.windowStart >= entry.windowLengthMs) {
|
|
120
|
+
const hadUsage = entry.tokensConsumed > 0 || entry.requests > 0;
|
|
121
|
+
const dedupeKey = `${entryKey(entry.provider, entry.model)}|${entry.windowStart}`;
|
|
106
122
|
entry.tokensConsumed = 0;
|
|
107
123
|
entry.requests = 0;
|
|
108
124
|
entry.windowStart = now;
|
|
125
|
+
let changed = false;
|
|
126
|
+
if (hadUsage && !this.emittedResets.has(dedupeKey)) {
|
|
127
|
+
this.emittedResets.add(dedupeKey);
|
|
128
|
+
this.recordEvent('re-enabled', entry.provider, 'window reset');
|
|
129
|
+
changed = true;
|
|
130
|
+
}
|
|
131
|
+
// Persist the advanced windowStart so OTHER processes (dashboard server,
|
|
132
|
+
// CLI, chat) see the rotated state and don't each emit their own
|
|
133
|
+
// 're-enabled' duplicate. Rotations are rare (once per window per entry),
|
|
134
|
+
// so the extra save is negligible.
|
|
135
|
+
if (changed)
|
|
136
|
+
this.save();
|
|
109
137
|
}
|
|
110
138
|
}
|
|
111
139
|
/**
|
|
@@ -137,8 +165,9 @@ export class QuotaLedger {
|
|
|
137
165
|
* Explicitly park a provider until a given epoch ms (used by chat failover
|
|
138
166
|
* and quota-killed providers so the exclusion survives across sessions).
|
|
139
167
|
* Parked providers are excluded from Auto routing until `until`.
|
|
168
|
+
* Records a `parked` timeline event (best-effort).
|
|
140
169
|
*/
|
|
141
|
-
parkProvider(provider, until) {
|
|
170
|
+
parkProvider(provider, until, reason) {
|
|
142
171
|
try {
|
|
143
172
|
const now = Date.now();
|
|
144
173
|
// Park every model entry for the provider (plus a provider-level entry
|
|
@@ -155,6 +184,8 @@ export class QuotaLedger {
|
|
|
155
184
|
entry.cooldownUntil = until;
|
|
156
185
|
}
|
|
157
186
|
this.save();
|
|
187
|
+
if (until > now)
|
|
188
|
+
this.recordEvent('parked', provider, reason || 'cooldown');
|
|
158
189
|
}
|
|
159
190
|
catch {
|
|
160
191
|
// Best-effort.
|
|
@@ -169,6 +200,69 @@ export class QuotaLedger {
|
|
|
169
200
|
}
|
|
170
201
|
}
|
|
171
202
|
this.save();
|
|
203
|
+
this.recordEvent('released', provider, 'manual');
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
// Best-effort.
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Append an event to the quota failover timeline (quota-events.jsonl,
|
|
211
|
+
* capped at MAX_EVENTS). Best-effort: a failed write must never break
|
|
212
|
+
* routing. Also exposed so callers (chat failover) can record `failover`
|
|
213
|
+
* events directly.
|
|
214
|
+
*/
|
|
215
|
+
recordEvent(type, provider, reason) {
|
|
216
|
+
try {
|
|
217
|
+
const event = { type, provider, timestamp: Date.now() };
|
|
218
|
+
if (reason)
|
|
219
|
+
event.reason = reason;
|
|
220
|
+
if (!existsSync(memoryDir()))
|
|
221
|
+
mkdirSync(memoryDir(), { recursive: true });
|
|
222
|
+
const path = eventsPath();
|
|
223
|
+
const existing = existsSync(path) ? readFileSync(path, 'utf-8') : '';
|
|
224
|
+
const lines = existing.split('\n').filter((l) => l.trim().length > 0);
|
|
225
|
+
lines.push(JSON.stringify(event));
|
|
226
|
+
// Cap: keep the newest MAX_EVENTS lines.
|
|
227
|
+
const trimmed = lines.slice(-MAX_EVENTS);
|
|
228
|
+
writeFileSync(path, trimmed.join('\n') + '\n', 'utf-8');
|
|
229
|
+
}
|
|
230
|
+
catch {
|
|
231
|
+
// Best-effort — the timeline must never break routing.
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Read the failover timeline, newest first (dashboard / CLI / tests).
|
|
236
|
+
* Corrupt lines are skipped; best-effort.
|
|
237
|
+
*/
|
|
238
|
+
listEvents(limit = 50) {
|
|
239
|
+
try {
|
|
240
|
+
const path = eventsPath();
|
|
241
|
+
if (!existsSync(path))
|
|
242
|
+
return [];
|
|
243
|
+
const lines = readFileSync(path, 'utf-8').split('\n').filter((l) => l.trim().length > 0);
|
|
244
|
+
const events = [];
|
|
245
|
+
for (const line of lines.slice(-limit).reverse()) {
|
|
246
|
+
try {
|
|
247
|
+
const e = JSON.parse(line);
|
|
248
|
+
if (e && typeof e === 'object' && e.type && e.provider)
|
|
249
|
+
events.push(e);
|
|
250
|
+
}
|
|
251
|
+
catch {
|
|
252
|
+
// Skip corrupt lines.
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
return events;
|
|
256
|
+
}
|
|
257
|
+
catch {
|
|
258
|
+
return [];
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
/** Clear the persisted timeline (used by `buff model quota reset`). */
|
|
262
|
+
clearEvents() {
|
|
263
|
+
try {
|
|
264
|
+
writeFileSync(eventsPath(), '', 'utf-8');
|
|
265
|
+
this.emittedResets.clear();
|
|
172
266
|
}
|
|
173
267
|
catch {
|
|
174
268
|
// Best-effort.
|
|
@@ -350,6 +444,7 @@ export class QuotaLedger {
|
|
|
350
444
|
reset() {
|
|
351
445
|
this.state = emptyState();
|
|
352
446
|
this.save();
|
|
447
|
+
this.clearEvents();
|
|
353
448
|
}
|
|
354
449
|
/** Remove all entries for one provider. */
|
|
355
450
|
resetProvider(provider) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota-ledger.js","sourceRoot":"","sources":["../../src/learning/quota-ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAkD5C,+EAA+E;AAE/E,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC9D,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,2BAA2B;AAE1E,SAAS,SAAS;IAChB,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,kBAAkB,CAAC;AAC3D,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE,mBAAmB,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,QAAQ,CAAC,QAAgB,EAAE,KAAa;IAC/C,OAAO,GAAG,QAAQ,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;AAC7C,CAAC;AAED,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,OAAO,WAAW;IACd,KAAK,CAAkB;IAE/B;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,0CAA0C;IAClC,IAAI;QACV,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;gBAAE,OAAO,UAAU,EAAE,CAAC;YACnD,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,CAAC;YAChD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO,UAAU,EAAE,CAAC;YAC5E,OAAO,EAAE,GAAG,UAAU,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,UAAU,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAEO,IAAI;QACV,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;gBAAE,SAAS,CAAC,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1E,aAAa,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5E,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;QACzD,CAAC;IACH,CAAC;IAED,2EAA2E;IACnE,WAAW,CAAC,QAAgB,EAAE,KAAa,EAAE,cAAsB;QACzE,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACtC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG;gBACN,QAAQ;gBACR,KAAK;gBACL,cAAc,EAAE,CAAC;gBACjB,QAAQ,EAAE,CAAC;gBACX,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;gBACvB,cAAc,EAAE,cAAc,IAAI,iBAAiB;gBACnD,aAAa,EAAE,CAAC;aACjB,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAClC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;OAMG;IACK,YAAY,CAAC,KAAiB;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,GAAG,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;YACpD,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;YACzB,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;YACnB,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACH,WAAW,CACT,QAAgB,EAChB,KAAa,EACb,WAAmB,EACnB,YAAoB,EACpB,QAAiB;QAEjB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,IAAI,iBAAiB,CAAC,CAAC;YAC/E,IAAI,QAAQ;gBAAE,KAAK,CAAC,cAAc,GAAG,QAAQ,CAAC;YAC9C,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACzB,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;YAC7E,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;YACpB,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,oEAAoE;QACtE,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,QAAgB,EAAE,KAAa;QAC1C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,uEAAuE;YACvE,+DAA+D;YAC/D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,GAAG,GAAG;oBAAE,CAAC,CAAC,aAAa,GAAG,KAAK,CAAC;YACtE,CAAC;YACD,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBACpC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;gBACvE,IAAI,KAAK,GAAG,GAAG;oBAAE,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;YAC/C,CAAC;YACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,eAAe,CAAC,QAAgB;QAC9B,IAAI,CAAC;YACH,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClD,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC;YACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,QAAgB,EAAE,KAAc,EAAE,KAAkB;QAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,EAAE,KAAK,IAAI,SAAS,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,KAAK,CAAC,aAAa,GAAG,GAAG;gBAAE,OAAO,IAAI,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,KAAK,CAAC,iBAAiB,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,iBAAiB;oBAAE,OAAO,IAAI,CAAC;gBACpG,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,eAAe;oBAAE,OAAO,IAAI,CAAC;YACxG,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,uDAAuD;QACvD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;QACxE,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,aAAa,CAAC,aAAa,GAAG,GAAG;gBAAE,OAAO,IAAI,CAAC;YACnD,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YACjC,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,KAAK,CAAC,iBAAiB,KAAK,SAAS,IAAI,aAAa,CAAC,QAAQ,IAAI,KAAK,CAAC,iBAAiB;oBAAE,OAAO,IAAI,CAAC;gBAC5G,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS,IAAI,aAAa,CAAC,cAAc,IAAI,KAAK,CAAC,eAAe;oBAAE,OAAO,IAAI,CAAC;YAChH,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,aAAwC,EAAE,QAAgB;QAC1E,OAAO,aAAa,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;;;OAOG;IACH,oBAAoB,CAAC,aAA6B;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QAEzC,6DAA6D;QAC7D,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACtD,IAAI,KAAK,CAAC,aAAa,GAAG,GAAG,EAAE,CAAC;gBAC9B,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;gBAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAChD,IAAI,SAAS,GAAG,OAAO;oBAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QAED,4DAA4D;QAC5D,MAAM,QAAQ,GAAG,aAAa,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;QAC9D,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACjC,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,oEAAoE;YACpE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;YACzF,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,IAAI,eAAe,GAAG,GAAG,CAAC;YAC1B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACrB,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC;gBACvB,MAAM,IAAI,CAAC,CAAC,cAAc,CAAC;gBAC3B,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC;YAChF,CAAC;YACD,MAAM,SAAS,GACb,CAAC,KAAK,CAAC,iBAAiB,KAAK,SAAS,IAAI,QAAQ,IAAI,KAAK,CAAC,iBAAiB,CAAC;gBAC9E,CAAC,KAAK,CAAC,eAAe,KAAK,SAAS,IAAI,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;YAC3E,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,GAAG,GAAG,CAAC,CAAC;gBACrD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC1C,IAAI,SAAS,GAAG,OAAO;oBAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;IACzG,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,SAAmB,EAAE,aAA6B;QACjE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QACxF,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAChD,CAAC;IAED,gEAAgE;IAChE,SAAS,CAAC,aAA6B;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,aAAa,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;QAC5D,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;aACrC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACjC,MAAM,SAAS,GACb,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,KAAK,CAAC,iBAAiB,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC,iBAAiB,CAAC;oBAC/E,CAAC,KAAK,CAAC,eAAe,KAAK,SAAS,IAAI,CAAC,CAAC,cAAc,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;YACxF,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC;YAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC;YACvE,OAAO;gBACL,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,cAAc,EAAE,CAAC,CAAC,cAAc;gBAChC,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,cAAc,EAAE,CAAC,CAAC,cAAc;gBAChC,UAAU;gBACV,MAAM,EAAE,iBAAiB,GAAG,CAAC,IAAI,SAAS;gBAC1C,iBAAiB;aAClB,CAAC;QACJ,CAAC,CAAC;aACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED;;;;;;;;;OASG;IACH,cAAc;QAOZ,2EAA2E;QAC3E,sEAAsE;QACtE,yEAAyE;QACzE,+BAA+B;QAC/B,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;QACpD,0EAA0E;QAC1E,6EAA6E;QAC7E,MAAM,oBAAoB,GAAG,MAAM,CAAC;QAEpC,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAClD,qEAAqE;YACrE,mEAAmE;YACnE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnC,UAAU,IAAI,CAAC,CAAC,cAAc,CAAC;gBAC/B,YAAY,IAAI,CAAC,CAAC,QAAQ,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,UAAU,IAAI,CAAC,CAAC,cAAc,CAAC;gBAC/B,YAAY,IAAI,CAAC,CAAC,QAAQ,CAAC;YAC7B,CAAC;QACH,CAAC;QACD,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,oBAAoB,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;QACnG,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,CAAC;IACnF,CAAC;IAED,yCAAyC;IACzC,QAAQ;QACN,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;YAC3B,OAAO,EAAE,MAAM,CAAC,WAAW,CACzB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAClE;SACF,CAAC;IACJ,CAAC;IAED,sEAAsE;IACtE,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,UAAU,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,2CAA2C;IAC3C,aAAa,CAAC,QAAgB;QAC5B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAClD,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,oCAAoC;IACpC,YAAY,CAAC,aAA6B;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC/C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,mEAAmE,CAAC;QAC7E,CAAC;QACD,MAAM,KAAK,GAAa,CAAC,wCAAwC,EAAE,EAAE,CAAC,CAAC;QACvE,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM;gBACpB,CAAC,CAAC,CAAC,CAAC,iBAAiB,GAAG,CAAC;oBACvB,CAAC,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa;oBACjE,CAAC,CAAC,+CAA+C;gBACnD,CAAC,CAAC,aAAa,CAAC;YAClB,KAAK,CAAC,IAAI,CACR,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;gBACnE,UAAU,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;gBACzF,aAAa,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,KAAK,EAAE,CACtD,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,mEAAmE,CAAC,CAAC;QACpF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF;AAED,+EAA+E;AAE/E,SAAS,cAAc,CAAC,EAAU;IAChC,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC;IAChD,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;IAChC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,GAAG,CAAC;IAC1B,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;AACpC,CAAC;AAED,+EAA+E;AAE/E,IAAI,cAAc,GAAuB,IAAI,CAAC;AAE9C,+CAA+C;AAC/C,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,cAAc,GAAG,IAAI,WAAW,EAAE,CAAC;IACrC,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,gBAAgB;IAC9B,cAAc,GAAG,IAAI,CAAC;AACxB,CAAC;AAED,iEAAiE;AACjE,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"quota-ledger.js","sourceRoot":"","sources":["../../src/learning/quota-ledger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/web-dashboard/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAmC,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/web-dashboard/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAmC,MAAM,WAAW,CAAC;AAgH1E;;;GAGG;AACH,UAAU,OAAO;IACf,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,OAAO;IACf,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAMD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC;IACzD,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB,GAAG,IAAI,CAcP;AAED,oFAAoF;AACpF,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAU3G;AAED,gDAAgD;AAChD,wBAAgB,QAAQ,IAAI,IAAI,CAK/B;AAgBD,uEAAuE;AACvE,wBAAgB,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsCrD;AAgtCD,wBAAgB,qBAAqB,IAAI;IAAE,MAAM,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAyC/G;AAoXD,eAAO,MAAM,kBAAkB;;;CAAiB,CAAC"}
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
* Opens at: http://localhost:3030
|
|
11
11
|
*/
|
|
12
12
|
import { createServer } from 'node:http';
|
|
13
|
-
import { createReadStream, readFileSync, existsSync, statSync } from 'node:fs';
|
|
14
|
-
import { join, extname, dirname } from 'node:path';
|
|
13
|
+
import { createReadStream, readFileSync, existsSync, statSync, watch, mkdirSync } from 'node:fs';
|
|
14
|
+
import { join, extname, dirname, basename } from 'node:path';
|
|
15
15
|
import { fileURLToPath } from 'node:url';
|
|
16
16
|
import { homedir } from 'node:os';
|
|
17
17
|
import { loadEnv } from '../utils/env.js';
|
|
@@ -42,6 +42,77 @@ const MIME_TYPES = {
|
|
|
42
42
|
};
|
|
43
43
|
let sseClients = [];
|
|
44
44
|
let nextClientId = 1;
|
|
45
|
+
// ─── Quota File Watcher (real-time Failover Timeline) ───────────────────────
|
|
46
|
+
/**
|
|
47
|
+
* Watch the memory dir for quota ledger/timeline writes and push a `quota`
|
|
48
|
+
* SSE event to connected dashboards IMMEDIATELY — so the Failover Timeline
|
|
49
|
+
* updates in real time instead of waiting for the next 10s `refresh` tick.
|
|
50
|
+
*
|
|
51
|
+
* The ledger and chat run in OTHER processes (CLI / extension) writing to
|
|
52
|
+
* quota-events.jsonl / quota-ledger.json on disk; a directory fs.watch catches
|
|
53
|
+
* those writes. Debounced because fs.watch may fire multiple events per write.
|
|
54
|
+
* Armed while at least one SSE client is connected, disarmed when the last one
|
|
55
|
+
* disconnects (no dangling watcher when nobody is viewing).
|
|
56
|
+
*/
|
|
57
|
+
let quotaWatcher = null;
|
|
58
|
+
let quotaWatchTimer = null;
|
|
59
|
+
function broadcastQuotaEvent() {
|
|
60
|
+
const payload = `event: quota\ndata: ${JSON.stringify({
|
|
61
|
+
quota: readQuotaData(),
|
|
62
|
+
serverTime: Date.now(),
|
|
63
|
+
})}\n\n`;
|
|
64
|
+
for (const client of sseClients) {
|
|
65
|
+
try {
|
|
66
|
+
client.res.write(payload);
|
|
67
|
+
}
|
|
68
|
+
catch { /* client disconnected */ }
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function armQuotaWatcher() {
|
|
72
|
+
if (quotaWatcher)
|
|
73
|
+
return;
|
|
74
|
+
try {
|
|
75
|
+
// The memory dir may not exist yet (dashboard started before any ledger /
|
|
76
|
+
// CLI write) — create it first so watch() doesn't throw ENOENT and silently
|
|
77
|
+
// disable real-time pushes for the whole session.
|
|
78
|
+
if (!existsSync(MEMORY_DIR))
|
|
79
|
+
mkdirSync(MEMORY_DIR, { recursive: true });
|
|
80
|
+
// Watch the DIRECTORY so we catch file creation too (quota-events.jsonl
|
|
81
|
+
// may not exist until the first failover).
|
|
82
|
+
quotaWatcher = watch(MEMORY_DIR, (_eventType, filename) => {
|
|
83
|
+
// Some platforms report a null filename on directory watches — treat
|
|
84
|
+
// that as a trigger too (worst case: a harmless extra quota push, since
|
|
85
|
+
// broadcastQuotaEvent re-reads fresh data). macOS FSEvents can also
|
|
86
|
+
// report FULL PATHS, so normalize with basename() before comparing.
|
|
87
|
+
const name = basename(String(filename || ''));
|
|
88
|
+
if (name && name !== 'quota-events.jsonl' && name !== 'quota-ledger.json')
|
|
89
|
+
return;
|
|
90
|
+
if (quotaWatchTimer)
|
|
91
|
+
clearTimeout(quotaWatchTimer);
|
|
92
|
+
quotaWatchTimer = setTimeout(() => {
|
|
93
|
+
quotaWatchTimer = null;
|
|
94
|
+
broadcastQuotaEvent();
|
|
95
|
+
}, 150);
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// Best-effort — a failed watcher must never break the dashboard.
|
|
100
|
+
quotaWatcher = null;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
function disarmQuotaWatcher() {
|
|
104
|
+
if (quotaWatchTimer) {
|
|
105
|
+
clearTimeout(quotaWatchTimer);
|
|
106
|
+
quotaWatchTimer = null;
|
|
107
|
+
}
|
|
108
|
+
if (quotaWatcher) {
|
|
109
|
+
try {
|
|
110
|
+
quotaWatcher.close();
|
|
111
|
+
}
|
|
112
|
+
catch { /* ignore */ }
|
|
113
|
+
quotaWatcher = null;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
45
116
|
let activePipeline = null; // goal/description of current pipeline
|
|
46
117
|
let activeNodes = [];
|
|
47
118
|
let activeEdges = [];
|
|
@@ -692,7 +763,10 @@ const AVG_PAID_RATE_PER_1K = 0.0005;
|
|
|
692
763
|
function readQuotaData() {
|
|
693
764
|
const data = readJSON(join(MEMORY_DIR, 'quota-ledger.json'));
|
|
694
765
|
if (!data?.entries) {
|
|
695
|
-
|
|
766
|
+
// Failover timeline can exist even when the ledger has no usage entries
|
|
767
|
+
// (chat records failover events on auth/rate-limit failures without a
|
|
768
|
+
// prior successful call) — always include events.
|
|
769
|
+
return { enabled: false, entries: [], events: readQuotaEvents(), updatedAt: Date.now() };
|
|
696
770
|
}
|
|
697
771
|
const now = Date.now();
|
|
698
772
|
const entries = Object.values(data.entries)
|
|
@@ -732,6 +806,9 @@ function readQuotaData() {
|
|
|
732
806
|
}
|
|
733
807
|
}
|
|
734
808
|
const estimatedSavedUsd = Math.round((freeTokens / 1000) * AVG_PAID_RATE_PER_1K * 100000) / 100000;
|
|
809
|
+
// Failover timeline (assessment #7): events appended by the ledger's
|
|
810
|
+
// park/release/window-roll paths + chat's mid-session failover bookkeeping.
|
|
811
|
+
const events = readQuotaEvents();
|
|
735
812
|
return {
|
|
736
813
|
enabled: entries.length > 0,
|
|
737
814
|
entries,
|
|
@@ -740,9 +817,42 @@ function readQuotaData() {
|
|
|
740
817
|
paidTokens,
|
|
741
818
|
paidRequests,
|
|
742
819
|
estimatedSavedUsd,
|
|
820
|
+
events,
|
|
743
821
|
updatedAt: now,
|
|
744
822
|
};
|
|
745
823
|
}
|
|
824
|
+
/**
|
|
825
|
+
* Read the quota failover timeline (quota-events.jsonl) — parked / re-enabled /
|
|
826
|
+
* released / failover events, newest first. Backs the dashboard's Failover
|
|
827
|
+
* Timeline card in the Quota section.
|
|
828
|
+
*/
|
|
829
|
+
function readQuotaEvents() {
|
|
830
|
+
try {
|
|
831
|
+
const path = join(MEMORY_DIR, 'quota-events.jsonl');
|
|
832
|
+
if (!existsSync(path))
|
|
833
|
+
return [];
|
|
834
|
+
const raw = readFileSync(path, 'utf-8');
|
|
835
|
+
const events = [];
|
|
836
|
+
for (const line of raw.split('\n').reverse()) {
|
|
837
|
+
if (!line.trim())
|
|
838
|
+
continue;
|
|
839
|
+
try {
|
|
840
|
+
const e = JSON.parse(line);
|
|
841
|
+
if (e && typeof e === 'object' && e.type && e.provider)
|
|
842
|
+
events.push(e);
|
|
843
|
+
}
|
|
844
|
+
catch {
|
|
845
|
+
// Skip corrupt lines.
|
|
846
|
+
}
|
|
847
|
+
if (events.length >= 50)
|
|
848
|
+
break;
|
|
849
|
+
}
|
|
850
|
+
return events;
|
|
851
|
+
}
|
|
852
|
+
catch {
|
|
853
|
+
return [];
|
|
854
|
+
}
|
|
855
|
+
}
|
|
746
856
|
function readRoutingInsights() {
|
|
747
857
|
// 1. Per-provider benchmark quality from benchmarks.json
|
|
748
858
|
const benchData = readJSON(join(MEMORY_DIR, 'benchmarks.json'));
|
|
@@ -1051,6 +1161,12 @@ function handleRequest(req, res) {
|
|
|
1051
1161
|
const clientId = nextClientId++;
|
|
1052
1162
|
const client = { id: clientId, res };
|
|
1053
1163
|
sseClients.push(client);
|
|
1164
|
+
// Real-time quota pushes only matter while someone is viewing — arm the
|
|
1165
|
+
// file watcher (idempotent) and disarm when the last client disconnects.
|
|
1166
|
+
// NOTE: arm unconditionally — the length===1 guard raced with a previous
|
|
1167
|
+
// client's async close (arm skipped when the stale client was still listed,
|
|
1168
|
+
// then disarm skipped too, leaving the watcher never armed).
|
|
1169
|
+
armQuotaWatcher();
|
|
1054
1170
|
const heartbeat = setInterval(() => {
|
|
1055
1171
|
try {
|
|
1056
1172
|
res.write(': heartbeat\n\n');
|
|
@@ -1082,6 +1198,8 @@ function handleRequest(req, res) {
|
|
|
1082
1198
|
clearInterval(heartbeat);
|
|
1083
1199
|
clearInterval(refreshInterval);
|
|
1084
1200
|
sseClients = sseClients.filter((c) => c.id !== clientId);
|
|
1201
|
+
if (sseClients.length === 0)
|
|
1202
|
+
disarmQuotaWatcher();
|
|
1085
1203
|
});
|
|
1086
1204
|
return;
|
|
1087
1205
|
}
|