pi-hypercharm-provider 1.3.22 → 1.3.24
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 +19 -8
- package/index.ts +58 -11
- package/models.json +27 -36
- package/package.json +9 -9
- package/status.ts +84 -15
- package/tests/status.smoke.ts +56 -8
- package/bun.lock +0 -342
package/README.md
CHANGED
|
@@ -31,23 +31,23 @@ _Hyperoptimized coding models — DeepSeek, GLM, Kimi, Qwen, MiniMax, Gemma, GPT
|
|
|
31
31
|
| DeepSeek V4 Flash 0731 | Text | 1.0M | 384K | $0.44 | $1.32 |
|
|
32
32
|
| DeepSeek V4 Pro | Text | 1.0M | 384K | $2.40 | $4.80 |
|
|
33
33
|
| DeepSeek V4 Pro 0813 | Text | 1.0M | 262K | $1.44 | $4.31 |
|
|
34
|
-
| DeepSeek V4.1 Flash | Text + Image | 1.0M |
|
|
35
|
-
| Gemma 4 26B A4B | Text | 256K | 26K | $0.10 | $0.
|
|
34
|
+
| DeepSeek V4.1 Flash | Text + Image | 1.0M | 13K | $0.33 | $1.31 |
|
|
35
|
+
| Gemma 4 26B A4B | Text | 256K | 26K | $0.10 | $0.37 |
|
|
36
36
|
| GLM 5.3 | Text + Image | 1.0M | 262K | $1.52 | $4.79 |
|
|
37
37
|
| GLM 5.3 Flash | Text + Image | 1.0M | 131K | $0.16 | $0.54 |
|
|
38
|
-
| GLM-5 | Text | 203K | 20K | $0.
|
|
39
|
-
| GLM-5.1 | Text | 203K | 3K | $1.32 | $4.
|
|
38
|
+
| GLM-5 | Text | 203K | 20K | $0.94 | $3.01 |
|
|
39
|
+
| GLM-5.1 | Text | 203K | 3K | $1.32 | $4.27 |
|
|
40
40
|
| GLM-5.2 | Text | 1.0M | 33K | $1.52 | $4.79 |
|
|
41
|
-
| gpt-oss-120b | Text | 128K | 13K | $0.
|
|
41
|
+
| gpt-oss-120b | Text | 128K | 13K | $0.18 | $0.68 |
|
|
42
42
|
| Inkling | Text + Image | 1.0M | 33K | $1.09 | $4.41 |
|
|
43
43
|
| Kimi K2 Thinking | Text | 262K | 26K | $0.60 | $2.50 |
|
|
44
|
-
| Kimi K2.5 | Text | 262K | 26K | $0.
|
|
44
|
+
| Kimi K2.5 | Text | 262K | 26K | $0.53 | $2.81 |
|
|
45
45
|
| Kimi K2.6 | Text + Image | 262K | 26K | $1.03 | $4.36 |
|
|
46
|
-
| Kimi K2.7 Code | Text + Image |
|
|
46
|
+
| Kimi K2.7 Code | Text + Image | 256K | 16K | $1.03 | $4.36 |
|
|
47
47
|
| Kimi K3 | Text + Image | 1.0M | 16K | $3.27 | $16.33 |
|
|
48
48
|
| Llama 3.3 70B Instruct | Text | 128K | 13K | $0.61 | $1.04 |
|
|
49
49
|
| Llama 4 Maverick 17B 128E Instruct FP8 | Text | 430K | 43K | $0.26 | $0.84 |
|
|
50
|
-
| MiniMax M2.7 | Text | 262K | 7K | $0.
|
|
50
|
+
| MiniMax M2.7 | Text | 262K | 7K | $0.46 | $1.73 |
|
|
51
51
|
| MiniMax M3 | Text + Image | 512K | 512K | $0.33 | $1.31 |
|
|
52
52
|
| Qwen3 Coder 480B A35B Instruct INT4 Mixed AR | Text | 106K | 11K | $0.45 | $2.15 |
|
|
53
53
|
| Qwen3 Next 80B A3B Instruct | Text | 262K | 26K | $0.12 | $1.14 |
|
|
@@ -168,6 +168,7 @@ Edit `~/.pi/agent/extensions/hypercharm.json` or run `/hypercharm-status`:
|
|
|
168
168
|
| `account` | `widget` \| `statusbar` \| `off` | `widget` |
|
|
169
169
|
| `hideOnOtherProvider` | `true` \| `false` | `true` |
|
|
170
170
|
| `lowBalanceHc` | number \| `null` | `25` |
|
|
171
|
+
| `glyphs` | `auto` \| `unicode` \| `ascii` | `auto` |
|
|
171
172
|
|
|
172
173
|
Non-interactive toggles:
|
|
173
174
|
|
|
@@ -176,10 +177,20 @@ Non-interactive toggles:
|
|
|
176
177
|
/hypercharm-status account widget|statusbar|off
|
|
177
178
|
/hypercharm-status hide true|false
|
|
178
179
|
/hypercharm-status lowBalance 50|off
|
|
180
|
+
/hypercharm-status glyphs auto|unicode|ascii
|
|
179
181
|
/hypercharm-status refresh
|
|
180
182
|
/hypercharm-status reset
|
|
181
183
|
```
|
|
182
184
|
|
|
185
|
+
`glyphs: "auto"` replaces the footer glyphs (bolt, gem, warning, auth arrow,
|
|
186
|
+
separator) with ASCII equivalents on legacy terminals (mintty/Cygwin), whose
|
|
187
|
+
cell-width tables disagree with the extension's width math. There a
|
|
188
|
+
full-width widget line can wrap physically, which desynchronizes pi's
|
|
189
|
+
renderer and leaves stale rows behind. The widget also never paints the
|
|
190
|
+
terminal's last column, and clamps an explicit `unicode` choice to ASCII on
|
|
191
|
+
legacy terminals; the statusbar is not edge-padded and always honors the
|
|
192
|
+
exact choice.
|
|
193
|
+
|
|
183
194
|
|
|
184
195
|
## Authentication
|
|
185
196
|
|
package/index.ts
CHANGED
|
@@ -57,7 +57,8 @@
|
|
|
57
57
|
* "session": "widget", // "widget" | "statusbar" | "off"
|
|
58
58
|
* "account": "widget", // "widget" | "statusbar" | "off"
|
|
59
59
|
* "hideOnOtherProvider": true, // hide when a non-HyperCharm model is active
|
|
60
|
-
* "lowBalanceHc": 25
|
|
60
|
+
* "lowBalanceHc": 25, // warn threshold, null/false disables
|
|
61
|
+
* "glyphs": "auto" // "auto" | "unicode" | "ascii"
|
|
61
62
|
* }
|
|
62
63
|
*
|
|
63
64
|
* - "widget" (default): rendered in the below-editor status line
|
|
@@ -69,6 +70,14 @@
|
|
|
69
70
|
* /hypercharm-status account widget|statusbar|off
|
|
70
71
|
* /hypercharm-status hide true|false
|
|
71
72
|
* /hypercharm-status lowBalance <hc>|off
|
|
73
|
+
* /hypercharm-status glyphs auto|unicode|ascii
|
|
74
|
+
*
|
|
75
|
+
* - glyphs "auto" swaps the emoji footer glyphs for ASCII on legacy
|
|
76
|
+
* terminals (mintty/Cygwin), whose cell-width tables disagree with the
|
|
77
|
+
* width math and wrap the full-width widget line. "unicode"/"ascii"
|
|
78
|
+
* force a set. The widget never paints the terminal's last column, and
|
|
79
|
+
* clamps an explicit "unicode" to ASCII on legacy terminals; the
|
|
80
|
+
* statusbar is not edge-padded and honors the exact choice.
|
|
72
81
|
* /hypercharm-status refresh (re-fetch balance/team now)
|
|
73
82
|
* /hypercharm-status reset
|
|
74
83
|
*
|
|
@@ -110,8 +119,11 @@ import {
|
|
|
110
119
|
EMPTY_SESSION_STATS,
|
|
111
120
|
StatusLineWidget,
|
|
112
121
|
accountHasData,
|
|
122
|
+
resolveGlyphSet,
|
|
123
|
+
resolveWidgetGlyphSet,
|
|
113
124
|
type AccountState,
|
|
114
125
|
type SessionStats,
|
|
126
|
+
type GlyphSet,
|
|
115
127
|
type StatusConfig,
|
|
116
128
|
} from "./status";
|
|
117
129
|
import fs from "fs";
|
|
@@ -458,6 +470,7 @@ function writeStatusConfig(): void {
|
|
|
458
470
|
raw.account = statusConfig.account;
|
|
459
471
|
raw.hideOnOtherProvider = statusConfig.hideOnOtherProvider;
|
|
460
472
|
raw.lowBalanceHc = statusConfig.lowBalanceHc;
|
|
473
|
+
raw.glyphs = statusConfig.glyphs;
|
|
461
474
|
fs.mkdirSync(path.dirname(CONFIG_PATH), { recursive: true });
|
|
462
475
|
fs.writeFileSync(CONFIG_PATH, JSON.stringify(raw, null, 2) + "\n");
|
|
463
476
|
} catch {
|
|
@@ -484,6 +497,7 @@ let pendingSpendHc = 0;
|
|
|
484
497
|
let pendingSawUsage = false;
|
|
485
498
|
let pendingSawOutOfCredits = false;
|
|
486
499
|
let outOfCreditsNotified = false;
|
|
500
|
+
let widgetGlyphClampNotified = false;
|
|
487
501
|
|
|
488
502
|
const teeReaders = new Set<Promise<void>>();
|
|
489
503
|
|
|
@@ -758,21 +772,32 @@ function renderStatus(ctx: ExtensionContext): void {
|
|
|
758
772
|
}
|
|
759
773
|
|
|
760
774
|
const hasActivity = sessionStats.requests > 0 || sessionStats.spendHc > 0;
|
|
761
|
-
|
|
775
|
+
// Legacy terminals measure these glyphs with their own cell tables; the
|
|
776
|
+
// widget clamps to ASCII there, the statusbar keeps the explicit choice.
|
|
777
|
+
const glyphs = resolveGlyphSet(statusConfig.glyphs);
|
|
778
|
+
const widgetGlyphs = resolveWidgetGlyphSet(statusConfig.glyphs);
|
|
779
|
+
const widgetClamped = widgetGlyphs !== glyphs;
|
|
780
|
+
if (widgetClamped && !widgetGlyphClampNotified && ctx.hasUI) {
|
|
781
|
+
widgetGlyphClampNotified = true;
|
|
782
|
+
ctx.ui.notify("HyperCharm: widget glyphs stay ASCII on this terminal — unicode glyphs overflow legacy mintty/Cygwin cell widths. Statusbar is unaffected.", "info");
|
|
783
|
+
}
|
|
762
784
|
// Show only after HyperCharm activity this session (like pi-neuralwatt):
|
|
763
785
|
// no empty-gap line on fresh sessions, no stale account glare on other
|
|
764
786
|
// providers' sessions.
|
|
765
787
|
const accountVisible = statusConfig.account !== "off" && accountHasData(account) && hasActivity;
|
|
766
788
|
const lowBalance =
|
|
767
789
|
statusConfig.lowBalanceHc !== null && account.balance !== null && account.balance <= statusConfig.lowBalanceHc;
|
|
768
|
-
const
|
|
790
|
+
const sessionLine = statusConfig.session !== "off" ? buildSessionLine(sessionStats, glyphs) : undefined;
|
|
791
|
+
const accTiers = accountVisible ? buildAccountTiers(account, lowBalance, glyphs) : [];
|
|
792
|
+
const sessionLineW = widgetClamped && statusConfig.session !== "off" ? buildSessionLine(sessionStats, widgetGlyphs) : sessionLine;
|
|
793
|
+
const accTiersW = widgetClamped && accountVisible ? buildAccountTiers(account, lowBalance, widgetGlyphs) : accTiers;
|
|
769
794
|
|
|
770
795
|
// Status bar (built-in footer slots)
|
|
771
796
|
const sBar = statusConfig.session === "statusbar" ? sessionLine : undefined;
|
|
772
797
|
const aBar = statusConfig.account === "statusbar" && accountVisible ? accTiers[0] : undefined;
|
|
773
798
|
if (sBar && aBar) {
|
|
774
799
|
// Combined to avoid eating two footer slots
|
|
775
|
-
ctx.ui.setStatus(STATUS_KEY_SESSION, ctx.ui.theme.fg(lowBalance ? "warning" : "dim", `${sBar}
|
|
800
|
+
ctx.ui.setStatus(STATUS_KEY_SESSION, ctx.ui.theme.fg(lowBalance ? "warning" : "dim", `${sBar} ${glyphs.sep} ${aBar}`));
|
|
776
801
|
ctx.ui.setStatus(STATUS_KEY_ACCOUNT, undefined);
|
|
777
802
|
} else {
|
|
778
803
|
ctx.ui.setStatus(STATUS_KEY_SESSION, sBar ? ctx.ui.theme.fg("dim", sBar) : undefined);
|
|
@@ -780,17 +805,17 @@ function renderStatus(ctx: ExtensionContext): void {
|
|
|
780
805
|
}
|
|
781
806
|
|
|
782
807
|
// Below-editor widget (two-zone, width-aware)
|
|
783
|
-
const leftW = statusConfig.session === "widget" ?
|
|
784
|
-
const rightW = statusConfig.account === "widget" && accountVisible ?
|
|
808
|
+
const leftW = statusConfig.session === "widget" ? sessionLineW : undefined;
|
|
809
|
+
const rightW = statusConfig.account === "widget" && accountVisible ? accTiersW : undefined;
|
|
785
810
|
if (leftW !== undefined || (rightW !== undefined && rightW.length > 0)) {
|
|
786
811
|
ctx.ui.setWidget(
|
|
787
812
|
WIDGET_KEY,
|
|
788
|
-
(_tui: any, theme: any) => new StatusLineWidget(theme, leftW ?? "", rightW ?? [], lowBalance),
|
|
813
|
+
(_tui: any, theme: any) => new StatusLineWidget(theme, leftW ?? "", rightW ?? [], lowBalance, widgetGlyphs),
|
|
789
814
|
{ placement: "belowEditor" },
|
|
790
815
|
);
|
|
791
|
-
|
|
816
|
+
} else {
|
|
792
817
|
ctx.ui.setWidget(WIDGET_KEY, undefined);
|
|
793
|
-
|
|
818
|
+
}
|
|
794
819
|
}
|
|
795
820
|
|
|
796
821
|
function resetStatusState(): void {
|
|
@@ -837,11 +862,11 @@ function commitPending(ctx: ExtensionContext): void {
|
|
|
837
862
|
|
|
838
863
|
function statusSummary(): string {
|
|
839
864
|
const lb = statusConfig.lowBalanceHc === null ? "off" : `${statusConfig.lowBalanceHc}`;
|
|
840
|
-
return `session=${statusConfig.session}, account=${statusConfig.account}, hideOnOtherProvider=${statusConfig.hideOnOtherProvider}, lowBalanceHc=${lb}`;
|
|
865
|
+
return `session=${statusConfig.session}, account=${statusConfig.account}, hideOnOtherProvider=${statusConfig.hideOnOtherProvider}, lowBalanceHc=${lb}, glyphs=${statusConfig.glyphs}`;
|
|
841
866
|
}
|
|
842
867
|
|
|
843
868
|
const STATUS_USAGE =
|
|
844
|
-
"Usage: /hypercharm-status [session|account widget|statusbar|off · hide true|false · lowBalance <hc>|off · refresh · reset]";
|
|
869
|
+
"Usage: /hypercharm-status [session|account widget|statusbar|off · hide true|false · lowBalance <hc>|off · glyphs auto|unicode|ascii · refresh · reset]";
|
|
845
870
|
|
|
846
871
|
async function handleStatusCommand(args: string, ctx: ExtensionContext): Promise<void> {
|
|
847
872
|
const tokens = args.trim().split(/\s+/).filter(Boolean);
|
|
@@ -925,12 +950,26 @@ async function handleStatusCommand(args: string, ctx: ExtensionContext): Promise
|
|
|
925
950
|
return;
|
|
926
951
|
}
|
|
927
952
|
|
|
953
|
+
if (key === "glyphs" && tokens.length === 2) {
|
|
954
|
+
if (value !== "auto" && value !== "unicode" && value !== "ascii") {
|
|
955
|
+
ctx.ui.notify(STATUS_USAGE, "error");
|
|
956
|
+
return;
|
|
957
|
+
}
|
|
958
|
+
statusConfig.glyphs = value;
|
|
959
|
+
writeStatusConfig();
|
|
960
|
+
updateStatus(ctx);
|
|
961
|
+
ctx.ui.notify(`HyperCharm status. ${statusSummary()}`, "info");
|
|
962
|
+
return;
|
|
963
|
+
}
|
|
964
|
+
|
|
928
965
|
ctx.ui.notify(STATUS_USAGE, "error");
|
|
929
966
|
}
|
|
930
967
|
|
|
931
968
|
async function configureStatusInteractive(ctx: ExtensionContext): Promise<void> {
|
|
932
969
|
const modes = ["widget", "statusbar", "off"] as const;
|
|
933
970
|
const nextMode = (m: string) => modes[(modes.indexOf(m as any) + 1) % modes.length];
|
|
971
|
+
const glyphModes = ["auto", "unicode", "ascii"] as const;
|
|
972
|
+
const nextGlyphMode = () => glyphModes[(glyphModes.indexOf(statusConfig.glyphs as any) + 1) % glyphModes.length];
|
|
934
973
|
|
|
935
974
|
for (;;) {
|
|
936
975
|
const lb = statusConfig.lowBalanceHc === null ? "off" : `${statusConfig.lowBalanceHc} hc`;
|
|
@@ -938,6 +977,7 @@ async function configureStatusInteractive(ctx: ExtensionContext): Promise<void>
|
|
|
938
977
|
const accountOpt = `Account line (team/balance/rate limits): ${statusConfig.account}`;
|
|
939
978
|
const hideOpt = `Hide on other providers: ${statusConfig.hideOnOtherProvider ? "on" : "off"}`;
|
|
940
979
|
const lbOpt = `Low-balance warning: ${lb}`;
|
|
980
|
+
const glyphOpt = `Glyphs (legacy terminals): ${statusConfig.glyphs}`;
|
|
941
981
|
const refreshOpt = "Refresh balance now";
|
|
942
982
|
const doneOpt = "Done";
|
|
943
983
|
|
|
@@ -946,6 +986,7 @@ async function configureStatusInteractive(ctx: ExtensionContext): Promise<void>
|
|
|
946
986
|
accountOpt,
|
|
947
987
|
hideOpt,
|
|
948
988
|
lbOpt,
|
|
989
|
+
glyphOpt,
|
|
949
990
|
refreshOpt,
|
|
950
991
|
doneOpt,
|
|
951
992
|
]);
|
|
@@ -986,6 +1027,12 @@ async function configureStatusInteractive(ctx: ExtensionContext): Promise<void>
|
|
|
986
1027
|
}
|
|
987
1028
|
continue;
|
|
988
1029
|
}
|
|
1030
|
+
if (choice === glyphOpt) {
|
|
1031
|
+
statusConfig.glyphs = nextGlyphMode();
|
|
1032
|
+
writeStatusConfig();
|
|
1033
|
+
updateStatus(ctx);
|
|
1034
|
+
continue;
|
|
1035
|
+
}
|
|
989
1036
|
if (choice === refreshOpt) {
|
|
990
1037
|
metaFetched = false;
|
|
991
1038
|
await Promise.all([
|
package/models.json
CHANGED
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
"name": "DeepSeek V4 Pro 0813",
|
|
98
98
|
"reasoning": true,
|
|
99
99
|
"thinkingLevelMap": {
|
|
100
|
-
"off":
|
|
100
|
+
"off": null,
|
|
101
101
|
"minimal": null,
|
|
102
102
|
"low": "low",
|
|
103
103
|
"medium": null,
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
"cacheRead": 0.0479072,
|
|
115
115
|
"cacheWrite": 0
|
|
116
116
|
},
|
|
117
|
-
"contextWindow":
|
|
117
|
+
"contextWindow": 1000000,
|
|
118
118
|
"maxTokens": 262144,
|
|
119
119
|
"compat": {
|
|
120
120
|
"supportsStore": false,
|
|
@@ -133,21 +133,21 @@
|
|
|
133
133
|
"low": "low",
|
|
134
134
|
"medium": null,
|
|
135
135
|
"high": "high",
|
|
136
|
-
"xhigh":
|
|
137
|
-
"max":
|
|
136
|
+
"xhigh": null,
|
|
137
|
+
"max": "max"
|
|
138
138
|
},
|
|
139
139
|
"input": [
|
|
140
140
|
"text",
|
|
141
141
|
"image"
|
|
142
142
|
],
|
|
143
143
|
"cost": {
|
|
144
|
-
"input": 0.
|
|
145
|
-
"output": 1.
|
|
146
|
-
"cacheRead": 0.
|
|
144
|
+
"input": 0.32664,
|
|
145
|
+
"output": 1.30656,
|
|
146
|
+
"cacheRead": 0.032664,
|
|
147
147
|
"cacheWrite": 0
|
|
148
148
|
},
|
|
149
|
-
"contextWindow":
|
|
150
|
-
"maxTokens":
|
|
149
|
+
"contextWindow": 1000000,
|
|
150
|
+
"maxTokens": 13107,
|
|
151
151
|
"compat": {
|
|
152
152
|
"supportsStore": false,
|
|
153
153
|
"supportsReasoningEffort": true,
|
|
@@ -172,9 +172,9 @@
|
|
|
172
172
|
"text"
|
|
173
173
|
],
|
|
174
174
|
"cost": {
|
|
175
|
-
"input": 0.
|
|
176
|
-
"output": 0.
|
|
177
|
-
"cacheRead": 0.
|
|
175
|
+
"input": 0.1,
|
|
176
|
+
"output": 0.374,
|
|
177
|
+
"cacheRead": 0.05,
|
|
178
178
|
"cacheWrite": 0
|
|
179
179
|
},
|
|
180
180
|
"contextWindow": 256000,
|
|
@@ -267,9 +267,9 @@
|
|
|
267
267
|
"text"
|
|
268
268
|
],
|
|
269
269
|
"cost": {
|
|
270
|
-
"input": 0.
|
|
271
|
-
"output":
|
|
272
|
-
"cacheRead": 0.
|
|
270
|
+
"input": 0.94,
|
|
271
|
+
"output": 3.008,
|
|
272
|
+
"cacheRead": 0.47,
|
|
273
273
|
"cacheWrite": 0
|
|
274
274
|
},
|
|
275
275
|
"contextWindow": 202752,
|
|
@@ -299,7 +299,7 @@
|
|
|
299
299
|
],
|
|
300
300
|
"cost": {
|
|
301
301
|
"input": 1.318,
|
|
302
|
-
"output": 4.
|
|
302
|
+
"output": 4.268,
|
|
303
303
|
"cacheRead": 0.659,
|
|
304
304
|
"cacheWrite": 0
|
|
305
305
|
},
|
|
@@ -360,9 +360,9 @@
|
|
|
360
360
|
"text"
|
|
361
361
|
],
|
|
362
362
|
"cost": {
|
|
363
|
-
"input": 0.
|
|
364
|
-
"output": 0.
|
|
365
|
-
"cacheRead": 0.
|
|
363
|
+
"input": 0.178,
|
|
364
|
+
"output": 0.68,
|
|
365
|
+
"cacheRead": 0.089,
|
|
366
366
|
"cacheWrite": 0
|
|
367
367
|
},
|
|
368
368
|
"contextWindow": 128072,
|
|
@@ -454,9 +454,9 @@
|
|
|
454
454
|
"text"
|
|
455
455
|
],
|
|
456
456
|
"cost": {
|
|
457
|
-
"input": 0.
|
|
458
|
-
"output": 2.
|
|
459
|
-
"cacheRead": 0.
|
|
457
|
+
"input": 0.5344,
|
|
458
|
+
"output": 2.815,
|
|
459
|
+
"cacheRead": 0.2672,
|
|
460
460
|
"cacheWrite": 0
|
|
461
461
|
},
|
|
462
462
|
"contextWindow": 262144,
|
|
@@ -503,16 +503,7 @@
|
|
|
503
503
|
{
|
|
504
504
|
"id": "kimi-k2.7-code",
|
|
505
505
|
"name": "Kimi K2.7 Code",
|
|
506
|
-
"reasoning":
|
|
507
|
-
"thinkingLevelMap": {
|
|
508
|
-
"off": "off",
|
|
509
|
-
"minimal": null,
|
|
510
|
-
"low": null,
|
|
511
|
-
"medium": null,
|
|
512
|
-
"high": null,
|
|
513
|
-
"xhigh": null,
|
|
514
|
-
"max": "max"
|
|
515
|
-
},
|
|
506
|
+
"reasoning": false,
|
|
516
507
|
"input": [
|
|
517
508
|
"text",
|
|
518
509
|
"image"
|
|
@@ -523,7 +514,7 @@
|
|
|
523
514
|
"cacheRead": 0.206872,
|
|
524
515
|
"cacheWrite": 0
|
|
525
516
|
},
|
|
526
|
-
"contextWindow":
|
|
517
|
+
"contextWindow": 256000,
|
|
527
518
|
"maxTokens": 16000,
|
|
528
519
|
"compat": {
|
|
529
520
|
"supportsStore": false,
|
|
@@ -634,9 +625,9 @@
|
|
|
634
625
|
"text"
|
|
635
626
|
],
|
|
636
627
|
"cost": {
|
|
637
|
-
"input": 0.
|
|
638
|
-
"output": 1.
|
|
639
|
-
"cacheRead": 0.
|
|
628
|
+
"input": 0.462,
|
|
629
|
+
"output": 1.728,
|
|
630
|
+
"cacheRead": 0.231,
|
|
640
631
|
"cacheWrite": 0
|
|
641
632
|
},
|
|
642
633
|
"contextWindow": 262100,
|
package/package.json
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-hypercharm-provider",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.24",
|
|
4
4
|
"description": "HyperCharm provider extension for pi - Access DeepSeek, GLM, Kimi, Qwen, MiniMax, Gemma, and GPT-OSS models through the Charm Hyper API",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"clean": "echo 'nothing to clean'",
|
|
9
|
+
"build": "echo 'nothing to build'",
|
|
10
|
+
"check": "tsc --noEmit && node tests/status.smoke.ts",
|
|
11
|
+
"smoke": "node tests/status.smoke.ts",
|
|
12
|
+
"update-models": "node scripts/update-models.js"
|
|
13
|
+
},
|
|
7
14
|
"keywords": [
|
|
8
15
|
"pi",
|
|
9
16
|
"extension",
|
|
@@ -33,12 +40,5 @@
|
|
|
33
40
|
"extensions": [
|
|
34
41
|
"./index.ts"
|
|
35
42
|
]
|
|
36
|
-
},
|
|
37
|
-
"scripts": {
|
|
38
|
-
"clean": "echo 'nothing to clean'",
|
|
39
|
-
"build": "echo 'nothing to build'",
|
|
40
|
-
"check": "tsc --noEmit && node tests/status.smoke.ts",
|
|
41
|
-
"smoke": "node tests/status.smoke.ts",
|
|
42
|
-
"update-models": "node scripts/update-models.js"
|
|
43
43
|
}
|
|
44
|
-
}
|
|
44
|
+
}
|
package/status.ts
CHANGED
|
@@ -15,10 +15,64 @@
|
|
|
15
15
|
* that fits the remaining width, and as a last resort truncates the minimal
|
|
16
16
|
* tier. Width math counts only terminal-visible columns (ANSI-aware, wide
|
|
17
17
|
* glyphs like ◆ ⚡ ⚠ measure 2 columns).
|
|
18
|
+
*
|
|
19
|
+
* Terminal safety (legacy terminals, mintty/Cygwin):
|
|
20
|
+
* - Glyphs degrade to ASCII when auto-detection matches a legacy terminal
|
|
21
|
+
* or when the glyphs config asks for it (see GlyphMode). Older mintty
|
|
22
|
+
* builds measure these glyphs with cell tables that disagree with the
|
|
23
|
+
* ones above; the statusbar absorbs that (its lines are not edge-padded)
|
|
24
|
+
* but the full-width widget line wraps, which desyncs pi's row
|
|
25
|
+
* bookkeeping and leaves ghost rows behind.
|
|
26
|
+
* - render() budgets width − 1, so the widget never paints the terminal's
|
|
27
|
+
* last column (the classic pending-wrap hazard).
|
|
18
28
|
*/
|
|
19
29
|
|
|
20
30
|
export type DisplayMode = "widget" | "statusbar" | "off";
|
|
21
31
|
|
|
32
|
+
export type GlyphMode = "auto" | "unicode" | "ascii";
|
|
33
|
+
|
|
34
|
+
export interface GlyphSet {
|
|
35
|
+
bolt: string;
|
|
36
|
+
gem: string;
|
|
37
|
+
warn: string;
|
|
38
|
+
auth: string;
|
|
39
|
+
sep: string;
|
|
40
|
+
ellipsis: string;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export const UNICODE_GLYPHS: GlyphSet = { bolt: "⚡", gem: "◆", warn: "⚠", auth: "⟳", sep: "·", ellipsis: "…" };
|
|
44
|
+
export const ASCII_GLYPHS: GlyphSet = { bolt: "*", gem: "+", warn: "!", auth: "~", sep: "-", ellipsis: "..." };
|
|
45
|
+
|
|
46
|
+
/** True for terminals whose cell-width tables are known to disagree with the
|
|
47
|
+
* width math below (older mintty/Cygwin builds). */
|
|
48
|
+
export function detectLegacyTerminal(env: NodeJS.ProcessEnv = process.env): boolean {
|
|
49
|
+
const termProgram = env.TERM_PROGRAM ?? "";
|
|
50
|
+
const term = env.TERM ?? "";
|
|
51
|
+
return (
|
|
52
|
+
termProgram === "mintty" ||
|
|
53
|
+
termProgram === "cygwin" ||
|
|
54
|
+
termProgram === "msys" ||
|
|
55
|
+
term.startsWith("cygwin") ||
|
|
56
|
+
term.startsWith("msys")
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export function resolveGlyphSet(mode: GlyphMode, env: NodeJS.ProcessEnv = process.env): GlyphSet {
|
|
61
|
+
if (mode === "unicode") return UNICODE_GLYPHS;
|
|
62
|
+
if (mode === "ascii") return ASCII_GLYPHS;
|
|
63
|
+
return detectLegacyTerminal(env) ? ASCII_GLYPHS : UNICODE_GLYPHS;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/** Widget content is edge-padded to the terminal width, so a glyph the
|
|
67
|
+
* terminal measures wider than termVisWidth() does wraps the line and
|
|
68
|
+
* corrupts pi's differential renderer. An explicit "unicode" choice is
|
|
69
|
+
* therefore clamped to ASCII for widget content on legacy terminals;
|
|
70
|
+
* statusbar content is not edge-padded and keeps the caller's choice. */
|
|
71
|
+
export function resolveWidgetGlyphSet(mode: GlyphMode, env: NodeJS.ProcessEnv = process.env): GlyphSet {
|
|
72
|
+
if (mode === "unicode" && detectLegacyTerminal(env)) return ASCII_GLYPHS;
|
|
73
|
+
return resolveGlyphSet(mode, env);
|
|
74
|
+
}
|
|
75
|
+
|
|
22
76
|
export interface StatusConfig {
|
|
23
77
|
/** Session spend/request line (left side). */
|
|
24
78
|
session: DisplayMode;
|
|
@@ -26,8 +80,10 @@ export interface StatusConfig {
|
|
|
26
80
|
account: DisplayMode;
|
|
27
81
|
/** Hide everything when the active model is not from this provider. */
|
|
28
82
|
hideOnOtherProvider: boolean;
|
|
29
|
-
/** Warn (
|
|
83
|
+
/** Warn (warn glyph + highlight) when balance drops to this many hc. null = never. */
|
|
30
84
|
lowBalanceHc: number | null;
|
|
85
|
+
/** Footer glyph set; auto degrades to ASCII on legacy terminals. */
|
|
86
|
+
glyphs: GlyphMode;
|
|
31
87
|
}
|
|
32
88
|
|
|
33
89
|
export const DEFAULT_STATUS_CONFIG: StatusConfig = {
|
|
@@ -35,14 +91,20 @@ export const DEFAULT_STATUS_CONFIG: StatusConfig = {
|
|
|
35
91
|
account: "widget",
|
|
36
92
|
hideOnOtherProvider: true,
|
|
37
93
|
lowBalanceHc: 25,
|
|
94
|
+
glyphs: "auto",
|
|
38
95
|
};
|
|
39
96
|
|
|
40
97
|
const VALID_MODES = new Set<string>(["widget", "statusbar", "off"]);
|
|
98
|
+
const VALID_GLYPH_MODES = new Set<string>(["auto", "unicode", "ascii"]);
|
|
41
99
|
|
|
42
100
|
function coerceMode(value: unknown, fallback: DisplayMode): DisplayMode {
|
|
43
101
|
return typeof value === "string" && VALID_MODES.has(value) ? (value as DisplayMode) : fallback;
|
|
44
102
|
}
|
|
45
103
|
|
|
104
|
+
function coerceGlyphMode(value: unknown, fallback: GlyphMode): GlyphMode {
|
|
105
|
+
return typeof value === "string" && VALID_GLYPH_MODES.has(value) ? (value as GlyphMode) : fallback;
|
|
106
|
+
}
|
|
107
|
+
|
|
46
108
|
/** Merge an unknown raw JSON object onto the defaults, field by field. */
|
|
47
109
|
export function coerceStatusConfig(raw: unknown): StatusConfig {
|
|
48
110
|
const d = DEFAULT_STATUS_CONFIG;
|
|
@@ -58,6 +120,7 @@ export function coerceStatusConfig(raw: unknown): StatusConfig {
|
|
|
58
120
|
: r.lowBalanceHc === null || r.lowBalanceHc === false
|
|
59
121
|
? null
|
|
60
122
|
: d.lowBalanceHc,
|
|
123
|
+
glyphs: coerceGlyphMode(r.glyphs, d.glyphs),
|
|
61
124
|
};
|
|
62
125
|
}
|
|
63
126
|
|
|
@@ -143,9 +206,9 @@ export function formatRateCompact(n: number): string {
|
|
|
143
206
|
// ─── Line builders ────────────────────────────────────────────────────────────
|
|
144
207
|
|
|
145
208
|
/** Left side: what this session has spent/requested through HyperCharm. */
|
|
146
|
-
export function buildSessionLine(stats: SessionStats): string | undefined {
|
|
209
|
+
export function buildSessionLine(stats: SessionStats, glyphs: GlyphSet = UNICODE_GLYPHS): string | undefined {
|
|
147
210
|
if (stats.requests <= 0 && stats.spendHc <= 0) return undefined;
|
|
148
|
-
return
|
|
211
|
+
return `${glyphs.bolt} ${formatSpendHc(stats.spendHc)} hc ${glyphs.sep} ${stats.requests} req`;
|
|
149
212
|
}
|
|
150
213
|
|
|
151
214
|
export function accountHasData(acc: AccountState): boolean {
|
|
@@ -156,21 +219,21 @@ export function accountHasData(acc: AccountState): boolean {
|
|
|
156
219
|
* Right side as progressive tiers — entries share no summary separator;
|
|
157
220
|
* atoms are joined with " · ". Render picks the first that fits.
|
|
158
221
|
*/
|
|
159
|
-
export function buildAccountTiers(acc: AccountState, lowBalance: boolean): string[] {
|
|
160
|
-
const gem = lowBalance ?
|
|
222
|
+
export function buildAccountTiers(acc: AccountState, lowBalance: boolean, glyphs: GlyphSet = UNICODE_GLYPHS): string[] {
|
|
223
|
+
const gem = lowBalance ? `${glyphs.warn} ${glyphs.gem}` : glyphs.gem;
|
|
161
224
|
const bal = acc.balance !== null ? `${gem} ${formatBalHc(acc.balance)} hc` : undefined;
|
|
162
225
|
const hourRate =
|
|
163
226
|
acc.rate !== null ? `${formatRateCompact(acc.rate.remainingHour)}/${formatRateCompact(acc.rate.limitHour)}/h` : undefined;
|
|
164
227
|
const dayRate =
|
|
165
228
|
acc.rate !== null ? `${formatRateCompact(acc.rate.remainingDay)}/${formatRateCompact(acc.rate.limitDay)}/d` : undefined;
|
|
166
|
-
const auth = acc.authDaysLeft !== null ?
|
|
229
|
+
const auth = acc.authDaysLeft !== null ? `${glyphs.auth} ${acc.authDaysLeft}d` : undefined;
|
|
167
230
|
const team = acc.teamName?.trim() || undefined;
|
|
168
231
|
// Team and gem form one identity unit (space-separated, no middot);
|
|
169
232
|
// rate-limit and auth atoms trail it separated by " · ".
|
|
170
233
|
const head = [team, bal].filter((p): p is string => !!p).join(" ") || undefined;
|
|
171
234
|
const numOnly = acc.balance !== null ? `${formatBalHc(acc.balance)} hc` : undefined;
|
|
172
235
|
|
|
173
|
-
const join = (parts: (string | undefined)[]) => parts.filter((p): p is string => !!p).join(
|
|
236
|
+
const join = (parts: (string | undefined)[]) => parts.filter((p): p is string => !!p).join(` ${glyphs.sep} `);
|
|
174
237
|
|
|
175
238
|
const tiers: string[] = [
|
|
176
239
|
join([head, hourRate, dayRate, auth]),
|
|
@@ -233,7 +296,7 @@ export function termVisWidth(str: string): number {
|
|
|
233
296
|
}
|
|
234
297
|
|
|
235
298
|
/** Cut a (possibly ANSI-containing) string to fit maxCols visible columns. */
|
|
236
|
-
export function truncateAnsi(str: string, maxCols: number): string {
|
|
299
|
+
export function truncateAnsi(str: string, maxCols: number, ellipsis = "…"): string {
|
|
237
300
|
if (maxCols <= 0) return "";
|
|
238
301
|
if (termVisWidth(str) <= maxCols) return str;
|
|
239
302
|
let result = "";
|
|
@@ -263,7 +326,7 @@ export function truncateAnsi(str: string, maxCols: number): string {
|
|
|
263
326
|
visWidth += charWidth;
|
|
264
327
|
i += cp > 0xffff ? 2 : 1;
|
|
265
328
|
}
|
|
266
|
-
return result +
|
|
329
|
+
return result + ellipsis;
|
|
267
330
|
}
|
|
268
331
|
|
|
269
332
|
// ─── Widget component ─────────────────────────────────────────────────────────
|
|
@@ -284,35 +347,41 @@ export class StatusLineWidget {
|
|
|
284
347
|
private leftRaw: string;
|
|
285
348
|
private rightTiers: string[];
|
|
286
349
|
private rightWarn: boolean;
|
|
350
|
+
private glyphs: GlyphSet;
|
|
287
351
|
|
|
288
|
-
constructor(theme: LineTheme, leftRaw: string, rightTiers: string[] = [], rightWarn = false) {
|
|
352
|
+
constructor(theme: LineTheme, leftRaw: string, rightTiers: string[] = [], rightWarn = false, glyphs: GlyphSet = UNICODE_GLYPHS) {
|
|
289
353
|
this.theme = theme;
|
|
290
354
|
this.leftRaw = leftRaw;
|
|
291
355
|
this.rightTiers = rightTiers;
|
|
292
356
|
this.rightWarn = rightWarn;
|
|
357
|
+
this.glyphs = glyphs;
|
|
293
358
|
}
|
|
294
359
|
|
|
295
360
|
invalidate(): void {}
|
|
296
361
|
|
|
297
362
|
render(width: number): string[] {
|
|
363
|
+
// Never paint the terminal's last column: writing the final cell marks a
|
|
364
|
+
// pending wrap on legacy terminals, and any real-vs-table width
|
|
365
|
+
// disagreement then scrolls the frame and desyncs pi's row bookkeeping.
|
|
366
|
+
const w = Math.max(1, width - 1);
|
|
298
367
|
const leftVis = termVisWidth(this.leftRaw);
|
|
299
|
-
if (leftVis >
|
|
300
|
-
return [this.theme.fg("dim", truncateAnsi(this.leftRaw,
|
|
368
|
+
if (leftVis > w) {
|
|
369
|
+
return [this.theme.fg("dim", truncateAnsi(this.leftRaw, w, this.glyphs.ellipsis))];
|
|
301
370
|
}
|
|
302
371
|
|
|
303
372
|
const rightColor = this.rightWarn ? "warning" : "dim";
|
|
304
373
|
const themedLeft = this.theme.fg("dim", this.leftRaw);
|
|
305
|
-
const budget =
|
|
374
|
+
const budget = w - leftVis - 1;
|
|
306
375
|
|
|
307
376
|
for (const tier of this.rightTiers) {
|
|
308
377
|
if (termVisWidth(tier) <= budget) {
|
|
309
378
|
const themedRight = this.theme.fg(rightColor, tier);
|
|
310
|
-
const pad =
|
|
379
|
+
const pad = w - termVisWidth(themedLeft) - termVisWidth(themedRight);
|
|
311
380
|
return [themedLeft + " ".repeat(Math.max(1, pad)) + themedRight];
|
|
312
381
|
}
|
|
313
382
|
}
|
|
314
383
|
|
|
315
|
-
const pad =
|
|
384
|
+
const pad = w - termVisWidth(themedLeft);
|
|
316
385
|
return [themedLeft + " ".repeat(Math.max(0, pad))];
|
|
317
386
|
}
|
|
318
387
|
}
|
package/tests/status.smoke.ts
CHANGED
|
@@ -8,14 +8,19 @@ import assert from "node:assert/strict";
|
|
|
8
8
|
import {
|
|
9
9
|
EMPTY_ACCOUNT,
|
|
10
10
|
StatusLineWidget,
|
|
11
|
+
ASCII_GLYPHS,
|
|
12
|
+
UNICODE_GLYPHS,
|
|
11
13
|
accountHasData,
|
|
12
14
|
applyOptimisticSpend,
|
|
13
15
|
buildAccountTiers,
|
|
14
16
|
buildSessionLine,
|
|
15
17
|
coerceStatusConfig,
|
|
18
|
+
detectLegacyTerminal,
|
|
16
19
|
formatBalHc,
|
|
17
20
|
formatRateCompact,
|
|
18
21
|
formatSpendHc,
|
|
22
|
+
resolveGlyphSet,
|
|
23
|
+
resolveWidgetGlyphSet,
|
|
19
24
|
termVisWidth,
|
|
20
25
|
truncateAnsi,
|
|
21
26
|
type AccountState,
|
|
@@ -93,38 +98,41 @@ assert.equal(truncateAnsi("abc", 0), "");
|
|
|
93
98
|
|
|
94
99
|
// ── widget render ──
|
|
95
100
|
const left = buildSessionLine({ requests: 7, spendHc: 1.24 })!;
|
|
101
|
+
assert.ok(left.startsWith("\u26A1 "), "unicode glyph set is the default");
|
|
96
102
|
const widget = new StatusLineWidget(fakeTheme, left, tiers, false);
|
|
97
103
|
|
|
98
|
-
// Wide: full tier, left-right justified
|
|
104
|
+
// Wide: full tier, left-right justified at width − 1 (the widget never
|
|
105
|
+
// paints the terminal's last column — legacy terminals treat that cell as a
|
|
106
|
+
// pending wrap).
|
|
99
107
|
const wide = widget.render(80);
|
|
100
108
|
assert.equal(wide.length, 1);
|
|
101
|
-
assert.equal(termVisWidth(wide[0]),
|
|
109
|
+
assert.equal(termVisWidth(wide[0]), 79);
|
|
102
110
|
assert.ok(stripAnsi(wide[0]).startsWith("⚡ 1.24 hc"));
|
|
103
111
|
assert.ok(stripAnsi(wide[0]).endsWith("⟳ 29d"));
|
|
104
112
|
|
|
105
|
-
// Medium: drops to a compressed tier, still exactly width
|
|
113
|
+
// Medium: drops to a compressed tier, still exactly width − 1
|
|
106
114
|
const med = widget.render(52);
|
|
107
|
-
assert.equal(termVisWidth(med[0]),
|
|
115
|
+
assert.equal(termVisWidth(med[0]), 51);
|
|
108
116
|
assert.ok(!stripAnsi(med[0]).includes("⟳"), "compressed tiers drop auth first");
|
|
109
117
|
|
|
110
118
|
// Narrow: no tier fits → left only, padded
|
|
111
119
|
const narrow = widget.render(termVisWidth(left) + 3);
|
|
112
|
-
assert.equal(termVisWidth(narrow[0]), termVisWidth(left) +
|
|
120
|
+
assert.equal(termVisWidth(narrow[0]), termVisWidth(left) + 2);
|
|
113
121
|
assert.ok(stripAnsi(narrow[0]).startsWith("⚡"));
|
|
114
122
|
assert.ok(!stripAnsi(narrow[0]).includes("◆"));
|
|
115
123
|
|
|
116
124
|
// Narrower than left itself: truncation never overflows (crash guard)
|
|
117
125
|
const tiny = widget.render(10);
|
|
118
|
-
assert.equal(termVisWidth(tiny[0]),
|
|
126
|
+
assert.equal(termVisWidth(tiny[0]), 9);
|
|
119
127
|
|
|
120
128
|
// Left empty (session gated) → right-aligned account line
|
|
121
129
|
const rightOnly = new StatusLineWidget(fakeTheme, "", tiers, false);
|
|
122
130
|
const ro = rightOnly.render(70);
|
|
123
|
-
assert.equal(termVisWidth(ro[0]),
|
|
131
|
+
assert.equal(termVisWidth(ro[0]), 69);
|
|
124
132
|
assert.ok(stripAnsi(ro[0]).endsWith("⟳ 29d"));
|
|
125
133
|
|
|
126
134
|
// No data at all
|
|
127
|
-
assert.deepEqual(new StatusLineWidget(fakeTheme, "", [], false).render(40), [fakeTheme.fg("dim", "") + " ".repeat(
|
|
135
|
+
assert.deepEqual(new StatusLineWidget(fakeTheme, "", [], false).render(40), [fakeTheme.fg("dim", "") + " ".repeat(39)]);
|
|
128
136
|
|
|
129
137
|
// Warning color wired through
|
|
130
138
|
const warn = new StatusLineWidget(fakeTheme, "", buildAccountTiers(acc({ balance: 10 }), true), true);
|
|
@@ -141,21 +149,61 @@ assert.deepEqual(coerceStatusConfig(undefined), {
|
|
|
141
149
|
account: "widget",
|
|
142
150
|
hideOnOtherProvider: true,
|
|
143
151
|
lowBalanceHc: 25,
|
|
152
|
+
glyphs: "auto",
|
|
144
153
|
});
|
|
145
154
|
assert.deepEqual(coerceStatusConfig({ session: "bogus", lowBalanceHc: -3 }), {
|
|
146
155
|
session: "widget",
|
|
147
156
|
account: "widget",
|
|
148
157
|
hideOnOtherProvider: true,
|
|
149
158
|
lowBalanceHc: 25,
|
|
159
|
+
glyphs: "auto",
|
|
150
160
|
});
|
|
151
161
|
assert.deepEqual(coerceStatusConfig({ session: "statusbar", account: "off", hideOnOtherProvider: false, lowBalanceHc: null }), {
|
|
152
162
|
session: "statusbar",
|
|
153
163
|
account: "off",
|
|
154
164
|
hideOnOtherProvider: false,
|
|
155
165
|
lowBalanceHc: null,
|
|
166
|
+
glyphs: "auto",
|
|
156
167
|
});
|
|
157
168
|
assert.equal(coerceStatusConfig({ lowBalanceHc: 42 }).lowBalanceHc, 42);
|
|
158
169
|
assert.equal(coerceStatusConfig({ lowBalanceHc: false }).lowBalanceHc, null);
|
|
159
170
|
assert.deepEqual(coerceStatusConfig(null).session, "widget");
|
|
160
171
|
|
|
172
|
+
// ── legacy-terminal glyph policy ──
|
|
173
|
+
const mintty = { TERM_PROGRAM: "mintty", TERM: "xterm" } as NodeJS.ProcessEnv;
|
|
174
|
+
const cygwin = { TERM: "cygwin" } as NodeJS.ProcessEnv;
|
|
175
|
+
const wt = { TERM_PROGRAM: "Windows_Terminal", TERM: "xterm-256color" } as NodeJS.ProcessEnv;
|
|
176
|
+
assert.equal(detectLegacyTerminal(mintty), true);
|
|
177
|
+
assert.equal(detectLegacyTerminal(cygwin), true);
|
|
178
|
+
assert.equal(detectLegacyTerminal(wt), false);
|
|
179
|
+
assert.equal(detectLegacyTerminal({} as NodeJS.ProcessEnv), false);
|
|
180
|
+
|
|
181
|
+
assert.equal(resolveGlyphSet("auto", wt), UNICODE_GLYPHS);
|
|
182
|
+
assert.equal(resolveGlyphSet("auto", mintty), ASCII_GLYPHS);
|
|
183
|
+
assert.equal(resolveGlyphSet("unicode", mintty), UNICODE_GLYPHS);
|
|
184
|
+
assert.equal(resolveGlyphSet("ascii", wt), ASCII_GLYPHS);
|
|
185
|
+
// An explicit unicode choice is clamped for widget content on legacy terminals
|
|
186
|
+
assert.equal(resolveWidgetGlyphSet("unicode", mintty), ASCII_GLYPHS);
|
|
187
|
+
assert.equal(resolveWidgetGlyphSet("unicode", wt), UNICODE_GLYPHS);
|
|
188
|
+
assert.equal(resolveWidgetGlyphSet("auto", mintty), ASCII_GLYPHS);
|
|
189
|
+
assert.equal(resolveWidgetGlyphSet("ascii", wt), ASCII_GLYPHS);
|
|
190
|
+
|
|
191
|
+
// ASCII mode emits no non-ASCII codepoints at all
|
|
192
|
+
const asciiLine = buildSessionLine({ requests: 7, spendHc: 1.24 }, ASCII_GLYPHS)!;
|
|
193
|
+
assert.equal(asciiLine, "* 1.24 hc - 7 req");
|
|
194
|
+
const asciiTiers = buildAccountTiers(acc({ balance: 10, authDaysLeft: 29 }), true, ASCII_GLYPHS);
|
|
195
|
+
assert.ok(asciiTiers[0].startsWith("! + 10 hc"), `got ${asciiTiers[0]}`);
|
|
196
|
+
assert.ok(asciiTiers[0].endsWith("~ 29d"), `got ${asciiTiers[0]}`);
|
|
197
|
+
const asciiWidget = new StatusLineWidget(fakeTheme, asciiLine, asciiTiers, true, ASCII_GLYPHS).render(60)[0];
|
|
198
|
+
assert.equal([...stripAnsi(asciiWidget)].every((c) => c.charCodeAt(0) < 128), true);
|
|
199
|
+
|
|
200
|
+
// Unicode mode keeps the glyphs (regression guard for the default path)
|
|
201
|
+
assert.ok(buildAccountTiers(acc({ balance: 10 }), true)[0].includes("\u26A0 \u25C6"));
|
|
202
|
+
|
|
203
|
+
// Truncation takes the caller's ellipsis so ASCII mode stays ASCII
|
|
204
|
+
assert.equal(truncateAnsi("abcdefghij", 5, "..."), "abcd...");
|
|
205
|
+
assert.ok(truncateAnsi("abcdefghij", 5).endsWith("\u2026"));
|
|
206
|
+
|
|
207
|
+
assert.equal(coerceStatusConfig({ glyphs: "bogus" }).glyphs, "auto");
|
|
208
|
+
assert.equal(coerceStatusConfig({ glyphs: "ascii" }).glyphs, "ascii");
|
|
161
209
|
console.log("status.smoke: all assertions passed");
|
package/bun.lock
DELETED
|
@@ -1,342 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"lockfileVersion": 2,
|
|
3
|
-
"configVersion": 1,
|
|
4
|
-
"workspaces": {
|
|
5
|
-
"": {
|
|
6
|
-
"name": "pi-hypercharm-provider",
|
|
7
|
-
"devDependencies": {
|
|
8
|
-
"@earendil-works/pi-ai": "0.85.1",
|
|
9
|
-
"@earendil-works/pi-coding-agent": "0.85.1",
|
|
10
|
-
"@types/node": "^24.10.1",
|
|
11
|
-
"typescript": "6.0.3",
|
|
12
|
-
},
|
|
13
|
-
},
|
|
14
|
-
},
|
|
15
|
-
"packages": {
|
|
16
|
-
"@anthropic-ai/sdk": ["@anthropic-ai/sdk@0.123.0", "", { "dependencies": { "json-schema-to-ts": "^3.1.1", "standardwebhooks": "^1.0.0" }, "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["zod"], "bin": { "anthropic-ai-sdk": "bin/cli" } }, "sha512-Y9oX9mPNGZClHQOFqrWRk43Srcu/UHuPq3rfxxOq7JgW0gi+lJA2MAOK4Ul3k/+AUrwRWFJvd0tK3oC0Pw25dw=="],
|
|
17
|
-
|
|
18
|
-
"@aws-crypto/sha256-browser": ["@aws-crypto/sha256-browser@5.2.0", "", { "dependencies": { "@aws-crypto/sha256-js": "5.2.0", "@aws-crypto/supports-web-crypto": "5.2.0", "@aws-crypto/util": "5.2.0", "@aws-sdk/types": "3.974.2", "@aws-sdk/util-locate-window": "3.965.8", "@smithy/util-utf8": "2.3.0", "tslib": "2.8.1" } }, "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw=="],
|
|
19
|
-
|
|
20
|
-
"@aws-crypto/sha256-js": ["@aws-crypto/sha256-js@5.2.0", "", { "dependencies": { "@aws-crypto/util": "5.2.0", "@aws-sdk/types": "3.974.2", "tslib": "2.8.1" } }, "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA=="],
|
|
21
|
-
|
|
22
|
-
"@aws-crypto/supports-web-crypto": ["@aws-crypto/supports-web-crypto@5.2.0", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg=="],
|
|
23
|
-
|
|
24
|
-
"@aws-crypto/util": ["@aws-crypto/util@5.2.0", "", { "dependencies": { "@aws-sdk/types": "3.974.2", "@smithy/util-utf8": "2.3.0", "tslib": "2.8.1" } }, "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ=="],
|
|
25
|
-
|
|
26
|
-
"@aws-sdk/client-bedrock-runtime": ["@aws-sdk/client-bedrock-runtime@3.1048.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.977.6", "@aws-sdk/credential-provider-node": "3.972.78", "@aws-sdk/eventstream-handler-node": "3.972.31", "@aws-sdk/middleware-eventstream": "3.972.26", "@aws-sdk/middleware-websocket": "3.972.49", "@aws-sdk/token-providers": "3.1048.0", "@aws-sdk/types": "3.974.2", "@smithy/core": "3.31.1", "@smithy/fetch-http-handler": "5.6.13", "@smithy/node-http-handler": "4.9.13", "@smithy/types": "4.16.1", "tslib": "2.8.1" } }, "sha512-u+NT61JZEkRFtpL0CAw1N1dwxnaLgwVXQl/zjJxTGgLyS/jTIdg2SdoEoCTHxgDyCnqa1HEi9QOoE9/pYRNpOQ=="],
|
|
27
|
-
|
|
28
|
-
"@aws-sdk/core": ["@aws-sdk/core@3.977.6", "", { "dependencies": { "@aws-sdk/types": "3.974.2", "@aws-sdk/xml-builder": "3.972.37", "@aws/lambda-invoke-store": "0.3.0", "@smithy/core": "3.31.1", "@smithy/signature-v4": "5.6.12", "@smithy/types": "4.16.1", "bowser": "2.14.1", "tslib": "2.8.1" } }, "sha512-QiaJV4/zDrB4ZY2mfeSXSzSTc36W16sZXcGz+SPFk0CJ26gziO0cS+4LjJUMAbdeeBOvS0k0Aq1cZpfGdUXxSw=="],
|
|
29
|
-
|
|
30
|
-
"@aws-sdk/credential-provider-env": ["@aws-sdk/credential-provider-env@3.972.67", "", { "dependencies": { "@aws-sdk/core": "3.977.6", "@aws-sdk/types": "3.974.2", "@smithy/core": "3.31.1", "@smithy/types": "4.16.1", "tslib": "2.8.1" } }, "sha512-rcIpk5kxUqDaaNa6Xk23pQ6ViY7jlqzmfFWCahQcBT97ddXaXYYwzCen9Tz1Jvo6aJft6wDl5bN44/Jw5B4oLA=="],
|
|
31
|
-
|
|
32
|
-
"@aws-sdk/credential-provider-http": ["@aws-sdk/credential-provider-http@3.972.69", "", { "dependencies": { "@aws-sdk/core": "3.977.6", "@aws-sdk/types": "3.974.2", "@smithy/core": "3.31.1", "@smithy/fetch-http-handler": "5.6.13", "@smithy/node-http-handler": "4.9.13", "@smithy/types": "4.16.1", "tslib": "2.8.1" } }, "sha512-nggwJtZ4eeNsUw5IeWBMXsi1ryct5idi0K+/SCRF3kybLubOMaNTb3XCihXpWMiVpyzyPeIrl0zTkzhBH9porA=="],
|
|
33
|
-
|
|
34
|
-
"@aws-sdk/credential-provider-ini": ["@aws-sdk/credential-provider-ini@3.973.12", "", { "dependencies": { "@aws-sdk/core": "3.977.6", "@aws-sdk/credential-provider-env": "3.972.67", "@aws-sdk/credential-provider-http": "3.972.69", "@aws-sdk/credential-provider-login": "3.972.74", "@aws-sdk/credential-provider-process": "3.972.67", "@aws-sdk/credential-provider-sso": "3.973.11", "@aws-sdk/credential-provider-web-identity": "3.972.73", "@aws-sdk/nested-clients": "3.997.41", "@aws-sdk/types": "3.974.2", "@smithy/core": "3.31.1", "@smithy/credential-provider-imds": "4.4.16", "@smithy/types": "4.16.1", "tslib": "2.8.1" } }, "sha512-pNEf/OeyN5X3VmLKlgSO6TqaWmW10CvI3TfwL1XhsuhYjSLT2VDaxFnCPHnOeQXSaFisMX4jNhpETriqN8DOmg=="],
|
|
35
|
-
|
|
36
|
-
"@aws-sdk/credential-provider-login": ["@aws-sdk/credential-provider-login@3.972.74", "", { "dependencies": { "@aws-sdk/core": "3.977.6", "@aws-sdk/nested-clients": "3.997.41", "@aws-sdk/types": "3.974.2", "@smithy/core": "3.31.1", "@smithy/types": "4.16.1", "tslib": "2.8.1" } }, "sha512-0AQfDcf99TNmqVKv0owHrw/TQs6i4ZE5t9qmz6NvO53bE/sA/tpXhXL9AAcEP1qHc6Zzjd1UMb69+/9zdhvY3g=="],
|
|
37
|
-
|
|
38
|
-
"@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.972.78", "", { "dependencies": { "@aws-sdk/credential-provider-env": "3.972.67", "@aws-sdk/credential-provider-http": "3.972.69", "@aws-sdk/credential-provider-ini": "3.973.12", "@aws-sdk/credential-provider-process": "3.972.67", "@aws-sdk/credential-provider-sso": "3.973.11", "@aws-sdk/credential-provider-web-identity": "3.972.73", "@aws-sdk/types": "3.974.2", "@smithy/core": "3.31.1", "@smithy/credential-provider-imds": "4.4.16", "@smithy/types": "4.16.1", "tslib": "2.8.1" } }, "sha512-OgPAnfvbGAMWac6yvxJ1ihslrvDpPVwR68D2csospdNCCyPvHk9JLzYKwz48SNiS1T2znDwHauywRKRFfpyYng=="],
|
|
39
|
-
|
|
40
|
-
"@aws-sdk/credential-provider-process": ["@aws-sdk/credential-provider-process@3.972.67", "", { "dependencies": { "@aws-sdk/core": "3.977.6", "@aws-sdk/types": "3.974.2", "@smithy/core": "3.31.1", "@smithy/types": "4.16.1", "tslib": "2.8.1" } }, "sha512-IlUEejorGTWKb4/Dm7K5Yw4QxUmXLThLhrvBmzVBqZFTbW72cv9LTcITmo1dsnYriALE4h68mOq4LB99x6sQ7Q=="],
|
|
41
|
-
|
|
42
|
-
"@aws-sdk/credential-provider-sso": ["@aws-sdk/credential-provider-sso@3.973.11", "", { "dependencies": { "@aws-sdk/core": "3.977.6", "@aws-sdk/nested-clients": "3.997.41", "@aws-sdk/token-providers": "3.1103.0", "@aws-sdk/types": "3.974.2", "@smithy/core": "3.31.1", "@smithy/types": "4.16.1", "tslib": "2.8.1" } }, "sha512-gAQBkBZxUB84d71+pPcI9L+jh2ujhuAVxc/4FgGiWFDjkPBlMKxzd5XDtkSXTFX8Ro7ansnT88+XadasxMeCRw=="],
|
|
43
|
-
|
|
44
|
-
"@aws-sdk/credential-provider-web-identity": ["@aws-sdk/credential-provider-web-identity@3.972.73", "", { "dependencies": { "@aws-sdk/core": "3.977.6", "@aws-sdk/nested-clients": "3.997.41", "@aws-sdk/types": "3.974.2", "@smithy/core": "3.31.1", "@smithy/types": "4.16.1", "tslib": "2.8.1" } }, "sha512-SnlEmQa6SjOgs6iOPLUQl1Eyq4AKiAdPQlkOhFhqNfDtDCwibMGvL6QlkSmf3o6vAUSImzdPCxowT5dfQUZP1A=="],
|
|
45
|
-
|
|
46
|
-
"@aws-sdk/eventstream-handler-node": ["@aws-sdk/eventstream-handler-node@3.972.31", "", { "dependencies": { "@aws-sdk/types": "3.974.2", "@smithy/core": "3.31.1", "@smithy/types": "4.16.1", "tslib": "2.8.1" } }, "sha512-/BRzvkp46mF6eXBL/l9WKPQQfifLlUPaWli6n9/T/WDLUg8he7TCyuNFnk6RvHP5j5W/kMj5Gxw7W778LJaXDA=="],
|
|
47
|
-
|
|
48
|
-
"@aws-sdk/middleware-eventstream": ["@aws-sdk/middleware-eventstream@3.972.26", "", { "dependencies": { "@aws-sdk/types": "3.974.2", "@smithy/core": "3.31.1", "@smithy/types": "4.16.1", "tslib": "2.8.1" } }, "sha512-2eIvouTZoxPu5ClHY6ij13De1yhY8Rmllt0dlGeBNXX3wmR7fU1pvMCGb50fKm1GxcuntWK0t1T0cMjTyDoUQA=="],
|
|
49
|
-
|
|
50
|
-
"@aws-sdk/middleware-websocket": ["@aws-sdk/middleware-websocket@3.972.49", "", { "dependencies": { "@aws-sdk/core": "3.977.6", "@aws-sdk/types": "3.974.2", "@smithy/core": "3.31.1", "@smithy/fetch-http-handler": "5.6.13", "@smithy/signature-v4": "5.6.12", "@smithy/types": "4.16.1", "tslib": "2.8.1" } }, "sha512-wGYJvu1/stdWuzGcNyh44u8aY7ArU8XFrMesBlzIYn70HWVCRBNEngQexDuPIMu0NEgsKGKmTc0uvnS/bF7KWw=="],
|
|
51
|
-
|
|
52
|
-
"@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.997.41", "", { "dependencies": { "@aws-sdk/core": "3.977.6", "@aws-sdk/signature-v4-multi-region": "3.996.43", "@aws-sdk/types": "3.974.2", "@smithy/core": "3.31.1", "@smithy/fetch-http-handler": "5.6.13", "@smithy/node-http-handler": "4.9.13", "@smithy/types": "4.16.1", "tslib": "2.8.1" } }, "sha512-RDHqPGQWlF6tatA/Tp3rg6oIwtgN9IVderxE+9av2Y93Dfyu+mO1hZ5Bu2jpfZg2rwdNbsssnwM+sLafIczMlQ=="],
|
|
53
|
-
|
|
54
|
-
"@aws-sdk/signature-v4-multi-region": ["@aws-sdk/signature-v4-multi-region@3.996.43", "", { "dependencies": { "@aws-sdk/types": "3.974.2", "@smithy/signature-v4": "5.6.12", "@smithy/types": "4.16.1", "tslib": "2.8.1" } }, "sha512-lKekx8bLBXSv4O+cslk9Zfnw2XKSkWBs3uWL5QGhH2ZAQfNS7FE0vcSSN2vD/AhxX54ZTywWxR4STThoeOXlBA=="],
|
|
55
|
-
|
|
56
|
-
"@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.1048.0", "", { "dependencies": { "@aws-sdk/core": "3.977.6", "@aws-sdk/nested-clients": "3.997.41", "@aws-sdk/types": "3.974.2", "@smithy/core": "3.31.1", "@smithy/types": "4.16.1", "tslib": "2.8.1" } }, "sha512-k0y/GcuesuSfWyUM0WamrGyeZmltRYaPbHO82UDA6mZ/doB+FOHKutikPAtSXMn/hDz970cF+iRuuiYO9VEbAA=="],
|
|
57
|
-
|
|
58
|
-
"@aws-sdk/types": ["@aws-sdk/types@3.974.2", "", { "dependencies": { "@smithy/types": "4.16.1", "tslib": "2.8.1" } }, "sha512-3W6IUtSxFbH6X7Wb7DzGCV5QiFQsd0g8bOfntpmDxQlzBoKWUMBu/JPQR0DwkE+Hpnxd6db1tXbOwdeHddG6cA=="],
|
|
59
|
-
|
|
60
|
-
"@aws-sdk/util-locate-window": ["@aws-sdk/util-locate-window@3.965.8", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-uUbMs1cBZPafD0ohUj6EwNf0fPZ534NvBxHox4hjX+0Rxq5paSYUem7+hi833pYrzrcnBATKIYpR02MDXT5M9g=="],
|
|
61
|
-
|
|
62
|
-
"@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.37", "", { "dependencies": { "@smithy/types": "4.16.1", "tslib": "2.8.1" } }, "sha512-zKq4HQum8JwDyEuyfuI4bbiAcU0KxP6qy+9PR/IsR92IyE/DaBAikzAS50tjxip4bqIIANpCcG+Yyj6CVhXupg=="],
|
|
63
|
-
|
|
64
|
-
"@aws/lambda-invoke-store": ["@aws/lambda-invoke-store@0.3.0", "", {}, "sha512-sl4Bm6yiMNYrZKkqqDFWN0UfnWhlS8ivKxrYl+6t0gCLrqr8y3B2IqZZbFRkfaVVp7C/baApyh71P+LeE1A2sQ=="],
|
|
65
|
-
|
|
66
|
-
"@babel/runtime": ["@babel/runtime@7.29.7", "", {}, "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw=="],
|
|
67
|
-
|
|
68
|
-
"@earendil-works/chord": ["@earendil-works/chord@0.85.1", "", { "dependencies": { "esbuild": "0.28.1" } }, "sha512-VDlkEC3dhCzQ5fcyH1OhG19dq+6jCn+rqc/iXFivwDYGR5anwo2RCiXij9PpHhqNR5GuhhE+Er69Zi1Sn4eY6w=="],
|
|
69
|
-
|
|
70
|
-
"@earendil-works/pi-agent-core": ["@earendil-works/pi-agent-core@0.85.1", "", { "dependencies": { "@earendil-works/chord": "^0.85.1", "@earendil-works/pi-ai": "^0.85.1", "@earendil-works/pi-telemetry": "^0.85.1", "diff": "8.0.4", "ignore": "7.0.5", "typebox": "1.3.7", "yaml": "2.9.0" } }, "sha512-hIXIP3eAWueAYiAl8aMvWCvvZ8Q5gT3Dip5bE5uJyIGh4+YlWRjtMLI4BaeoXoSs93zndjue61u1B/vhefLnuA=="],
|
|
71
|
-
|
|
72
|
-
"@earendil-works/pi-ai": ["@earendil-works/pi-ai@0.85.1", "", { "dependencies": { "@anthropic-ai/sdk": "0.123.0", "@aws-sdk/client-bedrock-runtime": "3.1048.0", "@earendil-works/pi-telemetry": "^0.85.1", "@google/genai": "1.52.0", "@smithy/node-http-handler": "4.7.3", "http-proxy-agent": "7.0.2", "https-proxy-agent": "7.0.6", "openai": "6.40.0", "partial-json": "0.1.7", "typebox": "1.3.7" }, "bin": { "pi-ai": "dist/cli.js" } }, "sha512-+VgVIJDkDO2efYJKEEqvPTH4zmnIaXdAppGbO+vKFA9qy5PdhFiAenuFAkU+oiCSfOC4dMHDyrjdQeL4ZoC5CQ=="],
|
|
73
|
-
|
|
74
|
-
"@earendil-works/pi-coding-agent": ["@earendil-works/pi-coding-agent@0.85.1", "", { "dependencies": { "@earendil-works/chord": "^0.85.1", "@earendil-works/pi-agent-core": "^0.85.1", "@earendil-works/pi-ai": "^0.85.1", "@earendil-works/pi-tui": "^0.85.1", "@silvia-odwyer/photon-node": "0.3.4", "chalk": "5.6.2", "cross-spawn": "7.0.6", "diff": "8.0.4", "grok-mermaid": "0.2.2", "highlight.js": "10.7.3", "hosted-git-info": "9.0.3", "ignore": "7.0.5", "jiti": "2.7.0", "minimatch": "10.2.5", "proper-lockfile": "4.1.2", "semver": "7.8.0", "typebox": "1.3.7", "undici": "8.9.0", "yaml": "2.9.0" }, "optionalDependencies": { "@mariozechner/clipboard": "0.3.9" }, "bin": { "pi": "dist/bundle/cli.js" } }, "sha512-FGRN+OHbWaefBPGaTggAdLjrIHW+s2PzLyglz/5dfLzb9of7uuXMXYC0fJIeZTw+shS32o2cuQ9jF7YSDuL/oQ=="],
|
|
75
|
-
|
|
76
|
-
"@earendil-works/pi-telemetry": ["@earendil-works/pi-telemetry@0.85.1", "", {}, "sha512-Bg/YN6kA7Swja/NQxka8xFdecb4E/auIEGF2G5A25EaQXhRnPj300/7/KpgsDDMYUzHTDAv4RyUxaQPJKW81Rw=="],
|
|
77
|
-
|
|
78
|
-
"@earendil-works/pi-tui": ["@earendil-works/pi-tui@0.85.1", "", { "dependencies": { "get-east-asian-width": "1.6.0", "marked": "18.0.5" } }, "sha512-OIzw9efInmO4WOBnD4TxcTdBjmzvYJpzslkgoUro946nEGoYWg5rwv1p4fDt3/JvMx9QybryUCUwlm7j8Dreig=="],
|
|
79
|
-
|
|
80
|
-
"@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="],
|
|
81
|
-
|
|
82
|
-
"@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="],
|
|
83
|
-
|
|
84
|
-
"@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="],
|
|
85
|
-
|
|
86
|
-
"@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="],
|
|
87
|
-
|
|
88
|
-
"@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="],
|
|
89
|
-
|
|
90
|
-
"@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="],
|
|
91
|
-
|
|
92
|
-
"@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="],
|
|
93
|
-
|
|
94
|
-
"@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="],
|
|
95
|
-
|
|
96
|
-
"@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="],
|
|
97
|
-
|
|
98
|
-
"@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="],
|
|
99
|
-
|
|
100
|
-
"@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="],
|
|
101
|
-
|
|
102
|
-
"@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="],
|
|
103
|
-
|
|
104
|
-
"@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="],
|
|
105
|
-
|
|
106
|
-
"@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="],
|
|
107
|
-
|
|
108
|
-
"@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="],
|
|
109
|
-
|
|
110
|
-
"@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="],
|
|
111
|
-
|
|
112
|
-
"@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="],
|
|
113
|
-
|
|
114
|
-
"@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="],
|
|
115
|
-
|
|
116
|
-
"@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="],
|
|
117
|
-
|
|
118
|
-
"@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="],
|
|
119
|
-
|
|
120
|
-
"@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="],
|
|
121
|
-
|
|
122
|
-
"@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="],
|
|
123
|
-
|
|
124
|
-
"@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="],
|
|
125
|
-
|
|
126
|
-
"@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="],
|
|
127
|
-
|
|
128
|
-
"@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="],
|
|
129
|
-
|
|
130
|
-
"@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="],
|
|
131
|
-
|
|
132
|
-
"@google/genai": ["@google/genai@1.52.0", "", { "dependencies": { "google-auth-library": "10.9.1", "p-retry": "4.6.2", "protobufjs": "7.6.5", "ws": "8.21.3" }, "peerDependencies": { "@modelcontextprotocol/sdk": "^1.25.2" }, "optionalPeers": ["@modelcontextprotocol/sdk"] }, "sha512-gwSvbpiN/17O9TbsqSsE/OzZcpv5Fo4RQjdngGgogtuB9RsyJ8ZHhX5KjHj1bp5N9snN2eK8LDGXSaWW2hof8Q=="],
|
|
133
|
-
|
|
134
|
-
"@mariozechner/clipboard": ["@mariozechner/clipboard@0.3.9", "", { "optionalDependencies": { "@mariozechner/clipboard-darwin-arm64": "0.3.9", "@mariozechner/clipboard-darwin-universal": "0.3.9", "@mariozechner/clipboard-darwin-x64": "0.3.9", "@mariozechner/clipboard-linux-arm64-gnu": "0.3.9", "@mariozechner/clipboard-linux-arm64-musl": "0.3.9", "@mariozechner/clipboard-linux-riscv64-gnu": "0.3.9", "@mariozechner/clipboard-linux-x64-gnu": "0.3.9", "@mariozechner/clipboard-linux-x64-musl": "0.3.9", "@mariozechner/clipboard-win32-arm64-msvc": "0.3.9", "@mariozechner/clipboard-win32-x64-msvc": "0.3.9" } }, "sha512-ABnA53mdfkGZwOFUdZNv2S0CWGO/EIuPj8Vv9xmBFmSYg/qFc7ihO6q5FcQjvoE67kZpWkEc4AhD6B/os04yuA=="],
|
|
135
|
-
|
|
136
|
-
"@mariozechner/clipboard-darwin-arm64": ["@mariozechner/clipboard-darwin-arm64@0.3.9", "", { "os": "darwin", "cpu": "arm64" }, "sha512-BfgV7vCEWZwJwZJw03r6bP5+tf0iI/ANuQYCxi9RNn7FrWB3yzGuMKCrNLRl6V761vXRdL8+OqZ0wd4TqlsNOQ=="],
|
|
137
|
-
|
|
138
|
-
"@mariozechner/clipboard-darwin-universal": ["@mariozechner/clipboard-darwin-universal@0.3.9", "", { "os": "darwin" }, "sha512-BGGR4iA9Z2shAjI65eI5xtyb3LYNlDW9X3gxKxDbqtbnREohsrqznov6zpKoIrsRWpzlYVEdKphS7ksJ0/ndSQ=="],
|
|
139
|
-
|
|
140
|
-
"@mariozechner/clipboard-darwin-x64": ["@mariozechner/clipboard-darwin-x64@0.3.9", "", { "os": "darwin", "cpu": "x64" }, "sha512-4kURmCbS6nt8uYhtmWpUcJWyPHfmAr5dTpXD1nO3pIfa+TSQ9DbrGOYCKH+aEFW47XhQ4Vp8ZTszie+wfFvDKg=="],
|
|
141
|
-
|
|
142
|
-
"@mariozechner/clipboard-linux-arm64-gnu": ["@mariozechner/clipboard-linux-arm64-gnu@0.3.9", "", { "os": "linux", "cpu": "arm64" }, "sha512-g59OkUGP2DDfCOIKypHeYgv2M55u/cKvXa5dSxFbEJ34XvIQMdcVmpKCkGUro3ZgefXiGVdwguvTMQGpHWzIXw=="],
|
|
143
|
-
|
|
144
|
-
"@mariozechner/clipboard-linux-arm64-musl": ["@mariozechner/clipboard-linux-arm64-musl@0.3.9", "", { "os": "linux", "cpu": "arm64" }, "sha512-AGuJdgKsmJdm4Pych7kv3sqe591ERRaAHW3xjLooiFzn8J+PxUyof++7YZrB5Y5tpnTO+K18Og3taj2NpluCRQ=="],
|
|
145
|
-
|
|
146
|
-
"@mariozechner/clipboard-linux-riscv64-gnu": ["@mariozechner/clipboard-linux-riscv64-gnu@0.3.9", "", { "os": "linux", "cpu": "none" }, "sha512-DXBEAiuMpk7dhS1a9NzNxVAFi1vaKoPu7rQNgY8LIDLGrK3lnIp3nT10DUum+PKVJoJppIP+NAA8IZe4DMNDPw=="],
|
|
147
|
-
|
|
148
|
-
"@mariozechner/clipboard-linux-x64-gnu": ["@mariozechner/clipboard-linux-x64-gnu@0.3.9", "", { "os": "linux", "cpu": "x64" }, "sha512-WORrMLd6EpElEME7JRKfSaY34nW1P5LbdgK5YNCS1ncG2LqmITsSMEJ8nh2mpvxb3TxqbOOKgY7k9eMJYlW9Mw=="],
|
|
149
|
-
|
|
150
|
-
"@mariozechner/clipboard-linux-x64-musl": ["@mariozechner/clipboard-linux-x64-musl@0.3.9", "", { "os": "linux", "cpu": "x64" }, "sha512-/DHn+1DrfL6oRaPPWXaOKvonFFrni666fxd+zFqiQEfvBH0tsHVWjq9iqBk0oDp0qaPA72lIMy5BptxISBEhZQ=="],
|
|
151
|
-
|
|
152
|
-
"@mariozechner/clipboard-win32-arm64-msvc": ["@mariozechner/clipboard-win32-arm64-msvc@0.3.9", "", { "os": "win32", "cpu": "arm64" }, "sha512-O5FHD3ErkMwMhNzAfu3ggy0ug4z7btZuoQgwwxlzPrwV2bxlD6WDpqBY4NCgICAgZdDKdp+loUEKVAVt8aYnhQ=="],
|
|
153
|
-
|
|
154
|
-
"@mariozechner/clipboard-win32-x64-msvc": ["@mariozechner/clipboard-win32-x64-msvc@0.3.9", "", { "os": "win32", "cpu": "x64" }, "sha512-ihQC3EufqEY81vhXBgVBtK4prL+wc62zJsSvxrgz7K1hsdt6OObz6v9p3Rn1OG3GJksTTKMJF0u/guMISHPhSA=="],
|
|
155
|
-
|
|
156
|
-
"@protobufjs/aspromise": ["@protobufjs/aspromise@1.1.2", "", {}, "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="],
|
|
157
|
-
|
|
158
|
-
"@protobufjs/base64": ["@protobufjs/base64@1.1.2", "", {}, "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="],
|
|
159
|
-
|
|
160
|
-
"@protobufjs/codegen": ["@protobufjs/codegen@2.0.5", "", {}, "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g=="],
|
|
161
|
-
|
|
162
|
-
"@protobufjs/eventemitter": ["@protobufjs/eventemitter@1.1.1", "", {}, "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg=="],
|
|
163
|
-
|
|
164
|
-
"@protobufjs/fetch": ["@protobufjs/fetch@1.1.1", "", { "dependencies": { "@protobufjs/aspromise": "1.1.2" } }, "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw=="],
|
|
165
|
-
|
|
166
|
-
"@protobufjs/float": ["@protobufjs/float@1.0.2", "", {}, "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="],
|
|
167
|
-
|
|
168
|
-
"@protobufjs/path": ["@protobufjs/path@1.1.2", "", {}, "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="],
|
|
169
|
-
|
|
170
|
-
"@protobufjs/pool": ["@protobufjs/pool@1.1.0", "", {}, "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="],
|
|
171
|
-
|
|
172
|
-
"@protobufjs/utf8": ["@protobufjs/utf8@1.1.2", "", {}, "sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug=="],
|
|
173
|
-
|
|
174
|
-
"@silvia-odwyer/photon-node": ["@silvia-odwyer/photon-node@0.3.4", "", {}, "sha512-bnly4BKB3KDTFxrUIcgCLbaeVVS8lrAkri1pEzskpmxu9MdfGQTy8b8EgcD83ywD3RPMsIulY8xJH5Awa+t9fA=="],
|
|
175
|
-
|
|
176
|
-
"@smithy/core": ["@smithy/core@3.31.1", "", { "dependencies": { "@smithy/types": "4.16.1", "tslib": "2.8.1" } }, "sha512-CyogUINxvi7C7LDsh8Syo6hVJOT9ckz4rG8dRZfTJ8r91HkMY59PnNooaj7WcHyxEkxPfBAmbgztZU+xTo76lg=="],
|
|
177
|
-
|
|
178
|
-
"@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.4.16", "", { "dependencies": { "@smithy/core": "3.31.1", "@smithy/types": "4.16.1", "tslib": "2.8.1" } }, "sha512-QfuLWAkLzptffFW980AFeHZFdqds2B64rpEd3uJ6lgs3xVn9QegGMUgUcj+4d7dRrAsya3r58ZKpku97WcFb4w=="],
|
|
179
|
-
|
|
180
|
-
"@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.6.13", "", { "dependencies": { "@smithy/core": "3.31.1", "@smithy/types": "4.16.1", "tslib": "2.8.1" } }, "sha512-4fW86pEUOMbrD5nkbyl/tTvPHHWJFbuB2odl6ps9lWfHoXf9HWh3Q/Smh59qH1g7+c/BSZghX6bbUk4gsiMs8A=="],
|
|
181
|
-
|
|
182
|
-
"@smithy/is-array-buffer": ["@smithy/is-array-buffer@2.2.0", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="],
|
|
183
|
-
|
|
184
|
-
"@smithy/node-http-handler": ["@smithy/node-http-handler@4.7.3", "", { "dependencies": { "@smithy/core": "3.31.1", "@smithy/types": "4.16.1", "tslib": "2.8.1" } }, "sha512-/jPhevcTFPMVl6KNjbaI47iOg1zxC7IsnX4PQDGVZKMFceOXtB8IEYaB7a9VvkP/3oC60WzTeKocvSI7vLT0vA=="],
|
|
185
|
-
|
|
186
|
-
"@smithy/signature-v4": ["@smithy/signature-v4@5.6.12", "", { "dependencies": { "@smithy/core": "3.31.1", "@smithy/types": "4.16.1", "tslib": "2.8.1" } }, "sha512-I6KLtq3H0qqSuV9vLglfi8puHqzygzWHOnI4z/Rdoo+q50vvo18vBRdPAvvEtcaKROz7Zn6qnPa14kRfPH6PcQ=="],
|
|
187
|
-
|
|
188
|
-
"@smithy/types": ["@smithy/types@4.16.1", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-0JFs3V2y2M9tKW5na/qxe69Zv+uxLMO7QBbhxF/FHu/Gp2NFZAAL9tWl9PU02xxo07pb3G9FTyjNc6D5uZrJIg=="],
|
|
189
|
-
|
|
190
|
-
"@smithy/util-buffer-from": ["@smithy/util-buffer-from@2.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "2.2.0", "tslib": "2.8.1" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="],
|
|
191
|
-
|
|
192
|
-
"@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "", { "dependencies": { "@smithy/util-buffer-from": "2.2.0", "tslib": "2.8.1" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="],
|
|
193
|
-
|
|
194
|
-
"@stablelib/base64": ["@stablelib/base64@1.0.1", "", {}, "sha512-1bnPQqSxSuc3Ii6MhBysoWCg58j97aUjuCSZrGSmDxNqtytIi0k8utUenAwTZN4V5mXXYGsVUI9zeBqy+jBOSQ=="],
|
|
195
|
-
|
|
196
|
-
"@types/node": ["@types/node@24.13.3", "", { "dependencies": { "undici-types": "7.18.2" } }, "sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q=="],
|
|
197
|
-
|
|
198
|
-
"@types/retry": ["@types/retry@0.12.0", "", {}, "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA=="],
|
|
199
|
-
|
|
200
|
-
"agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="],
|
|
201
|
-
|
|
202
|
-
"balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="],
|
|
203
|
-
|
|
204
|
-
"base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="],
|
|
205
|
-
|
|
206
|
-
"bignumber.js": ["bignumber.js@9.3.1", "", {}, "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ=="],
|
|
207
|
-
|
|
208
|
-
"bowser": ["bowser@2.14.1", "", {}, "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg=="],
|
|
209
|
-
|
|
210
|
-
"brace-expansion": ["brace-expansion@5.0.9", "", { "dependencies": { "balanced-match": "4.0.4" } }, "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg=="],
|
|
211
|
-
|
|
212
|
-
"buffer-equal-constant-time": ["buffer-equal-constant-time@1.0.1", "", {}, "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="],
|
|
213
|
-
|
|
214
|
-
"chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="],
|
|
215
|
-
|
|
216
|
-
"cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "3.1.1", "shebang-command": "2.0.0", "which": "2.0.2" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="],
|
|
217
|
-
|
|
218
|
-
"data-uri-to-buffer": ["data-uri-to-buffer@4.0.1", "", {}, "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A=="],
|
|
219
|
-
|
|
220
|
-
"debug": ["debug@4.4.3", "", { "dependencies": { "ms": "2.1.3" }, "peerDependencies": { "supports-color": "*" }, "optionalPeers": ["supports-color"] }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="],
|
|
221
|
-
|
|
222
|
-
"diff": ["diff@8.0.4", "", {}, "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw=="],
|
|
223
|
-
|
|
224
|
-
"ecdsa-sig-formatter": ["ecdsa-sig-formatter@1.0.11", "", { "dependencies": { "safe-buffer": "5.2.1" } }, "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ=="],
|
|
225
|
-
|
|
226
|
-
"esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="],
|
|
227
|
-
|
|
228
|
-
"extend": ["extend@3.0.2", "", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="],
|
|
229
|
-
|
|
230
|
-
"fast-sha256": ["fast-sha256@1.3.0", "", {}, "sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ=="],
|
|
231
|
-
|
|
232
|
-
"fetch-blob": ["fetch-blob@3.2.0", "", { "dependencies": { "node-domexception": "1.0.0", "web-streams-polyfill": "3.3.3" } }, "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ=="],
|
|
233
|
-
|
|
234
|
-
"formdata-polyfill": ["formdata-polyfill@4.0.10", "", { "dependencies": { "fetch-blob": "3.2.0" } }, "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g=="],
|
|
235
|
-
|
|
236
|
-
"gaxios": ["gaxios@7.3.0", "", { "dependencies": { "extend": "3.0.2", "https-proxy-agent": "7.0.6", "node-fetch": "3.3.2" } }, "sha512-RB5vLV+vvQeoFPCX4QMK6/hjVkbIamPp1QSUD0CiZcnj12qbpiL+pLbYtgD+oZkWl0tl9z+o2Utp+MpM3QRhBA=="],
|
|
237
|
-
|
|
238
|
-
"gcp-metadata": ["gcp-metadata@8.1.2", "", { "dependencies": { "gaxios": "7.3.0", "google-logging-utils": "1.1.3", "json-bigint": "1.0.0" } }, "sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg=="],
|
|
239
|
-
|
|
240
|
-
"get-east-asian-width": ["get-east-asian-width@1.6.0", "", {}, "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA=="],
|
|
241
|
-
|
|
242
|
-
"google-auth-library": ["google-auth-library@10.9.1", "", { "dependencies": { "base64-js": "1.5.1", "ecdsa-sig-formatter": "1.0.11", "gaxios": "7.3.0", "gcp-metadata": "8.1.2", "google-logging-utils": "1.1.3", "jws": "4.0.1" } }, "sha512-i1ydyHrqcIxXkWh/uBmVkzCvIuq5yiK2ATndIe5XxKholrG/MTYP9xGYka4sQhrbIAgGjL2B6NOE7rFaiF3fXw=="],
|
|
243
|
-
|
|
244
|
-
"google-logging-utils": ["google-logging-utils@1.1.3", "", {}, "sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA=="],
|
|
245
|
-
|
|
246
|
-
"graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="],
|
|
247
|
-
|
|
248
|
-
"grok-mermaid": ["grok-mermaid@0.2.2", "", {}, "sha512-XcJEP5dDC8liHBh52mlLjU18fNvu1ckFsu0QpIG3+APZ270fsj9wxpiA6cOURmbUEuoMVgjbC2+UYgTdCqqgzA=="],
|
|
249
|
-
|
|
250
|
-
"highlight.js": ["highlight.js@10.7.3", "", {}, "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A=="],
|
|
251
|
-
|
|
252
|
-
"hosted-git-info": ["hosted-git-info@9.0.3", "", { "dependencies": { "lru-cache": "11.5.2" } }, "sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg=="],
|
|
253
|
-
|
|
254
|
-
"http-proxy-agent": ["http-proxy-agent@7.0.2", "", { "dependencies": { "agent-base": "7.1.4", "debug": "4.4.3" } }, "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig=="],
|
|
255
|
-
|
|
256
|
-
"https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "7.1.4", "debug": "4.4.3" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="],
|
|
257
|
-
|
|
258
|
-
"ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="],
|
|
259
|
-
|
|
260
|
-
"isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],
|
|
261
|
-
|
|
262
|
-
"jiti": ["jiti@2.7.0", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ=="],
|
|
263
|
-
|
|
264
|
-
"json-bigint": ["json-bigint@1.0.0", "", { "dependencies": { "bignumber.js": "9.3.1" } }, "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ=="],
|
|
265
|
-
|
|
266
|
-
"json-schema-to-ts": ["json-schema-to-ts@3.1.1", "", { "dependencies": { "@babel/runtime": "7.29.7", "ts-algebra": "2.0.0" } }, "sha512-+DWg8jCJG2TEnpy7kOm/7/AxaYoaRbjVB4LFZLySZlWn8exGs3A4OLJR966cVvU26N7X9TWxl+Jsw7dzAqKT6g=="],
|
|
267
|
-
|
|
268
|
-
"jwa": ["jwa@2.0.1", "", { "dependencies": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", "safe-buffer": "5.2.1" } }, "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg=="],
|
|
269
|
-
|
|
270
|
-
"jws": ["jws@4.0.1", "", { "dependencies": { "jwa": "2.0.1", "safe-buffer": "5.2.1" } }, "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA=="],
|
|
271
|
-
|
|
272
|
-
"long": ["long@5.3.2", "", {}, "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA=="],
|
|
273
|
-
|
|
274
|
-
"lru-cache": ["lru-cache@11.5.2", "", {}, "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g=="],
|
|
275
|
-
|
|
276
|
-
"marked": ["marked@18.0.5", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-S6GcvALHg6K4ohtu4E7x0a1AqhAjp6cV8KhLSyN9qVapnzJkusVBxZRcIU9AeYsbe6P1hKDusSbEOzGyyuce6w=="],
|
|
277
|
-
|
|
278
|
-
"minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "5.0.9" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="],
|
|
279
|
-
|
|
280
|
-
"ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
|
|
281
|
-
|
|
282
|
-
"node-domexception": ["node-domexception@1.0.0", "", {}, "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ=="],
|
|
283
|
-
|
|
284
|
-
"node-fetch": ["node-fetch@3.3.2", "", { "dependencies": { "data-uri-to-buffer": "4.0.1", "fetch-blob": "3.2.0", "formdata-polyfill": "4.0.10" } }, "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA=="],
|
|
285
|
-
|
|
286
|
-
"openai": ["openai@6.40.0", "", { "peerDependencies": { "ws": "^8.18.0", "zod": "^3.25 || ^4.0" }, "optionalPeers": ["ws", "zod"] }, "sha512-MWtTjd/gQt4jpbji61NTgFWJLoY/PdRJ6wG9/ZDRMYNMlBKrCrSlkLI+KgHP1vR1qT6LKSAyAqIxno6lcK9JiA=="],
|
|
287
|
-
|
|
288
|
-
"p-retry": ["p-retry@4.6.2", "", { "dependencies": { "@types/retry": "0.12.0", "retry": "0.13.1" } }, "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ=="],
|
|
289
|
-
|
|
290
|
-
"partial-json": ["partial-json@0.1.7", "", {}, "sha512-Njv/59hHaokb/hRUjce3Hdv12wd60MtM9Z5Olmn+nehe0QDAsRtRbJPvJ0Z91TusF0SuZRIvnM+S4l6EIP8leA=="],
|
|
291
|
-
|
|
292
|
-
"path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="],
|
|
293
|
-
|
|
294
|
-
"proper-lockfile": ["proper-lockfile@4.1.2", "", { "dependencies": { "graceful-fs": "4.2.11", "retry": "0.12.0", "signal-exit": "3.0.7" } }, "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA=="],
|
|
295
|
-
|
|
296
|
-
"protobufjs": ["protobufjs@7.6.5", "", { "dependencies": { "@protobufjs/aspromise": "1.1.2", "@protobufjs/base64": "1.1.2", "@protobufjs/codegen": "2.0.5", "@protobufjs/eventemitter": "1.1.1", "@protobufjs/fetch": "1.1.1", "@protobufjs/float": "1.0.2", "@protobufjs/path": "1.1.2", "@protobufjs/pool": "1.1.0", "@protobufjs/utf8": "1.1.2", "@types/node": "24.13.3", "long": "5.3.2" } }, "sha512-/FPD0nUc9jH6rfFjji9IBqOz4pcSE3CsT1m7Ep6Mdb0LxSUMj8hgl6GomOvZzpNpAqqGaXA0P3VSrZLFzIhQrw=="],
|
|
297
|
-
|
|
298
|
-
"retry": ["retry@0.12.0", "", {}, "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow=="],
|
|
299
|
-
|
|
300
|
-
"safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="],
|
|
301
|
-
|
|
302
|
-
"semver": ["semver@7.8.0", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA=="],
|
|
303
|
-
|
|
304
|
-
"shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="],
|
|
305
|
-
|
|
306
|
-
"shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="],
|
|
307
|
-
|
|
308
|
-
"signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="],
|
|
309
|
-
|
|
310
|
-
"standardwebhooks": ["standardwebhooks@1.1.1", "", { "dependencies": { "@stablelib/base64": "^1.0.0", "fast-sha256": "^1.3.0" } }, "sha512-bCbX9ZEyFkWPsRz7Bl3NuQUJohmwGSev/yhr7vhaGPlc4AfIrspIRa6cPTBuI1ItmrTDJ4d/S2hCsfe4+vQGnQ=="],
|
|
311
|
-
|
|
312
|
-
"ts-algebra": ["ts-algebra@2.0.0", "", {}, "sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw=="],
|
|
313
|
-
|
|
314
|
-
"tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
|
|
315
|
-
|
|
316
|
-
"typebox": ["typebox@1.3.7", "", {}, "sha512-meKuifc33Pccx0O6PdIzYMq3Og8zvP4TIi/a+Bw3AEMZMxOD0+RHGQvpglEe6Zdy3wZ8nqn/j95h8LUZLk/6Hg=="],
|
|
317
|
-
|
|
318
|
-
"typescript": ["typescript@6.0.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw=="],
|
|
319
|
-
|
|
320
|
-
"undici": ["undici@8.9.0", "", {}, "sha512-aWZpUj7XoGonMClx4gdDRfgBjqeA+F473aDmROQQbM9n6PRfK/u1q/a0X4wMTgcHfT8H6fpbt98PFuDUwFg2YA=="],
|
|
321
|
-
|
|
322
|
-
"undici-types": ["undici-types@7.18.2", "", {}, "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w=="],
|
|
323
|
-
|
|
324
|
-
"web-streams-polyfill": ["web-streams-polyfill@3.3.3", "", {}, "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw=="],
|
|
325
|
-
|
|
326
|
-
"which": ["which@2.0.2", "", { "dependencies": { "isexe": "2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],
|
|
327
|
-
|
|
328
|
-
"ws": ["ws@8.21.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw=="],
|
|
329
|
-
|
|
330
|
-
"yaml": ["yaml@2.9.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA=="],
|
|
331
|
-
|
|
332
|
-
"@aws-sdk/client-bedrock-runtime/@smithy/node-http-handler": ["@smithy/node-http-handler@4.9.13", "", { "dependencies": { "@smithy/core": "3.31.1", "@smithy/types": "4.16.1", "tslib": "2.8.1" } }, "sha512-Nmd/Nl35zfYrd+a6OO2cDJb3GPh9bgTjIUhcM+JFfjpp8/osCgboDV5nCT1I01Pv6R13eSKDKLSoVa5ZB6Zsfw=="],
|
|
333
|
-
|
|
334
|
-
"@aws-sdk/credential-provider-http/@smithy/node-http-handler": ["@smithy/node-http-handler@4.9.13", "", { "dependencies": { "@smithy/core": "3.31.1", "@smithy/types": "4.16.1", "tslib": "2.8.1" } }, "sha512-Nmd/Nl35zfYrd+a6OO2cDJb3GPh9bgTjIUhcM+JFfjpp8/osCgboDV5nCT1I01Pv6R13eSKDKLSoVa5ZB6Zsfw=="],
|
|
335
|
-
|
|
336
|
-
"@aws-sdk/credential-provider-sso/@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.1103.0", "", { "dependencies": { "@aws-sdk/core": "3.977.6", "@aws-sdk/nested-clients": "3.997.41", "@aws-sdk/types": "3.974.2", "@smithy/core": "3.31.1", "@smithy/types": "4.16.1", "tslib": "2.8.1" } }, "sha512-N4wy26MNn31ItGVHYHPrEuCIFY4MBBjC+C5v1lJKqIUSA7OZBdhleCY53zCCrXn27hsk7YNOaTuhQu807S4AfQ=="],
|
|
337
|
-
|
|
338
|
-
"@aws-sdk/nested-clients/@smithy/node-http-handler": ["@smithy/node-http-handler@4.9.13", "", { "dependencies": { "@smithy/core": "3.31.1", "@smithy/types": "4.16.1", "tslib": "2.8.1" } }, "sha512-Nmd/Nl35zfYrd+a6OO2cDJb3GPh9bgTjIUhcM+JFfjpp8/osCgboDV5nCT1I01Pv6R13eSKDKLSoVa5ZB6Zsfw=="],
|
|
339
|
-
|
|
340
|
-
"p-retry/retry": ["retry@0.13.1", "", {}, "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg=="],
|
|
341
|
-
}
|
|
342
|
-
}
|