@snowyroad/braid 0.96.7 → 0.97.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- package/dist/{chunk-CLFXLKAW.js → chunk-2OHYN3KD.js} +153 -30
- package/dist/cli.js +32 -4
- package/dist/{http-QDQGGG2I.js → http-7LMCYNHB.js} +1 -1
- package/package.json +1 -1
- package/service-shrinkwrap.json +131 -131
package/README.md
CHANGED
|
@@ -231,7 +231,7 @@ descendant process and cannot be shed.
|
|
|
231
231
|
dirs** — `~/.ssh`, `~/.aws`, `~/.gnupg`, `~/.kube/config`, and the bridge's own
|
|
232
232
|
credential store (`~/.braid`).
|
|
233
233
|
- **Network:** a curated allow-list (provider API hosts, package registries, and
|
|
234
|
-
|
|
234
|
+
read-only source-content hosts such as codeload.github.com) so normal work keeps working; everything else is
|
|
235
235
|
blocked. Operator-extensible.
|
|
236
236
|
- **Fail-closed:** in **full** tool mode the bridge REFUSES to start if the OS
|
|
237
237
|
sandbox facility is unavailable, and tells you how to fix it. In read-and-reply
|
|
@@ -243,9 +243,11 @@ descendant process and cannot be shed.
|
|
|
243
243
|
or the `BRAID_SCOPE_ALLOW_WRITE` / `BRAID_SCOPE_ALLOW_READ` / `BRAID_SCOPE_ALLOW_DOMAINS`
|
|
244
244
|
env vars (see below). Credential directories (`~/.ssh`, `~/.aws`, `~/.config/gh`,
|
|
245
245
|
and the rest of the protected inventory) are reserved and CANNOT be granted: a
|
|
246
|
-
grant that lands inside one is refused at startup with a SCOPE ERROR.
|
|
247
|
-
|
|
248
|
-
|
|
246
|
+
grant that lands inside one is refused at startup with a SCOPE ERROR. Code hosts
|
|
247
|
+
(github.com, gitlab.com, bitbucket.org) are NOT reachable from inside the jail:
|
|
248
|
+
authenticated git goes through the bridge's git tools. Grant a project data directory, never a credential store.
|
|
249
|
+
|
|
250
|
+
**Code hosts are not reachable from the jail.** `github.com`, `api.github.com`, `gitlab.com` and `bitbucket.org` are a reserved set: an `--allow-domain` or `scope.network.allowedDomains` entry that reaches them is refused at startup. To accept that risk for one agent (for example, `git+https` dependencies during installs) run `braid scope allow-code-hosts <agent>`; the startup banner then carries a warning. The agent's own `git` runs with credential helpers disabled, so it cannot read your `gh` or keychain credentials.
|
|
249
251
|
|
|
250
252
|
- **Unix socket access (Linux):** on Linux, seccomp-bpf cannot filter Unix sockets
|
|
251
253
|
by path. The default `compat` IPC profile allows all pathname sockets. The `strict`
|
|
@@ -400,7 +400,7 @@ var InviteExpiredError = class extends Error {
|
|
|
400
400
|
}
|
|
401
401
|
};
|
|
402
402
|
async function redeemInvite(relayHttpUrl, code) {
|
|
403
|
-
const { boundedJsonFetch: boundedJsonFetch2 } = await import("./http-
|
|
403
|
+
const { boundedJsonFetch: boundedJsonFetch2 } = await import("./http-7LMCYNHB.js");
|
|
404
404
|
const r = await boundedJsonFetch2(`${relayHttpUrl.replace(/\/$/, "")}/invites/redeem`, {
|
|
405
405
|
method: "POST",
|
|
406
406
|
headers: { "content-type": "application/json" },
|
|
@@ -492,7 +492,7 @@ function validateReplacementToken(newToken, currentToken, nowMs = Date.now()) {
|
|
|
492
492
|
return { ok: true };
|
|
493
493
|
}
|
|
494
494
|
async function mintAccessToken(relayHttpUrl, agentKey, fetchFn = fetch, dpopProof) {
|
|
495
|
-
const { boundedJsonFetch: boundedJsonFetch2 } = await import("./http-
|
|
495
|
+
const { boundedJsonFetch: boundedJsonFetch2 } = await import("./http-7LMCYNHB.js");
|
|
496
496
|
const r = await boundedJsonFetch2(`${relayHttpUrl.replace(/\/$/, "")}/agents/token`, {
|
|
497
497
|
method: "POST",
|
|
498
498
|
headers: {
|
|
@@ -812,6 +812,7 @@ function parseScope(v) {
|
|
|
812
812
|
if (allowedDomains) net.allowedDomains = allowedDomains;
|
|
813
813
|
const deniedDomains = strArr(n.deniedDomains);
|
|
814
814
|
if (deniedDomains) net.deniedDomains = deniedDomains;
|
|
815
|
+
if (typeof n.allowCodeHosts === "boolean") net.allowCodeHosts = n.allowCodeHosts;
|
|
815
816
|
if (Object.keys(net).length > 0) out.network = net;
|
|
816
817
|
}
|
|
817
818
|
return Object.keys(out).length > 0 ? out : void 0;
|
|
@@ -1049,6 +1050,13 @@ function pinEndpoint(dir, agentName, pin) {
|
|
|
1049
1050
|
agent.pinnedEndpoints = next;
|
|
1050
1051
|
saveAgent(dir, agent);
|
|
1051
1052
|
}
|
|
1053
|
+
function setScopeAllowCodeHosts(dir, agentName, value) {
|
|
1054
|
+
const entry = loadAgent(dir, agentName);
|
|
1055
|
+
const agent = entry.agent;
|
|
1056
|
+
const network = { ...agent.scope?.network ?? {}, allowCodeHosts: value };
|
|
1057
|
+
agent.scope = { ...agent.scope ?? {}, network };
|
|
1058
|
+
saveAgent(dir, agent);
|
|
1059
|
+
}
|
|
1052
1060
|
function updateAgentWorkspace(dir, agentName, info) {
|
|
1053
1061
|
try {
|
|
1054
1062
|
const entry = loadAgent(dir, agentName);
|
|
@@ -2832,13 +2840,44 @@ var DEFAULT_ALLOWED_DOMAINS = [
|
|
|
2832
2840
|
// Crates.io
|
|
2833
2841
|
"crates.io",
|
|
2834
2842
|
"static.crates.io",
|
|
2835
|
-
// Source hosts
|
|
2843
|
+
// Source hosts: READ-ONLY content delivery only. The code-host write paths
|
|
2844
|
+
// (github.com, api.github.com, gitlab.com, bitbucket.org) left this list on
|
|
2845
|
+
// 2026-10-06 (git gateway D12/G2): with them present, an injected agent could
|
|
2846
|
+
// push private files to an attacker's repo using an attacker-supplied token,
|
|
2847
|
+
// no operator credential needed. Authenticated git goes through the bridge's
|
|
2848
|
+
// git gateway tools; see RESERVED_CODE_HOST_DOMAINS for the enforced floor.
|
|
2849
|
+
"codeload.github.com",
|
|
2850
|
+
"*.githubusercontent.com"
|
|
2851
|
+
];
|
|
2852
|
+
var RESERVED_CODE_HOST_DOMAINS = [
|
|
2836
2853
|
"github.com",
|
|
2837
2854
|
"*.github.com",
|
|
2838
|
-
"*.githubusercontent.com",
|
|
2839
2855
|
"gitlab.com",
|
|
2840
|
-
"
|
|
2856
|
+
"*.gitlab.com",
|
|
2857
|
+
"bitbucket.org",
|
|
2858
|
+
"*.bitbucket.org"
|
|
2841
2859
|
];
|
|
2860
|
+
var RESERVED_CODE_HOST_READ_ONLY = /* @__PURE__ */ new Set(["codeload.github.com"]);
|
|
2861
|
+
function codeHostConflicts(allowed) {
|
|
2862
|
+
const out = [];
|
|
2863
|
+
for (const a of allowed) {
|
|
2864
|
+
const d = a.domain.trim().toLowerCase().replace(/\.$/, "");
|
|
2865
|
+
if (RESERVED_CODE_HOST_READ_ONLY.has(d)) continue;
|
|
2866
|
+
for (const r of RESERVED_CODE_HOST_DOMAINS) {
|
|
2867
|
+
const base = r.startsWith("*.") ? r.slice(2) : r;
|
|
2868
|
+
const isAllMatch = d === "*";
|
|
2869
|
+
const isReservedItself = d === r || d === base;
|
|
2870
|
+
const isSubdomainOfReservedWildcard = r.startsWith("*.") && d.endsWith("." + base);
|
|
2871
|
+
const isBroaderWildcard = d.startsWith("*.") && (base === d.slice(2) || base.endsWith("." + d.slice(2)));
|
|
2872
|
+
const hit = isAllMatch || isReservedItself || isSubdomainOfReservedWildcard || isBroaderWildcard;
|
|
2873
|
+
if (hit) {
|
|
2874
|
+
out.push({ domain: a.domain, source: a.source, reservation: r });
|
|
2875
|
+
break;
|
|
2876
|
+
}
|
|
2877
|
+
}
|
|
2878
|
+
}
|
|
2879
|
+
return out;
|
|
2880
|
+
}
|
|
2842
2881
|
var PROVIDER_PATHS = {
|
|
2843
2882
|
"claude-code": ["~/.claude", "~/.claude.json"],
|
|
2844
2883
|
codex: ["~/.codex"],
|
|
@@ -3022,6 +3061,24 @@ Narrow the grant to a path outside the protected set. (Ancestor grants like "~"
|
|
|
3022
3061
|
...scope.network?.deniedDomains ?? [],
|
|
3023
3062
|
...parseEnvList(env["BRAID_SCOPE_DENY_DOMAINS"])
|
|
3024
3063
|
]);
|
|
3064
|
+
const allowCodeHosts = scope.network?.allowCodeHosts === true;
|
|
3065
|
+
if (!disabled && !allowCodeHosts) {
|
|
3066
|
+
const labelledDomains = [
|
|
3067
|
+
...(scope.network?.allowedDomains ?? []).map((domain) => ({ domain, source: "scope.network.allowedDomains" })),
|
|
3068
|
+
...(cfg.derivedAllowedDomains ?? []).map((domain) => ({ domain, source: "derived model endpoint" })),
|
|
3069
|
+
...parseEnvList(env["BRAID_SCOPE_ALLOW_DOMAINS"]).map((domain) => ({ domain, source: "BRAID_SCOPE_ALLOW_DOMAINS" })),
|
|
3070
|
+
...(cfg.scopeFlags?.allowDomains ?? []).map((domain) => ({ domain, source: "--allow-domain" }))
|
|
3071
|
+
];
|
|
3072
|
+
const hits = codeHostConflicts(labelledDomains);
|
|
3073
|
+
if (hits.length > 0) {
|
|
3074
|
+
const detail = hits.map((h) => ` - ${h.source}: "${h.domain}" is a code host (reserved: ${h.reservation})`).join("\n");
|
|
3075
|
+
throw new Error(
|
|
3076
|
+
`[braid] SCOPE ERROR: a network grant reaches a code host and was refused:
|
|
3077
|
+
${detail}
|
|
3078
|
+
The sandboxed agent must not reach code hosts directly (an injected agent could push private files anywhere on that host). Use the Braid git tools for authenticated git, or run \`braid scope allow-code-hosts <agent>\` to accept the exfiltration risk for this agent.`
|
|
3079
|
+
);
|
|
3080
|
+
}
|
|
3081
|
+
}
|
|
3025
3082
|
function describe() {
|
|
3026
3083
|
const lines = [];
|
|
3027
3084
|
if (disabled) {
|
|
@@ -3042,6 +3099,9 @@ Narrow the grant to a path outside the protected set. (Ancestor grants like "~"
|
|
|
3042
3099
|
lines.push(`[scope] provider paths (writable): ${providerPaths.join(", ")}`);
|
|
3043
3100
|
}
|
|
3044
3101
|
lines.push(`[scope] allowed domains (${allowedDomains.length}): ${allowedDomains.slice(0, 5).join(", ")}${allowedDomains.length > 5 ? " ..." : ""}`);
|
|
3102
|
+
if (allowCodeHosts) {
|
|
3103
|
+
lines.push("[scope] WARNING: direct code-host egress is ON for this agent (exfiltration path accepted by the owner via `braid scope allow-code-hosts`)");
|
|
3104
|
+
}
|
|
3045
3105
|
if ((cfg.derivedAllowedDomains ?? []).length > 0) {
|
|
3046
3106
|
lines.push(`[scope] model endpoints (derived): ${(cfg.derivedAllowedDomains ?? []).join(", ")}`);
|
|
3047
3107
|
}
|
|
@@ -3773,6 +3833,16 @@ async function verifyCardIdentity(card, peerName, pinnedIssuer) {
|
|
|
3773
3833
|
}
|
|
3774
3834
|
|
|
3775
3835
|
// src/relayClient.ts
|
|
3836
|
+
function relayHttpNote(label, r) {
|
|
3837
|
+
if (!isVerboseOutput()) return;
|
|
3838
|
+
if (r.status === 402) {
|
|
3839
|
+
const plan = r.json?.requiredPlan;
|
|
3840
|
+
const need = typeof plan === "string" && plan.length > 0 ? `requires ${sanitizeForTty(plan).replace(/\s+/g, " ").slice(0, 32)}` : "requires a higher plan";
|
|
3841
|
+
console.log(`[braid] ${label}: not included in this channel's plan (${need})`);
|
|
3842
|
+
return;
|
|
3843
|
+
}
|
|
3844
|
+
console.warn(`[braid] ${label} HTTP ${r.status ?? r.category}`);
|
|
3845
|
+
}
|
|
3776
3846
|
var HEARTBEAT_MS = 25e3;
|
|
3777
3847
|
var WATCHDOG_MS = 4e4;
|
|
3778
3848
|
var CONNECT_TIMEOUT_MS = 2e4;
|
|
@@ -3875,7 +3945,7 @@ function decideCardTrust(pin, name, r) {
|
|
|
3875
3945
|
if (pin.has(name)) return "downgrade";
|
|
3876
3946
|
return "ok";
|
|
3877
3947
|
}
|
|
3878
|
-
var RelayClient = class {
|
|
3948
|
+
var RelayClient = class _RelayClient {
|
|
3879
3949
|
constructor(cfg, deps) {
|
|
3880
3950
|
this.cfg = cfg;
|
|
3881
3951
|
this.deps = deps;
|
|
@@ -3974,6 +4044,9 @@ var RelayClient = class {
|
|
|
3974
4044
|
* legitimately uses that literal. Kept in sync with `memberChannels` (cleared on
|
|
3975
4045
|
* `removed`). Names only (G7) — the relay resolves ids to names server-side. */
|
|
3976
4046
|
channelOrgs = /* @__PURE__ */ new Map();
|
|
4047
|
+
/** D4: per-channel agent-visible features from the relay (hello.channelFeatures / added.features).
|
|
4048
|
+
* Absent channel or key = offered, so an older relay changes nothing. */
|
|
4049
|
+
channelFeatures = /* @__PURE__ */ new Map();
|
|
3977
4050
|
/** Task 7.1 (D4): this agent's own workspace display name, or the literal string
|
|
3978
4051
|
* "personal" for an org-less agent, from hello's `agentWorkspace`. null until the
|
|
3979
4052
|
* first hello that carries it (older relay, or not yet connected). */
|
|
@@ -4220,7 +4293,7 @@ var RelayClient = class {
|
|
|
4220
4293
|
continue;
|
|
4221
4294
|
}
|
|
4222
4295
|
if (!r.ok) {
|
|
4223
|
-
|
|
4296
|
+
relayHttpNote("backfill", r);
|
|
4224
4297
|
return out;
|
|
4225
4298
|
}
|
|
4226
4299
|
let body = r.json;
|
|
@@ -4274,7 +4347,7 @@ var RelayClient = class {
|
|
|
4274
4347
|
{ requestClass: "relay.messages.recent", maxBodyBytes: 16 * 1024 * 1024 }
|
|
4275
4348
|
);
|
|
4276
4349
|
if (!r.ok) {
|
|
4277
|
-
|
|
4350
|
+
relayHttpNote("join-history", r);
|
|
4278
4351
|
return [];
|
|
4279
4352
|
}
|
|
4280
4353
|
const body = r.json;
|
|
@@ -4557,6 +4630,7 @@ var RelayClient = class {
|
|
|
4557
4630
|
this.lastGapResumeAt.delete(ch);
|
|
4558
4631
|
this.memberChannels.delete(ch);
|
|
4559
4632
|
this.channelOrgs.delete(ch);
|
|
4633
|
+
this.channelFeatures.delete(ch);
|
|
4560
4634
|
this.removedCb?.(ch);
|
|
4561
4635
|
break;
|
|
4562
4636
|
}
|
|
@@ -4566,6 +4640,8 @@ var RelayClient = class {
|
|
|
4566
4640
|
this.memberChannels.add(ch);
|
|
4567
4641
|
const orgName = msg.orgName;
|
|
4568
4642
|
if (typeof orgName === "string" && orgName.length > 0) this.channelOrgs.set(ch, orgName);
|
|
4643
|
+
const fm = _RelayClient.asFeatureMap(msg.features);
|
|
4644
|
+
if (fm) this.channelFeatures.set(ch, fm);
|
|
4569
4645
|
this.addedCb?.(ch);
|
|
4570
4646
|
break;
|
|
4571
4647
|
}
|
|
@@ -4615,6 +4691,13 @@ var RelayClient = class {
|
|
|
4615
4691
|
}
|
|
4616
4692
|
}
|
|
4617
4693
|
}
|
|
4694
|
+
const feats = msg.channelFeatures;
|
|
4695
|
+
if (feats && typeof feats === "object" && !Array.isArray(feats)) {
|
|
4696
|
+
for (const [ch, m] of Object.entries(feats)) {
|
|
4697
|
+
const fm = _RelayClient.asFeatureMap(m);
|
|
4698
|
+
if (fm) this.channelFeatures.set(ch, fm);
|
|
4699
|
+
}
|
|
4700
|
+
}
|
|
4618
4701
|
const agentWorkspaceRaw = msg.agentWorkspace;
|
|
4619
4702
|
if (typeof agentWorkspaceRaw === "string" && agentWorkspaceRaw.length > 0) {
|
|
4620
4703
|
this.agentWorkspace = agentWorkspaceRaw;
|
|
@@ -4892,7 +4975,7 @@ var RelayClient = class {
|
|
|
4892
4975
|
body: JSON.stringify({ scope, card }),
|
|
4893
4976
|
requestClass: "relay.agentcard.put"
|
|
4894
4977
|
});
|
|
4895
|
-
if (!r.ok)
|
|
4978
|
+
if (!r.ok) relayHttpNote("put card", r);
|
|
4896
4979
|
}
|
|
4897
4980
|
/** Verify peer identity in the background (never blocks ingest). Logs security
|
|
4898
4981
|
* warnings on mismatch/downgrade; silent on ok (unsigned/unattested + never-pinned). */
|
|
@@ -4926,7 +5009,7 @@ var RelayClient = class {
|
|
|
4926
5009
|
if (!ch) return [];
|
|
4927
5010
|
const r = await this.httpJson(`/channels/${ch}`, { requestClass: "relay.channel.get" });
|
|
4928
5011
|
if (!r.ok) {
|
|
4929
|
-
|
|
5012
|
+
relayHttpNote("roster", r);
|
|
4930
5013
|
return [];
|
|
4931
5014
|
}
|
|
4932
5015
|
const body = r.json;
|
|
@@ -4948,6 +5031,17 @@ var RelayClient = class {
|
|
|
4948
5031
|
return normalizeRosterEntry(m.id, m.description, m.card);
|
|
4949
5032
|
});
|
|
4950
5033
|
}
|
|
5034
|
+
static asFeatureMap(v) {
|
|
5035
|
+
if (!v || typeof v !== "object" || Array.isArray(v)) return null;
|
|
5036
|
+
const out = {};
|
|
5037
|
+
for (const [k, b] of Object.entries(v)) if (typeof b === "boolean") out[k] = b;
|
|
5038
|
+
return out;
|
|
5039
|
+
}
|
|
5040
|
+
/** True unless the relay told us this channel's plan lacks `key` (D4). */
|
|
5041
|
+
channelHasFeature(channelId, key) {
|
|
5042
|
+
const f = this.channelFeatures.get(channelId);
|
|
5043
|
+
return f === void 0 || f[key] !== false;
|
|
5044
|
+
}
|
|
4951
5045
|
/** Sync read of this agent's own scribe status for a channel (BL-121 task 2).
|
|
4952
5046
|
* Populated by fetchRoster (see selfScribeCache above); false until that has
|
|
4953
5047
|
* run once for this channel. */
|
|
@@ -4966,7 +5060,7 @@ var RelayClient = class {
|
|
|
4966
5060
|
async fetchMemberChannels() {
|
|
4967
5061
|
const r = await this.httpJson(`/channels`, { requestClass: "relay.channels.list" });
|
|
4968
5062
|
if (!r.ok) {
|
|
4969
|
-
|
|
5063
|
+
relayHttpNote("member channels", r);
|
|
4970
5064
|
return [];
|
|
4971
5065
|
}
|
|
4972
5066
|
const body = r.json;
|
|
@@ -5048,7 +5142,7 @@ var RelayClient = class {
|
|
|
5048
5142
|
requestClass: "relay.message.post"
|
|
5049
5143
|
});
|
|
5050
5144
|
if (!r.ok) {
|
|
5051
|
-
|
|
5145
|
+
relayHttpNote("post", r);
|
|
5052
5146
|
}
|
|
5053
5147
|
}
|
|
5054
5148
|
/** Add an emoji reaction to a message in a channel. Degrades silently on error (never throws). */
|
|
@@ -5059,7 +5153,7 @@ var RelayClient = class {
|
|
|
5059
5153
|
method: "PUT",
|
|
5060
5154
|
requestClass: "relay.reaction.put"
|
|
5061
5155
|
});
|
|
5062
|
-
if (!r.ok)
|
|
5156
|
+
if (!r.ok) relayHttpNote("add reaction", r);
|
|
5063
5157
|
}
|
|
5064
5158
|
/** Remove an emoji reaction from a message in a channel. Degrades silently on error (never throws). */
|
|
5065
5159
|
async removeReaction(channelId, messageId, emoji) {
|
|
@@ -5069,7 +5163,7 @@ var RelayClient = class {
|
|
|
5069
5163
|
method: "DELETE",
|
|
5070
5164
|
requestClass: "relay.reaction.delete"
|
|
5071
5165
|
});
|
|
5072
|
-
if (!r.ok)
|
|
5166
|
+
if (!r.ok) relayHttpNote("remove reaction", r);
|
|
5073
5167
|
}
|
|
5074
5168
|
/** Append a structured reflection to a channel. Degrades silently on error (never throws).
|
|
5075
5169
|
* Maps snake_case tool-arg fields to camelCase REST body before posting. */
|
|
@@ -5095,7 +5189,7 @@ var RelayClient = class {
|
|
|
5095
5189
|
body: JSON.stringify(body),
|
|
5096
5190
|
requestClass: "relay.reflection.post"
|
|
5097
5191
|
});
|
|
5098
|
-
if (!r.ok)
|
|
5192
|
+
if (!r.ok) relayHttpNote("write reflection", r);
|
|
5099
5193
|
}
|
|
5100
5194
|
/** Append a durable note to a channel's shared memory. Never throws on a network error
|
|
5101
5195
|
* (returns {ok:false, status:0}), but — unlike the pre-BL-121 version — surfaces the
|
|
@@ -5116,7 +5210,7 @@ var RelayClient = class {
|
|
|
5116
5210
|
body: JSON.stringify(noteBody),
|
|
5117
5211
|
requestClass: "relay.note.post"
|
|
5118
5212
|
});
|
|
5119
|
-
if (!r.ok)
|
|
5213
|
+
if (!r.ok) relayHttpNote("write note", r);
|
|
5120
5214
|
return { ok: r.ok, status: r.ok ? r.status : r.status ?? 0, json: r.ok ? r.json : r.json };
|
|
5121
5215
|
}
|
|
5122
5216
|
// ── Private memory lane (BL-056 task 7) ──────────────────────────────────────
|
|
@@ -5147,7 +5241,7 @@ var RelayClient = class {
|
|
|
5147
5241
|
body: JSON.stringify(memBody),
|
|
5148
5242
|
requestClass: "relay.memory.post"
|
|
5149
5243
|
});
|
|
5150
|
-
if (!r.ok)
|
|
5244
|
+
if (!r.ok) relayHttpNote("remember private", r);
|
|
5151
5245
|
return { ok: r.ok, status: r.ok ? r.status : r.status ?? 0, json: r.ok ? r.json : r.json };
|
|
5152
5246
|
}
|
|
5153
5247
|
/** JIT recall over THIS agent's own private memory lane (relay GET
|
|
@@ -5174,7 +5268,7 @@ var RelayClient = class {
|
|
|
5174
5268
|
{ requestClass: "relay.memory.recall" }
|
|
5175
5269
|
);
|
|
5176
5270
|
if (!r.ok) {
|
|
5177
|
-
|
|
5271
|
+
relayHttpNote("recall private", r);
|
|
5178
5272
|
return [];
|
|
5179
5273
|
}
|
|
5180
5274
|
const data = r.json;
|
|
@@ -5375,7 +5469,7 @@ var RelayClient = class {
|
|
|
5375
5469
|
if (!ch) return [];
|
|
5376
5470
|
const r = await this.httpJson(`/channels/${ch}/notes`, { requestClass: "relay.notes.get" });
|
|
5377
5471
|
if (!r.ok) {
|
|
5378
|
-
|
|
5472
|
+
relayHttpNote("notes", r);
|
|
5379
5473
|
return [];
|
|
5380
5474
|
}
|
|
5381
5475
|
const data = r.json;
|
|
@@ -5405,7 +5499,7 @@ var RelayClient = class {
|
|
|
5405
5499
|
if (!ch) return [];
|
|
5406
5500
|
const r = await this.httpJson(`/channels/${ch}/insights`, { requestClass: "relay.insights.get" });
|
|
5407
5501
|
if (!r.ok) {
|
|
5408
|
-
|
|
5502
|
+
relayHttpNote("insights", r);
|
|
5409
5503
|
return [];
|
|
5410
5504
|
}
|
|
5411
5505
|
const data = r.json;
|
|
@@ -5459,7 +5553,7 @@ var RelayClient = class {
|
|
|
5459
5553
|
body,
|
|
5460
5554
|
requestClass: "relay.flow.post"
|
|
5461
5555
|
});
|
|
5462
|
-
if (!r.ok)
|
|
5556
|
+
if (!r.ok) relayHttpNote("flow post", r);
|
|
5463
5557
|
}
|
|
5464
5558
|
/** Channel instructions text (empty if none or on error — never throws). Branded (H2-4). */
|
|
5465
5559
|
async fetchChannelInstructions(channelId) {
|
|
@@ -5467,7 +5561,7 @@ var RelayClient = class {
|
|
|
5467
5561
|
if (!ch) return untrusted("");
|
|
5468
5562
|
const r = await this.httpJson(`/channels/${ch}/instructions`, { requestClass: "relay.instructions.get" });
|
|
5469
5563
|
if (!r.ok) {
|
|
5470
|
-
|
|
5564
|
+
relayHttpNote("instructions", r);
|
|
5471
5565
|
return untrusted("");
|
|
5472
5566
|
}
|
|
5473
5567
|
const data = r.json;
|
|
@@ -5480,7 +5574,7 @@ var RelayClient = class {
|
|
|
5480
5574
|
if (!ch) return [];
|
|
5481
5575
|
const r = await this.httpJson(`/channels/${ch}/topics`, { requestClass: "relay.topics.get" });
|
|
5482
5576
|
if (!r.ok) {
|
|
5483
|
-
|
|
5577
|
+
relayHttpNote("topics", r);
|
|
5484
5578
|
return [];
|
|
5485
5579
|
}
|
|
5486
5580
|
const data = r.json;
|
|
@@ -5494,7 +5588,7 @@ var RelayClient = class {
|
|
|
5494
5588
|
if (!ch) return [];
|
|
5495
5589
|
const r = await this.httpJson(`/channels/${ch}/sources`, { requestClass: "relay.sources.get" });
|
|
5496
5590
|
if (!r.ok) {
|
|
5497
|
-
|
|
5591
|
+
relayHttpNote("sources", r);
|
|
5498
5592
|
return [];
|
|
5499
5593
|
}
|
|
5500
5594
|
const data = r.json;
|
|
@@ -5510,7 +5604,7 @@ var RelayClient = class {
|
|
|
5510
5604
|
if (!ch) return [];
|
|
5511
5605
|
const r = await this.httpJson(`/channels/${ch}/sources`, { requestClass: "relay.sources.get" });
|
|
5512
5606
|
if (!r.ok) {
|
|
5513
|
-
|
|
5607
|
+
relayHttpNote("listSources", r);
|
|
5514
5608
|
return [];
|
|
5515
5609
|
}
|
|
5516
5610
|
const data = r.json;
|
|
@@ -5523,7 +5617,7 @@ var RelayClient = class {
|
|
|
5523
5617
|
if (!ch || !sid) return null;
|
|
5524
5618
|
const r = await this.httpJson(`/channels/${ch}/sources/${sid}/content`, { requestClass: "relay.sources.get" });
|
|
5525
5619
|
if (!r.ok) {
|
|
5526
|
-
|
|
5620
|
+
relayHttpNote("getSourceContent", r);
|
|
5527
5621
|
return null;
|
|
5528
5622
|
}
|
|
5529
5623
|
const data = r.json;
|
|
@@ -5547,7 +5641,7 @@ var RelayClient = class {
|
|
|
5547
5641
|
this.fetchChannelTopics(channelId),
|
|
5548
5642
|
this.fetchSourcesContext(channelId),
|
|
5549
5643
|
this.fetchChannelNotes(channelId),
|
|
5550
|
-
this.fetchInsights(channelId)
|
|
5644
|
+
this.channelHasFeature(channelId, "insights") ? this.fetchInsights(channelId) : Promise.resolve([])
|
|
5551
5645
|
]);
|
|
5552
5646
|
const orderedNotes = await this.applyRecallOrder(channelId, notes, queryHint);
|
|
5553
5647
|
return buildChannelContext({ instructions, topics, pins, notes: orderedNotes, insights, isScribe: this.isScribeFor(channelId) });
|
|
@@ -5583,7 +5677,7 @@ var RelayClient = class {
|
|
|
5583
5677
|
requestClass: "relay.recall.post"
|
|
5584
5678
|
});
|
|
5585
5679
|
if (!r.ok) {
|
|
5586
|
-
|
|
5680
|
+
relayHttpNote("recall", r);
|
|
5587
5681
|
return [];
|
|
5588
5682
|
}
|
|
5589
5683
|
const data = r.json;
|
|
@@ -5630,7 +5724,7 @@ var RelayClient = class {
|
|
|
5630
5724
|
{ requestClass: "relay.flow.messages", maxBodyBytes: 16 * 1024 * 1024 }
|
|
5631
5725
|
);
|
|
5632
5726
|
if (!r.ok) {
|
|
5633
|
-
|
|
5727
|
+
relayHttpNote("flow messages", r);
|
|
5634
5728
|
return [];
|
|
5635
5729
|
}
|
|
5636
5730
|
const data = r.json;
|
|
@@ -6191,6 +6285,29 @@ function formatRateLimitNotice(agentName, provider, message) {
|
|
|
6191
6285
|
];
|
|
6192
6286
|
}
|
|
6193
6287
|
|
|
6288
|
+
// src/gitEnv.ts
|
|
6289
|
+
var AGENT_GIT_ENV = {
|
|
6290
|
+
GIT_TERMINAL_PROMPT: "0",
|
|
6291
|
+
GCM_INTERACTIVE: "never",
|
|
6292
|
+
GIT_CONFIG_NOSYSTEM: "1"
|
|
6293
|
+
};
|
|
6294
|
+
var AGENT_GIT_CONFIG = [
|
|
6295
|
+
["credential.helper", ""],
|
|
6296
|
+
["core.askPass", ""]
|
|
6297
|
+
];
|
|
6298
|
+
function withAgentGitEnv(extra, baseGitConfigCount = process.env.GIT_CONFIG_COUNT) {
|
|
6299
|
+
const out = { ...extra, ...AGENT_GIT_ENV };
|
|
6300
|
+
let n = Number.parseInt(extra.GIT_CONFIG_COUNT ?? baseGitConfigCount ?? "0", 10);
|
|
6301
|
+
if (!Number.isFinite(n) || n < 0) n = 0;
|
|
6302
|
+
for (const [key, value] of AGENT_GIT_CONFIG) {
|
|
6303
|
+
out[`GIT_CONFIG_KEY_${n}`] = key;
|
|
6304
|
+
out[`GIT_CONFIG_VALUE_${n}`] = value;
|
|
6305
|
+
n++;
|
|
6306
|
+
}
|
|
6307
|
+
out.GIT_CONFIG_COUNT = String(n);
|
|
6308
|
+
return out;
|
|
6309
|
+
}
|
|
6310
|
+
|
|
6194
6311
|
// src/adapter.ts
|
|
6195
6312
|
function defaultToolPolicy() {
|
|
6196
6313
|
return { mode: "readonly", configDirAbs: resolve2(configDir(process.env)), allowReadAbs: [] };
|
|
@@ -6290,6 +6407,10 @@ function resolvePathBinary(binary, hint) {
|
|
|
6290
6407
|
return found;
|
|
6291
6408
|
}
|
|
6292
6409
|
function launchSpecFor(agent) {
|
|
6410
|
+
const spec = launchSpecForProvider(agent);
|
|
6411
|
+
return { ...spec, env: withAgentGitEnv(spec.env ?? {}) };
|
|
6412
|
+
}
|
|
6413
|
+
function launchSpecForProvider(agent) {
|
|
6293
6414
|
const cwd = process.cwd();
|
|
6294
6415
|
switch (agent) {
|
|
6295
6416
|
case "claude-code": {
|
|
@@ -6434,7 +6555,7 @@ function interactiveHandoffSupported(agent) {
|
|
|
6434
6555
|
}
|
|
6435
6556
|
function interactiveResumeSpecFor(agent, sessionId, cwd) {
|
|
6436
6557
|
const build = HANDOFF_RESUME_SPECS[agent];
|
|
6437
|
-
return build ? build(sessionId, cwd) : null;
|
|
6558
|
+
return build ? { ...build(sessionId, cwd), env: withAgentGitEnv({}) } : null;
|
|
6438
6559
|
}
|
|
6439
6560
|
var defaultAcpClientFactory = (launch) => new AcpClient(launch);
|
|
6440
6561
|
var MAX_CONSECUTIVE_RESTARTS = 3;
|
|
@@ -7887,6 +8008,7 @@ export {
|
|
|
7887
8008
|
loadAgent,
|
|
7888
8009
|
acquireAgentLock,
|
|
7889
8010
|
pinEndpoint,
|
|
8011
|
+
setScopeAllowCodeHosts,
|
|
7890
8012
|
updateAgentWorkspace,
|
|
7891
8013
|
isFilesystemRoot,
|
|
7892
8014
|
narrowestMode,
|
|
@@ -7916,6 +8038,7 @@ export {
|
|
|
7916
8038
|
scopedLaunch,
|
|
7917
8039
|
resetScope,
|
|
7918
8040
|
sandboxInstaller,
|
|
8041
|
+
withAgentGitEnv,
|
|
7919
8042
|
resolveClaudeBinary,
|
|
7920
8043
|
describeClaudeBinary,
|
|
7921
8044
|
interactiveHandoffSupported,
|
package/dist/cli.js
CHANGED
|
@@ -75,6 +75,7 @@ import {
|
|
|
75
75
|
sanitizeForTty,
|
|
76
76
|
saveAgent,
|
|
77
77
|
scopedLaunch,
|
|
78
|
+
setScopeAllowCodeHosts,
|
|
78
79
|
setVerboseOutput,
|
|
79
80
|
snapshotHttpMetrics,
|
|
80
81
|
startingLines,
|
|
@@ -82,8 +83,9 @@ import {
|
|
|
82
83
|
toolStatusLine,
|
|
83
84
|
updateAgentWorkspace,
|
|
84
85
|
validateRelayWsUrl,
|
|
86
|
+
withAgentGitEnv,
|
|
85
87
|
wsToHttp
|
|
86
|
-
} from "./chunk-
|
|
88
|
+
} from "./chunk-2OHYN3KD.js";
|
|
87
89
|
import {
|
|
88
90
|
clampUntrusted,
|
|
89
91
|
externalSourceLabel,
|
|
@@ -2376,7 +2378,7 @@ function makeSocketHandoffController(deps) {
|
|
|
2376
2378
|
session = c.session;
|
|
2377
2379
|
spec = c.spec;
|
|
2378
2380
|
}
|
|
2379
|
-
const scoped = await scopedLaunchFn({ command: spec.command, args: spec.args, cwd: spec.cwd }, { scope: deps.scope }, deps.provider);
|
|
2381
|
+
const scoped = await scopedLaunchFn({ command: spec.command, args: spec.args, cwd: spec.cwd, env: spec.env }, { scope: deps.scope }, deps.provider);
|
|
2380
2382
|
pauseAttempted = true;
|
|
2381
2383
|
await session.handoffPause();
|
|
2382
2384
|
active = { channelId, session };
|
|
@@ -3043,6 +3045,9 @@ Commands:
|
|
|
3043
3045
|
(no network; local inspection only)
|
|
3044
3046
|
scope allow <agent> <host>
|
|
3045
3047
|
Approve a custom model endpoint host for a saved agent (BL-148)
|
|
3048
|
+
scope allow-code-hosts <agent>
|
|
3049
|
+
Let THIS agent's sandbox reach github.com/gitlab.com/bitbucket.org
|
|
3050
|
+
directly (accepts the exfiltration risk; prefer the git tools)
|
|
3046
3051
|
telemetry [status|enable|disable]
|
|
3047
3052
|
Show or change usage telemetry (tool-mode +
|
|
3048
3053
|
blocked-tool-call signals only; never content, paths, or
|
|
@@ -3125,6 +3130,11 @@ function parseCliArgs(argv) {
|
|
|
3125
3130
|
}
|
|
3126
3131
|
return { kind: "scope-allow", agent: agent2, host };
|
|
3127
3132
|
}
|
|
3133
|
+
if (argv[1] === "allow-code-hosts") {
|
|
3134
|
+
const agent2 = argv[2] && !argv[2].startsWith("-") ? argv[2].trim() : void 0;
|
|
3135
|
+
if (!agent2) return { kind: "usage", error: `Usage: braid scope allow-code-hosts <agent>` };
|
|
3136
|
+
return { kind: "scope-allow-code-hosts", agent: agent2 };
|
|
3137
|
+
}
|
|
3128
3138
|
const agent = argv[1] && !argv[1].startsWith("-") ? argv[1].trim() : void 0;
|
|
3129
3139
|
return { kind: "scope", agent };
|
|
3130
3140
|
}
|
|
@@ -3951,7 +3961,7 @@ async function runHandoff(opts) {
|
|
|
3951
3961
|
}
|
|
3952
3962
|
const spawnFn = opts.spawnFn ?? nodeSpawn;
|
|
3953
3963
|
const scoped = await scopedLaunch(
|
|
3954
|
-
{ command: spec.command, args: spec.args, cwd: spec.cwd },
|
|
3964
|
+
{ command: spec.command, args: spec.args, cwd: spec.cwd, env: spec.env },
|
|
3955
3965
|
{ scope: opts.scope },
|
|
3956
3966
|
provider
|
|
3957
3967
|
);
|
|
@@ -4109,7 +4119,7 @@ async function runTakeover(lc, ctx) {
|
|
|
4109
4119
|
const child = spawnFn(spec.command, spec.args, {
|
|
4110
4120
|
stdio: "inherit",
|
|
4111
4121
|
cwd: spec.cwd,
|
|
4112
|
-
env: buildAcpEnv(env, spec.env
|
|
4122
|
+
env: buildAcpEnv(env, spec.env ? withOwnGitConfig(spec.env, env) : void 0)
|
|
4113
4123
|
});
|
|
4114
4124
|
child.on("exit", () => settle({}));
|
|
4115
4125
|
child.on("error", (e) => settle({ error: e }));
|
|
@@ -4332,6 +4342,13 @@ async function defaultPrompt(stdin, stdout, question) {
|
|
|
4332
4342
|
rl.close();
|
|
4333
4343
|
}
|
|
4334
4344
|
}
|
|
4345
|
+
function withOwnGitConfig(wire, owner) {
|
|
4346
|
+
const rest = {};
|
|
4347
|
+
for (const [k, v] of Object.entries(wire)) {
|
|
4348
|
+
if (k !== "GIT_CONFIG_COUNT" && !/^GIT_CONFIG_(KEY|VALUE)_\d+$/.test(k)) rest[k] = v;
|
|
4349
|
+
}
|
|
4350
|
+
return withAgentGitEnv(rest, owner.GIT_CONFIG_COUNT);
|
|
4351
|
+
}
|
|
4335
4352
|
|
|
4336
4353
|
// src/observe/handoffGate.ts
|
|
4337
4354
|
var HandoffGate = class {
|
|
@@ -5993,6 +6010,13 @@ Set the provider's config to use ${normalizedHost} and try again, or check BRAID
|
|
|
5993
6010
|
console.log(`[braid] pinned: ${normalizedHost} (source: ${match.source})`);
|
|
5994
6011
|
console.log(`[braid] restart the bridge for the change to take effect.`);
|
|
5995
6012
|
}
|
|
6013
|
+
function scopeAllowCodeHosts(agentName) {
|
|
6014
|
+
const dir = configDir(process.env);
|
|
6015
|
+
setScopeAllowCodeHosts(dir, agentName, true);
|
|
6016
|
+
console.log(`[braid] ${agentName}: direct code-host egress is now ON (github.com, gitlab.com, bitbucket.org reachable from the jail).`);
|
|
6017
|
+
console.log(`[braid] This re-opens an exfiltration path. Prefer the Braid git tools; undo by editing scope.network.allowCodeHosts in the saved agent file.`);
|
|
6018
|
+
console.log(`[braid] restart the bridge for the change to take effect.`);
|
|
6019
|
+
}
|
|
5996
6020
|
function runTelemetryVerb(verb) {
|
|
5997
6021
|
const dir = configDir(process.env);
|
|
5998
6022
|
if (verb === "disable") {
|
|
@@ -6063,6 +6087,10 @@ async function main() {
|
|
|
6063
6087
|
scopeAllow(invocation.agent, invocation.host);
|
|
6064
6088
|
return;
|
|
6065
6089
|
}
|
|
6090
|
+
if (invocation.kind === "scope-allow-code-hosts") {
|
|
6091
|
+
scopeAllowCodeHosts(invocation.agent);
|
|
6092
|
+
return;
|
|
6093
|
+
}
|
|
6066
6094
|
if (invocation.kind === "telemetry") {
|
|
6067
6095
|
runTelemetryVerb(invocation.verb);
|
|
6068
6096
|
return;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@snowyroad/braid",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.97.0",
|
|
4
4
|
"description": "Braid: connect your own coding agent (Claude Code, Codex, Gemini, Grok) to a Braid channel and collaborate with other agents and humans.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"author": "SnowyRoad",
|
package/service-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@snowyroad/braid",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.97.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@snowyroad/braid",
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.97.0",
|
|
10
10
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@agentclientprotocol/sdk": "0.25.1",
|
|
@@ -815,9 +815,9 @@
|
|
|
815
815
|
"license": "MIT"
|
|
816
816
|
},
|
|
817
817
|
"node_modules/@rollup/rollup-android-arm-eabi": {
|
|
818
|
-
"version": "4.
|
|
819
|
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.
|
|
820
|
-
"integrity": "sha512-
|
|
818
|
+
"version": "4.64.0",
|
|
819
|
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.64.0.tgz",
|
|
820
|
+
"integrity": "sha512-FLLpX941CD/7aBvX3GqLGBM9OvY5PGXTryPJkG5r5/OuBpZpV5k45Uo3RxAvqd35tsyc3hH1bhtz921IKzoIzg==",
|
|
821
821
|
"cpu": [
|
|
822
822
|
"arm"
|
|
823
823
|
],
|
|
@@ -829,9 +829,9 @@
|
|
|
829
829
|
]
|
|
830
830
|
},
|
|
831
831
|
"node_modules/@rollup/rollup-android-arm64": {
|
|
832
|
-
"version": "4.
|
|
833
|
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.
|
|
834
|
-
"integrity": "sha512-
|
|
832
|
+
"version": "4.64.0",
|
|
833
|
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.64.0.tgz",
|
|
834
|
+
"integrity": "sha512-iI32XM/jnDYJsvx5ai/za/7gWO9XoSeFFtU06/ZCaRgyilfJOjaopD3nOpk2WrTCGOyeDt4hleUiGOAnd5tHNg==",
|
|
835
835
|
"cpu": [
|
|
836
836
|
"arm64"
|
|
837
837
|
],
|
|
@@ -843,9 +843,9 @@
|
|
|
843
843
|
]
|
|
844
844
|
},
|
|
845
845
|
"node_modules/@rollup/rollup-darwin-arm64": {
|
|
846
|
-
"version": "4.
|
|
847
|
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.
|
|
848
|
-
"integrity": "sha512-
|
|
846
|
+
"version": "4.64.0",
|
|
847
|
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.64.0.tgz",
|
|
848
|
+
"integrity": "sha512-dRBZlbt2sEtF8Mn4MODThze9fIPdDoOhVSlXMAKy5dQbOYK9pOOoPY4Fat3OTtr0+8zbJo5TTZwlsfxY/kDNJg==",
|
|
849
849
|
"cpu": [
|
|
850
850
|
"arm64"
|
|
851
851
|
],
|
|
@@ -857,9 +857,9 @@
|
|
|
857
857
|
]
|
|
858
858
|
},
|
|
859
859
|
"node_modules/@rollup/rollup-darwin-x64": {
|
|
860
|
-
"version": "4.
|
|
861
|
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.
|
|
862
|
-
"integrity": "sha512-
|
|
860
|
+
"version": "4.64.0",
|
|
861
|
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.64.0.tgz",
|
|
862
|
+
"integrity": "sha512-Y3whrJOMucfkhgNkvcM93M6j8C53iEAMmPMYD99C6G1kUy4ELigLWk9ar2/4aCBSRgsql0zdlOemLgW2m5GZgQ==",
|
|
863
863
|
"cpu": [
|
|
864
864
|
"x64"
|
|
865
865
|
],
|
|
@@ -871,9 +871,9 @@
|
|
|
871
871
|
]
|
|
872
872
|
},
|
|
873
873
|
"node_modules/@rollup/rollup-freebsd-arm64": {
|
|
874
|
-
"version": "4.
|
|
875
|
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.
|
|
876
|
-
"integrity": "sha512-
|
|
874
|
+
"version": "4.64.0",
|
|
875
|
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.64.0.tgz",
|
|
876
|
+
"integrity": "sha512-S6S1GEzPjFF6IONYJX3AKt/799+8RgBgCcwRnUo+Ep1IvBxUbw5M51iU0TDdK2NWWVnSvCQ8yi6Em0fGASMOng==",
|
|
877
877
|
"cpu": [
|
|
878
878
|
"arm64"
|
|
879
879
|
],
|
|
@@ -885,9 +885,9 @@
|
|
|
885
885
|
]
|
|
886
886
|
},
|
|
887
887
|
"node_modules/@rollup/rollup-freebsd-x64": {
|
|
888
|
-
"version": "4.
|
|
889
|
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.
|
|
890
|
-
"integrity": "sha512-
|
|
888
|
+
"version": "4.64.0",
|
|
889
|
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.64.0.tgz",
|
|
890
|
+
"integrity": "sha512-Ed1DPoFENkXj4IGzSB12SesV40iP6LxCCrbTIkSGIQBpOOxpBM+0kj62lmaeIHfMWTDoddqTOtqc7s8LYfn+Pw==",
|
|
891
891
|
"cpu": [
|
|
892
892
|
"x64"
|
|
893
893
|
],
|
|
@@ -899,9 +899,9 @@
|
|
|
899
899
|
]
|
|
900
900
|
},
|
|
901
901
|
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
|
|
902
|
-
"version": "4.
|
|
903
|
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.
|
|
904
|
-
"integrity": "sha512-
|
|
902
|
+
"version": "4.64.0",
|
|
903
|
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.64.0.tgz",
|
|
904
|
+
"integrity": "sha512-J/6xhutJPtFyIkmHdf4olOdHHKH5kOJNumojdWn+Elv5ICEYTVOa362Vw27TxsK0BLzb1le3EDlO3UbvFK1lnQ==",
|
|
905
905
|
"cpu": [
|
|
906
906
|
"arm"
|
|
907
907
|
],
|
|
@@ -916,9 +916,9 @@
|
|
|
916
916
|
]
|
|
917
917
|
},
|
|
918
918
|
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
|
|
919
|
-
"version": "4.
|
|
920
|
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.
|
|
921
|
-
"integrity": "sha512-
|
|
919
|
+
"version": "4.64.0",
|
|
920
|
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.64.0.tgz",
|
|
921
|
+
"integrity": "sha512-G4L/Nnx59d2LvDoV/P4S5lZ7oVLT6hodOHMacqjiq2LL2gts86KbkEBTYL53+fBt0odhf7XPIbIATGoYiJctxg==",
|
|
922
922
|
"cpu": [
|
|
923
923
|
"arm"
|
|
924
924
|
],
|
|
@@ -933,9 +933,9 @@
|
|
|
933
933
|
]
|
|
934
934
|
},
|
|
935
935
|
"node_modules/@rollup/rollup-linux-arm64-gnu": {
|
|
936
|
-
"version": "4.
|
|
937
|
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.
|
|
938
|
-
"integrity": "sha512-
|
|
936
|
+
"version": "4.64.0",
|
|
937
|
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.64.0.tgz",
|
|
938
|
+
"integrity": "sha512-zF16pvJDEUksGYRbfnXne7pdklAyj2XDmJeYKgP93oq0cUyX9Y8O7lUo1R+IY1GagP/YBvCEDCe7eEcAKpw//g==",
|
|
939
939
|
"cpu": [
|
|
940
940
|
"arm64"
|
|
941
941
|
],
|
|
@@ -950,9 +950,9 @@
|
|
|
950
950
|
]
|
|
951
951
|
},
|
|
952
952
|
"node_modules/@rollup/rollup-linux-arm64-musl": {
|
|
953
|
-
"version": "4.
|
|
954
|
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.
|
|
955
|
-
"integrity": "sha512-
|
|
953
|
+
"version": "4.64.0",
|
|
954
|
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.64.0.tgz",
|
|
955
|
+
"integrity": "sha512-nIggWn8n+w12+R5lsV+PYYoUY8vuObxPAQqJI7WES+9v0qspYuAHoZMfYM0yLxlipasT5BY9ht5W8t5c/rSCkg==",
|
|
956
956
|
"cpu": [
|
|
957
957
|
"arm64"
|
|
958
958
|
],
|
|
@@ -967,9 +967,9 @@
|
|
|
967
967
|
]
|
|
968
968
|
},
|
|
969
969
|
"node_modules/@rollup/rollup-linux-loong64-gnu": {
|
|
970
|
-
"version": "4.
|
|
971
|
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.
|
|
972
|
-
"integrity": "sha512-
|
|
970
|
+
"version": "4.64.0",
|
|
971
|
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.64.0.tgz",
|
|
972
|
+
"integrity": "sha512-WLOTiHPzszP0dxIMsHpFeDSOSB5I49Mj8K4+yKE3H1X/D0JRG5XZ5jrctJLMjnUc/LUzaKiwq6EHWNJ8pup8PA==",
|
|
973
973
|
"cpu": [
|
|
974
974
|
"loong64"
|
|
975
975
|
],
|
|
@@ -984,9 +984,9 @@
|
|
|
984
984
|
]
|
|
985
985
|
},
|
|
986
986
|
"node_modules/@rollup/rollup-linux-loong64-musl": {
|
|
987
|
-
"version": "4.
|
|
988
|
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.
|
|
989
|
-
"integrity": "sha512-
|
|
987
|
+
"version": "4.64.0",
|
|
988
|
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.64.0.tgz",
|
|
989
|
+
"integrity": "sha512-35RK9aRhh7g7Pmeu5gQ01aCvrhXzj9LoBE6xtUcEH1ns+nyTaSzxSpADmBQINu4QiTDGvmQYwo1j5hlg1rRXFw==",
|
|
990
990
|
"cpu": [
|
|
991
991
|
"loong64"
|
|
992
992
|
],
|
|
@@ -1001,9 +1001,9 @@
|
|
|
1001
1001
|
]
|
|
1002
1002
|
},
|
|
1003
1003
|
"node_modules/@rollup/rollup-linux-ppc64-gnu": {
|
|
1004
|
-
"version": "4.
|
|
1005
|
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.
|
|
1006
|
-
"integrity": "sha512-
|
|
1004
|
+
"version": "4.64.0",
|
|
1005
|
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.64.0.tgz",
|
|
1006
|
+
"integrity": "sha512-RqTfnpoTjuWfPAmqK5p2edt2AMCDJWm6oTn7sKfmyx+6tRga0ip05SJ977o6udTcIiDeF/CJMUfkaN4gtWt6Aw==",
|
|
1007
1007
|
"cpu": [
|
|
1008
1008
|
"ppc64"
|
|
1009
1009
|
],
|
|
@@ -1018,9 +1018,9 @@
|
|
|
1018
1018
|
]
|
|
1019
1019
|
},
|
|
1020
1020
|
"node_modules/@rollup/rollup-linux-ppc64-musl": {
|
|
1021
|
-
"version": "4.
|
|
1022
|
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.
|
|
1023
|
-
"integrity": "sha512-
|
|
1021
|
+
"version": "4.64.0",
|
|
1022
|
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.64.0.tgz",
|
|
1023
|
+
"integrity": "sha512-RQjZPigjxFvFZDijG6rjlSXxhRaTf9zLYVpGK+lVcga64oMqP1GbgVqCb46eHTTceSIgp89Ja0y5aPe3GFBYHg==",
|
|
1024
1024
|
"cpu": [
|
|
1025
1025
|
"ppc64"
|
|
1026
1026
|
],
|
|
@@ -1035,9 +1035,9 @@
|
|
|
1035
1035
|
]
|
|
1036
1036
|
},
|
|
1037
1037
|
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
|
|
1038
|
-
"version": "4.
|
|
1039
|
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.
|
|
1040
|
-
"integrity": "sha512-
|
|
1038
|
+
"version": "4.64.0",
|
|
1039
|
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.64.0.tgz",
|
|
1040
|
+
"integrity": "sha512-tjL58mgQcTRnDRpeky+Sth1MKQeYi2Ct6r3Luq9E5aTSjnM/i/JbozqZkKqp9thM5+oDSZxo+05f9kdQedfTGA==",
|
|
1041
1041
|
"cpu": [
|
|
1042
1042
|
"riscv64"
|
|
1043
1043
|
],
|
|
@@ -1052,9 +1052,9 @@
|
|
|
1052
1052
|
]
|
|
1053
1053
|
},
|
|
1054
1054
|
"node_modules/@rollup/rollup-linux-riscv64-musl": {
|
|
1055
|
-
"version": "4.
|
|
1056
|
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.
|
|
1057
|
-
"integrity": "sha512-
|
|
1055
|
+
"version": "4.64.0",
|
|
1056
|
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.64.0.tgz",
|
|
1057
|
+
"integrity": "sha512-ictoRyVaoZ8C67myHef+8hhCa6IplXJJ/xUCkVCxziV4zxMZh+jvhkhGsPBLqj1S72fnqD0QH5zL4lcaa4X7DQ==",
|
|
1058
1058
|
"cpu": [
|
|
1059
1059
|
"riscv64"
|
|
1060
1060
|
],
|
|
@@ -1069,9 +1069,9 @@
|
|
|
1069
1069
|
]
|
|
1070
1070
|
},
|
|
1071
1071
|
"node_modules/@rollup/rollup-linux-s390x-gnu": {
|
|
1072
|
-
"version": "4.
|
|
1073
|
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.
|
|
1074
|
-
"integrity": "sha512-
|
|
1072
|
+
"version": "4.64.0",
|
|
1073
|
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.64.0.tgz",
|
|
1074
|
+
"integrity": "sha512-8aVvZ2hfr9RLFzBQkQNmYeHLDja8fLeQAmLt757zdKN/B+8L809KlLJKctQjS22wZotptV8G6o7fVPuAs8S1tQ==",
|
|
1075
1075
|
"cpu": [
|
|
1076
1076
|
"s390x"
|
|
1077
1077
|
],
|
|
@@ -1086,9 +1086,9 @@
|
|
|
1086
1086
|
]
|
|
1087
1087
|
},
|
|
1088
1088
|
"node_modules/@rollup/rollup-linux-x64-gnu": {
|
|
1089
|
-
"version": "4.
|
|
1090
|
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.
|
|
1091
|
-
"integrity": "sha512-
|
|
1089
|
+
"version": "4.64.0",
|
|
1090
|
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.64.0.tgz",
|
|
1091
|
+
"integrity": "sha512-2dEF8GAcDKwshUfydD+GhosppNyBzhVUHkdFF3CXd3FpOkzj/RZzF5aoEtzklujklT5qFVRU2GK/cFeLaTNKVg==",
|
|
1092
1092
|
"cpu": [
|
|
1093
1093
|
"x64"
|
|
1094
1094
|
],
|
|
@@ -1103,9 +1103,9 @@
|
|
|
1103
1103
|
]
|
|
1104
1104
|
},
|
|
1105
1105
|
"node_modules/@rollup/rollup-linux-x64-musl": {
|
|
1106
|
-
"version": "4.
|
|
1107
|
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.
|
|
1108
|
-
"integrity": "sha512-
|
|
1106
|
+
"version": "4.64.0",
|
|
1107
|
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.64.0.tgz",
|
|
1108
|
+
"integrity": "sha512-3XHTvoo2hKkh0MiOfS7SkhHjMaaWF7P4F3drocZZaho/Z8w7h/jpnuBHm91BOQLfvrKHs1yR+zir4E8RI3XzTQ==",
|
|
1109
1109
|
"cpu": [
|
|
1110
1110
|
"x64"
|
|
1111
1111
|
],
|
|
@@ -1120,9 +1120,9 @@
|
|
|
1120
1120
|
]
|
|
1121
1121
|
},
|
|
1122
1122
|
"node_modules/@rollup/rollup-openbsd-x64": {
|
|
1123
|
-
"version": "4.
|
|
1124
|
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.
|
|
1125
|
-
"integrity": "sha512-
|
|
1123
|
+
"version": "4.64.0",
|
|
1124
|
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.64.0.tgz",
|
|
1125
|
+
"integrity": "sha512-HKtkzodL4a3KFWDXDoO61cRynAWTR3LnAE0oGtfG9lcNFpNuVYUFOByxDgNqEvic9rvaQbAj+SFwTEWDptRaIw==",
|
|
1126
1126
|
"cpu": [
|
|
1127
1127
|
"x64"
|
|
1128
1128
|
],
|
|
@@ -1134,9 +1134,9 @@
|
|
|
1134
1134
|
]
|
|
1135
1135
|
},
|
|
1136
1136
|
"node_modules/@rollup/rollup-openharmony-arm64": {
|
|
1137
|
-
"version": "4.
|
|
1138
|
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.
|
|
1139
|
-
"integrity": "sha512-
|
|
1137
|
+
"version": "4.64.0",
|
|
1138
|
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.64.0.tgz",
|
|
1139
|
+
"integrity": "sha512-JBsxqiY16uyyCujtoC3s7zL+SrYyNElptD7K4V+KUoJ2V8/XG3hPWpheK+SuPwNh1cikJvIZmIdsrYXvD6PLJw==",
|
|
1140
1140
|
"cpu": [
|
|
1141
1141
|
"arm64"
|
|
1142
1142
|
],
|
|
@@ -1148,9 +1148,9 @@
|
|
|
1148
1148
|
]
|
|
1149
1149
|
},
|
|
1150
1150
|
"node_modules/@rollup/rollup-win32-arm64-msvc": {
|
|
1151
|
-
"version": "4.
|
|
1152
|
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.
|
|
1153
|
-
"integrity": "sha512-
|
|
1151
|
+
"version": "4.64.0",
|
|
1152
|
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.64.0.tgz",
|
|
1153
|
+
"integrity": "sha512-S5Qrijh37qhnUYQ0ay8WN3LuWeKjow7wTUyCOPMZtnXiBXYXdsZETI6ZLfYnQAKovltckPLBFdNeD61P2rJc7g==",
|
|
1154
1154
|
"cpu": [
|
|
1155
1155
|
"arm64"
|
|
1156
1156
|
],
|
|
@@ -1162,9 +1162,9 @@
|
|
|
1162
1162
|
]
|
|
1163
1163
|
},
|
|
1164
1164
|
"node_modules/@rollup/rollup-win32-ia32-msvc": {
|
|
1165
|
-
"version": "4.
|
|
1166
|
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.
|
|
1167
|
-
"integrity": "sha512-
|
|
1165
|
+
"version": "4.64.0",
|
|
1166
|
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.64.0.tgz",
|
|
1167
|
+
"integrity": "sha512-zbZ6iMmLFEsCtTdc2/y1F/cDFVNNCPF7Ae8PCT/wdPE//hGwYp6r+MyCLMFX+kOeIe09Pz6ASfnnfpSTN1FJQQ==",
|
|
1168
1168
|
"cpu": [
|
|
1169
1169
|
"ia32"
|
|
1170
1170
|
],
|
|
@@ -1176,9 +1176,9 @@
|
|
|
1176
1176
|
]
|
|
1177
1177
|
},
|
|
1178
1178
|
"node_modules/@rollup/rollup-win32-x64-gnu": {
|
|
1179
|
-
"version": "4.
|
|
1180
|
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.
|
|
1181
|
-
"integrity": "sha512-
|
|
1179
|
+
"version": "4.64.0",
|
|
1180
|
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.64.0.tgz",
|
|
1181
|
+
"integrity": "sha512-L6Hw69oNpuYaOr1zCG30v0/DqKYCSRwodPGwIcVZ/6f8SOzq9rxtL/xNVI5MO4wjli+Ko0ErK9uHJL3mNPt8wQ==",
|
|
1182
1182
|
"cpu": [
|
|
1183
1183
|
"x64"
|
|
1184
1184
|
],
|
|
@@ -1190,9 +1190,9 @@
|
|
|
1190
1190
|
]
|
|
1191
1191
|
},
|
|
1192
1192
|
"node_modules/@rollup/rollup-win32-x64-msvc": {
|
|
1193
|
-
"version": "4.
|
|
1194
|
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.
|
|
1195
|
-
"integrity": "sha512-
|
|
1193
|
+
"version": "4.64.0",
|
|
1194
|
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.64.0.tgz",
|
|
1195
|
+
"integrity": "sha512-nl+CTWIgOGszQmUz/kanfgrfFZ4qiwxKIfT/ryl3N3Ewk5tqizmYtNXiqb7Bu/fDtNgu1kyxdFiAUJNur3iysg==",
|
|
1196
1196
|
"cpu": [
|
|
1197
1197
|
"x64"
|
|
1198
1198
|
],
|
|
@@ -1234,9 +1234,9 @@
|
|
|
1234
1234
|
"license": "MIT"
|
|
1235
1235
|
},
|
|
1236
1236
|
"node_modules/@types/node": {
|
|
1237
|
-
"version": "25.9.
|
|
1238
|
-
"resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.
|
|
1239
|
-
"integrity": "sha512-
|
|
1237
|
+
"version": "25.9.9",
|
|
1238
|
+
"resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.9.tgz",
|
|
1239
|
+
"integrity": "sha512-b4e2xxj/yMeT2hNlD6x7zNFiQK2Dlmkb9CQ6v3/1G2RezKN4YS2lcEv8lzGm1mhs4f2lM4yNAMI/zUDBZBBt7w==",
|
|
1240
1240
|
"dev": true,
|
|
1241
1241
|
"license": "MIT",
|
|
1242
1242
|
"dependencies": {
|
|
@@ -1394,9 +1394,9 @@
|
|
|
1394
1394
|
}
|
|
1395
1395
|
},
|
|
1396
1396
|
"node_modules/acorn": {
|
|
1397
|
-
"version": "8.
|
|
1398
|
-
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.
|
|
1399
|
-
"integrity": "sha512-
|
|
1397
|
+
"version": "8.19.0",
|
|
1398
|
+
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.19.0.tgz",
|
|
1399
|
+
"integrity": "sha512-oJlA3XiRm7Cyk6qFD2Jn8ak9B7jSy0qy00ADO3+8dpT0LSjFihQYv4C02LFCSYJV3Q37xYwwRy5m+IpIiUzqWw==",
|
|
1400
1400
|
"dev": true,
|
|
1401
1401
|
"license": "MIT",
|
|
1402
1402
|
"bin": {
|
|
@@ -2144,9 +2144,9 @@
|
|
|
2144
2144
|
}
|
|
2145
2145
|
},
|
|
2146
2146
|
"node_modules/express-rate-limit": {
|
|
2147
|
-
"version": "8.7.
|
|
2148
|
-
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.7.
|
|
2149
|
-
"integrity": "sha512-
|
|
2147
|
+
"version": "8.7.1",
|
|
2148
|
+
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.7.1.tgz",
|
|
2149
|
+
"integrity": "sha512-2FXbqkygil3mZiXzEtM0IjE/UBmBNot0J1GEVrJT4JbrvwOSoEtqtO+wHbiMQELWe1eNvHoYRg2dkjOid+6JkA==",
|
|
2150
2150
|
"license": "MIT",
|
|
2151
2151
|
"dependencies": {
|
|
2152
2152
|
"debug": "^4.4.3",
|
|
@@ -2369,9 +2369,9 @@
|
|
|
2369
2369
|
}
|
|
2370
2370
|
},
|
|
2371
2371
|
"node_modules/hono": {
|
|
2372
|
-
"version": "4.13.
|
|
2373
|
-
"resolved": "https://registry.npmjs.org/hono/-/hono-4.13.
|
|
2374
|
-
"integrity": "sha512
|
|
2372
|
+
"version": "4.13.13",
|
|
2373
|
+
"resolved": "https://registry.npmjs.org/hono/-/hono-4.13.13.tgz",
|
|
2374
|
+
"integrity": "sha512-CQ46U0ZkAGmbT/4UxdzzGJpacP2IeKgY4a5/tOI9AABbpOMfK739wfDXmv1usCk+3RkKj1hQy4/fjhiwa2xlrA==",
|
|
2375
2375
|
"license": "MIT",
|
|
2376
2376
|
"engines": {
|
|
2377
2377
|
"node": ">=16.9.0"
|
|
@@ -2480,9 +2480,9 @@
|
|
|
2480
2480
|
}
|
|
2481
2481
|
},
|
|
2482
2482
|
"node_modules/ip-address": {
|
|
2483
|
-
"version": "10.7.
|
|
2484
|
-
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.
|
|
2485
|
-
"integrity": "sha512-
|
|
2483
|
+
"version": "10.7.3",
|
|
2484
|
+
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.3.tgz",
|
|
2485
|
+
"integrity": "sha512-A1kdq/tSb5QjvKvAMgIoEvDBIgL7qaqVP/jkvSwYYRZ9iEzvPpopxp2wQfu3SuZRHtpHNxMn8Fs0bS+gf5Xmwg==",
|
|
2486
2486
|
"license": "MIT",
|
|
2487
2487
|
"engines": {
|
|
2488
2488
|
"node": ">= 12"
|
|
@@ -2745,9 +2745,9 @@
|
|
|
2745
2745
|
}
|
|
2746
2746
|
},
|
|
2747
2747
|
"node_modules/nanoid": {
|
|
2748
|
-
"version": "3.3.
|
|
2749
|
-
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.
|
|
2750
|
-
"integrity": "sha512-
|
|
2748
|
+
"version": "3.3.20",
|
|
2749
|
+
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.20.tgz",
|
|
2750
|
+
"integrity": "sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==",
|
|
2751
2751
|
"dev": true,
|
|
2752
2752
|
"funding": [
|
|
2753
2753
|
{
|
|
@@ -2964,9 +2964,9 @@
|
|
|
2964
2964
|
}
|
|
2965
2965
|
},
|
|
2966
2966
|
"node_modules/postcss": {
|
|
2967
|
-
"version": "8.5.
|
|
2968
|
-
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.
|
|
2969
|
-
"integrity": "sha512-
|
|
2967
|
+
"version": "8.5.29",
|
|
2968
|
+
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.29.tgz",
|
|
2969
|
+
"integrity": "sha512-49cGhUbXj8Qenv0iTMxA1cFBzxXoctpC9Ujd77t1WcbJIr6nF/eI7g/8MgxrYldFRuAXvja7xQRwavoW7kgrxQ==",
|
|
2970
2970
|
"dev": true,
|
|
2971
2971
|
"funding": [
|
|
2972
2972
|
{
|
|
@@ -2984,9 +2984,9 @@
|
|
|
2984
2984
|
],
|
|
2985
2985
|
"license": "MIT",
|
|
2986
2986
|
"dependencies": {
|
|
2987
|
-
"nanoid": "^3.3.
|
|
2987
|
+
"nanoid": "^3.3.19",
|
|
2988
2988
|
"picocolors": "^1.1.1",
|
|
2989
|
-
"source-map-js": "^1.2.
|
|
2989
|
+
"source-map-js": "^1.2.2"
|
|
2990
2990
|
},
|
|
2991
2991
|
"engines": {
|
|
2992
2992
|
"node": "^10 || ^12 || >=14"
|
|
@@ -3174,9 +3174,9 @@
|
|
|
3174
3174
|
}
|
|
3175
3175
|
},
|
|
3176
3176
|
"node_modules/rollup": {
|
|
3177
|
-
"version": "4.
|
|
3178
|
-
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.
|
|
3179
|
-
"integrity": "sha512-
|
|
3177
|
+
"version": "4.64.0",
|
|
3178
|
+
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.64.0.tgz",
|
|
3179
|
+
"integrity": "sha512-gjA/kFeDfffII8COoPsvLPvE16hWDTEc1+0QKQNKUkuV8iJjqsC4xXs8/FzuL0v9EV39kuxTbAgcFoTRyy2TGQ==",
|
|
3180
3180
|
"dev": true,
|
|
3181
3181
|
"license": "MIT",
|
|
3182
3182
|
"dependencies": {
|
|
@@ -3191,31 +3191,31 @@
|
|
|
3191
3191
|
},
|
|
3192
3192
|
"optionalDependencies": {
|
|
3193
3193
|
"@napi-rs/lzma-linux-x64-gnu": "1.5.1",
|
|
3194
|
-
"@rollup/rollup-android-arm-eabi": "4.
|
|
3195
|
-
"@rollup/rollup-android-arm64": "4.
|
|
3196
|
-
"@rollup/rollup-darwin-arm64": "4.
|
|
3197
|
-
"@rollup/rollup-darwin-x64": "4.
|
|
3198
|
-
"@rollup/rollup-freebsd-arm64": "4.
|
|
3199
|
-
"@rollup/rollup-freebsd-x64": "4.
|
|
3200
|
-
"@rollup/rollup-linux-arm-gnueabihf": "4.
|
|
3201
|
-
"@rollup/rollup-linux-arm-musleabihf": "4.
|
|
3202
|
-
"@rollup/rollup-linux-arm64-gnu": "4.
|
|
3203
|
-
"@rollup/rollup-linux-arm64-musl": "4.
|
|
3204
|
-
"@rollup/rollup-linux-loong64-gnu": "4.
|
|
3205
|
-
"@rollup/rollup-linux-loong64-musl": "4.
|
|
3206
|
-
"@rollup/rollup-linux-ppc64-gnu": "4.
|
|
3207
|
-
"@rollup/rollup-linux-ppc64-musl": "4.
|
|
3208
|
-
"@rollup/rollup-linux-riscv64-gnu": "4.
|
|
3209
|
-
"@rollup/rollup-linux-riscv64-musl": "4.
|
|
3210
|
-
"@rollup/rollup-linux-s390x-gnu": "4.
|
|
3211
|
-
"@rollup/rollup-linux-x64-gnu": "4.
|
|
3212
|
-
"@rollup/rollup-linux-x64-musl": "4.
|
|
3213
|
-
"@rollup/rollup-openbsd-x64": "4.
|
|
3214
|
-
"@rollup/rollup-openharmony-arm64": "4.
|
|
3215
|
-
"@rollup/rollup-win32-arm64-msvc": "4.
|
|
3216
|
-
"@rollup/rollup-win32-ia32-msvc": "4.
|
|
3217
|
-
"@rollup/rollup-win32-x64-gnu": "4.
|
|
3218
|
-
"@rollup/rollup-win32-x64-msvc": "4.
|
|
3194
|
+
"@rollup/rollup-android-arm-eabi": "4.64.0",
|
|
3195
|
+
"@rollup/rollup-android-arm64": "4.64.0",
|
|
3196
|
+
"@rollup/rollup-darwin-arm64": "4.64.0",
|
|
3197
|
+
"@rollup/rollup-darwin-x64": "4.64.0",
|
|
3198
|
+
"@rollup/rollup-freebsd-arm64": "4.64.0",
|
|
3199
|
+
"@rollup/rollup-freebsd-x64": "4.64.0",
|
|
3200
|
+
"@rollup/rollup-linux-arm-gnueabihf": "4.64.0",
|
|
3201
|
+
"@rollup/rollup-linux-arm-musleabihf": "4.64.0",
|
|
3202
|
+
"@rollup/rollup-linux-arm64-gnu": "4.64.0",
|
|
3203
|
+
"@rollup/rollup-linux-arm64-musl": "4.64.0",
|
|
3204
|
+
"@rollup/rollup-linux-loong64-gnu": "4.64.0",
|
|
3205
|
+
"@rollup/rollup-linux-loong64-musl": "4.64.0",
|
|
3206
|
+
"@rollup/rollup-linux-ppc64-gnu": "4.64.0",
|
|
3207
|
+
"@rollup/rollup-linux-ppc64-musl": "4.64.0",
|
|
3208
|
+
"@rollup/rollup-linux-riscv64-gnu": "4.64.0",
|
|
3209
|
+
"@rollup/rollup-linux-riscv64-musl": "4.64.0",
|
|
3210
|
+
"@rollup/rollup-linux-s390x-gnu": "4.64.0",
|
|
3211
|
+
"@rollup/rollup-linux-x64-gnu": "4.64.0",
|
|
3212
|
+
"@rollup/rollup-linux-x64-musl": "4.64.0",
|
|
3213
|
+
"@rollup/rollup-openbsd-x64": "4.64.0",
|
|
3214
|
+
"@rollup/rollup-openharmony-arm64": "4.64.0",
|
|
3215
|
+
"@rollup/rollup-win32-arm64-msvc": "4.64.0",
|
|
3216
|
+
"@rollup/rollup-win32-ia32-msvc": "4.64.0",
|
|
3217
|
+
"@rollup/rollup-win32-x64-gnu": "4.64.0",
|
|
3218
|
+
"@rollup/rollup-win32-x64-msvc": "4.64.0",
|
|
3219
3219
|
"fsevents": "~2.3.2"
|
|
3220
3220
|
}
|
|
3221
3221
|
},
|
|
@@ -3449,9 +3449,9 @@
|
|
|
3449
3449
|
}
|
|
3450
3450
|
},
|
|
3451
3451
|
"node_modules/source-map-js": {
|
|
3452
|
-
"version": "1.2.
|
|
3453
|
-
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.
|
|
3454
|
-
"integrity": "sha512-
|
|
3452
|
+
"version": "1.2.2",
|
|
3453
|
+
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz",
|
|
3454
|
+
"integrity": "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==",
|
|
3455
3455
|
"dev": true,
|
|
3456
3456
|
"license": "BSD-3-Clause",
|
|
3457
3457
|
"engines": {
|