@cortexkit/opencode-openai-auth 1.0.5 → 1.1.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/bin.js +9 -8
- package/dist/{pool-lifecycle-C_6YRmsh.d.ts → codex-request-BXDXToyt.d.ts} +158 -27
- package/dist/index-0yh85bwb.js +69 -0
- package/dist/{index-826s1yxa.js → index-4c8yw54k.js} +2 -2
- package/dist/{index-y4gxyxqd.js → index-7c6sxtd6.js} +2 -2
- package/dist/index-7eb3dw37.js +90 -0
- package/dist/index-8re8rprk.js +2 -0
- package/dist/{index-66asrje2.js → index-csky2xpg.js} +1 -1
- package/dist/index-edbdscy7.js +65 -0
- package/dist/{index-pg305s90.js → index-f2fmb596.js} +1 -1
- package/dist/{index-fsxbncpw.js → index-j8v2xwq6.js} +1 -1
- package/dist/{index-fsky1rsh.js → index-k6cydkgt.js} +2 -2
- package/dist/{index-116q849r.js → index-m5qmvr6c.js} +2 -2
- package/dist/index-msx2m78k.js +8 -0
- package/dist/{index-nx2qh047.js → index-zpm95mt5.js} +1 -1
- package/dist/index.d.ts +15 -7
- package/dist/index.js +1 -1
- package/dist/{map-m6f5a_IA.d.ts → map-Buq-GW7l.d.ts} +1 -1
- package/dist/{protocol-DctqemRI.d.ts → model-YRg7Uowo.d.ts} +67 -25
- package/dist/{port-file-ZPlxXB4G.d.ts → port-file-CxEpgSHY.d.ts} +1 -1
- package/dist/protocol-CDV1Pc6h.d.ts +29 -0
- package/dist/rpc/port-file.d.ts +1 -1
- package/dist/rpc/port-file.js +1 -1
- package/dist/rpc/protocol.d.ts +1 -1
- package/dist/rpc/protocol.js +1 -1
- package/dist/rpc/rpc-client.d.ts +3 -3
- package/dist/rpc/rpc-client.js +1 -1
- package/dist/rpc/rpc-dir.js +1 -1
- package/dist/{sidebar-state-z_M7Trnd.d.ts → sidebar-state-DjTWUbmf.d.ts} +15 -9
- package/dist/sidebar-state.d.ts +1 -1
- package/dist/sidebar-state.js +1 -1
- package/dist/{token-bzhkgc29.js → token-rz4t3ay6.js} +1 -1
- package/dist/token-util-tpy2c7h6.js +1 -0
- package/dist/tui-preferences.js +1 -1
- package/dist/tui.d.ts +20 -2
- package/dist/v2/server.d.ts +73 -1
- package/dist/v2/server.js +3 -3
- package/package.json +2 -2
- package/src/tui-compiled/raw/shared/0332701351b3eeec-format.js +13 -8
- package/src/tui-compiled/raw/shared/0f77ebc3c914c9c6-custody.js +354 -0
- package/src/tui-compiled/raw/shared/134b008900698fe0-backoff.js +92 -0
- package/src/tui-compiled/raw/shared/169b2b4bf30909bc-consumer.js +393 -0
- package/src/tui-compiled/raw/shared/2577ec69f9973ae9-quota-normalize.js +154 -0
- package/src/tui-compiled/raw/shared/2dce6e9613993329-quota-manager.js +473 -0
- package/src/tui-compiled/raw/shared/30f5bc480f31f51c-roster.js +566 -0
- package/src/tui-compiled/raw/shared/43fc9e6b994519c7-refresh-lock.js +0 -1
- package/src/tui-compiled/raw/shared/4593a4d71edf69fd-tombstone.js +25 -0
- package/src/tui-compiled/raw/shared/4d05c2d7a531aece-oauth.js +500 -0
- package/src/tui-compiled/raw/shared/6371b24a0573d79e-any-signal.js +42 -0
- package/src/tui-compiled/raw/shared/7c140680fc81be92-interlock.js +29 -0
- package/src/tui-compiled/raw/shared/85512cc5263ba259-provider.js +87 -0
- package/src/tui-compiled/raw/shared/abd062d633e29fd2-pool-routing.js +192 -0
- package/src/tui-compiled/raw/shared/b9588ad4725c1d10-enrollment.js +806 -0
- package/src/tui-compiled/raw/shared/bfbdd0f9aae56b47-pool-quota.js +85 -0
- package/src/tui-compiled/raw/shared/c852a15cfe489d12-pool.js +0 -1
- package/src/tui-compiled/raw/shared/ca0fccaba1d87af4-errors.js +8 -0
- package/src/tui-compiled/raw/shared/d0f0b6be200311af-insula.js +152 -0
- package/src/tui-compiled/raw/shared/d9d2892a4c371301-host-slot.js +72 -0
- package/src/tui-compiled/raw/shared/dbc61cd405941828-accounts.js +1470 -0
- package/src/tui-compiled/raw/shared/e8cd4929507508d8-refresh-file-lock.js +26 -12
- package/src/tui-compiled/raw/shared/e8d3c8da776ef9cd-index.js +24 -0
- package/src/tui-compiled/raw/sidebar-state.js +41 -14
- package/src/tui-compiled/raw/tui/command-dialogs.tsx +3 -34
- package/src/tui-compiled/raw/tui/section-text.js +21 -0
- package/src/tui-compiled/raw/tui/v2-dialog.js +137 -0
- package/src/tui-compiled/raw/tui/v2.tsx +133 -0
- package/src/tui-compiled/raw/tui.tsx +146 -40
- package/src/tui-compiled/runtime/shared/0332701351b3eeec-format.js +13 -8
- package/src/tui-compiled/runtime/shared/0f77ebc3c914c9c6-custody.js +354 -0
- package/src/tui-compiled/runtime/shared/134b008900698fe0-backoff.js +92 -0
- package/src/tui-compiled/runtime/shared/169b2b4bf30909bc-consumer.js +393 -0
- package/src/tui-compiled/runtime/shared/2577ec69f9973ae9-quota-normalize.js +154 -0
- package/src/tui-compiled/runtime/shared/2dce6e9613993329-quota-manager.js +473 -0
- package/src/tui-compiled/runtime/shared/30f5bc480f31f51c-roster.js +566 -0
- package/src/tui-compiled/runtime/shared/43fc9e6b994519c7-refresh-lock.js +0 -1
- package/src/tui-compiled/runtime/shared/4593a4d71edf69fd-tombstone.js +25 -0
- package/src/tui-compiled/runtime/shared/4d05c2d7a531aece-oauth.js +500 -0
- package/src/tui-compiled/runtime/shared/6371b24a0573d79e-any-signal.js +42 -0
- package/src/tui-compiled/runtime/shared/7c140680fc81be92-interlock.js +29 -0
- package/src/tui-compiled/runtime/shared/85512cc5263ba259-provider.js +87 -0
- package/src/tui-compiled/runtime/shared/abd062d633e29fd2-pool-routing.js +192 -0
- package/src/tui-compiled/runtime/shared/b9588ad4725c1d10-enrollment.js +806 -0
- package/src/tui-compiled/runtime/shared/bfbdd0f9aae56b47-pool-quota.js +85 -0
- package/src/tui-compiled/runtime/shared/c852a15cfe489d12-pool.js +0 -1
- package/src/tui-compiled/runtime/shared/ca0fccaba1d87af4-errors.js +8 -0
- package/src/tui-compiled/runtime/shared/d0f0b6be200311af-insula.js +152 -0
- package/src/tui-compiled/runtime/shared/d9d2892a4c371301-host-slot.js +72 -0
- package/src/tui-compiled/runtime/shared/dbc61cd405941828-accounts.js +1470 -0
- package/src/tui-compiled/runtime/shared/e8cd4929507508d8-refresh-file-lock.js +26 -12
- package/src/tui-compiled/runtime/shared/e8d3c8da776ef9cd-index.js +24 -0
- package/src/tui-compiled/runtime/sidebar-state.js +41 -14
- package/src/tui-compiled/runtime/tui/command-dialogs.js +3 -15
- package/src/tui-compiled/runtime/tui/section-text.js +21 -0
- package/src/tui-compiled/runtime/tui/v2-dialog.js +137 -0
- package/src/tui-compiled/runtime/tui/v2.js +95 -0
- package/src/tui-compiled/runtime/tui.js +255 -163
- package/dist/index-4fnghj9e.js +0 -65
- package/dist/index-a69gr76b.js +0 -2
- package/dist/index-h263aftt.js +0 -157
- package/dist/index-ssj7m2rd.js +0 -8
- package/dist/index-ydz3hbhc.js +0 -2
- package/dist/token-util-4a2xxnpg.js +0 -1
|
@@ -11,7 +11,7 @@ import { createElement as _$createElement } from "opentui:runtime-module:%40open
|
|
|
11
11
|
import { readFileSync } from "node:fs";
|
|
12
12
|
import { dirname, join } from "node:path";
|
|
13
13
|
import { fileURLToPath } from "node:url";
|
|
14
|
-
import { formatQuota, quotaTextParts } from "./shared/d5a8f1061ee2f114-index.js";
|
|
14
|
+
import { formatQuota, quotaTextParts, quotaWindowParts } from "./shared/d5a8f1061ee2f114-index.js";
|
|
15
15
|
import { createEffect, createSignal, For, onCleanup, Show } from "opentui:runtime-module:solid-js";
|
|
16
16
|
import { createLogger } from "./logger.js";
|
|
17
17
|
import { isNotifyPayload } from "./rpc/protocol.js";
|
|
@@ -19,6 +19,7 @@ import { createRpcClient } from "./rpc/rpc-client.js";
|
|
|
19
19
|
import { resolveRpcDir } from "./rpc/rpc-dir.js";
|
|
20
20
|
import { computeQuotaPacing, DEFAULT_SIDEBAR_STATE, getCollapsedQuotaSummary, getPresentQuotaWindows, getSidebarState, resolveActiveAccount, resolveSessionSidebarRouting, resolveSessionStickyAccount, sidebarQuotaProjection } from "./sidebar-state.js";
|
|
21
21
|
import { openCommandDialog } from "./tui/command-dialogs.js";
|
|
22
|
+
import { setupTui } from "./tui/v2.js";
|
|
22
23
|
import { computeEffectiveOrder, DEFAULT_SLOT_ORDER, PLUGIN_KEY, queueTuiPreferenceUpdate, readTuiPreferencesFile, resolveOpenaiAuthPrefs, watchTuiPreferences } from "./tui-preferences.js";
|
|
23
24
|
const RPC_POLL_MS = 500;
|
|
24
25
|
let rpcPollStarted = false;
|
|
@@ -244,7 +245,7 @@ function quotaRowLabels(quota) {
|
|
|
244
245
|
*/
|
|
245
246
|
export function renderedQuotas(state) {
|
|
246
247
|
// In vault mode only the vault accounts are rendered.
|
|
247
|
-
if (state.vaultAccounts !== undefined) return state.vaultAccounts.
|
|
248
|
+
if (state.vaultAccounts !== undefined) return state.vaultAccounts.map(account => account.quota);
|
|
248
249
|
return [state.main?.quota ?? null, ...(state.fallbacks ?? []).filter(fallback => fallback.enabled).map(fallback => fallback.quota)];
|
|
249
250
|
}
|
|
250
251
|
export function computeQuotaLabelWidth(quotas) {
|
|
@@ -263,34 +264,48 @@ export function computeQuotaLabelWidth(quotas) {
|
|
|
263
264
|
// that only inspect pacing may omit it and get this row set's own width.
|
|
264
265
|
export function buildQuotaRowsForDisplay(quota, now, pacingEnabled, labelWidth) {
|
|
265
266
|
const projection = sidebarQuotaProjection(quota, now);
|
|
266
|
-
const rows = getPresentQuotaWindows(quota).map(row =>
|
|
267
|
-
|
|
268
|
-
label: row.label,
|
|
269
|
-
window: row.window,
|
|
270
|
-
text: formatQuota(projection && {
|
|
267
|
+
const rows = getPresentQuotaWindows(quota).map(row => {
|
|
268
|
+
const rowProjection = projection && {
|
|
271
269
|
...projection,
|
|
272
270
|
budget: undefined,
|
|
273
271
|
limits: projection.limits.filter(limit => limit.label === row.key)
|
|
274
|
-
}
|
|
272
|
+
};
|
|
273
|
+
const reset = quotaWindowParts(rowProjection, {
|
|
275
274
|
now,
|
|
276
|
-
form: 'compact',
|
|
277
275
|
staleAfterMs: Number.POSITIVE_INFINITY
|
|
278
|
-
})
|
|
279
|
-
|
|
280
|
-
|
|
276
|
+
}).windows[0];
|
|
277
|
+
return {
|
|
278
|
+
key: row.key,
|
|
279
|
+
label: row.label,
|
|
280
|
+
window: row.window,
|
|
281
|
+
text: formatQuota(rowProjection, {
|
|
282
|
+
now,
|
|
283
|
+
form: 'compact',
|
|
284
|
+
staleAfterMs: Number.POSITIVE_INFINITY
|
|
285
|
+
}),
|
|
286
|
+
resetText: reset?.resetIn ?? (reset?.resetSinceReading ? 'reset' : undefined),
|
|
287
|
+
pacing: pacingEnabled && row.windowMs !== null ? computeQuotaPacing(row.window, row.windowMs, now) : null
|
|
288
|
+
};
|
|
289
|
+
});
|
|
281
290
|
const spendControl = quota?.spendControl;
|
|
282
291
|
if (spendControl) {
|
|
292
|
+
const rowProjection = projection && {
|
|
293
|
+
...projection,
|
|
294
|
+
limits: []
|
|
295
|
+
};
|
|
296
|
+
const reset = quotaWindowParts(rowProjection, {
|
|
297
|
+
now,
|
|
298
|
+
staleAfterMs: Number.POSITIVE_INFINITY
|
|
299
|
+
}).windows[0];
|
|
283
300
|
rows.push({
|
|
284
301
|
key: 'spendControl',
|
|
285
302
|
label: SPEND_CONTROL_LABEL,
|
|
286
|
-
text: formatQuota(
|
|
287
|
-
...projection,
|
|
288
|
-
limits: []
|
|
289
|
-
}, {
|
|
303
|
+
text: formatQuota(rowProjection, {
|
|
290
304
|
now,
|
|
291
305
|
form: 'compact',
|
|
292
306
|
staleAfterMs: Number.POSITIVE_INFINITY
|
|
293
307
|
}),
|
|
308
|
+
resetText: reset?.resetIn ?? (reset?.resetSinceReading ? 'reset' : undefined),
|
|
294
309
|
window: {
|
|
295
310
|
usedPercent: spendControl.usedPercent,
|
|
296
311
|
remainingPercent: spendControl.remainingPercent,
|
|
@@ -378,26 +393,26 @@ function QuotaRow(props) {
|
|
|
378
393
|
},
|
|
379
394
|
get fallback() {
|
|
380
395
|
return (() => {
|
|
381
|
-
var _el$
|
|
382
|
-
_el$
|
|
383
|
-
_el$
|
|
384
|
-
_$insertNode(_el$
|
|
385
|
-
_$insertNode(_el$
|
|
386
|
-
_$setProp(_el$
|
|
387
|
-
_$setProp(_el$
|
|
388
|
-
_$insert(_el$
|
|
389
|
-
_$insertNode(_el$
|
|
396
|
+
var _el$16 = _$createElement("box"),
|
|
397
|
+
_el$17 = _$createElement("text"),
|
|
398
|
+
_el$18 = _$createElement("text");
|
|
399
|
+
_$insertNode(_el$16, _el$17);
|
|
400
|
+
_$insertNode(_el$16, _el$18);
|
|
401
|
+
_$setProp(_el$16, "width", '100%');
|
|
402
|
+
_$setProp(_el$16, "flexDirection", 'row');
|
|
403
|
+
_$insert(_el$17, () => props.label.padEnd(props.labelWidth));
|
|
404
|
+
_$insertNode(_el$18, _$createTextNode(`—`));
|
|
390
405
|
_$effect(_p$ => {
|
|
391
406
|
var _v$9 = props.theme.textMuted,
|
|
392
407
|
_v$0 = props.theme.textMuted;
|
|
393
|
-
_v$9 !== _p$.e && (_p$.e = _$setProp(_el$
|
|
394
|
-
_v$0 !== _p$.t && (_p$.t = _$setProp(_el$
|
|
408
|
+
_v$9 !== _p$.e && (_p$.e = _$setProp(_el$17, "fg", _v$9, _p$.e));
|
|
409
|
+
_v$0 !== _p$.t && (_p$.t = _$setProp(_el$18, "fg", _v$0, _p$.t));
|
|
395
410
|
return _p$;
|
|
396
411
|
}, {
|
|
397
412
|
e: undefined,
|
|
398
413
|
t: undefined
|
|
399
414
|
});
|
|
400
|
-
return _el$
|
|
415
|
+
return _el$16;
|
|
401
416
|
})();
|
|
402
417
|
},
|
|
403
418
|
get children() {
|
|
@@ -419,13 +434,24 @@ function QuotaRow(props) {
|
|
|
419
434
|
return quotaBarSegments(used(), props.appearance, props.pacing);
|
|
420
435
|
},
|
|
421
436
|
children: segment => (() => {
|
|
422
|
-
var _el$
|
|
423
|
-
_$insert(_el$
|
|
424
|
-
_$effect(_$p => _$setProp(_el$
|
|
425
|
-
return _el$
|
|
437
|
+
var _el$20 = _$createElement("text");
|
|
438
|
+
_$insert(_el$20, () => segment.text);
|
|
439
|
+
_$effect(_$p => _$setProp(_el$20, "fg", toneColor(props.theme, segment.tone), _$p));
|
|
440
|
+
return _el$20;
|
|
426
441
|
})()
|
|
427
442
|
}), _el$11);
|
|
428
443
|
_$insert(_el$11, () => ` ${props.text.slice(props.label.length + 1)}`);
|
|
444
|
+
_$insert(_el$0, _$createComponent(Show, {
|
|
445
|
+
get when() {
|
|
446
|
+
return props.resetText;
|
|
447
|
+
},
|
|
448
|
+
get children() {
|
|
449
|
+
var _el$12 = _$createElement("text");
|
|
450
|
+
_$insert(_el$12, () => props.resetText);
|
|
451
|
+
_$effect(_$p => _$setProp(_el$12, "fg", props.theme.textMuted, _$p));
|
|
452
|
+
return _el$12;
|
|
453
|
+
}
|
|
454
|
+
}), null);
|
|
429
455
|
_$effect(_p$ => {
|
|
430
456
|
var _v$5 = props.theme.textMuted,
|
|
431
457
|
_v$6 = toneColor(props.theme, usageTone(used(), props.appearance));
|
|
@@ -442,26 +468,26 @@ function QuotaRow(props) {
|
|
|
442
468
|
return paceLine();
|
|
443
469
|
},
|
|
444
470
|
get children() {
|
|
445
|
-
var _el$
|
|
446
|
-
_el$
|
|
447
|
-
_el$
|
|
448
|
-
_$insertNode(_el$
|
|
449
|
-
_$insertNode(_el$
|
|
450
|
-
_$setProp(_el$
|
|
451
|
-
_$setProp(_el$
|
|
452
|
-
_$insert(_el$
|
|
453
|
-
_$insert(_el$
|
|
471
|
+
var _el$13 = _$createElement("box"),
|
|
472
|
+
_el$14 = _$createElement("text"),
|
|
473
|
+
_el$15 = _$createElement("text");
|
|
474
|
+
_$insertNode(_el$13, _el$14);
|
|
475
|
+
_$insertNode(_el$13, _el$15);
|
|
476
|
+
_$setProp(_el$13, "width", '100%');
|
|
477
|
+
_$setProp(_el$13, "flexDirection", 'row');
|
|
478
|
+
_$insert(_el$14, () => ''.padEnd(props.labelWidth));
|
|
479
|
+
_$insert(_el$15, paceLine);
|
|
454
480
|
_$effect(_p$ => {
|
|
455
481
|
var _v$7 = props.theme.textMuted,
|
|
456
482
|
_v$8 = toneColor(props.theme, props.pacing?.state === 'deficit' ? 'warn' : 'muted');
|
|
457
|
-
_v$7 !== _p$.e && (_p$.e = _$setProp(_el$
|
|
458
|
-
_v$8 !== _p$.t && (_p$.t = _$setProp(_el$
|
|
483
|
+
_v$7 !== _p$.e && (_p$.e = _$setProp(_el$14, "fg", _v$7, _p$.e));
|
|
484
|
+
_v$8 !== _p$.t && (_p$.t = _$setProp(_el$15, "fg", _v$8, _p$.t));
|
|
459
485
|
return _p$;
|
|
460
486
|
}, {
|
|
461
487
|
e: undefined,
|
|
462
488
|
t: undefined
|
|
463
489
|
});
|
|
464
|
-
return _el$
|
|
490
|
+
return _el$13;
|
|
465
491
|
}
|
|
466
492
|
})];
|
|
467
493
|
}
|
|
@@ -476,34 +502,56 @@ function AccountBlock(props) {
|
|
|
476
502
|
const statusTone = () => props.killed ? 'err' : props.active ? 'ok' : 'muted';
|
|
477
503
|
const rows = () => buildQuotaRowsForDisplay(props.quota, Date.now(), props.pacingEnabled, props.labelWidth);
|
|
478
504
|
return (() => {
|
|
479
|
-
var _el$
|
|
480
|
-
_el$
|
|
481
|
-
_el$
|
|
482
|
-
_el$
|
|
483
|
-
_el$
|
|
484
|
-
_el$
|
|
485
|
-
_$insertNode(_el$20, _el$21);
|
|
486
|
-
_$setProp(_el$20, "width", '100%');
|
|
487
|
-
_$setProp(_el$20, "flexDirection", 'column');
|
|
505
|
+
var _el$21 = _$createElement("box"),
|
|
506
|
+
_el$22 = _$createElement("box"),
|
|
507
|
+
_el$23 = _$createElement("text"),
|
|
508
|
+
_el$24 = _$createElement("b"),
|
|
509
|
+
_el$25 = _$createElement("text"),
|
|
510
|
+
_el$26 = _$createElement("b");
|
|
488
511
|
_$insertNode(_el$21, _el$22);
|
|
489
|
-
_$insertNode(_el$21, _el$24);
|
|
490
512
|
_$setProp(_el$21, "width", '100%');
|
|
491
|
-
_$setProp(_el$21, "flexDirection", '
|
|
492
|
-
_$setProp(_el$21, "justifyContent", 'space-between');
|
|
513
|
+
_$setProp(_el$21, "flexDirection", 'column');
|
|
493
514
|
_$insertNode(_el$22, _el$23);
|
|
494
|
-
_$
|
|
495
|
-
_$
|
|
496
|
-
_$
|
|
497
|
-
_$
|
|
515
|
+
_$insertNode(_el$22, _el$25);
|
|
516
|
+
_$setProp(_el$22, "width", '100%');
|
|
517
|
+
_$setProp(_el$22, "flexDirection", 'row');
|
|
518
|
+
_$setProp(_el$22, "justifyContent", 'space-between');
|
|
519
|
+
_$insertNode(_el$23, _el$24);
|
|
520
|
+
_$insert(_el$24, () => props.name);
|
|
521
|
+
_$insertNode(_el$25, _el$26);
|
|
522
|
+
_$insert(_el$26, statusWord);
|
|
523
|
+
_$insert(_el$21, _$createComponent(Show, {
|
|
524
|
+
get when() {
|
|
525
|
+
return props.vaultState;
|
|
526
|
+
},
|
|
527
|
+
get children() {
|
|
528
|
+
var _el$27 = _$createElement("text");
|
|
529
|
+
_$insert(_el$27, () => props.vaultState);
|
|
530
|
+
_$effect(_$p => _$setProp(_el$27, "fg", props.theme.warning, _$p));
|
|
531
|
+
return _el$27;
|
|
532
|
+
}
|
|
533
|
+
}), null);
|
|
534
|
+
_$insert(_el$21, _$createComponent(Show, {
|
|
535
|
+
get when() {
|
|
536
|
+
return props.hostDisabled;
|
|
537
|
+
},
|
|
538
|
+
get children() {
|
|
539
|
+
var _el$28 = _$createElement("text");
|
|
540
|
+
_$insertNode(_el$28, _$createTextNode(`off in /openai`));
|
|
541
|
+
_$effect(_$p => _$setProp(_el$28, "fg", props.theme.textMuted, _$p));
|
|
542
|
+
return _el$28;
|
|
543
|
+
}
|
|
544
|
+
}), null);
|
|
545
|
+
_$insert(_el$21, _$createComponent(Show, {
|
|
498
546
|
get when() {
|
|
499
547
|
return isQuotaLoaded(props.quota);
|
|
500
548
|
},
|
|
501
549
|
get fallback() {
|
|
502
550
|
return (() => {
|
|
503
|
-
var _el$
|
|
504
|
-
_$insertNode(_el$
|
|
505
|
-
_$effect(_$p => _$setProp(_el$
|
|
506
|
-
return _el$
|
|
551
|
+
var _el$30 = _$createElement("text");
|
|
552
|
+
_$insertNode(_el$30, _$createTextNode(`checking…`));
|
|
553
|
+
_$effect(_$p => _$setProp(_el$30, "fg", props.theme.textMuted, _$p));
|
|
554
|
+
return _el$30;
|
|
507
555
|
})();
|
|
508
556
|
},
|
|
509
557
|
get children() {
|
|
@@ -513,10 +561,10 @@ function AccountBlock(props) {
|
|
|
513
561
|
},
|
|
514
562
|
get fallback() {
|
|
515
563
|
return (() => {
|
|
516
|
-
var _el$
|
|
517
|
-
_$insertNode(_el$
|
|
518
|
-
_$effect(_$p => _$setProp(_el$
|
|
519
|
-
return _el$
|
|
564
|
+
var _el$32 = _$createElement("text");
|
|
565
|
+
_$insertNode(_el$32, _$createTextNode(`—`));
|
|
566
|
+
_$effect(_$p => _$setProp(_el$32, "fg", props.theme.textMuted, _$p));
|
|
567
|
+
return _el$32;
|
|
520
568
|
})();
|
|
521
569
|
},
|
|
522
570
|
get children() {
|
|
@@ -540,6 +588,9 @@ function AccountBlock(props) {
|
|
|
540
588
|
get text() {
|
|
541
589
|
return row.text;
|
|
542
590
|
},
|
|
591
|
+
get resetText() {
|
|
592
|
+
return row.resetText;
|
|
593
|
+
},
|
|
543
594
|
get window() {
|
|
544
595
|
return row.window;
|
|
545
596
|
},
|
|
@@ -552,7 +603,7 @@ function AccountBlock(props) {
|
|
|
552
603
|
});
|
|
553
604
|
}
|
|
554
605
|
}), null);
|
|
555
|
-
_$insert(_el$
|
|
606
|
+
_$insert(_el$21, _$createComponent(For, {
|
|
556
607
|
get each() {
|
|
557
608
|
return quotaTextParts(sidebarQuotaProjection(props.quota, Date.now()), {
|
|
558
609
|
now: Date.now(),
|
|
@@ -560,13 +611,13 @@ function AccountBlock(props) {
|
|
|
560
611
|
}).filter(part => part.startsWith('checked '));
|
|
561
612
|
},
|
|
562
613
|
children: age => (() => {
|
|
563
|
-
var _el$
|
|
564
|
-
_$insert(_el$
|
|
565
|
-
_$effect(_$p => _$setProp(_el$
|
|
566
|
-
return _el$
|
|
614
|
+
var _el$34 = _$createElement("text");
|
|
615
|
+
_$insert(_el$34, age);
|
|
616
|
+
_$effect(_$p => _$setProp(_el$34, "fg", props.theme.textMuted, _$p));
|
|
617
|
+
return _el$34;
|
|
567
618
|
})()
|
|
568
619
|
}), null);
|
|
569
|
-
_$insert(_el$
|
|
620
|
+
_$insert(_el$21, _$createComponent(For, {
|
|
570
621
|
get each() {
|
|
571
622
|
return getAccountMetadataRows(props.resetCredits, props.quota?.spendControl);
|
|
572
623
|
},
|
|
@@ -587,16 +638,16 @@ function AccountBlock(props) {
|
|
|
587
638
|
var _v$1 = props.marginTop ?? 0,
|
|
588
639
|
_v$10 = props.theme.text,
|
|
589
640
|
_v$11 = toneColor(props.theme, statusTone());
|
|
590
|
-
_v$1 !== _p$.e && (_p$.e = _$setProp(_el$
|
|
591
|
-
_v$10 !== _p$.t && (_p$.t = _$setProp(_el$
|
|
592
|
-
_v$11 !== _p$.a && (_p$.a = _$setProp(_el$
|
|
641
|
+
_v$1 !== _p$.e && (_p$.e = _$setProp(_el$21, "marginTop", _v$1, _p$.e));
|
|
642
|
+
_v$10 !== _p$.t && (_p$.t = _$setProp(_el$23, "fg", _v$10, _p$.t));
|
|
643
|
+
_v$11 !== _p$.a && (_p$.a = _$setProp(_el$25, "fg", _v$11, _p$.a));
|
|
593
644
|
return _p$;
|
|
594
645
|
}, {
|
|
595
646
|
e: undefined,
|
|
596
647
|
t: undefined,
|
|
597
648
|
a: undefined
|
|
598
649
|
});
|
|
599
|
-
return _el$
|
|
650
|
+
return _el$21;
|
|
600
651
|
})();
|
|
601
652
|
}
|
|
602
653
|
|
|
@@ -643,15 +694,13 @@ function createSidebarController(initialPrefs) {
|
|
|
643
694
|
const [collapsed, setCollapsed] = createSignal(seedCollapsed);
|
|
644
695
|
let lastPersistedCollapsed = initialPrefs.collapsed;
|
|
645
696
|
let lastApplied = JSON.stringify(initialPrefs);
|
|
646
|
-
|
|
647
|
-
//
|
|
648
|
-
//
|
|
649
|
-
|
|
650
|
-
// watcher echoes of the previous persisted value are rejected by the
|
|
651
|
-
// `!==` check and cannot revert a user click.
|
|
652
|
-
watchTuiPreferences(() => {
|
|
697
|
+
let disposed = false;
|
|
698
|
+
// Remember the last value written to disk, not an unpersisted click. A watcher
|
|
699
|
+
// echo of the previous disk value must not undo a click whose write is pending.
|
|
700
|
+
const unwatch = watchTuiPreferences(() => {
|
|
653
701
|
void (async () => {
|
|
654
702
|
const next = resolveOpenaiAuthPrefs(await readTuiPreferencesFile());
|
|
703
|
+
if (disposed) return;
|
|
655
704
|
const serialized = JSON.stringify(next);
|
|
656
705
|
if (serialized === lastApplied) return;
|
|
657
706
|
lastApplied = serialized;
|
|
@@ -674,7 +723,11 @@ function createSidebarController(initialPrefs) {
|
|
|
674
723
|
return {
|
|
675
724
|
prefs,
|
|
676
725
|
collapsed,
|
|
677
|
-
toggleCollapsed
|
|
726
|
+
toggleCollapsed,
|
|
727
|
+
dispose() {
|
|
728
|
+
disposed = true;
|
|
729
|
+
unwatch();
|
|
730
|
+
}
|
|
678
731
|
};
|
|
679
732
|
}
|
|
680
733
|
function QuotaSidebar(props) {
|
|
@@ -683,9 +736,11 @@ function QuotaSidebar(props) {
|
|
|
683
736
|
const [state, setState] = createSignal(DEFAULT_SIDEBAR_STATE);
|
|
684
737
|
let lastUpdated = 0;
|
|
685
738
|
let debounce = null;
|
|
739
|
+
let disposed = false;
|
|
686
740
|
async function refresh() {
|
|
741
|
+
if (disposed) return;
|
|
687
742
|
const next = await readStateFromFile();
|
|
688
|
-
if (next.lastUpdated !== lastUpdated) {
|
|
743
|
+
if (!disposed && next.lastUpdated !== lastUpdated) {
|
|
689
744
|
lastUpdated = next.lastUpdated;
|
|
690
745
|
setState(next);
|
|
691
746
|
}
|
|
@@ -706,8 +761,10 @@ function QuotaSidebar(props) {
|
|
|
706
761
|
onCleanup(() => clearInterval(timer));
|
|
707
762
|
});
|
|
708
763
|
const unsubs = [props.api.event.on('session.updated', scheduleRefresh), props.api.event.on('message.updated', scheduleRefresh)];
|
|
709
|
-
setTimeout(refresh, 300);
|
|
764
|
+
const initialRefresh = setTimeout(refresh, 300);
|
|
710
765
|
onCleanup(() => {
|
|
766
|
+
disposed = true;
|
|
767
|
+
clearTimeout(initialRefresh);
|
|
711
768
|
if (debounce) clearTimeout(debounce);
|
|
712
769
|
for (const u of unsubs) u();
|
|
713
770
|
});
|
|
@@ -716,8 +773,8 @@ function QuotaSidebar(props) {
|
|
|
716
773
|
// Vault mode: the host uses only the vault's accounts, which the file lists
|
|
717
774
|
// in `vaultAccounts`; main and the local fallbacks are not shown.
|
|
718
775
|
const vaultMode = () => state().vaultAccounts !== undefined;
|
|
719
|
-
const
|
|
720
|
-
const hasData = () => vaultMode() ?
|
|
776
|
+
const vaultAccounts = () => state().vaultAccounts ?? [];
|
|
777
|
+
const hasData = () => vaultMode() ? vaultAccounts().length > 0 : state().main?.quota != null || enabledFallbacks().length > 0;
|
|
721
778
|
const headerLabel = () => {
|
|
722
779
|
const name = prefs().header.label;
|
|
723
780
|
return !hasData() ? name : collapsed() ? `\u25b6 ${name}` : `\u25bc ${name}`;
|
|
@@ -745,38 +802,38 @@ function QuotaSidebar(props) {
|
|
|
745
802
|
if (!activePacingDeficit()) return base;
|
|
746
803
|
return base === 'ok' || base === 'muted' ? 'warn' : base;
|
|
747
804
|
};
|
|
748
|
-
const killedNames = () => [state().main?.killed ? 'main' : '', ...enabledFallbacks().filter(f => f.killed).map(f => f.label ?? f.id)].filter(Boolean);
|
|
805
|
+
const killedNames = () => [!vaultMode() && state().main?.killed ? 'main' : '', ...(vaultMode() ? vaultAccounts() : enabledFallbacks()).filter(f => f.killed).map(f => f.label ?? f.id)].filter(Boolean);
|
|
749
806
|
const quotaBackedOff = () => state().main?.quotaBackedOff === true;
|
|
750
807
|
const refreshBackedOff = () => state().main?.refreshBackedOff === true;
|
|
751
808
|
const degraded = () => killedNames().length > 0 || quotaBackedOff() || refreshBackedOff();
|
|
752
809
|
return (() => {
|
|
753
|
-
var _el$
|
|
754
|
-
_el$
|
|
755
|
-
_el$
|
|
756
|
-
_el$
|
|
757
|
-
_el$
|
|
758
|
-
_$insertNode(_el$
|
|
759
|
-
_$setProp(_el$
|
|
760
|
-
_$setProp(_el$
|
|
761
|
-
_$setProp(_el$
|
|
762
|
-
_$setProp(_el$
|
|
763
|
-
_$setProp(_el$
|
|
764
|
-
_$setProp(_el$
|
|
765
|
-
_$setProp(_el$
|
|
766
|
-
_$insertNode(_el$
|
|
767
|
-
_$setProp(_el$
|
|
768
|
-
_$setProp(_el$
|
|
769
|
-
_$setProp(_el$
|
|
770
|
-
_$setProp(_el$
|
|
771
|
-
_$setProp(_el$
|
|
810
|
+
var _el$35 = _$createElement("box"),
|
|
811
|
+
_el$36 = _$createElement("box"),
|
|
812
|
+
_el$37 = _$createElement("box"),
|
|
813
|
+
_el$38 = _$createElement("text"),
|
|
814
|
+
_el$39 = _$createElement("b");
|
|
815
|
+
_$insertNode(_el$35, _el$36);
|
|
816
|
+
_$setProp(_el$35, "width", '100%');
|
|
817
|
+
_$setProp(_el$35, "flexDirection", 'column');
|
|
818
|
+
_$setProp(_el$35, "border", SINGLE_BORDER);
|
|
819
|
+
_$setProp(_el$35, "paddingTop", 1);
|
|
820
|
+
_$setProp(_el$35, "paddingBottom", 1);
|
|
821
|
+
_$setProp(_el$35, "paddingLeft", 1);
|
|
822
|
+
_$setProp(_el$35, "paddingRight", 1);
|
|
823
|
+
_$insertNode(_el$36, _el$37);
|
|
824
|
+
_$setProp(_el$36, "width", '100%');
|
|
825
|
+
_$setProp(_el$36, "flexDirection", 'row');
|
|
826
|
+
_$setProp(_el$36, "justifyContent", 'space-between');
|
|
827
|
+
_$setProp(_el$36, "alignItems", 'center');
|
|
828
|
+
_$setProp(_el$36, "onMouseDown", () => {
|
|
772
829
|
if (hasData()) props.controller.toggleCollapsed();
|
|
773
830
|
});
|
|
774
|
-
_$insertNode(_el$
|
|
775
|
-
_$setProp(_el$
|
|
776
|
-
_$setProp(_el$
|
|
777
|
-
_$insertNode(_el$
|
|
778
|
-
_$insert(_el$
|
|
779
|
-
_$insert(_el$
|
|
831
|
+
_$insertNode(_el$37, _el$38);
|
|
832
|
+
_$setProp(_el$37, "paddingLeft", 1);
|
|
833
|
+
_$setProp(_el$37, "paddingRight", 1);
|
|
834
|
+
_$insertNode(_el$38, _el$39);
|
|
835
|
+
_$insert(_el$39, headerLabel);
|
|
836
|
+
_$insert(_el$36, _$createComponent(Show, {
|
|
780
837
|
get when() {
|
|
781
838
|
return degraded();
|
|
782
839
|
},
|
|
@@ -786,36 +843,36 @@ function QuotaSidebar(props) {
|
|
|
786
843
|
return prefs().header.showVersion && PLUGIN_VERSION !== '';
|
|
787
844
|
},
|
|
788
845
|
get children() {
|
|
789
|
-
var _el$
|
|
790
|
-
_$insert(_el$
|
|
791
|
-
_$effect(_$p => _$setProp(_el$
|
|
792
|
-
return _el$
|
|
846
|
+
var _el$48 = _$createElement("text");
|
|
847
|
+
_$insert(_el$48, `v${PLUGIN_VERSION}`);
|
|
848
|
+
_$effect(_$p => _$setProp(_el$48, "fg", theme().textMuted, _$p));
|
|
849
|
+
return _el$48;
|
|
793
850
|
}
|
|
794
851
|
});
|
|
795
852
|
},
|
|
796
853
|
get children() {
|
|
797
|
-
var _el$
|
|
798
|
-
_el$
|
|
799
|
-
_el$
|
|
800
|
-
_$insertNode(_el$
|
|
801
|
-
_$setProp(_el$
|
|
802
|
-
_$setProp(_el$
|
|
803
|
-
_$insertNode(_el$
|
|
804
|
-
_$insertNode(_el$
|
|
854
|
+
var _el$40 = _$createElement("box"),
|
|
855
|
+
_el$41 = _$createElement("text"),
|
|
856
|
+
_el$42 = _$createElement("b");
|
|
857
|
+
_$insertNode(_el$40, _el$41);
|
|
858
|
+
_$setProp(_el$40, "paddingLeft", 1);
|
|
859
|
+
_$setProp(_el$40, "paddingRight", 1);
|
|
860
|
+
_$insertNode(_el$41, _el$42);
|
|
861
|
+
_$insertNode(_el$42, _$createTextNode(`LIMITED`));
|
|
805
862
|
_$effect(_p$ => {
|
|
806
863
|
var _v$12 = theme().warning,
|
|
807
864
|
_v$13 = theme().background;
|
|
808
|
-
_v$12 !== _p$.e && (_p$.e = _$setProp(_el$
|
|
809
|
-
_v$13 !== _p$.t && (_p$.t = _$setProp(_el$
|
|
865
|
+
_v$12 !== _p$.e && (_p$.e = _$setProp(_el$40, "backgroundColor", _v$12, _p$.e));
|
|
866
|
+
_v$13 !== _p$.t && (_p$.t = _$setProp(_el$41, "fg", _v$13, _p$.t));
|
|
810
867
|
return _p$;
|
|
811
868
|
}, {
|
|
812
869
|
e: undefined,
|
|
813
870
|
t: undefined
|
|
814
871
|
});
|
|
815
|
-
return _el$
|
|
872
|
+
return _el$40;
|
|
816
873
|
}
|
|
817
874
|
}), null);
|
|
818
|
-
_$insert(_el$
|
|
875
|
+
_$insert(_el$35, _$createComponent(Show, {
|
|
819
876
|
get when() {
|
|
820
877
|
return _$memo(() => !!collapsed())() && hasData();
|
|
821
878
|
},
|
|
@@ -834,41 +891,41 @@ function QuotaSidebar(props) {
|
|
|
834
891
|
},
|
|
835
892
|
get fallback() {
|
|
836
893
|
return (() => {
|
|
837
|
-
var _el$
|
|
838
|
-
_$insertNode(_el$
|
|
839
|
-
_$effect(_$p => _$setProp(_el$
|
|
840
|
-
return _el$
|
|
894
|
+
var _el$49 = _$createElement("text");
|
|
895
|
+
_$insertNode(_el$49, _$createTextNode(`—`));
|
|
896
|
+
_$effect(_$p => _$setProp(_el$49, "fg", theme().textMuted, _$p));
|
|
897
|
+
return _el$49;
|
|
841
898
|
})();
|
|
842
899
|
},
|
|
843
900
|
get children() {
|
|
844
|
-
var _el$
|
|
845
|
-
_el$
|
|
846
|
-
_el$
|
|
847
|
-
_el$
|
|
848
|
-
_$insertNode(_el$
|
|
849
|
-
_$insertNode(_el$
|
|
850
|
-
_$setProp(_el$
|
|
851
|
-
_$insertNode(_el$
|
|
852
|
-
_$insert(_el$
|
|
853
|
-
_$insert(_el$
|
|
901
|
+
var _el$44 = _$createElement("box"),
|
|
902
|
+
_el$45 = _$createElement("text"),
|
|
903
|
+
_el$46 = _$createElement("b"),
|
|
904
|
+
_el$47 = _$createElement("text");
|
|
905
|
+
_$insertNode(_el$44, _el$45);
|
|
906
|
+
_$insertNode(_el$44, _el$47);
|
|
907
|
+
_$setProp(_el$44, "flexDirection", 'row');
|
|
908
|
+
_$insertNode(_el$45, _el$46);
|
|
909
|
+
_$insert(_el$46, () => activeQuotaSummary().text);
|
|
910
|
+
_$insert(_el$47, () => activeAccount().killed ? ' \u2298' : ' \u25cf');
|
|
854
911
|
_$effect(_p$ => {
|
|
855
912
|
var _v$14 = toneColor(theme(), activeQuotaTone()),
|
|
856
913
|
_v$15 = toneColor(theme(), activeAccount().killed ? 'err' : activeQuotaTone());
|
|
857
|
-
_v$14 !== _p$.e && (_p$.e = _$setProp(_el$
|
|
858
|
-
_v$15 !== _p$.t && (_p$.t = _$setProp(_el$
|
|
914
|
+
_v$14 !== _p$.e && (_p$.e = _$setProp(_el$45, "fg", _v$14, _p$.e));
|
|
915
|
+
_v$15 !== _p$.t && (_p$.t = _$setProp(_el$47, "fg", _v$15, _p$.t));
|
|
859
916
|
return _p$;
|
|
860
917
|
}, {
|
|
861
918
|
e: undefined,
|
|
862
919
|
t: undefined
|
|
863
920
|
});
|
|
864
|
-
return _el$
|
|
921
|
+
return _el$44;
|
|
865
922
|
}
|
|
866
923
|
});
|
|
867
924
|
}
|
|
868
925
|
});
|
|
869
926
|
}
|
|
870
927
|
}), null);
|
|
871
|
-
_$insert(_el$
|
|
928
|
+
_$insert(_el$35, _$createComponent(Show, {
|
|
872
929
|
get when() {
|
|
873
930
|
return !collapsed() || !hasData();
|
|
874
931
|
},
|
|
@@ -879,14 +936,14 @@ function QuotaSidebar(props) {
|
|
|
879
936
|
},
|
|
880
937
|
get fallback() {
|
|
881
938
|
return (() => {
|
|
882
|
-
var _el$
|
|
883
|
-
_el$
|
|
884
|
-
_$insertNode(_el$
|
|
885
|
-
_$setProp(_el$
|
|
886
|
-
_$setProp(_el$
|
|
887
|
-
_$insertNode(_el$
|
|
888
|
-
_$effect(_$p => _$setProp(_el$
|
|
889
|
-
return _el$
|
|
939
|
+
var _el$51 = _$createElement("box"),
|
|
940
|
+
_el$52 = _$createElement("text");
|
|
941
|
+
_$insertNode(_el$51, _el$52);
|
|
942
|
+
_$setProp(_el$51, "marginTop", 1);
|
|
943
|
+
_$setProp(_el$51, "width", '100%');
|
|
944
|
+
_$insertNode(_el$52, _$createTextNode(`Waiting for quota…`));
|
|
945
|
+
_$effect(_$p => _$setProp(_el$52, "fg", theme().textMuted, _$p));
|
|
946
|
+
return _el$51;
|
|
890
947
|
})();
|
|
891
948
|
},
|
|
892
949
|
get children() {
|
|
@@ -907,7 +964,7 @@ function QuotaSidebar(props) {
|
|
|
907
964
|
get fallback() {
|
|
908
965
|
return _$createComponent(For, {
|
|
909
966
|
get each() {
|
|
910
|
-
return
|
|
967
|
+
return vaultAccounts();
|
|
911
968
|
},
|
|
912
969
|
children: (account, index) => _$createComponent(AccountBlock, {
|
|
913
970
|
get theme() {
|
|
@@ -925,6 +982,12 @@ function QuotaSidebar(props) {
|
|
|
925
982
|
get killed() {
|
|
926
983
|
return account.killed;
|
|
927
984
|
},
|
|
985
|
+
get vaultState() {
|
|
986
|
+
return account.vaultState;
|
|
987
|
+
},
|
|
988
|
+
get hostDisabled() {
|
|
989
|
+
return !account.enabled;
|
|
990
|
+
},
|
|
928
991
|
get active() {
|
|
929
992
|
return sessionRouting().activeId === account.id;
|
|
930
993
|
},
|
|
@@ -1130,16 +1193,16 @@ function QuotaSidebar(props) {
|
|
|
1130
1193
|
var _v$16 = theme().borderActive,
|
|
1131
1194
|
_v$17 = theme().accent,
|
|
1132
1195
|
_v$18 = theme().background;
|
|
1133
|
-
_v$16 !== _p$.e && (_p$.e = _$setProp(_el$
|
|
1134
|
-
_v$17 !== _p$.t && (_p$.t = _$setProp(_el$
|
|
1135
|
-
_v$18 !== _p$.a && (_p$.a = _$setProp(_el$
|
|
1196
|
+
_v$16 !== _p$.e && (_p$.e = _$setProp(_el$35, "borderColor", _v$16, _p$.e));
|
|
1197
|
+
_v$17 !== _p$.t && (_p$.t = _$setProp(_el$37, "backgroundColor", _v$17, _p$.t));
|
|
1198
|
+
_v$18 !== _p$.a && (_p$.a = _$setProp(_el$38, "fg", _v$18, _p$.a));
|
|
1136
1199
|
return _p$;
|
|
1137
1200
|
}, {
|
|
1138
1201
|
e: undefined,
|
|
1139
1202
|
t: undefined,
|
|
1140
1203
|
a: undefined
|
|
1141
1204
|
});
|
|
1142
|
-
return _el$
|
|
1205
|
+
return _el$35;
|
|
1143
1206
|
})();
|
|
1144
1207
|
}
|
|
1145
1208
|
const tui = async api => {
|
|
@@ -1196,8 +1259,37 @@ const tui = async api => {
|
|
|
1196
1259
|
}, RPC_POLL_MS);
|
|
1197
1260
|
}
|
|
1198
1261
|
};
|
|
1262
|
+
async function setup(context, options = {}) {
|
|
1263
|
+
if (options.sidebarText !== undefined || options.sidebar) return setupTui(context, options);
|
|
1264
|
+
const root = await readTuiPreferencesFile();
|
|
1265
|
+
const controller = createSidebarController(resolveOpenaiAuthPrefs(root));
|
|
1266
|
+
const api = {
|
|
1267
|
+
theme: {
|
|
1268
|
+
get current() {
|
|
1269
|
+
return context.theme;
|
|
1270
|
+
}
|
|
1271
|
+
},
|
|
1272
|
+
event: {
|
|
1273
|
+
on: (type, listener) => context.data.on(type === 'session.updated' ? 'session.metadata.updated' : 'session.usage.updated', listener)
|
|
1274
|
+
}
|
|
1275
|
+
};
|
|
1276
|
+
return setupTui(context, {
|
|
1277
|
+
...options,
|
|
1278
|
+
sidebar: {
|
|
1279
|
+
render: input => _$createComponent(QuotaSidebar, {
|
|
1280
|
+
api: api,
|
|
1281
|
+
controller: controller,
|
|
1282
|
+
get sessionId() {
|
|
1283
|
+
return input.sessionID;
|
|
1284
|
+
}
|
|
1285
|
+
}),
|
|
1286
|
+
dispose: controller.dispose
|
|
1287
|
+
}
|
|
1288
|
+
});
|
|
1289
|
+
}
|
|
1199
1290
|
const plugin = {
|
|
1200
1291
|
id: ID,
|
|
1292
|
+
setup,
|
|
1201
1293
|
tui
|
|
1202
1294
|
};
|
|
1203
1295
|
export default plugin;
|