@slkiser/opencode-quota 4.8.2 → 4.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/README.md +17 -18
- package/dist/bin/opencode-quota.d.ts.map +1 -1
- package/dist/bin/opencode-quota.js +5 -3
- package/dist/bin/opencode-quota.js.map +1 -1
- package/dist/lib/accounting-format.d.ts +54 -0
- package/dist/lib/accounting-format.d.ts.map +1 -0
- package/dist/lib/accounting-format.js +271 -0
- package/dist/lib/accounting-format.js.map +1 -0
- package/dist/lib/anthropic.d.ts +2 -0
- package/dist/lib/anthropic.d.ts.map +1 -1
- package/dist/lib/anthropic.js +79 -19
- package/dist/lib/anthropic.js.map +1 -1
- package/dist/lib/cli-show.d.ts.map +1 -1
- package/dist/lib/cli-show.js +1 -0
- package/dist/lib/cli-show.js.map +1 -1
- package/dist/lib/config.d.ts +10 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +35 -3
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/copilot.d.ts +2 -0
- package/dist/lib/copilot.d.ts.map +1 -1
- package/dist/lib/copilot.js +38 -0
- package/dist/lib/copilot.js.map +1 -1
- package/dist/lib/deepseek.d.ts +12 -12
- package/dist/lib/deepseek.d.ts.map +1 -1
- package/dist/lib/deepseek.js +33 -29
- package/dist/lib/deepseek.js.map +1 -1
- package/dist/lib/display-sanitize.d.ts.map +1 -1
- package/dist/lib/display-sanitize.js +75 -22
- package/dist/lib/display-sanitize.js.map +1 -1
- package/dist/lib/entries.d.ts +105 -23
- package/dist/lib/entries.d.ts.map +1 -1
- package/dist/lib/entries.js +37 -1
- package/dist/lib/entries.js.map +1 -1
- package/dist/lib/format.d.ts +1 -0
- package/dist/lib/format.d.ts.map +1 -1
- package/dist/lib/format.js +84 -19
- package/dist/lib/format.js.map +1 -1
- package/dist/lib/google-agy.d.ts +2 -0
- package/dist/lib/google-agy.d.ts.map +1 -1
- package/dist/lib/google-agy.js +29 -14
- package/dist/lib/google-agy.js.map +1 -1
- package/dist/lib/google-gemini-cli.d.ts +2 -0
- package/dist/lib/google-gemini-cli.d.ts.map +1 -1
- package/dist/lib/google-gemini-cli.js +29 -3
- package/dist/lib/google-gemini-cli.js.map +1 -1
- package/dist/lib/google-token-cache.d.ts +5 -8
- package/dist/lib/google-token-cache.d.ts.map +1 -1
- package/dist/lib/google-token-cache.js +30 -118
- package/dist/lib/google-token-cache.js.map +1 -1
- package/dist/lib/google.d.ts +2 -0
- package/dist/lib/google.d.ts.map +1 -1
- package/dist/lib/google.js +31 -6
- package/dist/lib/google.js.map +1 -1
- package/dist/lib/grouped-entry-normalization.d.ts.map +1 -1
- package/dist/lib/grouped-entry-normalization.js +53 -20
- package/dist/lib/grouped-entry-normalization.js.map +1 -1
- package/dist/lib/minimax-auth.d.ts +1 -1
- package/dist/lib/minimax-auth.js +1 -1
- package/dist/lib/nanogpt.d.ts +5 -5
- package/dist/lib/nanogpt.d.ts.map +1 -1
- package/dist/lib/nanogpt.js +59 -23
- package/dist/lib/nanogpt.js.map +1 -1
- package/dist/lib/openai.d.ts +4 -0
- package/dist/lib/openai.d.ts.map +1 -1
- package/dist/lib/openai.js +22 -3
- package/dist/lib/openai.js.map +1 -1
- package/dist/lib/opencode-go-auth.js +1 -1
- package/dist/lib/opencode-go-auth.js.map +1 -1
- package/dist/lib/opencode-go.d.ts.map +1 -1
- package/dist/lib/opencode-go.js +6 -1
- package/dist/lib/opencode-go.js.map +1 -1
- package/dist/lib/opencode-zen-config.d.ts +0 -1
- package/dist/lib/opencode-zen-config.d.ts.map +1 -1
- package/dist/lib/opencode-zen-config.js +0 -22
- package/dist/lib/opencode-zen-config.js.map +1 -1
- package/dist/lib/opencode-zen.d.ts +3 -0
- package/dist/lib/opencode-zen.d.ts.map +1 -1
- package/dist/lib/opencode-zen.js +18 -1
- package/dist/lib/opencode-zen.js.map +1 -1
- package/dist/lib/openrouter.d.ts +2 -0
- package/dist/lib/openrouter.d.ts.map +1 -1
- package/dist/lib/openrouter.js +10 -0
- package/dist/lib/openrouter.js.map +1 -1
- package/dist/lib/provider-metadata.d.ts +2 -307
- package/dist/lib/provider-metadata.d.ts.map +1 -1
- package/dist/lib/provider-metadata.js +14 -316
- package/dist/lib/provider-metadata.js.map +1 -1
- package/dist/lib/provider-registration.d.ts +325 -0
- package/dist/lib/provider-registration.d.ts.map +1 -0
- package/dist/lib/provider-registration.js +338 -0
- package/dist/lib/provider-registration.js.map +1 -0
- package/dist/lib/quota-accounting-projection.d.ts +7 -0
- package/dist/lib/quota-accounting-projection.d.ts.map +1 -0
- package/dist/lib/quota-accounting-projection.js +239 -0
- package/dist/lib/quota-accounting-projection.js.map +1 -0
- package/dist/lib/quota-command-format.d.ts +3 -2
- package/dist/lib/quota-command-format.d.ts.map +1 -1
- package/dist/lib/quota-command-format.js +35 -9
- package/dist/lib/quota-command-format.js.map +1 -1
- package/dist/lib/quota-dialog-commands.d.ts.map +1 -1
- package/dist/lib/quota-dialog-commands.js +1 -0
- package/dist/lib/quota-dialog-commands.js.map +1 -1
- package/dist/lib/quota-export.d.ts +2 -1
- package/dist/lib/quota-export.d.ts.map +1 -1
- package/dist/lib/quota-export.js +36 -10
- package/dist/lib/quota-export.js.map +1 -1
- package/dist/lib/quota-render-data.d.ts +0 -1
- package/dist/lib/quota-render-data.d.ts.map +1 -1
- package/dist/lib/quota-render-data.js +9 -138
- package/dist/lib/quota-render-data.js.map +1 -1
- package/dist/lib/quota-reset-notifications.d.ts.map +1 -1
- package/dist/lib/quota-reset-notifications.js +3 -0
- package/dist/lib/quota-reset-notifications.js.map +1 -1
- package/dist/lib/quota-state-codec.d.ts +16 -0
- package/dist/lib/quota-state-codec.d.ts.map +1 -0
- package/dist/lib/quota-state-codec.js +409 -0
- package/dist/lib/quota-state-codec.js.map +1 -0
- package/dist/lib/quota-state.d.ts +2 -11
- package/dist/lib/quota-state.d.ts.map +1 -1
- package/dist/lib/quota-state.js +165 -305
- package/dist/lib/quota-state.js.map +1 -1
- package/dist/lib/quota-status.d.ts.map +1 -1
- package/dist/lib/quota-status.js +14 -7
- package/dist/lib/quota-status.js.map +1 -1
- package/dist/lib/quota-telemetry.d.ts.map +1 -1
- package/dist/lib/quota-telemetry.js +7 -3
- package/dist/lib/quota-telemetry.js.map +1 -1
- package/dist/lib/quota-toast-runtime.d.ts +60 -0
- package/dist/lib/quota-toast-runtime.d.ts.map +1 -0
- package/dist/lib/quota-toast-runtime.js +765 -0
- package/dist/lib/quota-toast-runtime.js.map +1 -0
- package/dist/lib/resolved-auth-identity.d.ts +36 -0
- package/dist/lib/resolved-auth-identity.d.ts.map +1 -0
- package/dist/lib/resolved-auth-identity.js +193 -0
- package/dist/lib/resolved-auth-identity.js.map +1 -0
- package/dist/lib/scoped-update-migration.d.ts +101 -0
- package/dist/lib/scoped-update-migration.d.ts.map +1 -0
- package/dist/lib/scoped-update-migration.js +348 -0
- package/dist/lib/scoped-update-migration.js.map +1 -0
- package/dist/lib/scoped-update.d.ts +8 -0
- package/dist/lib/scoped-update.d.ts.map +1 -1
- package/dist/lib/scoped-update.js +263 -50
- package/dist/lib/scoped-update.js.map +1 -1
- package/dist/lib/toast-format-grouped.d.ts +1 -0
- package/dist/lib/toast-format-grouped.d.ts.map +1 -1
- package/dist/lib/toast-format-grouped.js +111 -24
- package/dist/lib/toast-format-grouped.js.map +1 -1
- package/dist/lib/tui-compact-format.d.ts +1 -0
- package/dist/lib/tui-compact-format.d.ts.map +1 -1
- package/dist/lib/tui-compact-format.js +133 -22
- package/dist/lib/tui-compact-format.js.map +1 -1
- package/dist/lib/tui-panel-state.d.ts +2 -0
- package/dist/lib/tui-panel-state.d.ts.map +1 -1
- package/dist/lib/tui-panel-state.js.map +1 -1
- package/dist/lib/tui-runtime.d.ts.map +1 -1
- package/dist/lib/tui-runtime.js +84 -10
- package/dist/lib/tui-runtime.js.map +1 -1
- package/dist/lib/tui-sidebar-format.d.ts +1 -1
- package/dist/lib/tui-sidebar-format.d.ts.map +1 -1
- package/dist/lib/tui-sidebar-format.js +1 -0
- package/dist/lib/tui-sidebar-format.js.map +1 -1
- package/dist/lib/types.d.ts +7 -1
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js +1 -0
- package/dist/lib/types.js.map +1 -1
- package/dist/lib/xai.d.ts +2 -0
- package/dist/lib/xai.d.ts.map +1 -1
- package/dist/lib/xai.js +10 -0
- package/dist/lib/xai.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +27 -720
- package/dist/plugin.js.map +1 -1
- package/dist/providers/accounting-decimal.d.ts +2 -0
- package/dist/providers/accounting-decimal.d.ts.map +1 -0
- package/dist/providers/accounting-decimal.js +23 -0
- package/dist/providers/accounting-decimal.js.map +1 -0
- package/dist/providers/cache-policies.d.ts +64 -0
- package/dist/providers/cache-policies.d.ts.map +1 -0
- package/dist/providers/cache-policies.js +197 -0
- package/dist/providers/cache-policies.js.map +1 -0
- package/dist/providers/cursor.d.ts.map +1 -1
- package/dist/providers/cursor.js +73 -58
- package/dist/providers/cursor.js.map +1 -1
- package/dist/providers/deepseek.d.ts +2 -2
- package/dist/providers/deepseek.d.ts.map +1 -1
- package/dist/providers/deepseek.js +64 -33
- package/dist/providers/deepseek.js.map +1 -1
- package/dist/providers/google-agy.js +2 -2
- package/dist/providers/google-agy.js.map +1 -1
- package/dist/providers/kilo.d.ts.map +1 -1
- package/dist/providers/kilo.js +56 -29
- package/dist/providers/kilo.js.map +1 -1
- package/dist/providers/mimo.d.ts.map +1 -1
- package/dist/providers/mimo.js +37 -15
- package/dist/providers/mimo.js.map +1 -1
- package/dist/providers/minimax-coding-plan.d.ts +8 -7
- package/dist/providers/minimax-coding-plan.d.ts.map +1 -1
- package/dist/providers/minimax-coding-plan.js +97 -83
- package/dist/providers/minimax-coding-plan.js.map +1 -1
- package/dist/providers/nanogpt.d.ts.map +1 -1
- package/dist/providers/nanogpt.js +72 -51
- package/dist/providers/nanogpt.js.map +1 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +0 -3
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/opencode-go.d.ts.map +1 -1
- package/dist/providers/opencode-go.js +3 -4
- package/dist/providers/opencode-go.js.map +1 -1
- package/dist/providers/opencode-zen.d.ts.map +1 -1
- package/dist/providers/opencode-zen.js +78 -17
- package/dist/providers/opencode-zen.js.map +1 -1
- package/dist/providers/quota-providers.d.ts.map +1 -1
- package/dist/providers/quota-providers.js +31 -23
- package/dist/providers/quota-providers.js.map +1 -1
- package/dist/providers/registry.d.ts +3 -2
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +41 -31
- package/dist/providers/registry.js.map +1 -1
- package/dist/providers/result-helpers.d.ts +10 -5
- package/dist/providers/result-helpers.d.ts.map +1 -1
- package/dist/providers/result-helpers.js +3 -3
- package/dist/providers/result-helpers.js.map +1 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +11 -3
- package/dist/tui.tsx +16 -7
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-sanitize.d.ts","sourceRoot":"","sources":["../../src/lib/display-sanitize.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"display-sanitize.d.ts","sourceRoot":"","sources":["../../src/lib/display-sanitize.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAIV,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,iBAAiB,EAClB,MAAM,cAAc,CAAC;AAUtB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAU9D,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAExF;AAED,wBAAgB,2BAA2B,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE9E;AAqCD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,eAAe,CAmB/E;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,eAAe,CAO/E;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,mBAAmB,GAAG,mBAAmB,CAqD5F;AAED,wBAAgB,yBAAyB,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,GAAG,SAAS,CAUjG;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,eAAe,GAAG,eAAe,CAM9E"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* remote/provider error text cannot inject terminal control codes into
|
|
6
6
|
* toasts or transcript output.
|
|
7
7
|
*/
|
|
8
|
-
import { isValueEntry } from "./entries.js";
|
|
8
|
+
import { cloneAccountingBasisFact, cloneAccountingQuantity, cloneAccountingSemantic, cloneQuotaToastEntry, isPercentEntry, isQuantityEntry, isValueEntry, } from "./entries.js";
|
|
9
9
|
// Remove terminal escape sequences (CSI/OSC/DCS/APC/PM/SOS) and other control
|
|
10
10
|
// characters except newline/tab so provider text cannot inject terminal actions.
|
|
11
11
|
// eslint-disable-next-line no-control-regex
|
|
@@ -27,33 +27,70 @@ export function sanitizeSingleLineDisplaySnippet(text, maxLength) {
|
|
|
27
27
|
export function sanitizeOptionalDisplayText(value) {
|
|
28
28
|
return typeof value === "string" ? sanitizeDisplayText(value) : undefined;
|
|
29
29
|
}
|
|
30
|
-
|
|
31
|
-
if (
|
|
32
|
-
return
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
30
|
+
function sanitizeAccountingQuantity(quantity) {
|
|
31
|
+
if (quantity.unit.kind !== "custom")
|
|
32
|
+
return cloneAccountingQuantity(quantity);
|
|
33
|
+
return {
|
|
34
|
+
decimal: quantity.decimal,
|
|
35
|
+
unit: {
|
|
36
|
+
kind: "custom",
|
|
37
|
+
symbol: sanitizeSingleLineDisplayText(quantity.unit.symbol),
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function sanitizeAccountingSemantic(semantic) {
|
|
42
|
+
const cloned = cloneAccountingSemantic(semantic);
|
|
43
|
+
if (cloned.metric.kind !== "named")
|
|
44
|
+
return cloned;
|
|
43
45
|
return {
|
|
44
|
-
...
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
right: sanitizeOptionalDisplayText(entry.right),
|
|
50
|
-
resetTimeIso: sanitizeOptionalDisplayText(entry.resetTimeIso),
|
|
46
|
+
...cloned,
|
|
47
|
+
metric: {
|
|
48
|
+
kind: "named",
|
|
49
|
+
name: sanitizeSingleLineDisplayText(cloned.metric.name),
|
|
50
|
+
},
|
|
51
51
|
};
|
|
52
52
|
}
|
|
53
|
+
function sanitizeAccountingBasis(basis) {
|
|
54
|
+
const sanitizeFact = (fact) => ({
|
|
55
|
+
...cloneAccountingBasisFact(fact),
|
|
56
|
+
quantity: sanitizeAccountingQuantity(fact.quantity),
|
|
57
|
+
});
|
|
58
|
+
return {
|
|
59
|
+
...(basis.used ? { used: sanitizeFact(basis.used) } : {}),
|
|
60
|
+
...(basis.limit ? { limit: sanitizeFact(basis.limit) } : {}),
|
|
61
|
+
...(basis.remaining ? { remaining: sanitizeFact(basis.remaining) } : {}),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
export function sanitizeQuotaToastEntry(entry) {
|
|
65
|
+
const sanitized = cloneQuotaToastEntry(entry);
|
|
66
|
+
sanitized.name = sanitizeDisplayText(entry.name);
|
|
67
|
+
if (entry.group !== undefined)
|
|
68
|
+
sanitized.group = sanitizeDisplayText(entry.group);
|
|
69
|
+
if (entry.label !== undefined)
|
|
70
|
+
sanitized.label = sanitizeDisplayText(entry.label);
|
|
71
|
+
if (entry.metricLabel !== undefined) {
|
|
72
|
+
sanitized.metricLabel = sanitizeDisplayText(entry.metricLabel);
|
|
73
|
+
}
|
|
74
|
+
if (entry.right !== undefined)
|
|
75
|
+
sanitized.right = sanitizeDisplayText(entry.right);
|
|
76
|
+
if (entry.semantic)
|
|
77
|
+
sanitized.semantic = sanitizeAccountingSemantic(entry.semantic);
|
|
78
|
+
if (isValueEntry(sanitized)) {
|
|
79
|
+
sanitized.value = sanitizeDisplayText(sanitized.value);
|
|
80
|
+
}
|
|
81
|
+
else if (isQuantityEntry(sanitized)) {
|
|
82
|
+
sanitized.quantity = sanitizeAccountingQuantity(sanitized.quantity);
|
|
83
|
+
}
|
|
84
|
+
else if (isPercentEntry(sanitized) && sanitized.basis) {
|
|
85
|
+
sanitized.basis = sanitizeAccountingBasis(sanitized.basis);
|
|
86
|
+
}
|
|
87
|
+
return sanitized;
|
|
88
|
+
}
|
|
53
89
|
export function sanitizeQuotaToastError(error) {
|
|
54
90
|
return {
|
|
55
91
|
label: sanitizeDisplayText(error.label),
|
|
56
92
|
message: sanitizeDisplayText(error.message),
|
|
93
|
+
...(error.retryable === true ? { retryable: true } : {}),
|
|
57
94
|
...(error.kind ? { kind: error.kind } : {}),
|
|
58
95
|
};
|
|
59
96
|
}
|
|
@@ -88,7 +125,23 @@ export function sanitizeQuotaProviderResult(result) {
|
|
|
88
125
|
})),
|
|
89
126
|
}
|
|
90
127
|
: {}),
|
|
91
|
-
...(result.presentation
|
|
128
|
+
...(result.presentation
|
|
129
|
+
? {
|
|
130
|
+
presentation: {
|
|
131
|
+
...result.presentation,
|
|
132
|
+
...(result.presentation.singleWindowDisplayName !== undefined
|
|
133
|
+
? {
|
|
134
|
+
singleWindowDisplayName: sanitizeDisplayText(result.presentation.singleWindowDisplayName),
|
|
135
|
+
}
|
|
136
|
+
: {}),
|
|
137
|
+
...(result.presentation.redundantQuotaFamily !== undefined
|
|
138
|
+
? {
|
|
139
|
+
redundantQuotaFamily: sanitizeDisplayText(result.presentation.redundantQuotaFamily),
|
|
140
|
+
}
|
|
141
|
+
: {}),
|
|
142
|
+
},
|
|
143
|
+
}
|
|
144
|
+
: {}),
|
|
92
145
|
};
|
|
93
146
|
}
|
|
94
147
|
export function sanitizeSessionTokensData(data) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-sanitize.js","sourceRoot":"","sources":["../../src/lib/display-sanitize.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"display-sanitize.js","sourceRoot":"","sources":["../../src/lib/display-sanitize.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/entries.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { QuotaProviderDefinition } from "./quota-providers.js";
|
|
2
2
|
import type { QuotaTelemetryToken } from "./quota-telemetry.js";
|
|
3
|
+
import type { ResolvedAuthIdentity } from "./resolved-auth-identity.js";
|
|
3
4
|
import type { RuntimeProviderIdResolver } from "./runtime-provider-ids.js";
|
|
4
5
|
import type { CursorQuotaPlan, OpenCodeGoWindowKey } from "./types.js";
|
|
5
6
|
/**
|
|
@@ -12,6 +13,50 @@ export type AccountingResultType = "quota" | "rate_limit" | "usage" | "spend" |
|
|
|
12
13
|
export type AccountingAcquisitionMethod = "remote_api" | "dashboard_scrape" | "local_cli" | "local_runtime_accounting" | "local_estimation";
|
|
13
14
|
export type AccountingOwnership = "maintained" | "user_configured";
|
|
14
15
|
export type AccountingAuthority = "provider_reported" | "locally_derived";
|
|
16
|
+
export type AccountingProminence = "primary" | "supplementary";
|
|
17
|
+
export type AccountingWindow = "rpm" | "hour" | "five_hour" | "day" | "week" | "month" | "year" | "mcp" | "code_review";
|
|
18
|
+
export type AccountingComponent = "current_balance" | "total_balance" | "cash_balance" | "gift_balance" | "granted_balance" | "topped_up_balance" | "remaining_credits" | "auto_reload" | "auto_reload_amount" | "auto_reload_trigger";
|
|
19
|
+
export type AccountingMetric = {
|
|
20
|
+
kind: "aggregate";
|
|
21
|
+
} | {
|
|
22
|
+
kind: "window";
|
|
23
|
+
window: AccountingWindow;
|
|
24
|
+
} | {
|
|
25
|
+
kind: "component";
|
|
26
|
+
component: AccountingComponent;
|
|
27
|
+
} | {
|
|
28
|
+
kind: "named";
|
|
29
|
+
name: string;
|
|
30
|
+
};
|
|
31
|
+
export interface AccountingSemantic {
|
|
32
|
+
metric: AccountingMetric;
|
|
33
|
+
prominence: AccountingProminence;
|
|
34
|
+
}
|
|
35
|
+
export type AccountingCountUnit = "request" | "token" | "credit" | "message" | "interaction" | "unit";
|
|
36
|
+
export type AccountingUnit = {
|
|
37
|
+
kind: "currency";
|
|
38
|
+
code: string;
|
|
39
|
+
} | {
|
|
40
|
+
kind: "count";
|
|
41
|
+
unit: AccountingCountUnit;
|
|
42
|
+
} | {
|
|
43
|
+
kind: "custom";
|
|
44
|
+
symbol: string;
|
|
45
|
+
};
|
|
46
|
+
export interface AccountingQuantity {
|
|
47
|
+
decimal: string;
|
|
48
|
+
unit: AccountingUnit;
|
|
49
|
+
}
|
|
50
|
+
export type AccountingFactAuthority = AccountingAuthority | "user_configured";
|
|
51
|
+
export interface AccountingBasisFact {
|
|
52
|
+
quantity: AccountingQuantity;
|
|
53
|
+
authority: AccountingFactAuthority;
|
|
54
|
+
}
|
|
55
|
+
export interface AccountingPercentageBasis {
|
|
56
|
+
used?: AccountingBasisFact;
|
|
57
|
+
limit?: AccountingBasisFact;
|
|
58
|
+
remaining?: AccountingBasisFact;
|
|
59
|
+
}
|
|
15
60
|
export interface AccountingMetadata {
|
|
16
61
|
/** What the row represents, independent of its percent/value render shape. */
|
|
17
62
|
resultType: AccountingResultType;
|
|
@@ -33,45 +78,64 @@ export interface GroupedQuotaEntryMeta {
|
|
|
33
78
|
group?: string;
|
|
34
79
|
/** Optional row label inside the group, e.g. "5h:" or "Usage:". */
|
|
35
80
|
label?: string;
|
|
36
|
-
/** Optional
|
|
81
|
+
/** Optional legacy label for verbose command output when it differs from resultType. */
|
|
37
82
|
metricLabel?: string;
|
|
38
|
-
/**
|
|
83
|
+
/** Complete provider-neutral row semantics. Rich providers require this on every row. */
|
|
84
|
+
semantic?: AccountingSemantic;
|
|
85
|
+
/** Optional compact right-hand summary for legacy and configured providers only. */
|
|
39
86
|
right?: string;
|
|
40
87
|
/** Optional stable row priority within a group; lower values render first. */
|
|
41
88
|
sortPriority?: number;
|
|
42
89
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
90
|
+
type SemanticGroupedQuotaEntryMeta = Omit<GroupedQuotaEntryMeta, "semantic"> & {
|
|
91
|
+
semantic: AccountingSemantic;
|
|
92
|
+
};
|
|
93
|
+
export type QuotaPercentEntry = GroupedQuotaEntryMeta & {
|
|
94
|
+
/** The optional discriminant preserves the existing percent-entry shape. */
|
|
48
95
|
kind?: "percent";
|
|
49
|
-
/** Display label (already human-friendly), e.g. "Copilot" or "Claude (abc…)". */
|
|
50
96
|
name: string;
|
|
51
97
|
/** Remaining quota as a percentage (may be below 0 when over quota). */
|
|
52
98
|
percentRemaining: number;
|
|
53
|
-
/** Optional
|
|
99
|
+
/** Optional typed operands. Renderers never derive a percentage from these facts. */
|
|
100
|
+
basis?: AccountingPercentageBasis;
|
|
54
101
|
resetTimeIso?: string;
|
|
55
|
-
}
|
|
56
|
-
|
|
102
|
+
};
|
|
103
|
+
export type QuotaValueEntry = GroupedQuotaEntryMeta & {
|
|
104
|
+
/** Legacy formatted text value. */
|
|
57
105
|
kind: "value";
|
|
58
|
-
/** Display label (already human-friendly), e.g. "OpenCode Go". */
|
|
59
106
|
name: string;
|
|
60
|
-
/** Human-readable value, e.g. "$42.50". */
|
|
61
107
|
value: string;
|
|
62
|
-
/** Optional source-backed ISO reset timestamp (shown when available). */
|
|
63
108
|
resetTimeIso?: string;
|
|
64
|
-
}
|
|
65
|
-
export
|
|
66
|
-
kind: "
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
109
|
+
};
|
|
110
|
+
export type QuotaQuantityEntry = SemanticGroupedQuotaEntryMeta & {
|
|
111
|
+
kind: "quantity";
|
|
112
|
+
name: string;
|
|
113
|
+
quantity: AccountingQuantity;
|
|
114
|
+
resetTimeIso?: string;
|
|
115
|
+
};
|
|
116
|
+
export type QuotaBooleanEntry = SemanticGroupedQuotaEntryMeta & {
|
|
117
|
+
kind: "boolean";
|
|
118
|
+
name: string;
|
|
119
|
+
value: boolean;
|
|
120
|
+
resetTimeIso?: string;
|
|
121
|
+
};
|
|
122
|
+
export type QuotaToastEntry = QuotaPercentEntry | QuotaValueEntry | QuotaQuantityEntry | QuotaBooleanEntry;
|
|
123
|
+
export declare function isValueEntry(e: QuotaToastEntry): e is QuotaValueEntry;
|
|
124
|
+
export declare function isQuantityEntry(e: QuotaToastEntry): e is QuotaQuantityEntry;
|
|
125
|
+
export declare function isBooleanEntry(e: QuotaToastEntry): e is QuotaBooleanEntry;
|
|
126
|
+
export declare function isPercentEntry(e: QuotaToastEntry): e is QuotaPercentEntry;
|
|
127
|
+
export declare function cloneAccountingUnit(unit: AccountingUnit): AccountingUnit;
|
|
128
|
+
export declare function cloneAccountingQuantity(quantity: AccountingQuantity): AccountingQuantity;
|
|
129
|
+
export declare function cloneAccountingSemantic(semantic: AccountingSemantic): AccountingSemantic;
|
|
130
|
+
export declare function cloneAccountingBasisFact(fact: AccountingBasisFact): AccountingBasisFact;
|
|
131
|
+
export declare function cloneAccountingPercentageBasis(basis: AccountingPercentageBasis): AccountingPercentageBasis;
|
|
132
|
+
export declare function cloneQuotaToastEntry(entry: QuotaToastEntry): QuotaToastEntry;
|
|
71
133
|
export interface QuotaToastError {
|
|
72
134
|
/** Short label that will be rendered as "label: message". */
|
|
73
135
|
label: string;
|
|
74
136
|
message: string;
|
|
137
|
+
/** Whether a later refresh may succeed without user action. */
|
|
138
|
+
retryable?: boolean;
|
|
75
139
|
/** Intentional diagnostics remain verbose but do not count as compact-status issues. */
|
|
76
140
|
kind?: "intentional-filter";
|
|
77
141
|
}
|
|
@@ -193,14 +257,32 @@ export interface QuotaProviderContext {
|
|
|
193
257
|
telemetryToken?: QuotaTelemetryToken;
|
|
194
258
|
};
|
|
195
259
|
}
|
|
260
|
+
export interface QuotaProviderCacheContext {
|
|
261
|
+
runtimeEligibleQuotaProviders?: readonly QuotaProviderDefinition[];
|
|
262
|
+
}
|
|
263
|
+
export type QuotaProviderCachePolicy = {
|
|
264
|
+
kind: "account-neutral";
|
|
265
|
+
} | {
|
|
266
|
+
kind: "uncached";
|
|
267
|
+
} | {
|
|
268
|
+
kind: "resolved-auth";
|
|
269
|
+
resolveIdentity: (ctx: QuotaProviderContext, cacheContext: QuotaProviderCacheContext) => Promise<ResolvedAuthIdentity | null>;
|
|
270
|
+
};
|
|
196
271
|
export interface QuotaProvider {
|
|
197
272
|
/** Stable id used by config.enabledProviders */
|
|
198
273
|
id: string;
|
|
199
274
|
/** Best-effort availability check (no network if possible) */
|
|
200
275
|
isAvailable: (ctx: QuotaProviderContext) => Promise<boolean>;
|
|
201
|
-
/** Fetch and normalize quota for this provider */
|
|
202
|
-
fetch: (ctx: QuotaProviderContext) => Promise<QuotaProviderResult>;
|
|
276
|
+
/** Fetch and normalize quota for this provider. */
|
|
277
|
+
fetch: (ctx: QuotaProviderContext, cacheContext?: QuotaProviderCacheContext) => Promise<QuotaProviderResult>;
|
|
278
|
+
/**
|
|
279
|
+
* Shared-cache safety policy. Canonical runtime providers are classified in
|
|
280
|
+
* the registry. Missing policy fails closed as uncached; account-neutral
|
|
281
|
+
* caching must be explicit.
|
|
282
|
+
*/
|
|
283
|
+
cachePolicy?: QuotaProviderCachePolicy;
|
|
203
284
|
/** Optional provider match for onlyCurrentModel filtering */
|
|
204
285
|
matchesCurrentModel?: (model: string, context?: QuotaProviderMatchContext) => boolean;
|
|
205
286
|
}
|
|
287
|
+
export {};
|
|
206
288
|
//# sourceMappingURL=entries.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entries.d.ts","sourceRoot":"","sources":["../../src/lib/entries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEvE;;;;;GAKG;AAEH,MAAM,MAAM,oBAAoB,GAC5B,OAAO,GACP,YAAY,GACZ,OAAO,GACP,OAAO,GACP,QAAQ,GACR,SAAS,GACT,QAAQ,CAAC;AAEb,MAAM,MAAM,2BAA2B,GACnC,YAAY,GACZ,kBAAkB,GAClB,WAAW,GACX,0BAA0B,GAC1B,kBAAkB,CAAC;AAEvB,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,iBAAiB,CAAC;AAEnE,MAAM,MAAM,mBAAmB,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AAE1E,MAAM,WAAW,kBAAkB;IACjC,8EAA8E;IAC9E,UAAU,EAAE,oBAAoB,CAAC;IACjC,6CAA6C;IAC7C,iBAAiB,EAAE,2BAA2B,CAAC;IAC/C,qEAAqE;IACrE,SAAS,EAAE,mBAAmB,CAAC;IAC/B,uEAAuE;IACvE,SAAS,EAAE,mBAAmB,CAAC;IAC/B,2FAA2F;IAC3F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,mEAAmE;IACnE,UAAU,EAAE,kBAAkB,CAAC;IAC/B,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,
|
|
1
|
+
{"version":3,"file":"entries.d.ts","sourceRoot":"","sources":["../../src/lib/entries.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/entries.js
CHANGED
|
@@ -1,7 +1,43 @@
|
|
|
1
1
|
export function isValueEntry(e) {
|
|
2
2
|
return e.kind === "value";
|
|
3
3
|
}
|
|
4
|
+
export function isQuantityEntry(e) {
|
|
5
|
+
return e.kind === "quantity";
|
|
6
|
+
}
|
|
7
|
+
export function isBooleanEntry(e) {
|
|
8
|
+
return e.kind === "boolean";
|
|
9
|
+
}
|
|
4
10
|
export function isPercentEntry(e) {
|
|
5
|
-
return
|
|
11
|
+
return e.kind === undefined || e.kind === "percent";
|
|
12
|
+
}
|
|
13
|
+
export function cloneAccountingUnit(unit) {
|
|
14
|
+
return { ...unit };
|
|
15
|
+
}
|
|
16
|
+
export function cloneAccountingQuantity(quantity) {
|
|
17
|
+
return { decimal: quantity.decimal, unit: cloneAccountingUnit(quantity.unit) };
|
|
18
|
+
}
|
|
19
|
+
export function cloneAccountingSemantic(semantic) {
|
|
20
|
+
return { metric: { ...semantic.metric }, prominence: semantic.prominence };
|
|
21
|
+
}
|
|
22
|
+
export function cloneAccountingBasisFact(fact) {
|
|
23
|
+
return { quantity: cloneAccountingQuantity(fact.quantity), authority: fact.authority };
|
|
24
|
+
}
|
|
25
|
+
export function cloneAccountingPercentageBasis(basis) {
|
|
26
|
+
return {
|
|
27
|
+
...(basis.used ? { used: cloneAccountingBasisFact(basis.used) } : {}),
|
|
28
|
+
...(basis.limit ? { limit: cloneAccountingBasisFact(basis.limit) } : {}),
|
|
29
|
+
...(basis.remaining ? { remaining: cloneAccountingBasisFact(basis.remaining) } : {}),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export function cloneQuotaToastEntry(entry) {
|
|
33
|
+
return {
|
|
34
|
+
...entry,
|
|
35
|
+
accounting: { ...entry.accounting },
|
|
36
|
+
...(entry.semantic ? { semantic: cloneAccountingSemantic(entry.semantic) } : {}),
|
|
37
|
+
...(isPercentEntry(entry) && entry.basis
|
|
38
|
+
? { basis: cloneAccountingPercentageBasis(entry.basis) }
|
|
39
|
+
: {}),
|
|
40
|
+
...(isQuantityEntry(entry) ? { quantity: cloneAccountingQuantity(entry.quantity) } : {}),
|
|
41
|
+
};
|
|
6
42
|
}
|
|
7
43
|
//# sourceMappingURL=entries.js.map
|
package/dist/lib/entries.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entries.js","sourceRoot":"","sources":["../../src/lib/entries.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entries.js","sourceRoot":"","sources":["../../src/lib/entries.ts"],"names":[],"mappings":"AA+KA,MAAM,UAAU,YAAY,CAAC,CAAkB;IAC7C,OAAO,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAkB;IAChD,OAAO,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAkB;IAC/C,OAAO,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAkB;IAC/C,OAAO,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAoB;IACtD,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAA4B;IAClE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAA4B;IAClE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,IAAyB;IAChE,OAAO,EAAE,QAAQ,EAAE,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,KAAgC;IAEhC,OAAO;QACL,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,wBAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,wBAAwB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAsB;IACzD,OAAO;QACL,GAAG,KAAK;QACR,UAAU,EAAE,EAAE,GAAG,KAAK,CAAC,UAAU,EAAE;QACnC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,uBAAuB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK;YACtC,CAAC,CAAC,EAAE,KAAK,EAAE,8BAA8B,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACxD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,uBAAuB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzF,CAAC;AACJ,CAAC"}
|
package/dist/lib/format.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export declare function formatQuotaRows(params: {
|
|
|
15
15
|
errors?: QuotaToastError[];
|
|
16
16
|
style?: QuotaFormatStyle;
|
|
17
17
|
percentDisplayMode?: QuotaToastConfig["percentDisplayMode"];
|
|
18
|
+
accountingDetail?: QuotaToastConfig["accountingDetail"];
|
|
18
19
|
resetTimeDecimals?: number;
|
|
19
20
|
sessionTokens?: SessionTokensData;
|
|
20
21
|
}): string;
|
package/dist/lib/format.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/lib/format.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/lib/format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAaxF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAOhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAkEnD,wBAAgB,eAAe,CAAC,MAAM,EAAE;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,kBAAkB,CAAC,EAAE,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;IAC5D,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IACxD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,iBAAiB,CAAC;CACnC,GAAG,MAAM,CAyPT"}
|
package/dist/lib/format.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Formatting helpers for quota toast output
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { interpretAccountingRow } from "./accounting-format.js";
|
|
5
|
+
import { isPercentEntry } from "./entries.js";
|
|
5
6
|
import { bar, DISPLAYED_PERCENT_LABEL_WIDTH, formatDisplayedPercentLabel, formatResetCountdown, isResetTimeDecimals, padLeft, padRight, resolveDisplayedPercent, } from "./format-utils.js";
|
|
6
7
|
import { buildSingleWindowPercentEntryDisplayName } from "./quota-entry-display.js";
|
|
7
8
|
import { getQuotaFormatStyleDefinition } from "./quota-format-style.js";
|
|
@@ -50,6 +51,7 @@ export function formatQuotaRows(params) {
|
|
|
50
51
|
entries: params.entries,
|
|
51
52
|
errors: params.errors,
|
|
52
53
|
percentDisplayMode: params.percentDisplayMode,
|
|
54
|
+
accountingDetail: params.accountingDetail,
|
|
53
55
|
resetTimeDecimals: params.resetTimeDecimals,
|
|
54
56
|
sessionTokens: params.sessionTokens,
|
|
55
57
|
});
|
|
@@ -64,18 +66,20 @@ export function formatQuotaRows(params) {
|
|
|
64
66
|
const isNarrow = !isTiny && maxWidth <= layout.narrowAt;
|
|
65
67
|
const separator = " ";
|
|
66
68
|
const percentCol = Math.max(DISPLAYED_PERCENT_LABEL_WIDTH, ...(params.entries ?? [])
|
|
67
|
-
.filter(
|
|
69
|
+
.filter(isPercentEntry)
|
|
68
70
|
.map((entry) => formatDisplayedPercentLabel(entry.percentRemaining, params.percentDisplayMode).length));
|
|
71
|
+
const percentValueCol = percentCol;
|
|
69
72
|
const timeCol = isTiny ? 6 : isNarrow ? 7 : 7;
|
|
70
|
-
// Bar width: use most of maxWidth, leaving room for separator +
|
|
73
|
+
// Bar width: use most of maxWidth, leaving room for separator + suffix on line 2.
|
|
71
74
|
// Line 1 (name + time) can use full maxWidth so labels are not cut before the
|
|
72
75
|
// sidebar width is exhausted.
|
|
73
|
-
// Line 2 (bar +
|
|
74
|
-
const barWidth = Math.max(10, maxWidth - separator.length -
|
|
76
|
+
// Line 2 (bar + suffix) spans barWidth + separator + percentValueCol.
|
|
77
|
+
const barWidth = Math.max(10, maxWidth - separator.length - percentValueCol);
|
|
75
78
|
const lines = [];
|
|
76
79
|
const addPercentEntry = (name, resetIso, remaining, rightSummary) => {
|
|
77
80
|
const displayedPercent = resolveDisplayedPercent(remaining, params.percentDisplayMode);
|
|
78
81
|
const percentLabel = formatDisplayedPercentLabel(remaining, params.percentDisplayMode);
|
|
82
|
+
const visibleBarSuffix = percentLabel.slice(0, percentValueCol);
|
|
79
83
|
const summary = rightSummary?.trim() || "";
|
|
80
84
|
const leftText = summary ? `${name} ${summary}` : name;
|
|
81
85
|
// Show reset countdown whenever quota is not fully available.
|
|
@@ -92,11 +96,11 @@ export function formatQuotaRows(params) {
|
|
|
92
96
|
const timeWidth = isResetTimeDecimals(params.resetTimeDecimals)
|
|
93
97
|
? Math.max(timeCol, timeStr.length)
|
|
94
98
|
: timeCol;
|
|
95
|
-
const tinyNameCol = Math.max(1, maxWidth - separator.length - timeWidth - separator.length -
|
|
99
|
+
const tinyNameCol = Math.max(1, maxWidth - separator.length - timeWidth - separator.length - percentValueCol);
|
|
96
100
|
const line = [
|
|
97
101
|
padRight(leftText, tinyNameCol),
|
|
98
102
|
padLeft(timeStr, timeWidth),
|
|
99
|
-
padLeft(
|
|
103
|
+
padLeft(visibleBarSuffix, percentValueCol),
|
|
100
104
|
].join(separator);
|
|
101
105
|
lines.push(line.slice(0, maxWidth));
|
|
102
106
|
return;
|
|
@@ -110,18 +114,40 @@ export function formatQuotaRows(params) {
|
|
|
110
114
|
separator,
|
|
111
115
|
preferredTimeWidth: timeCol,
|
|
112
116
|
}));
|
|
113
|
-
// Line 2: bar +
|
|
117
|
+
// Line 2: bar + displayed percentage
|
|
114
118
|
const barCell = bar(displayedPercent, barWidth);
|
|
115
|
-
const
|
|
116
|
-
const barLine = [barCell,
|
|
119
|
+
const suffixCell = padLeft(visibleBarSuffix, percentValueCol);
|
|
120
|
+
const barLine = [barCell, suffixCell].join(separator);
|
|
117
121
|
lines.push(barLine);
|
|
118
122
|
};
|
|
119
|
-
const addValueEntry = (name, resetIso, value) => {
|
|
120
|
-
const timeStr =
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
123
|
+
const addValueEntry = (name, resetIso, value, atomicValue = false) => {
|
|
124
|
+
const timeStr = atomicValue && !resetIso
|
|
125
|
+
? ""
|
|
126
|
+
: formatResetCountdown(resetIso, {
|
|
127
|
+
missing: "-",
|
|
128
|
+
compactRounded: true,
|
|
129
|
+
decimals: params.resetTimeDecimals,
|
|
130
|
+
});
|
|
131
|
+
if (atomicValue) {
|
|
132
|
+
const suffix = [value, timeStr].filter(Boolean).join(separator);
|
|
133
|
+
if (suffix.length > maxWidth) {
|
|
134
|
+
const visibleValue = value.length <= maxWidth
|
|
135
|
+
? padLeft(value, maxWidth)
|
|
136
|
+
: maxWidth <= 1
|
|
137
|
+
? "…".slice(0, maxWidth)
|
|
138
|
+
: `…${value.slice(-(maxWidth - 1))}`;
|
|
139
|
+
lines.push(visibleValue);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
const availableNameWidth = maxWidth - (suffix ? separator.length + suffix.length : 0);
|
|
143
|
+
if (availableNameWidth <= 0) {
|
|
144
|
+
lines.push(padLeft(suffix, maxWidth));
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
const visibleName = name.slice(0, availableNameWidth).trimEnd();
|
|
148
|
+
lines.push(`${padRight(visibleName, availableNameWidth)}${suffix ? `${separator}${suffix}` : ""}`);
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
125
151
|
if (isTiny) {
|
|
126
152
|
// Tiny: single line without percent; keep time col alignment.
|
|
127
153
|
const timeWidth = isResetTimeDecimals(params.resetTimeDecimals)
|
|
@@ -148,12 +174,51 @@ export function formatQuotaRows(params) {
|
|
|
148
174
|
preferredTimeWidth: timeCol,
|
|
149
175
|
}));
|
|
150
176
|
};
|
|
177
|
+
const addBasisLine = (basis) => {
|
|
178
|
+
if (!basis)
|
|
179
|
+
return;
|
|
180
|
+
const candidates = basis.kind === "detailed"
|
|
181
|
+
? basis.facts.map((fact) => fact.text)
|
|
182
|
+
: basis.text
|
|
183
|
+
? [basis.text]
|
|
184
|
+
: [];
|
|
185
|
+
let line = "";
|
|
186
|
+
for (const candidate of candidates) {
|
|
187
|
+
const next = line ? `${line} | ${candidate}` : candidate;
|
|
188
|
+
if (next.length > maxWidth)
|
|
189
|
+
break;
|
|
190
|
+
line = next;
|
|
191
|
+
}
|
|
192
|
+
if (line)
|
|
193
|
+
lines.push(line);
|
|
194
|
+
};
|
|
151
195
|
for (const entry of params.entries ?? []) {
|
|
152
|
-
|
|
153
|
-
|
|
196
|
+
const interpretation = interpretAccountingRow(entry, {
|
|
197
|
+
booleanWording: "semantic",
|
|
198
|
+
...(!isTiny
|
|
199
|
+
? {
|
|
200
|
+
basis: (params.accountingDetail ?? "summary") === "detailed"
|
|
201
|
+
? { kind: "detailed" }
|
|
202
|
+
: {
|
|
203
|
+
kind: "summary",
|
|
204
|
+
mode: params.percentDisplayMode ?? "remaining",
|
|
205
|
+
},
|
|
206
|
+
}
|
|
207
|
+
: {}),
|
|
208
|
+
});
|
|
209
|
+
const name = entry.semantic
|
|
210
|
+
? [entry.name.trim(), interpretation.label]
|
|
211
|
+
.filter((part, index, parts) => Boolean(part) && parts.indexOf(part) === index)
|
|
212
|
+
.join(" ")
|
|
213
|
+
: isPercentEntry(entry)
|
|
214
|
+
? buildSingleWindowPercentEntryDisplayName(entry)
|
|
215
|
+
: entry.name;
|
|
216
|
+
if (interpretation.display.kind === "value") {
|
|
217
|
+
addValueEntry(name, entry.resetTimeIso, interpretation.display.text, interpretation.display.entryKind !== "value");
|
|
154
218
|
}
|
|
155
219
|
else {
|
|
156
|
-
addPercentEntry(
|
|
220
|
+
addPercentEntry(name, entry.resetTimeIso, interpretation.display.percentRemaining, entry.right);
|
|
221
|
+
addBasisLine(interpretation.basis);
|
|
157
222
|
}
|
|
158
223
|
}
|
|
159
224
|
// Add error rows (rendered as "label: message")
|