@cortexkit/opencode-openai-auth 0.8.0 → 0.9.0
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/dist/index-301y4qa1.js +2 -0
- package/dist/index-338z7171.js +211 -0
- package/dist/index-5y4vzdf8.js +2 -0
- package/dist/{index-507jh8bv.js → index-9ehhb051.js} +1 -1
- package/dist/{index-944gsj1s.js → index-jwn4r3sw.js} +1 -1
- package/dist/{index-02h7g5f9.js → index-sdt2d2ra.js} +1 -1
- package/dist/{index-3w4vmckx.js → index-w42s0g6m.js} +2 -2
- package/dist/index.d.ts +172 -341
- package/dist/index.js +61 -61
- package/dist/internal-Y7QNVDJT.d.ts +908 -0
- package/dist/quota-normalize-3qffywcm.js +1 -0
- package/dist/rpc/port-file.js +1 -1
- package/dist/rpc/protocol.d.ts +1 -1
- package/dist/rpc/rpc-client.d.ts +2 -1
- package/dist/rpc/rpc-client.js +1 -1
- package/dist/rpc/rpc-dir.js +1 -1
- package/dist/sidebar-state-B98sERYt.d.ts +219 -0
- package/dist/sidebar-state.d.ts +2 -172
- package/dist/sidebar-state.js +1 -1
- package/dist/{token-jdvpwk60.js → token-9823y0pc.js} +1 -1
- package/dist/token-util-ypgz7rge.js +1 -0
- package/dist/tui-preferences.js +1 -1
- package/dist/tui.d.ts +27 -5
- package/package.json +2 -1
- package/src/tui-compiled/raw/core-custody-state.ts +243 -0
- package/src/tui-compiled/raw/sidebar-state.ts +140 -11
- package/src/tui-compiled/raw/tui-command-dialogs.tsx +89 -39
- package/src/tui-compiled/raw/tui.tsx +138 -18
- package/src/tui-compiled/runtime/core-custody-state.ts +243 -0
- package/src/tui-compiled/runtime/sidebar-state.ts +140 -11
- package/src/tui-compiled/runtime/tui-command-dialogs.tsx +70 -33
- package/src/tui-compiled/runtime/tui.tsx +241 -143
- package/src/tui-compiled/shared/logger.ts +9 -2
- package/dist/index-2xppkvkx.js +0 -2
- package/dist/index-nshbgkz1.js +0 -198
- package/dist/index-xyg86jgt.js +0 -2
- package/dist/protocol-Cv9ZmU0p.d.ts +0 -24
- package/dist/quota-normalize-wap0rne8.js +0 -1
- package/dist/token-util-zzm7paz9.js +0 -1
|
@@ -207,15 +207,72 @@ function CollapsedRow(props) {
|
|
|
207
207
|
return _el$8;
|
|
208
208
|
})();
|
|
209
209
|
}
|
|
210
|
+
const SPEND_CONTROL_LABEL = 'credits';
|
|
211
|
+
|
|
212
|
+
// Labels a quota snapshot contributes to the sidebar, independent of pacing or
|
|
213
|
+
// the wall clock — the label column is sized from these alone.
|
|
214
|
+
function quotaRowLabels(quota) {
|
|
215
|
+
const labels = getPresentQuotaWindows(quota).map(row => row.label);
|
|
216
|
+
if (quota?.spendControl) labels.push(SPEND_CONTROL_LABEL);
|
|
217
|
+
return labels;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// The label column is a property of the whole sidebar, not of one account's row
|
|
221
|
+
// set: every account's bars must start at the same column, so the width is
|
|
222
|
+
// derived once from every account rendered (main plus fallbacks) and threaded
|
|
223
|
+
// into each account's rows. The +1 keeps a separator before the longest label's
|
|
224
|
+
// bar; 3 is the floor the short 5h/7d labels already relied on.
|
|
225
|
+
/**
|
|
226
|
+
* Every quota the sidebar will draw, in one list.
|
|
227
|
+
*
|
|
228
|
+
* The label column is shared by all of them, so the width has to be measured
|
|
229
|
+
* over this exact set — measuring a subset is what made stacked accounts
|
|
230
|
+
* disagree about where the bar starts. Named rather than inlined at each call
|
|
231
|
+
* site because the set is the part that can be got wrong, and a call site
|
|
232
|
+
* cannot be tested without the host's rendering runtime.
|
|
233
|
+
*/
|
|
234
|
+
export function renderedQuotas(state) {
|
|
235
|
+
return [state.main?.quota ?? null, ...(state.fallbacks ?? []).filter(fallback => fallback.enabled).map(fallback => fallback.quota)];
|
|
236
|
+
}
|
|
237
|
+
export function computeQuotaLabelWidth(quotas) {
|
|
238
|
+
let width = 3;
|
|
239
|
+
for (const quota of quotas) {
|
|
240
|
+
for (const label of quotaRowLabels(quota ?? null)) {
|
|
241
|
+
width = Math.max(width, label.length + 1);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
return width;
|
|
245
|
+
}
|
|
246
|
+
|
|
210
247
|
// Maps present quota windows onto display rows and computes pacing against each
|
|
211
248
|
// dynamic duration or the historical 5h/7d duration for legacy snapshots.
|
|
212
|
-
|
|
213
|
-
|
|
249
|
+
// `labelWidth` comes from computeQuotaLabelWidth for rendered sidebars; callers
|
|
250
|
+
// that only inspect pacing may omit it and get this row set's own width.
|
|
251
|
+
export function buildQuotaRowsForDisplay(quota, now, pacingEnabled, labelWidth) {
|
|
252
|
+
const rows = getPresentQuotaWindows(quota).map(row => ({
|
|
214
253
|
key: row.key,
|
|
215
254
|
label: row.label,
|
|
216
255
|
window: row.window,
|
|
217
256
|
pacing: pacingEnabled && row.windowMs !== null ? computeQuotaPacing(row.window, row.windowMs, now) : null
|
|
218
257
|
}));
|
|
258
|
+
const spendControl = quota?.spendControl;
|
|
259
|
+
if (spendControl) {
|
|
260
|
+
rows.push({
|
|
261
|
+
key: 'spendControl',
|
|
262
|
+
label: SPEND_CONTROL_LABEL,
|
|
263
|
+
window: {
|
|
264
|
+
usedPercent: spendControl.usedPercent,
|
|
265
|
+
remainingPercent: spendControl.remainingPercent,
|
|
266
|
+
resetsAt: spendControl.resetsAt
|
|
267
|
+
},
|
|
268
|
+
pacing: null
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
const width = labelWidth ?? Math.max(3, ...rows.map(row => row.label.length + 1));
|
|
272
|
+
return rows.map(row => ({
|
|
273
|
+
...row,
|
|
274
|
+
labelWidth: width
|
|
275
|
+
}));
|
|
219
276
|
}
|
|
220
277
|
export function isQuotaLoaded(quota) {
|
|
221
278
|
return quota !== null;
|
|
@@ -234,11 +291,35 @@ export function getQuotaMetadataRows(state) {
|
|
|
234
291
|
}
|
|
235
292
|
return rows;
|
|
236
293
|
}
|
|
237
|
-
|
|
238
|
-
return
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
294
|
+
function formatGroupedAmount(value) {
|
|
295
|
+
return Math.round(value).toLocaleString('en-US');
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
// The unit names the budget the amounts are counted in, so it agrees with the
|
|
299
|
+
// total rather than staying singular against a plural quantity.
|
|
300
|
+
function pluralizeUnit(unit, count) {
|
|
301
|
+
if (count === 1) return unit;
|
|
302
|
+
return unit.endsWith('s') ? unit : `${unit}s`;
|
|
303
|
+
}
|
|
304
|
+
export function formatSpendControlAmounts(spendControl) {
|
|
305
|
+
const unit = pluralizeUnit(spendControl.unit ?? 'unit', spendControl.limit);
|
|
306
|
+
return `${formatGroupedAmount(spendControl.used)} / ${formatGroupedAmount(spendControl.limit)} ${unit}`;
|
|
307
|
+
}
|
|
308
|
+
export function getAccountMetadataRows(resetCredits, spendControl) {
|
|
309
|
+
const rows = [];
|
|
310
|
+
if (spendControl) {
|
|
311
|
+
rows.push({
|
|
312
|
+
label: 'credits',
|
|
313
|
+
value: formatSpendControlAmounts(spendControl)
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
if (resetCredits !== undefined) {
|
|
317
|
+
rows.push({
|
|
318
|
+
label: 'resets',
|
|
319
|
+
value: String(resetCredits)
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
return rows;
|
|
242
323
|
}
|
|
243
324
|
|
|
244
325
|
// Quota window row: muted label left, tone-colored bar + percentage right,
|
|
@@ -261,26 +342,26 @@ function QuotaRow(props) {
|
|
|
261
342
|
},
|
|
262
343
|
get fallback() {
|
|
263
344
|
return (() => {
|
|
264
|
-
var _el$
|
|
265
|
-
_el$
|
|
266
|
-
_el$
|
|
267
|
-
_$insertNode(_el$
|
|
268
|
-
_$insertNode(_el$
|
|
269
|
-
_$setProp(_el$
|
|
270
|
-
_$setProp(_el$
|
|
271
|
-
_$insert(_el$
|
|
272
|
-
_$insertNode(_el$
|
|
345
|
+
var _el$16 = _$createElement("box"),
|
|
346
|
+
_el$17 = _$createElement("text"),
|
|
347
|
+
_el$18 = _$createElement("text");
|
|
348
|
+
_$insertNode(_el$16, _el$17);
|
|
349
|
+
_$insertNode(_el$16, _el$18);
|
|
350
|
+
_$setProp(_el$16, "width", '100%');
|
|
351
|
+
_$setProp(_el$16, "flexDirection", 'row');
|
|
352
|
+
_$insert(_el$17, () => props.label.padEnd(props.labelWidth));
|
|
353
|
+
_$insertNode(_el$18, _$createTextNode(`—`));
|
|
273
354
|
_$effect(_p$ => {
|
|
274
355
|
var _v$9 = props.theme.textMuted,
|
|
275
356
|
_v$0 = props.theme.textMuted;
|
|
276
|
-
_v$9 !== _p$.e && (_p$.e = _$setProp(_el$
|
|
277
|
-
_v$0 !== _p$.t && (_p$.t = _$setProp(_el$
|
|
357
|
+
_v$9 !== _p$.e && (_p$.e = _$setProp(_el$17, "fg", _v$9, _p$.e));
|
|
358
|
+
_v$0 !== _p$.t && (_p$.t = _$setProp(_el$18, "fg", _v$0, _p$.t));
|
|
278
359
|
return _p$;
|
|
279
360
|
}, {
|
|
280
361
|
e: undefined,
|
|
281
362
|
t: undefined
|
|
282
363
|
});
|
|
283
|
-
return _el$
|
|
364
|
+
return _el$16;
|
|
284
365
|
})();
|
|
285
366
|
},
|
|
286
367
|
get children() {
|
|
@@ -296,16 +377,16 @@ function QuotaRow(props) {
|
|
|
296
377
|
_$insertNode(_el$1, _el$10);
|
|
297
378
|
_$insertNode(_el$1, _el$11);
|
|
298
379
|
_$setProp(_el$1, "flexDirection", 'row');
|
|
299
|
-
_$insert(_el$10, () => props.label.padEnd(
|
|
380
|
+
_$insert(_el$10, () => props.label.padEnd(props.labelWidth));
|
|
300
381
|
_$insert(_el$1, _$createComponent(For, {
|
|
301
382
|
get each() {
|
|
302
383
|
return quotaBarSegments(used(), props.appearance, props.pacing);
|
|
303
384
|
},
|
|
304
385
|
children: segment => (() => {
|
|
305
|
-
var _el$
|
|
306
|
-
_$insert(_el$
|
|
307
|
-
_$effect(_$p => _$setProp(_el$
|
|
308
|
-
return _el$
|
|
386
|
+
var _el$20 = _$createElement("text");
|
|
387
|
+
_$insert(_el$20, () => segment.text);
|
|
388
|
+
_$effect(_$p => _$setProp(_el$20, "fg", toneColor(props.theme, segment.tone), _$p));
|
|
389
|
+
return _el$20;
|
|
309
390
|
})()
|
|
310
391
|
}), _el$11);
|
|
311
392
|
_$insert(_el$11, () => ` ${String(Math.round(used())).padStart(3)}%`);
|
|
@@ -338,18 +419,18 @@ function QuotaRow(props) {
|
|
|
338
419
|
get children() {
|
|
339
420
|
var _el$13 = _$createElement("box"),
|
|
340
421
|
_el$14 = _$createElement("text"),
|
|
341
|
-
_el$
|
|
422
|
+
_el$15 = _$createElement("text");
|
|
342
423
|
_$insertNode(_el$13, _el$14);
|
|
343
|
-
_$insertNode(_el$13, _el$
|
|
424
|
+
_$insertNode(_el$13, _el$15);
|
|
344
425
|
_$setProp(_el$13, "width", '100%');
|
|
345
426
|
_$setProp(_el$13, "flexDirection", 'row');
|
|
346
|
-
_$
|
|
347
|
-
_$insert(_el$
|
|
427
|
+
_$insert(_el$14, () => ''.padEnd(props.labelWidth));
|
|
428
|
+
_$insert(_el$15, paceLine);
|
|
348
429
|
_$effect(_p$ => {
|
|
349
430
|
var _v$7 = props.theme.textMuted,
|
|
350
431
|
_v$8 = toneColor(props.theme, props.pacing?.state === 'deficit' ? 'warn' : 'muted');
|
|
351
432
|
_v$7 !== _p$.e && (_p$.e = _$setProp(_el$14, "fg", _v$7, _p$.e));
|
|
352
|
-
_v$8 !== _p$.t && (_p$.t = _$setProp(_el$
|
|
433
|
+
_v$8 !== _p$.t && (_p$.t = _$setProp(_el$15, "fg", _v$8, _p$.t));
|
|
353
434
|
return _p$;
|
|
354
435
|
}, {
|
|
355
436
|
e: undefined,
|
|
@@ -368,36 +449,36 @@ function QuotaRow(props) {
|
|
|
368
449
|
function AccountBlock(props) {
|
|
369
450
|
const statusWord = () => props.killed ? 'blocked' : props.active ? 'active' : 'idle';
|
|
370
451
|
const statusTone = () => props.killed ? 'err' : props.active ? 'ok' : 'muted';
|
|
371
|
-
const rows = () => buildQuotaRowsForDisplay(props.quota, Date.now(), props.pacingEnabled);
|
|
452
|
+
const rows = () => buildQuotaRowsForDisplay(props.quota, Date.now(), props.pacingEnabled, props.labelWidth);
|
|
372
453
|
return (() => {
|
|
373
|
-
var _el$
|
|
374
|
-
_el$
|
|
375
|
-
_el$
|
|
376
|
-
_el$
|
|
377
|
-
_el$
|
|
378
|
-
_el$
|
|
454
|
+
var _el$21 = _$createElement("box"),
|
|
455
|
+
_el$22 = _$createElement("box"),
|
|
456
|
+
_el$23 = _$createElement("text"),
|
|
457
|
+
_el$24 = _$createElement("b"),
|
|
458
|
+
_el$25 = _$createElement("text"),
|
|
459
|
+
_el$26 = _$createElement("b");
|
|
460
|
+
_$insertNode(_el$21, _el$22);
|
|
461
|
+
_$setProp(_el$21, "width", '100%');
|
|
462
|
+
_$setProp(_el$21, "flexDirection", 'column');
|
|
379
463
|
_$insertNode(_el$22, _el$23);
|
|
464
|
+
_$insertNode(_el$22, _el$25);
|
|
380
465
|
_$setProp(_el$22, "width", '100%');
|
|
381
|
-
_$setProp(_el$22, "flexDirection", '
|
|
466
|
+
_$setProp(_el$22, "flexDirection", 'row');
|
|
467
|
+
_$setProp(_el$22, "justifyContent", 'space-between');
|
|
382
468
|
_$insertNode(_el$23, _el$24);
|
|
383
|
-
_$
|
|
384
|
-
_$
|
|
385
|
-
_$
|
|
386
|
-
_$
|
|
387
|
-
_$insertNode(_el$24, _el$25);
|
|
388
|
-
_$insert(_el$25, () => props.name);
|
|
389
|
-
_$insertNode(_el$26, _el$27);
|
|
390
|
-
_$insert(_el$27, statusWord);
|
|
391
|
-
_$insert(_el$22, _$createComponent(Show, {
|
|
469
|
+
_$insert(_el$24, () => props.name);
|
|
470
|
+
_$insertNode(_el$25, _el$26);
|
|
471
|
+
_$insert(_el$26, statusWord);
|
|
472
|
+
_$insert(_el$21, _$createComponent(Show, {
|
|
392
473
|
get when() {
|
|
393
474
|
return isQuotaLoaded(props.quota);
|
|
394
475
|
},
|
|
395
476
|
get fallback() {
|
|
396
477
|
return (() => {
|
|
397
|
-
var _el$
|
|
398
|
-
_$insertNode(_el$
|
|
399
|
-
_$effect(_$p => _$setProp(_el$
|
|
400
|
-
return _el$
|
|
478
|
+
var _el$27 = _$createElement("text");
|
|
479
|
+
_$insertNode(_el$27, _$createTextNode(`checking…`));
|
|
480
|
+
_$effect(_$p => _$setProp(_el$27, "fg", props.theme.textMuted, _$p));
|
|
481
|
+
return _el$27;
|
|
401
482
|
})();
|
|
402
483
|
},
|
|
403
484
|
get children() {
|
|
@@ -407,10 +488,10 @@ function AccountBlock(props) {
|
|
|
407
488
|
},
|
|
408
489
|
get fallback() {
|
|
409
490
|
return (() => {
|
|
410
|
-
var _el$
|
|
411
|
-
_$insertNode(_el$
|
|
412
|
-
_$effect(_$p => _$setProp(_el$
|
|
413
|
-
return _el$
|
|
491
|
+
var _el$29 = _$createElement("text");
|
|
492
|
+
_$insertNode(_el$29, _$createTextNode(`—`));
|
|
493
|
+
_$effect(_$p => _$setProp(_el$29, "fg", props.theme.textMuted, _$p));
|
|
494
|
+
return _el$29;
|
|
414
495
|
})();
|
|
415
496
|
},
|
|
416
497
|
get children() {
|
|
@@ -428,6 +509,9 @@ function AccountBlock(props) {
|
|
|
428
509
|
get label() {
|
|
429
510
|
return row.label;
|
|
430
511
|
},
|
|
512
|
+
get labelWidth() {
|
|
513
|
+
return row.labelWidth;
|
|
514
|
+
},
|
|
431
515
|
get window() {
|
|
432
516
|
return row.window;
|
|
433
517
|
},
|
|
@@ -440,9 +524,9 @@ function AccountBlock(props) {
|
|
|
440
524
|
});
|
|
441
525
|
}
|
|
442
526
|
}), null);
|
|
443
|
-
_$insert(_el$
|
|
527
|
+
_$insert(_el$21, _$createComponent(For, {
|
|
444
528
|
get each() {
|
|
445
|
-
return getAccountMetadataRows(props.resetCredits);
|
|
529
|
+
return getAccountMetadataRows(props.resetCredits, props.quota?.spendControl);
|
|
446
530
|
},
|
|
447
531
|
children: row => _$createComponent(StatRow, {
|
|
448
532
|
get theme() {
|
|
@@ -461,16 +545,16 @@ function AccountBlock(props) {
|
|
|
461
545
|
var _v$1 = props.marginTop ?? 0,
|
|
462
546
|
_v$10 = props.theme.text,
|
|
463
547
|
_v$11 = toneColor(props.theme, statusTone());
|
|
464
|
-
_v$1 !== _p$.e && (_p$.e = _$setProp(_el$
|
|
465
|
-
_v$10 !== _p$.t && (_p$.t = _$setProp(_el$
|
|
466
|
-
_v$11 !== _p$.a && (_p$.a = _$setProp(_el$
|
|
548
|
+
_v$1 !== _p$.e && (_p$.e = _$setProp(_el$21, "marginTop", _v$1, _p$.e));
|
|
549
|
+
_v$10 !== _p$.t && (_p$.t = _$setProp(_el$23, "fg", _v$10, _p$.t));
|
|
550
|
+
_v$11 !== _p$.a && (_p$.a = _$setProp(_el$25, "fg", _v$11, _p$.a));
|
|
467
551
|
return _p$;
|
|
468
552
|
}, {
|
|
469
553
|
e: undefined,
|
|
470
554
|
t: undefined,
|
|
471
555
|
a: undefined
|
|
472
556
|
});
|
|
473
|
-
return _el$
|
|
557
|
+
return _el$21;
|
|
474
558
|
})();
|
|
475
559
|
}
|
|
476
560
|
|
|
@@ -497,27 +581,28 @@ function QuotaDialogContent(props) {
|
|
|
497
581
|
const theme = () => props.api.theme.current;
|
|
498
582
|
const enabledFallbacks = () => (state().fallbacks ?? []).filter(f => f.enabled);
|
|
499
583
|
const activeId = () => resolveQuotaDialogActiveId(state(), props.sessionId);
|
|
584
|
+
const quotaLabelWidth = () => computeQuotaLabelWidth(renderedQuotas(state()));
|
|
500
585
|
return (() => {
|
|
501
|
-
var _el$
|
|
586
|
+
var _el$31 = _$createElement("box"),
|
|
587
|
+
_el$32 = _$createElement("box"),
|
|
502
588
|
_el$33 = _$createElement("box"),
|
|
503
|
-
_el$34 = _$createElement("
|
|
504
|
-
_el$35 = _$createElement("
|
|
505
|
-
|
|
589
|
+
_el$34 = _$createElement("text"),
|
|
590
|
+
_el$35 = _$createElement("b");
|
|
591
|
+
_$insertNode(_el$31, _el$32);
|
|
592
|
+
_$setProp(_el$31, "flexDirection", 'column');
|
|
593
|
+
_$setProp(_el$31, "padding", 2);
|
|
594
|
+
_$setProp(_el$31, "width", '100%');
|
|
595
|
+
_$setProp(_el$31, "alignItems", 'center');
|
|
506
596
|
_$insertNode(_el$32, _el$33);
|
|
507
597
|
_$setProp(_el$32, "flexDirection", 'column');
|
|
508
|
-
_$setProp(_el$32, "
|
|
509
|
-
_$setProp(_el$32, "width", '100%');
|
|
510
|
-
_$setProp(_el$32, "alignItems", 'center');
|
|
598
|
+
_$setProp(_el$32, "width", 58);
|
|
511
599
|
_$insertNode(_el$33, _el$34);
|
|
512
|
-
_$setProp(_el$33, "
|
|
513
|
-
_$setProp(_el$33, "
|
|
600
|
+
_$setProp(_el$33, "width", '100%');
|
|
601
|
+
_$setProp(_el$33, "justifyContent", 'center');
|
|
602
|
+
_$setProp(_el$33, "marginBottom", 1);
|
|
514
603
|
_$insertNode(_el$34, _el$35);
|
|
515
|
-
_$
|
|
516
|
-
_$
|
|
517
|
-
_$setProp(_el$34, "marginBottom", 1);
|
|
518
|
-
_$insertNode(_el$35, _el$36);
|
|
519
|
-
_$insertNode(_el$36, _$createTextNode(`Codex Quota`));
|
|
520
|
-
_$insert(_el$33, _$createComponent(AccountBlock, {
|
|
604
|
+
_$insertNode(_el$35, _$createTextNode(`Codex Quota`));
|
|
605
|
+
_$insert(_el$32, _$createComponent(AccountBlock, {
|
|
521
606
|
get theme() {
|
|
522
607
|
return theme();
|
|
523
608
|
},
|
|
@@ -537,11 +622,14 @@ function QuotaDialogContent(props) {
|
|
|
537
622
|
get pacingEnabled() {
|
|
538
623
|
return prefs().sections.pacing;
|
|
539
624
|
},
|
|
625
|
+
get labelWidth() {
|
|
626
|
+
return quotaLabelWidth();
|
|
627
|
+
},
|
|
540
628
|
get resetCredits() {
|
|
541
629
|
return state().main?.resetCredits;
|
|
542
630
|
}
|
|
543
631
|
}), null);
|
|
544
|
-
_$insert(_el$
|
|
632
|
+
_$insert(_el$32, _$createComponent(Show, {
|
|
545
633
|
get when() {
|
|
546
634
|
return prefs().sections.fallbackAccounts;
|
|
547
635
|
},
|
|
@@ -572,6 +660,9 @@ function QuotaDialogContent(props) {
|
|
|
572
660
|
get pacingEnabled() {
|
|
573
661
|
return prefs().sections.pacing;
|
|
574
662
|
},
|
|
663
|
+
get labelWidth() {
|
|
664
|
+
return quotaLabelWidth();
|
|
665
|
+
},
|
|
575
666
|
get resetCredits() {
|
|
576
667
|
return fb.resetCredits;
|
|
577
668
|
},
|
|
@@ -580,8 +671,8 @@ function QuotaDialogContent(props) {
|
|
|
580
671
|
});
|
|
581
672
|
}
|
|
582
673
|
}), null);
|
|
583
|
-
_$effect(_$p => _$setProp(_el$
|
|
584
|
-
return _el$
|
|
674
|
+
_$effect(_$p => _$setProp(_el$34, "fg", theme().text, _$p));
|
|
675
|
+
return _el$31;
|
|
585
676
|
})();
|
|
586
677
|
}
|
|
587
678
|
|
|
@@ -710,6 +801,7 @@ function QuotaSidebar(props) {
|
|
|
710
801
|
route: sessionRouting().route
|
|
711
802
|
});
|
|
712
803
|
const activeAccount = () => resolveActiveAccount(sessionState());
|
|
804
|
+
const quotaLabelWidth = () => computeQuotaLabelWidth(renderedQuotas(state()));
|
|
713
805
|
const activeQuotaSummary = () => getCollapsedQuotaSummary(activeAccount().quota);
|
|
714
806
|
const activePacingDeficit = () => {
|
|
715
807
|
if (!prefs().sections.pacing) return false;
|
|
@@ -730,33 +822,33 @@ function QuotaSidebar(props) {
|
|
|
730
822
|
const refreshBackedOff = () => state().main?.refreshBackedOff === true;
|
|
731
823
|
const degraded = () => killedNames().length > 0 || quotaBackedOff() || refreshBackedOff();
|
|
732
824
|
return (() => {
|
|
733
|
-
var _el$
|
|
825
|
+
var _el$37 = _$createElement("box"),
|
|
826
|
+
_el$38 = _$createElement("box"),
|
|
734
827
|
_el$39 = _$createElement("box"),
|
|
735
|
-
_el$40 = _$createElement("
|
|
736
|
-
_el$41 = _$createElement("
|
|
737
|
-
|
|
828
|
+
_el$40 = _$createElement("text"),
|
|
829
|
+
_el$41 = _$createElement("b");
|
|
830
|
+
_$insertNode(_el$37, _el$38);
|
|
831
|
+
_$setProp(_el$37, "width", '100%');
|
|
832
|
+
_$setProp(_el$37, "flexDirection", 'column');
|
|
833
|
+
_$setProp(_el$37, "border", SINGLE_BORDER);
|
|
834
|
+
_$setProp(_el$37, "paddingTop", 1);
|
|
835
|
+
_$setProp(_el$37, "paddingBottom", 1);
|
|
836
|
+
_$setProp(_el$37, "paddingLeft", 1);
|
|
837
|
+
_$setProp(_el$37, "paddingRight", 1);
|
|
738
838
|
_$insertNode(_el$38, _el$39);
|
|
739
839
|
_$setProp(_el$38, "width", '100%');
|
|
740
|
-
_$setProp(_el$38, "flexDirection", '
|
|
741
|
-
_$setProp(_el$38, "
|
|
742
|
-
_$setProp(_el$38, "
|
|
743
|
-
_$setProp(_el$38, "
|
|
744
|
-
_$setProp(_el$38, "paddingLeft", 1);
|
|
745
|
-
_$setProp(_el$38, "paddingRight", 1);
|
|
746
|
-
_$insertNode(_el$39, _el$40);
|
|
747
|
-
_$setProp(_el$39, "width", '100%');
|
|
748
|
-
_$setProp(_el$39, "flexDirection", 'row');
|
|
749
|
-
_$setProp(_el$39, "justifyContent", 'space-between');
|
|
750
|
-
_$setProp(_el$39, "alignItems", 'center');
|
|
751
|
-
_$setProp(_el$39, "onMouseDown", () => {
|
|
840
|
+
_$setProp(_el$38, "flexDirection", 'row');
|
|
841
|
+
_$setProp(_el$38, "justifyContent", 'space-between');
|
|
842
|
+
_$setProp(_el$38, "alignItems", 'center');
|
|
843
|
+
_$setProp(_el$38, "onMouseDown", () => {
|
|
752
844
|
if (hasData()) props.controller.toggleCollapsed();
|
|
753
845
|
});
|
|
846
|
+
_$insertNode(_el$39, _el$40);
|
|
847
|
+
_$setProp(_el$39, "paddingLeft", 1);
|
|
848
|
+
_$setProp(_el$39, "paddingRight", 1);
|
|
754
849
|
_$insertNode(_el$40, _el$41);
|
|
755
|
-
_$
|
|
756
|
-
_$
|
|
757
|
-
_$insertNode(_el$41, _el$42);
|
|
758
|
-
_$insert(_el$42, headerLabel);
|
|
759
|
-
_$insert(_el$39, _$createComponent(Show, {
|
|
850
|
+
_$insert(_el$41, headerLabel);
|
|
851
|
+
_$insert(_el$38, _$createComponent(Show, {
|
|
760
852
|
get when() {
|
|
761
853
|
return degraded();
|
|
762
854
|
},
|
|
@@ -766,36 +858,36 @@ function QuotaSidebar(props) {
|
|
|
766
858
|
return prefs().header.showVersion && PLUGIN_VERSION !== '';
|
|
767
859
|
},
|
|
768
860
|
get children() {
|
|
769
|
-
var _el$
|
|
770
|
-
_$insert(_el$
|
|
771
|
-
_$effect(_$p => _$setProp(_el$
|
|
772
|
-
return _el$
|
|
861
|
+
var _el$50 = _$createElement("text");
|
|
862
|
+
_$insert(_el$50, `v${PLUGIN_VERSION}`);
|
|
863
|
+
_$effect(_$p => _$setProp(_el$50, "fg", theme().textMuted, _$p));
|
|
864
|
+
return _el$50;
|
|
773
865
|
}
|
|
774
866
|
});
|
|
775
867
|
},
|
|
776
868
|
get children() {
|
|
777
|
-
var _el$
|
|
778
|
-
_el$
|
|
779
|
-
_el$
|
|
869
|
+
var _el$42 = _$createElement("box"),
|
|
870
|
+
_el$43 = _$createElement("text"),
|
|
871
|
+
_el$44 = _$createElement("b");
|
|
872
|
+
_$insertNode(_el$42, _el$43);
|
|
873
|
+
_$setProp(_el$42, "paddingLeft", 1);
|
|
874
|
+
_$setProp(_el$42, "paddingRight", 1);
|
|
780
875
|
_$insertNode(_el$43, _el$44);
|
|
781
|
-
_$
|
|
782
|
-
_$setProp(_el$43, "paddingRight", 1);
|
|
783
|
-
_$insertNode(_el$44, _el$45);
|
|
784
|
-
_$insertNode(_el$45, _$createTextNode(`LIMITED`));
|
|
876
|
+
_$insertNode(_el$44, _$createTextNode(`LIMITED`));
|
|
785
877
|
_$effect(_p$ => {
|
|
786
878
|
var _v$12 = theme().warning,
|
|
787
879
|
_v$13 = theme().background;
|
|
788
|
-
_v$12 !== _p$.e && (_p$.e = _$setProp(_el$
|
|
789
|
-
_v$13 !== _p$.t && (_p$.t = _$setProp(_el$
|
|
880
|
+
_v$12 !== _p$.e && (_p$.e = _$setProp(_el$42, "backgroundColor", _v$12, _p$.e));
|
|
881
|
+
_v$13 !== _p$.t && (_p$.t = _$setProp(_el$43, "fg", _v$13, _p$.t));
|
|
790
882
|
return _p$;
|
|
791
883
|
}, {
|
|
792
884
|
e: undefined,
|
|
793
885
|
t: undefined
|
|
794
886
|
});
|
|
795
|
-
return _el$
|
|
887
|
+
return _el$42;
|
|
796
888
|
}
|
|
797
889
|
}), null);
|
|
798
|
-
_$insert(_el$
|
|
890
|
+
_$insert(_el$37, _$createComponent(Show, {
|
|
799
891
|
get when() {
|
|
800
892
|
return _$memo(() => !!collapsed())() && hasData();
|
|
801
893
|
},
|
|
@@ -814,41 +906,41 @@ function QuotaSidebar(props) {
|
|
|
814
906
|
},
|
|
815
907
|
get fallback() {
|
|
816
908
|
return (() => {
|
|
817
|
-
var _el$
|
|
818
|
-
_$insertNode(_el$
|
|
819
|
-
_$effect(_$p => _$setProp(_el$
|
|
820
|
-
return _el$
|
|
909
|
+
var _el$51 = _$createElement("text");
|
|
910
|
+
_$insertNode(_el$51, _$createTextNode(`—`));
|
|
911
|
+
_$effect(_$p => _$setProp(_el$51, "fg", theme().textMuted, _$p));
|
|
912
|
+
return _el$51;
|
|
821
913
|
})();
|
|
822
914
|
},
|
|
823
915
|
get children() {
|
|
824
|
-
var _el$
|
|
825
|
-
_el$
|
|
826
|
-
_el$
|
|
827
|
-
_el$
|
|
916
|
+
var _el$46 = _$createElement("box"),
|
|
917
|
+
_el$47 = _$createElement("text"),
|
|
918
|
+
_el$48 = _$createElement("b"),
|
|
919
|
+
_el$49 = _$createElement("text");
|
|
920
|
+
_$insertNode(_el$46, _el$47);
|
|
921
|
+
_$insertNode(_el$46, _el$49);
|
|
922
|
+
_$setProp(_el$46, "flexDirection", 'row');
|
|
828
923
|
_$insertNode(_el$47, _el$48);
|
|
829
|
-
_$
|
|
830
|
-
_$
|
|
831
|
-
_$insertNode(_el$48, _el$49);
|
|
832
|
-
_$insert(_el$49, () => activeQuotaSummary().text);
|
|
833
|
-
_$insert(_el$50, () => activeAccount().killed ? ' \u2298' : ' \u25cf');
|
|
924
|
+
_$insert(_el$48, () => activeQuotaSummary().text);
|
|
925
|
+
_$insert(_el$49, () => activeAccount().killed ? ' \u2298' : ' \u25cf');
|
|
834
926
|
_$effect(_p$ => {
|
|
835
927
|
var _v$14 = toneColor(theme(), activeQuotaTone()),
|
|
836
928
|
_v$15 = toneColor(theme(), activeAccount().killed ? 'err' : activeQuotaTone());
|
|
837
|
-
_v$14 !== _p$.e && (_p$.e = _$setProp(_el$
|
|
838
|
-
_v$15 !== _p$.t && (_p$.t = _$setProp(_el$
|
|
929
|
+
_v$14 !== _p$.e && (_p$.e = _$setProp(_el$47, "fg", _v$14, _p$.e));
|
|
930
|
+
_v$15 !== _p$.t && (_p$.t = _$setProp(_el$49, "fg", _v$15, _p$.t));
|
|
839
931
|
return _p$;
|
|
840
932
|
}, {
|
|
841
933
|
e: undefined,
|
|
842
934
|
t: undefined
|
|
843
935
|
});
|
|
844
|
-
return _el$
|
|
936
|
+
return _el$46;
|
|
845
937
|
}
|
|
846
938
|
});
|
|
847
939
|
}
|
|
848
940
|
});
|
|
849
941
|
}
|
|
850
942
|
}), null);
|
|
851
|
-
_$insert(_el$
|
|
943
|
+
_$insert(_el$37, _$createComponent(Show, {
|
|
852
944
|
get when() {
|
|
853
945
|
return !collapsed() || !hasData();
|
|
854
946
|
},
|
|
@@ -859,14 +951,14 @@ function QuotaSidebar(props) {
|
|
|
859
951
|
},
|
|
860
952
|
get fallback() {
|
|
861
953
|
return (() => {
|
|
862
|
-
var _el$
|
|
863
|
-
_el$
|
|
864
|
-
_$insertNode(_el$
|
|
865
|
-
_$setProp(_el$
|
|
866
|
-
_$setProp(_el$
|
|
867
|
-
_$insertNode(_el$
|
|
868
|
-
_$effect(_$p => _$setProp(_el$
|
|
869
|
-
return _el$
|
|
954
|
+
var _el$53 = _$createElement("box"),
|
|
955
|
+
_el$54 = _$createElement("text");
|
|
956
|
+
_$insertNode(_el$53, _el$54);
|
|
957
|
+
_$setProp(_el$53, "marginTop", 1);
|
|
958
|
+
_$setProp(_el$53, "width", '100%');
|
|
959
|
+
_$insertNode(_el$54, _$createTextNode(`Waiting for quota…`));
|
|
960
|
+
_$effect(_$p => _$setProp(_el$54, "fg", theme().textMuted, _$p));
|
|
961
|
+
return _el$53;
|
|
870
962
|
})();
|
|
871
963
|
},
|
|
872
964
|
get children() {
|
|
@@ -900,6 +992,9 @@ function QuotaSidebar(props) {
|
|
|
900
992
|
get pacingEnabled() {
|
|
901
993
|
return prefs().sections.pacing;
|
|
902
994
|
},
|
|
995
|
+
get labelWidth() {
|
|
996
|
+
return quotaLabelWidth();
|
|
997
|
+
},
|
|
903
998
|
get resetCredits() {
|
|
904
999
|
return state().main?.resetCredits;
|
|
905
1000
|
}
|
|
@@ -934,6 +1029,9 @@ function QuotaSidebar(props) {
|
|
|
934
1029
|
get pacingEnabled() {
|
|
935
1030
|
return prefs().sections.pacing;
|
|
936
1031
|
},
|
|
1032
|
+
get labelWidth() {
|
|
1033
|
+
return quotaLabelWidth();
|
|
1034
|
+
},
|
|
937
1035
|
get resetCredits() {
|
|
938
1036
|
return fb.resetCredits;
|
|
939
1037
|
},
|
|
@@ -1058,16 +1156,16 @@ function QuotaSidebar(props) {
|
|
|
1058
1156
|
var _v$16 = theme().borderActive,
|
|
1059
1157
|
_v$17 = theme().accent,
|
|
1060
1158
|
_v$18 = theme().background;
|
|
1061
|
-
_v$16 !== _p$.e && (_p$.e = _$setProp(_el$
|
|
1062
|
-
_v$17 !== _p$.t && (_p$.t = _$setProp(_el$
|
|
1063
|
-
_v$18 !== _p$.a && (_p$.a = _$setProp(_el$
|
|
1159
|
+
_v$16 !== _p$.e && (_p$.e = _$setProp(_el$37, "borderColor", _v$16, _p$.e));
|
|
1160
|
+
_v$17 !== _p$.t && (_p$.t = _$setProp(_el$39, "backgroundColor", _v$17, _p$.t));
|
|
1161
|
+
_v$18 !== _p$.a && (_p$.a = _$setProp(_el$40, "fg", _v$18, _p$.a));
|
|
1064
1162
|
return _p$;
|
|
1065
1163
|
}, {
|
|
1066
1164
|
e: undefined,
|
|
1067
1165
|
t: undefined,
|
|
1068
1166
|
a: undefined
|
|
1069
1167
|
});
|
|
1070
|
-
return _el$
|
|
1168
|
+
return _el$37;
|
|
1071
1169
|
})();
|
|
1072
1170
|
}
|
|
1073
1171
|
const tui = async api => {
|
|
@@ -85,12 +85,19 @@ function isSecretKey(key: string): boolean {
|
|
|
85
85
|
// needed for debugging — so it is intentionally NOT redacted by name. The genuine
|
|
86
86
|
// ChatGPT id is kept out of logs at the source instead.
|
|
87
87
|
if (k === 'chatgptaccountid') return true
|
|
88
|
+
// Operator identity carried on a served vault credential. These arrived with
|
|
89
|
+
// the client widening that added `accountId`/`email`/`orgName`/`projectId`;
|
|
90
|
+
// they are personal data with no diagnostic value, so they never reach a log
|
|
91
|
+
// file. The structural guard is not logging a served credential wholesale —
|
|
92
|
+
// this list only closes the fields that exist today.
|
|
93
|
+
if (k === 'email' || k === 'orgname' || k === 'organizationname') return true
|
|
88
94
|
if (k.includes('apikey')) return true
|
|
89
95
|
if (k.endsWith('secret') || k.endsWith('password')) return true
|
|
90
96
|
if (k.endsWith('token') && !k.endsWith('tokens')) return true
|
|
91
97
|
return false
|
|
92
98
|
}
|
|
93
|
-
const TOKEN_VALUE =
|
|
99
|
+
const TOKEN_VALUE =
|
|
100
|
+
/\b(Bearer\s+[\w.-]+|sk-[\w-]+|eyJ[\w.-]+)\b|ckh_[A-Za-z0-9_-]{20,}/g
|
|
94
101
|
export function redact(value: unknown): unknown {
|
|
95
102
|
return redactInner(value, new WeakSet<object>())
|
|
96
103
|
}
|
|
@@ -219,7 +226,7 @@ function emit(channel: string, level: Level, message: string, data?: unknown) {
|
|
|
219
226
|
if (logFileSource === undefined) return
|
|
220
227
|
if (ORDER[level] > ORDER[configuredLevel()]) return
|
|
221
228
|
const line =
|
|
222
|
-
`[${new Date().toISOString()}] ${level.toUpperCase()} [${channel}] ${message}` +
|
|
229
|
+
`[${new Date().toISOString()}] ${level.toUpperCase()} [${channel}] ${redactStrings(message)}` +
|
|
223
230
|
(data === undefined ? '' : safeSerialize(data)) +
|
|
224
231
|
'\n'
|
|
225
232
|
buffer.push(line)
|