@oh-hai/cli 0.4.0 → 0.4.2
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/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,35 @@ Notable changes to the `oh-hai` CLI. Versions follow [semver](https://semver.org
|
|
|
4
4
|
pushing a `cli-vX.Y.Z` tag (runbook: `docs/runbooks/cli-release.md` in the repo), which publishes the
|
|
5
5
|
npm package and attaches the standalone binaries to the GitHub Release.
|
|
6
6
|
|
|
7
|
+
## 0.4.2 — 2026-08-18
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- `oh-hai session start --label-kv <key>=<value>` (repeatable) populates the §16.1 session `labels`
|
|
12
|
+
map. The wire, the schema, the Hub and the session resource all carried this map already; only the
|
|
13
|
+
CLI had no way to set it, so a fan-out worker keying a session off a PR number had to fold it into
|
|
14
|
+
the free-text `--label` where nothing can read it back as a field.
|
|
15
|
+
|
|
16
|
+
Splits on the first `=`, so a value may contain one. Malformed input is a usage error (exit 2)
|
|
17
|
+
before any Hub call — no `=`, empty key or value, a repeated key, an entry over 512 characters, or
|
|
18
|
+
more than 32 entries. Duplicate keys are refused rather than last-wins: a script that meant two
|
|
19
|
+
keys and sent one should hear it from the CLI.
|
|
20
|
+
([#861](https://github.com/autnmy/oh-hai/issues/861))
|
|
21
|
+
|
|
22
|
+
## 0.4.1 — 2026-08-17
|
|
23
|
+
|
|
24
|
+
### Changed
|
|
25
|
+
|
|
26
|
+
- Requires `@oh-hai/ma2h-core` **0.2.1**, re-vendored to the ma2h-protocol pin that adds the
|
|
27
|
+
§16.4.1 `sessions.operator_hard_stop` capability field (SCP #57). **No CLI behaviour change**: the
|
|
28
|
+
field is an optional signal a client may use to detect a Hub whose operator kill-switch is durable,
|
|
29
|
+
and nothing in the CLI reads it yet.
|
|
30
|
+
|
|
31
|
+
Cut anyway so the published CLI stops pinning a stale core. The release workflow only guards that
|
|
32
|
+
the pinned core version **exists** on npm, never that it contains the changes — so a
|
|
33
|
+
changed-but-unreleased core is invisible to CI and only bites the next time it matters.
|
|
34
|
+
([#855](https://github.com/autnmy/oh-hai/issues/855))
|
|
35
|
+
|
|
7
36
|
## 0.4.0 — 2026-08-15
|
|
8
37
|
|
|
9
38
|
### Fixed
|
|
@@ -229,7 +229,8 @@ export const COMMANDS = [
|
|
|
229
229
|
help: [
|
|
230
230
|
"oh-hai session — the MA2H v0.5 §16 session: an addressing scope for ONE live run.",
|
|
231
231
|
"",
|
|
232
|
-
"Usage: oh-hai session start [--label <l>] [--
|
|
232
|
+
"Usage: oh-hai session start [--label <l>] [--label-kv <k>=<v>]... [--kind <k>] [--project <p>]",
|
|
233
|
+
" [--run-id <r>] [--ttl <seconds>]",
|
|
233
234
|
" oh-hai session status [--id <sess_…>]",
|
|
234
235
|
" oh-hai session close [--id <sess_…>]",
|
|
235
236
|
"",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/commands/registry.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,mFAAmF;AACnF,kFAAkF;AAClF,kGAAkG;AAelG,MAAM,CAAC,MAAM,QAAQ,GAA2B;IAC9C;QACE,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,8DAA8D;QACvE,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,EAAE;QACf,IAAI,EAAE;YACJ,gEAAgE;YAChE,EAAE;YACF,qBAAqB;YACrB,EAAE;YACF,mFAAmF;YACnF,oFAAoF;YACpF,sFAAsF;YACtF,uFAAuF;YACvF,mDAAmD;SACpD,CAAC,IAAI,CAAC,IAAI,CAAC;KACb;IACD;QACE,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,+CAA+C;QACxD,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,EAAE;QACf,IAAI,EAAE;YACJ,iEAAiE;YACjE,EAAE;YACF,wCAAwC;YACxC,uEAAuE;YACvE,EAAE;YACF,mFAAmF;YACnF,mFAAmF;YACnF,yEAAyE;YACzE,mFAAmF;YACnF,qCAAqC;SACtC,CAAC,IAAI,CAAC,IAAI,CAAC;KACb;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,yBAAyB;QAClC,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,EAAE;QACf,IAAI,EAAE;YACJ,kFAAkF;YAClF,EAAE;YACF,+CAA+C;YAC/C,EAAE;YACF,6DAA6D;SAC9D,CAAC,IAAI,CAAC,IAAI,CAAC;KACb;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,+EAA+E;QACxF,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,EAAE;QACf,IAAI,EAAE;YACJ,0EAA0E;YAC1E,EAAE;YACF,gCAAgC;YAChC,EAAE;YACF,kFAAkF;YAClF,qFAAqF;YACrF,sFAAsF;YACtF,iDAAiD;SAClD,CAAC,IAAI,CAAC,IAAI,CAAC;KACb;IACD;QACE,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,+EAA+E;QACxF,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,EAAE;QACf,IAAI,EAAE;YACJ,yEAAyE;YACzE,EAAE;YACF,8EAA8E;YAC9E,0DAA0D;YAC1D,8DAA8D;YAC9D,EAAE;YACF,kFAAkF;YAClF,uFAAuF;YACvF,sFAAsF;YACtF,8EAA8E;YAC9E,oFAAoF;YACpF,oDAAoD;SACrD,CAAC,IAAI,CAAC,IAAI,CAAC;KACb;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,uCAAuC;QAChD,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,EAAE;QACf,IAAI,EAAE;YACJ,uEAAuE;YACvE,EAAE;YACF,qFAAqF;YACrF,qFAAqF;YACrF,iDAAiD;YACjD,EAAE;YACF,2EAA2E;YAC3E,EAAE;YACF,uFAAuF;YACvF,8FAA8F;YAC9F,qFAAqF;YACrF,wFAAwF;SACzF,CAAC,IAAI,CAAC,IAAI,CAAC;KACb;IACD;QACE,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,gCAAgC;QACzC,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;QAChC,IAAI,EAAE;YACJ,wCAAwC;YACxC,EAAE;YACF,oEAAoE;YACpE,6FAA6F;YAC7F,yFAAyF;YACzF,6EAA6E;YAC7E,EAAE;YACF,oFAAoF;YACpF,iEAAiE;YACjE,EAAE;YACF,2FAA2F;YAC3F,8FAA8F;YAC9F,8FAA8F;YAC9F,wEAAwE;SACzE,CAAC,IAAI,CAAC,IAAI,CAAC;KACb;IACD;QACE,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,qCAAqC;QAC9C,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;QAChC,IAAI,EAAE;YACJ,6CAA6C;YAC7C,EAAE;YACF,wFAAwF;YACxF,0EAA0E;YAC1E,0FAA0F;YAC1F,8EAA8E;YAC9E,EAAE;YACF,oFAAoF;YACpF,6BAA6B;YAC7B,EAAE;YACF,wFAAwF;YACxF,sFAAsF;SACvF,CAAC,IAAI,CAAC,IAAI,CAAC;KACb;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,yCAAyC;QAClD,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;QACzC,IAAI,EAAE;YACJ,gDAAgD;YAChD,EAAE;YACF,2BAA2B;YAC3B,6CAA6C;YAC7C,yDAAyD;YACzD,EAAE;YACF,oBAAoB;SACrB,CAAC,IAAI,CAAC,IAAI,CAAC;KACb;IACD;QACE,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,8DAA8D;QACvE,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,IAAI,EAAE;YACJ,yDAAyD;YACzD,EAAE;YACF,4EAA4E;YAC5E,EAAE;YACF,6EAA6E;YAC7E,6EAA6E;YAC7E,8EAA8E;YAC9E,8EAA8E;YAC9E,gFAAgF;YAChF,8EAA8E;YAC9E,mFAAmF;YACnF,+EAA+E;YAC/E,6BAA6B;SAC9B,CAAC,IAAI,CAAC,IAAI,CAAC;KACb;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,oEAAoE;QAC7E,KAAK,EAAE,GAAG;QACV,6FAA6F;QAC7F,oFAAoF;QACpF,WAAW,EAAE,CAAC,QAAQ,CAAC;QACvB,IAAI,EAAE;YACJ,kFAAkF;YAClF,EAAE;YACF,kGAAkG;YAClG,wEAAwE;YACxE,sFAAsF;YACtF,6BAA6B;YAC7B,EAAE;YACF,yFAAyF;YACzF,uFAAuF;YACvF,yFAAyF;YACzF,4FAA4F;YAC5F,uDAAuD;YACvD,EAAE;YACF,6FAA6F;YAC7F,8FAA8F;YAC9F,EAAE;YACF,8FAA8F;YAC9F,+FAA+F;YAC/F,yEAAyE;YACzE,EAAE;YACF,wFAAwF;YACxF,gGAAgG;YAChG,+FAA+F;YAC/F,4FAA4F;YAC5F,+FAA+F;YAC/F,iFAAiF;SAClF,CAAC,IAAI,CAAC,IAAI,CAAC;KACb;IACD;QACE,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,iEAAiE;QAC1E,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;QACzC,IAAI,EAAE;YACJ,mFAAmF;YACnF,EAAE;YACF,
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/commands/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/session.js
CHANGED
|
@@ -28,18 +28,121 @@ const SESSION_COMMAND_OPTIONS = {
|
|
|
28
28
|
// reads it claims to support it.
|
|
29
29
|
session: { type: "string" },
|
|
30
30
|
label: { type: "string" },
|
|
31
|
+
// REPEATABLE, and named apart from the singular free-text `--label` on purpose: they are different
|
|
32
|
+
// kinds of thing. `--label` is a human-readable caption ("dev-team · issue #612"); `--label-kv` is
|
|
33
|
+
// the §16.1 `labels` MAP, which a peer or a fleet dashboard can key on. Folding a PR number into
|
|
34
|
+
// the caption makes it findable only by substring; putting it here makes it a field.
|
|
35
|
+
"label-kv": { type: "string", multiple: true },
|
|
31
36
|
kind: { type: "string" },
|
|
32
37
|
project: { type: "string" },
|
|
33
38
|
"run-id": { type: "string" },
|
|
34
39
|
ttl: { type: "string" },
|
|
35
40
|
};
|
|
41
|
+
/** §16.1 caps, mirrored from the Hub (server/src/routes/sessions.ts) so an over-cap map is a usage
|
|
42
|
+
* error here rather than a round-trip and a 422 — and, more to the point, rather than a slice of the
|
|
43
|
+
* per-credential registration budget spent on a request that could never have been accepted. Same
|
|
44
|
+
* reason `--ttl` is parse-capped locally before the Hub clamps it. */
|
|
45
|
+
const MAX_LABELS = 32;
|
|
46
|
+
const MAX_LABEL_FIELD_LEN = 512;
|
|
47
|
+
/**
|
|
48
|
+
* Quote a user-supplied value for an error message so it can carry no terminal escape.
|
|
49
|
+
*
|
|
50
|
+
* `JSON.stringify` ALONE IS NOT ENOUGH, which is the trap this closes: it escapes C0 (below 0x20)
|
|
51
|
+
* plus `"` and `\\`, and passes DEL (0x7f) and the C1 range (0x80-0x9f) through RAW. This CLI's own
|
|
52
|
+
* `sanitizeForTerminal` treats all three as dangerous, and it is right to — the non-JSON error path
|
|
53
|
+
* writes `cliError.message` straight to stderr with no sanitizing of its own.
|
|
54
|
+
*
|
|
55
|
+
* So the range JSON misses is ESCAPED rather than stripped: a caller who typed a DEL should see
|
|
56
|
+
* `\\u007f` and understand what was rejected, not read a message that looks like it refused
|
|
57
|
+
* something perfectly ordinary.
|
|
58
|
+
*/
|
|
59
|
+
function quoteForError(value) {
|
|
60
|
+
return JSON.stringify(value).replace(/[\u007f-\u009f]/g, (ch) => `\\u${(ch.codePointAt(0) ?? 0).toString(16).padStart(4, "0")}`);
|
|
61
|
+
}
|
|
62
|
+
/** Control characters the Hub refuses in registration fields — matches its `hasControlChars`
|
|
63
|
+
* (server/src/http/validation.ts) exactly, so the two cannot disagree about what is legal. */
|
|
64
|
+
function hasControlChars(value) {
|
|
65
|
+
for (const ch of value) {
|
|
66
|
+
const cp = ch.codePointAt(0);
|
|
67
|
+
if (cp <= 0x1f || cp === 0x7f)
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Parse repeated `key=value` into the §16.1 `labels` map, or throw a usage CliError (exit 2).
|
|
74
|
+
*
|
|
75
|
+
* Splits on the FIRST `=` so a value may contain one (`--label-kv url=https://x?a=b`); a key may not,
|
|
76
|
+
* which costs nothing — these are identifiers, and the alternative is a quoting rule nobody remembers.
|
|
77
|
+
*
|
|
78
|
+
* EVERY MALFORMED SHAPE IS AN ERROR, not a silent drop. A duplicate key in particular: last-wins is
|
|
79
|
+
* the tempting default and it is wrong here, because a script that meant two keys and sent one should
|
|
80
|
+
* learn that from the CLI rather than from a fleet view that is quietly missing a field.
|
|
81
|
+
*
|
|
82
|
+
* EVERY INTERPOLATED USER VALUE GOES THROUGH `quoteForError`, without exception. The non-JSON error
|
|
83
|
+
* path writes `cliError.message` straight to stderr (`cli.ts`) with no `sanitizeForTerminal`, so a
|
|
84
|
+
* raw key echoed into a message is a terminal-escape injection — landing precisely in the error that
|
|
85
|
+
* REJECTS the input, which is the worst possible moment for it. Note it is `quoteForError` and not
|
|
86
|
+
* bare `JSON.stringify`: the latter passes DEL and C1 through untouched, which a test here proves.
|
|
87
|
+
*/
|
|
88
|
+
function parseLabelMap(raw) {
|
|
89
|
+
const entries = raw === undefined ? [] : Array.isArray(raw) ? raw : [raw];
|
|
90
|
+
if (entries.length === 0)
|
|
91
|
+
return undefined;
|
|
92
|
+
// NULL-PROTOTYPE, and this is a correctness fix rather than hygiene. `labels["__proto__"] = v` on a
|
|
93
|
+
// plain object hits `Object.prototype`'s legacy setter instead of creating an own property, so the
|
|
94
|
+
// key vanishes from `Object.keys` AND from `JSON.stringify` — the Hub would receive `{}` while the
|
|
95
|
+
// caller believed it had set a label, and even the duplicate check below could not see it. The
|
|
96
|
+
// §16.1 map permits arbitrary string keys, so silently dropping one is a wrong answer, not a
|
|
97
|
+
// narrow one. `JSON.stringify` serializes a null-prototype object normally.
|
|
98
|
+
const labels = Object.create(null);
|
|
99
|
+
for (const entry of entries) {
|
|
100
|
+
if (typeof entry !== "string")
|
|
101
|
+
throw new CliError("usage", `--label-kv must be "key=value", got ${quoteForError(entry)}`);
|
|
102
|
+
const i = entry.indexOf("=");
|
|
103
|
+
if (i < 0)
|
|
104
|
+
throw new CliError("usage", `--label-kv must be "key=value" (no "=" found), got ${quoteForError(entry)}`);
|
|
105
|
+
const rawKey = entry.slice(0, i);
|
|
106
|
+
const rawValue = entry.slice(i + 1);
|
|
107
|
+
// CONTROL CHARACTERS ARE CHECKED ON THE RAW SLICES, BEFORE `trim()`, and the order is the whole
|
|
108
|
+
// point. Trimming removes leading/trailing control characters, so checking afterwards misses
|
|
109
|
+
// exactly the inputs that matter: `branch=release\n` would trim to a clean `release`, pass, and
|
|
110
|
+
// register a SILENTLY ALTERED value — the drop-instead-of-refuse failure this parser rejects
|
|
111
|
+
// everywhere else. An embedded one (`release\nnext`) survives trim and would be caught either
|
|
112
|
+
// way, which is what made the ordering easy to get wrong.
|
|
113
|
+
//
|
|
114
|
+
// The Hub refuses these too, but its registration RATE LIMITER runs before that validation, so
|
|
115
|
+
// letting one through spends a slice of the per-credential §16.1 budget to earn a 422 — breaking
|
|
116
|
+
// this command's promise that every malformed shape costs no Hub call.
|
|
117
|
+
if (hasControlChars(rawKey) || hasControlChars(rawValue)) {
|
|
118
|
+
throw new CliError("usage", `--label-kv ${quoteForError(entry)} contains a control character, which the Hub refuses (§16.1).`);
|
|
119
|
+
}
|
|
120
|
+
const key = rawKey.trim();
|
|
121
|
+
const value = rawValue.trim();
|
|
122
|
+
if (key === "")
|
|
123
|
+
throw new CliError("usage", `--label-kv has an empty key, got ${quoteForError(entry)}`);
|
|
124
|
+
if (value === "")
|
|
125
|
+
throw new CliError("usage", `--label-kv has an empty value for ${quoteForError(key)} — omit the flag instead.`);
|
|
126
|
+
if (Object.prototype.hasOwnProperty.call(labels, key)) {
|
|
127
|
+
throw new CliError("usage", `--label-kv repeats the key ${quoteForError(key)} — each key may be given once.`);
|
|
128
|
+
}
|
|
129
|
+
if (key.length > MAX_LABEL_FIELD_LEN || value.length > MAX_LABEL_FIELD_LEN) {
|
|
130
|
+
throw new CliError("usage", `--label-kv ${quoteForError(key)} exceeds the ${MAX_LABEL_FIELD_LEN}-character limit the Hub enforces (§16.1).`);
|
|
131
|
+
}
|
|
132
|
+
labels[key] = value;
|
|
133
|
+
}
|
|
134
|
+
if (Object.keys(labels).length > MAX_LABELS) {
|
|
135
|
+
throw new CliError("usage", `--label-kv accepts at most ${MAX_LABELS} entries (§16.1); got ${Object.keys(labels).length}.`);
|
|
136
|
+
}
|
|
137
|
+
return labels;
|
|
138
|
+
}
|
|
36
139
|
/** A day is a generous parse ceiling for `--ttl`; the Hub then clamps two-sidedly into its own
|
|
37
140
|
* advertised bounds, so this only rejects a value that is obviously a mistake (a millisecond
|
|
38
141
|
* count pasted into a seconds flag) before it costs a round-trip. */
|
|
39
142
|
const MAX_TTL_SECONDS = 86_400;
|
|
40
143
|
/** Flags that belong to `start` alone — they DESCRIBE a session being created, so on `status`/`close`
|
|
41
144
|
* (which SELECT an existing one) they are meaningless. */
|
|
42
|
-
const START_ONLY = ["label", "kind", "project", "run-id", "ttl"];
|
|
145
|
+
const START_ONLY = ["label", "label-kv", "kind", "project", "run-id", "ttl"];
|
|
43
146
|
/** Flags that SELECT an existing session — meaningless on `start`, which mints a new one. `--id` is
|
|
44
147
|
* refused with its own message below (the Hub owns the id); `--session` is refused here because
|
|
45
148
|
* `session start --session sess_old` reads as "use that one" and would silently mint a DIFFERENT
|
|
@@ -66,12 +169,17 @@ async function sessionStart(ctx, flags) {
|
|
|
66
169
|
throw new CliError("usage", "--id is not valid for 'session start' — the Hub mints the id (§16.1).");
|
|
67
170
|
}
|
|
68
171
|
const ttl = flags.ttl !== undefined ? positiveInt(stringFlag(flags.ttl), "--ttl", "a positive integer number of seconds", MAX_TTL_SECONDS) : undefined;
|
|
172
|
+
// Parsed BEFORE the identity is resolved, so a malformed map costs no credential lookup and no Hub
|
|
173
|
+
// call — the §16.1 registration budget is per-credential and a request that could never be accepted
|
|
174
|
+
// must not spend from it.
|
|
175
|
+
const labels = parseLabelMap(flags["label-kv"]);
|
|
69
176
|
const identity = await resolveSubmitIdentity(ctx);
|
|
70
177
|
const session = await registerSession(ctx, identity.token, {
|
|
71
178
|
...(stringFlag(flags["run-id"]) !== undefined ? { run_id: stringFlag(flags["run-id"]) } : {}),
|
|
72
179
|
...(stringFlag(flags.label) !== undefined ? { label: stringFlag(flags.label) } : {}),
|
|
73
180
|
...(stringFlag(flags.project) !== undefined ? { project: stringFlag(flags.project) } : {}),
|
|
74
181
|
kind: stringFlag(flags.kind) ?? "cli",
|
|
182
|
+
...(labels !== undefined ? { labels } : {}),
|
|
75
183
|
...(ttl !== undefined ? { ttl_seconds: ttl } : {}),
|
|
76
184
|
});
|
|
77
185
|
// So a later command in the SAME process attaches rather than minting a second session.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,0FAA0F;AAC1F,EAAE;AACF,kGAAkG;AAClG,oGAAoG;AACpG,mGAAmG;AACnG,oGAAoG;AACpG,EAAE;AACF,kGAAkG;AAClG,kGAAkG;AAClG,+FAA+F;AAC/F,gGAAgG;AAChG,kEAAkE;AAElE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1D,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAU,CAAC;AAE1D,MAAM,uBAAuB,GAAG;IAC9B,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACtB,qFAAqF;IACrF,gFAAgF;IAChF,6FAA6F;IAC7F,iCAAiC;IACjC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC3B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACzB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACxB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC3B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC5B,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;CACf,CAAC;AAEX;;sEAEsE;AACtE,MAAM,eAAe,GAAG,MAAM,CAAC;AAE/B;2DAC2D;AAC3D,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,0FAA0F;AAC1F,EAAE;AACF,kGAAkG;AAClG,oGAAoG;AACpG,mGAAmG;AACnG,oGAAoG;AACpG,EAAE;AACF,kGAAkG;AAClG,kGAAkG;AAClG,+FAA+F;AAC/F,gGAAgG;AAChG,kEAAkE;AAElE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1D,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAU,CAAC;AAE1D,MAAM,uBAAuB,GAAG;IAC9B,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACtB,qFAAqF;IACrF,gFAAgF;IAChF,6FAA6F;IAC7F,iCAAiC;IACjC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC3B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACzB,mGAAmG;IACnG,mGAAmG;IACnG,iGAAiG;IACjG,qFAAqF;IACrF,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC9C,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACxB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC3B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC5B,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;CACf,CAAC;AAEX;;;uEAGuE;AACvE,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC;;;;;;;;;;;GAWG;AACH,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,EAAE,EAAE,EAAE,CAC9D,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAC/D,CAAC;AACJ,CAAC;AAED;+FAC+F;AAC/F,SAAS,eAAe,CAAC,KAAa;IACpC,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC;QAC9B,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;IAC7C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,aAAa,CAAC,GAAY;IACjC,MAAM,OAAO,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3C,oGAAoG;IACpG,mGAAmG;IACnG,mGAAmG;IACnG,+FAA+F;IAC/F,6FAA6F;IAC7F,4EAA4E;IAC5E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAA2B,CAAC;IAC7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,uCAAuC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1H,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,sDAAsD,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrH,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACpC,gGAAgG;QAChG,6FAA6F;QAC7F,gGAAgG;QAChG,6FAA6F;QAC7F,8FAA8F;QAC9F,0DAA0D;QAC1D,EAAE;QACF,+FAA+F;QAC/F,iGAAiG;QACjG,uEAAuE;QACvE,IAAI,eAAe,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,cAAc,aAAa,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;QACjI,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,GAAG,KAAK,EAAE;YAAE,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,oCAAoC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxG,IAAI,KAAK,KAAK,EAAE;YAAE,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,qCAAqC,aAAa,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAClI,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,8BAA8B,aAAa,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAChH,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,GAAG,mBAAmB,IAAI,KAAK,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;YAC3E,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,cAAc,aAAa,CAAC,GAAG,CAAC,gBAAgB,mBAAmB,4CAA4C,CAAC,CAAC;QAC/I,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtB,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5C,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,8BAA8B,UAAU,yBAAyB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9H,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;sEAEsE;AACtE,MAAM,eAAe,GAAG,MAAM,CAAC;AAE/B;2DAC2D;AAC3D,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC7E;;;yEAGyE;AACzE,MAAM,WAAW,GAAG,CAAC,SAAS,CAAC,CAAC;AAEhC,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAmB;IACtD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,uBAAuB,CAAC,CAAC;IACnG,MAAM,KAAK,GAAG,MAAiC,CAAC;IAChD,8FAA8F;IAC9F,oFAAoF;IACpF,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAC3B,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;QAC1D,OAAO,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IACD,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,UAAU,EAAE,CAAC,CAAC;IACjE,IAAI,UAAU,KAAK,OAAO;QAAE,OAAO,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC5D,OAAO,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,GAAmB,EAAE,KAA8B;IAC7E,kGAAkG;IAClG,mFAAmF;IACnF,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,uEAAuE,CAAC,CAAC;IACvG,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,sCAAsC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvJ,mGAAmG;IACnG,oGAAoG;IACpG,0BAA0B;IAC1B,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAE;QACzD,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9F,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpG,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK;QACrC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnD,CAAC,CAAC;IACH,wFAAwF;IACxF,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEhD,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACrE,OAAO;IACT,CAAC;IACD,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACnC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC3B,6FAA6F;IAC7F,gGAAgG;IAChG,iGAAiG;IACjG,qCAAqC;IACrC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACf,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,0DAA0D,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACxG,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,8CAA8C,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACrI,mGAAmG;IACnG,mGAAmG;IACnG,+FAA+F;IAC/F,mGAAmG;IACnG,mGAAmG;IACnG,6FAA6F;IAC7F,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACf,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,2DAA2D,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACzG,GAAG,CAAC,EAAE,CAAC,GAAG,CACR,0GAA0G;QACxG,kEAAkE,CACrE,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,GAAmB,EAAE,KAA8B;IAC7E,MAAM,EAAE,GAAG,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAClD,yFAAyF;IACzF,iFAAiF;IACjF,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC5D,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACrE,OAAO;IACT,CAAC;IACD,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACpG,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,GAAmB,EAAE,KAA8B;IAC9E,MAAM,EAAE,GAAG,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1D,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACtE,OAAO;IACT,CAAC;IACD,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED;;8DAE8D;AAC9D,SAAS,gBAAgB,CAAC,KAA8B,EAAE,IAAY;IACpE,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACtC,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC,EAAE,CAAC;IAC/C,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,WAAW,IAAI,8DAA8D,CAAC,CAAC;AAC7G,CAAC;AAED;;mFAEmF;AACnF,SAAS,YAAY,CAAC,GAAmB,EAAE,OAAgB;IACzD,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,KAAyB,EAAQ,EAAE;QAC9D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;YAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9G,CAAC,CAAC;IACF,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IACxB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACnC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oh-hai/cli",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "OH HAI — the `oh-hai` CLI: reach a human from your agent through an MA2H Hub (notify / ask / task), and reach another agent over the v0.5 inter-agent leg (sessions, addressed sends, bridge, fleet).",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"type": "module",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"access": "public"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@oh-hai/ma2h-core": "0.2.
|
|
26
|
+
"@oh-hai/ma2h-core": "0.2.1"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@types/node": "^26.1.0",
|