page-agent-sdk 3.18.0 → 3.19.1

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.
@@ -113,7 +113,11 @@ async function C(e, t = {}) {
113
113
  temperature: t.temperature ?? e.temperature,
114
114
  maxTokens: t.maxTokens ?? e.maxTokens,
115
115
  ...e.baseUrl ? { anthropicApiUrl: x(e.baseUrl) } : {},
116
- ...e.extraConfig ? { clientOptions: e.extraConfig } : {}
116
+ ...e.extraConfig ? { clientOptions: e.extraConfig } : {},
117
+ ...e.cacheControl ? { invocationKwargs: { cache_control: {
118
+ type: "ephemeral",
119
+ ...e.cacheControl === !0 ? {} : { ttl: e.cacheControl }
120
+ } } } : {}
117
121
  });
118
122
  }
119
123
  //#endregion
@@ -154,10 +158,14 @@ function O(e) {
154
158
  let t = E(e);
155
159
  if (!t || typeof t != "object") return null;
156
160
  let n = t, r = Number(n.prompt_tokens ?? n.promptTokens ?? n.input_tokens ?? n.inputTokens ?? 0) || 0, i = Number(n.completion_tokens ?? n.completionTokens ?? n.output_tokens ?? n.outputTokens ?? 0) || 0, a = Number(n.total_tokens ?? n.totalTokens ?? r + i) || 0;
157
- return !r && !i && !a ? null : {
161
+ if (!r && !i && !a) return null;
162
+ let o = n.input_token_details, s = Number(n.cache_read_input_tokens ?? n.cacheReadInputTokens ?? o?.cache_read ?? 0) || 0, c = Number(n.cache_creation_input_tokens ?? n.cacheCreationInputTokens ?? o?.cache_creation ?? 0) || 0;
163
+ return {
158
164
  prompt_tokens: r,
159
165
  completion_tokens: i,
160
- total_tokens: a
166
+ total_tokens: a,
167
+ ...s ? { cache_read_input_tokens: s } : {},
168
+ ...c ? { cache_creation_input_tokens: c } : {}
161
169
  };
162
170
  }
163
171
  //#endregion
@@ -4997,15 +5005,18 @@ function ku(e) {
4997
5005
  status: "error"
4998
5006
  };
4999
5007
  try {
5000
- let n = await t.invoke(e.args, e.callConfig ? { configurable: e.callConfig } : void 0), r = typeof n == "string" ? n : JSON.stringify(n);
5001
- return r = zl(r, {
5008
+ let n = {
5009
+ __pgDataScope: "",
5010
+ ...e.callConfig ?? {}
5011
+ }, r = await t.invoke(e.args, { configurable: n }), i = typeof r == "string" ? r : JSON.stringify(r);
5012
+ return i = zl(i, {
5002
5013
  files: e.state.files,
5003
5014
  vfsAvailable: ce.some((e) => e.name === "vfs_read"),
5004
5015
  toolName: e.name,
5005
5016
  threshold: ne,
5006
5017
  passThroughChars: I
5007
5018
  }).content, {
5008
- content: r,
5019
+ content: i,
5009
5020
  status: "done"
5010
5021
  };
5011
5022
  } catch (e) {
@@ -7295,12 +7306,12 @@ function up(e, t) {
7295
7306
  return t.some((t) => e === t || e.startsWith(t + ".") || e.startsWith(t + "["));
7296
7307
  }
7297
7308
  function dp(e, t) {
7298
- let n = e.invoke.bind(e), r = async (e) => {
7309
+ let n = e.invoke.bind(e), r = async (e, r) => {
7299
7310
  if (Array.isArray(e?.patches) && e.patches.some((e) => !e || typeof e.jsonPath != "string" || !e.jsonPath)) return `PATH_OUT_OF_SCOPE:patches 含无 jsonPath 项(作用于根),子 agent 仅可写 ${t.join(", ")} 范围内子路径。请为每个 patch 指定 jsonPath。`;
7300
- let r = lp(e);
7301
- if (!r.length) return `PATH_OUT_OF_SCOPE:子 agent 仅可增量 patch(writablePaths: ${t.join(", ")}),不能整体替换(无 jsonPath)。用 write({patch:{jsonPath,...}}) 增量改。`;
7302
- for (let e of r) if (!up(e, t)) return `PATH_OUT_OF_SCOPE:子 agent 写 "${e}" 越界(仅可写 ${t.join(", ")})。`;
7303
- return n(e);
7311
+ let i = lp(e);
7312
+ if (!i.length) return `PATH_OUT_OF_SCOPE:子 agent 仅可增量 patch(writablePaths: ${t.join(", ")}),不能整体替换(无 jsonPath)。用 write({patch:{jsonPath,...}}) 增量改。`;
7313
+ for (let e of i) if (!up(e, t)) return `PATH_OUT_OF_SCOPE:子 agent 写 "${e}" 越界(仅可写 ${t.join(", ")})。`;
7314
+ return r === void 0 ? n(e) : n(e, r);
7304
7315
  };
7305
7316
  return new Proxy(e, { get(e, t, n) {
7306
7317
  return t === "invoke" ? r : Reflect.get(e, t, n);
@@ -11049,7 +11060,7 @@ function Cg(e, n = {}) {
11049
11060
  resourceStore: p.resourceStore
11050
11061
  }));
11051
11062
  let a = Dd(s);
11052
- return b(a, n), i === void 0 ? `主数据${r ? ` @ ${r}` : ""} = (undefined) (hash=${a})` : `主数据${r ? ` @ ${r}` : ""} = ${Td(i)} (hash=${a})`;
11063
+ return b(a, n), i === void 0 ? `主数据${r ? ` @ ${r}` : ""} = (undefined) (hash=${a})` : (i = vg(i, n === "", C, S), `主数据${r ? ` @ ${r}` : ""} = ${Td(i)} (hash=${a})`);
11053
11064
  }, {
11054
11065
  name: "get_data",
11055
11066
  description: "@deprecated(改用 read,等价且支持 fields/depth/分页)。读取主数据当前值(返回含 hash 供乐观锁);jsonPath 可选读子路径。大结果自动外存 vfs。",
@@ -11275,15 +11286,16 @@ function Cg(e, n = {}) {
11275
11286
  jsonPath: t.string().optional().describe("只看快照的某子路径(相对主数据根);不传则整个快照"),
11276
11287
  list: t.boolean().optional().describe("true 则列出快照时间线元信息(序号/操作/标签/时间/大小);不传则查看单条快照内容")
11277
11288
  })
11278
- }), ne = r(async ({ expr: e, limit: t }) => {
11289
+ }), ne = r(async ({ expr: e, limit: t }, n) => {
11290
+ let r = v(n);
11279
11291
  if (typeof s != "object" || !s) return $({
11280
11292
  code: "NOT_OBJECT",
11281
11293
  message: `主数据不是对象/数组,无法查询(当前为 ${s === void 0 ? "undefined" : typeof s})`,
11282
11294
  hint: "query 仅适用于对象/数组;叶子用 get_data 读"
11283
11295
  });
11284
- let n = l ? zu(s, o) : s, r;
11296
+ let i = l ? zu(s, o) : s, a;
11285
11297
  try {
11286
- r = Uh(n, e);
11298
+ a = Uh(i, e);
11287
11299
  } catch (t) {
11288
11300
  return $({
11289
11301
  code: "JSONPATH_SYNTAX",
@@ -11292,8 +11304,8 @@ function Cg(e, n = {}) {
11292
11304
  details: { expr: e }
11293
11305
  });
11294
11306
  }
11295
- let i = t ?? 50, a = r.slice(0, i), c = a.map((e) => `{"path":${JSON.stringify(e.path)},"index":${e.index === void 0 ? "null" : e.index},"value":${Td(e.value)}}`);
11296
- return `{"matched":${r.length},"returned":${a.length},"truncated":${r.length > i},"results":[${c.join(",")}]}`;
11307
+ let c = t ?? 50, u = a.slice(0, c), d = u.map((e) => `{"path":${JSON.stringify(e.path)},"index":${e.index === void 0 ? "null" : e.index},"value":${Td(vg(e.value, r === "", C, S))}}`);
11308
+ return `{"matched":${a.length},"returned":${u.length},"truncated":${a.length > c},"results":[${d.join(",")}]}`;
11297
11309
  }, {
11298
11310
  name: "query_data",
11299
11311
  description: "用 JSONPath 查询主数据(只读):$ 根/.key/[n]/[*]/[?(==/!=/</<=/>/>=,&&/||)]/..key 递归。返回匹配元素 path/index/value(path 可作 write patch 的 jsonPath);大数组筛选定位用它。",
@@ -11464,30 +11476,31 @@ function Cg(e, n = {}) {
11464
11476
  A(L, (e) => e?.mode === "transform");
11465
11477
  let re = r(async ({ jsonPath: e, jsonPaths: t, fields: r, depth: i, offset: a, limit: u }, d) => {
11466
11478
  let f = v(d), m = Dd(s);
11467
- if (b(m, f), t && t.length) {
11468
- let e = t.map((e) => {
11469
- let t = e || "";
11470
- if (!ju(t, o, l)) return `- ${t || "(根)"}: [PATH_DENIED: 不在 schema 声明字段内]`;
11471
- let a = t ? vd(s, t) : s;
11472
- if (!t && l) a = zu(a, o);
11479
+ if (t && t.length) {
11480
+ let e = !1, a = t.map((t) => {
11481
+ let a = t || "";
11482
+ if (!ju(a, o, l)) return `- ${a || "(根)"}: [PATH_DENIED: 不在 schema 声明字段内]`;
11483
+ e = !0;
11484
+ let c = a ? vd(s, a) : s;
11485
+ if (!a && l) c = zu(c, o);
11473
11486
  else if (l) {
11474
- let e = Nu(o, t);
11475
- e && (a = zu(a, e));
11487
+ let e = Nu(o, a);
11488
+ e && (c = zu(c, e));
11476
11489
  }
11477
- let c = a;
11478
- if (p && (c = ag({
11479
- jp: t,
11480
- resolved: c,
11490
+ let u = c;
11491
+ if (p && (u = ag({
11492
+ jp: a,
11493
+ resolved: u,
11481
11494
  resourcesByPath: p.resourcesByPath,
11482
11495
  resourceStore: p.resourceStore
11483
11496
  })), n.interceptors?.read) try {
11484
- c = n.interceptors.read(c);
11497
+ u = n.interceptors.read(u);
11485
11498
  } catch (e) {
11486
- return `- ${t}: [READ_INTERCEPT: ${e.message}]`;
11499
+ return `- ${a}: [READ_INTERCEPT: ${e.message}]`;
11487
11500
  }
11488
- return r && r.length && (c = Cd(c, r)), i != null && (c = wd(c, i)), c = vg(c, f === "", C, S), c === void 0 ? `- ${t} = (undefined)` : `- ${t} = ${Td(c)}`;
11501
+ return r && r.length && (u = Cd(u, r)), i != null && (u = wd(u, i)), u = vg(u, f === "", C, S), u === void 0 ? `- ${a} = (undefined)` : `- ${a} = ${Td(u)}`;
11489
11502
  });
11490
- return `多路径读取(共 ${t.length} 项,hash=${m}):\n${e.join("\n")}`;
11503
+ return e && b(m, f), `多路径读取(共 ${t.length} 项,hash=${m}):\n${a.join("\n")}`;
11491
11504
  }
11492
11505
  let h = e || "";
11493
11506
  if (gd(h)) return $({
@@ -11520,7 +11533,7 @@ function Cg(e, n = {}) {
11520
11533
  message: `read 拦截器抛错: ${e.message}`
11521
11534
  });
11522
11535
  }
11523
- r && r.length && (_ = Cd(_, r)), i != null && (_ = wd(_, i)), _ = vg(_, f === "", C, S);
11536
+ b(m, f), r && r.length && (_ = Cd(_, r)), i != null && (_ = wd(_, i)), _ = vg(_, f === "", C, S);
11524
11537
  let y = e ? "" : `主数据说明: ${c}\n格式: 写入值需为 JSON,且通过声明的 schema 校验(校验失败时 write 会返回结构化错误)。字段约束(类型/min/max/enum/必填/默认)见 systemPrompt「可操作数据」段,或用 schema_data({ jsonPath }) 按需查。\n\n`, x = r && r.length ? `(字段裁剪:${r.join(",")})` : "", w = i == null ? "" : `(深度≤${i})`, T = x || w ? ` ${x}${w}` : "";
11525
11538
  if ((a !== void 0 || u !== void 0) && Array.isArray(_)) {
11526
11539
  let e = _.length, t = Math.max(0, a ?? 0), n = Math.min(200, Math.max(1, u ?? 50)), r = _.slice(t, t + n), i = t + n < e;
@@ -12420,7 +12433,7 @@ function f_(e, n) {
12420
12433
  e.debug && !l && console.warn("[page-agent-sdk][summarization] 未构造 llmInvoke(apiKey 缺失?),摘要回退零成本索引摘要");
12421
12434
  let v = /* @__PURE__ */ ln([]), y = Xp(e.vfs?.initialFiles, {
12422
12435
  persist: s ? { save: (e) => {
12423
- G.sessionId && s && s.save(n, G.sessionId, { vfs: e });
12436
+ It({ vfs: e });
12424
12437
  } } : void 0,
12425
12438
  maxBytes: e.vfs?.maxBytes,
12426
12439
  poolBytes: e.vfs?.poolBytes
@@ -12800,14 +12813,20 @@ function f_(e, n) {
12800
12813
  }
12801
12814
  let St = /* @__PURE__ */ Cn([]);
12802
12815
  async function Ct() {
12803
- s && (St.value = (await s.listSessions(n)).sort((e, t) => t.lastAccessed - e.lastAccessed));
12816
+ if (s) try {
12817
+ St.value = (await s.listSessions(n)).sort((e, t) => t.lastAccessed - e.lastAccessed);
12818
+ } catch (t) {
12819
+ e.debug && console.warn("[page-agent-sdk][persist] refreshSessions 失败(已吞):", t);
12820
+ }
12804
12821
  }
12805
12822
  let wt = a_(), Tt = /* @__PURE__ */ new Set();
12806
12823
  function Et(e) {
12807
- let t = new AbortController();
12808
- return e && (e.aborted ? t.abort() : e.addEventListener("abort", () => t.abort(), { once: !0 })), Tt.add(t), {
12824
+ let t = new AbortController(), n = () => t.abort();
12825
+ return e && (e.aborted ? t.abort() : e.addEventListener("abort", n, { once: !0 })), Tt.add(t), {
12809
12826
  controller: t,
12810
- untrack: () => Tt.delete(t)
12827
+ untrack: () => {
12828
+ Tt.delete(t), e?.removeEventListener("abort", n);
12829
+ }
12811
12830
  };
12812
12831
  }
12813
12832
  function Dt() {
@@ -12888,16 +12907,17 @@ function f_(e, n) {
12888
12907
  };
12889
12908
  },
12890
12909
  afterRound() {
12891
- Mt(), Ft();
12910
+ Mt(), Rt();
12892
12911
  },
12893
12912
  async send(e, t) {
12894
- await G.initDone, t ??= {}, t?.mission && je && x.setMission(t.mission);
12913
+ if (await G.initDone, G.refCount <= 0) throw Error("page-agent-sdk: agent 已释放(unmount),拒绝排队中的 send");
12914
+ t ??= {}, t?.mission && je && x.setMission(t.mission);
12895
12915
  let n = e;
12896
12916
  if (t.interceptors?.input) try {
12897
12917
  let r = t.interceptors.input(e);
12898
12918
  typeof r == "string" && (n = r);
12899
12919
  } catch {}
12900
- let r = oe ? t.maxAutoRetries ?? 1 : 0, i = 0, a = !1, o = xt(t.signal);
12920
+ let r = oe ? t.maxAutoRetries ?? 1 : 0, i = 0, a = !1, o = xt(t.signal), c = G.sessionId;
12901
12921
  for (;;) {
12902
12922
  a ||= (v.push({
12903
12923
  role: "user",
@@ -12906,6 +12926,16 @@ function f_(e, n) {
12906
12926
  }), !0);
12907
12927
  try {
12908
12928
  let e = await G.agent.invoke(v, t.signal, o);
12929
+ if (t.signal?.aborted || G.sessionId !== c || G.refCount <= 0) return G.agent?.debugLogs?.value?.push({
12930
+ timestamp: Date.now(),
12931
+ type: "middleware",
12932
+ data: {
12933
+ stage: "orphan_round_dropped",
12934
+ fromSession: c,
12935
+ aborted: !!t.signal?.aborted,
12936
+ sessionChanged: G.sessionId !== c
12937
+ }
12938
+ }), e;
12909
12939
  if (t.interceptors?.output) try {
12910
12940
  let n = t.interceptors.output(e);
12911
12941
  typeof n == "string" && (e = n);
@@ -12943,6 +12973,7 @@ function f_(e, n) {
12943
12973
  },
12944
12974
  async batch(e, t, n) {
12945
12975
  if (await G.initDone, !e.length) return [];
12976
+ if (G.refCount <= 0) throw Error("page-agent-sdk: agent 已释放(unmount),拒绝排队中的 batch");
12946
12977
  let r = [], i = xt(n);
12947
12978
  for (let a = 0; a < e.length; a++) {
12948
12979
  if (n?.aborted) {
@@ -13025,15 +13056,15 @@ function f_(e, n) {
13025
13056
  if (a.resolve("keep_external"), G.sessionId && s) {
13026
13057
  if (je) {
13027
13058
  let e = x.getMission();
13028
- e && s.save(n, G.sessionId, { mission: e });
13059
+ e && It({ mission: e });
13029
13060
  }
13030
13061
  if (Me) {
13031
13062
  let e = T.getWorkingMemory();
13032
- e && s.save(n, G.sessionId, { workingMemory: e });
13063
+ e && It({ workingMemory: e });
13033
13064
  }
13034
13065
  if (be) {
13035
13066
  let e = w.getFocuses();
13036
- s.save(n, G.sessionId, { focus: e.length ? e : null });
13067
+ It({ focus: e.length ? e : null });
13037
13068
  }
13038
13069
  }
13039
13070
  y.flush?.(), await s.flush();
@@ -13042,10 +13073,12 @@ function f_(e, n) {
13042
13073
  type: "session_restored",
13043
13074
  sessionId: r,
13044
13075
  rounds: i.messages?.length ?? 0
13045
- })), e.memory && s.save(n, G.sessionId, { memory: E.get() || (typeof e.memory == "string" ? e.memory : "") }), Ct(), Nt = void 0, Pt = !1, G.infoTick.value++, r;
13076
+ })), e.memory && It({ memory: E.get() || (typeof e.memory == "string" ? e.memory : "") }), Ct(), Nt = void 0, Pt = !1, G.infoTick.value++, r;
13046
13077
  },
13047
13078
  resetSession: () => {
13048
- Dt(), a.resolve("keep_external"), G.sessionId = $m(), v.splice(0, v.length), y.clear?.(), b.reset([]), e.memory || E.reset(""), x.reset(), T.reset(), w.reset(), L && L.importStack([]), G.agent && (G.agent.debugLogs.value = []), s && s.createSession(G.agentId, e.session?.title, G.sessionId), st({
13079
+ Dt(), a.resolve("keep_external"), G.sessionId = $m(), v.splice(0, v.length), y.clear?.(), b.reset([]), e.memory || E.reset(""), x.reset(), T.reset(), w.reset(), L && L.importStack([]), G.agent && (G.agent.debugLogs.value = []), s && s.createSession(G.agentId, e.session?.title, G.sessionId).catch((t) => {
13080
+ e.debug && console.warn("[page-agent-sdk][persist] createSession 失败(已吞):", t);
13081
+ }), st({
13049
13082
  type: "session_restored",
13050
13083
  sessionId: G.sessionId,
13051
13084
  rounds: 0
@@ -13271,7 +13304,7 @@ function f_(e, n) {
13271
13304
  }), e.debug && console.log("[page-agent-sdk][restore] 恢复会话", G.sessionId, `${t.messages?.length ?? 0} msgs`)) : e.debug && console.log("[page-agent-sdk][restore] 会话 meta 存在但快照为空", G.sessionId);
13272
13305
  } else G.sessionId = await s.createSession(n, t.title), e.debug && console.log("[page-agent-sdk][restore] 新建会话(无历史)", G.sessionId);
13273
13306
  } else G.sessionId = await s.createSession(n, t.title);
13274
- e.memory && s.save(n, G.sessionId, { memory: E.get() || (typeof e.memory == "string" ? e.memory : "") }), Ct();
13307
+ e.memory && It({ memory: E.get() || (typeof e.memory == "string" ? e.memory : "") }), Ct();
13275
13308
  }
13276
13309
  async function kt() {
13277
13310
  await mt();
@@ -13309,35 +13342,65 @@ function f_(e, n) {
13309
13342
  try {
13310
13343
  let e = await l(Uf(t, g)), i = v.indexOf(n);
13311
13344
  if (i < 0) return;
13312
- v[i].content = Lf(t, r, e), Ft();
13345
+ v[i].content = Lf(t, r, e), Rt();
13313
13346
  } catch {}
13314
13347
  })();
13315
13348
  }
13316
13349
  }
13317
13350
  let Nt, Pt = !1;
13318
- function Ft() {
13351
+ function Ft(t, n) {
13352
+ e.debug && console.warn(`[page-agent-sdk][persist] ${t} 失败(已吞):`, n);
13353
+ let r = G.agent?.debugLogs;
13354
+ r && r.value.push({
13355
+ timestamp: Date.now(),
13356
+ type: "middleware",
13357
+ data: {
13358
+ stage: "persist_save_failed",
13359
+ kind: t,
13360
+ error: String(n).slice(0, 160)
13361
+ }
13362
+ });
13363
+ }
13364
+ function It(e) {
13365
+ !G.sessionId || !s || s.save(n, G.sessionId, e).catch((e) => Ft("save", e));
13366
+ }
13367
+ function Lt(e, t) {
13368
+ s && s.updateTitle(n, e, t).catch((e) => Ft("updateTitle", e));
13369
+ }
13370
+ function Rt() {
13319
13371
  if (!G.sessionId || !s) return;
13320
- let t = JSON.parse(JSON.stringify(v));
13321
- s.save(n, G.sessionId, { messages: t });
13322
- let r = G.agent?.getState?.()?.todos ?? [];
13323
- if (s.save(n, G.sessionId, { todos: r }), je) {
13372
+ if (It({ messages: JSON.parse(JSON.stringify(v)) }), It({ todos: G.agent?.getState?.()?.todos ?? [] }), je) {
13324
13373
  let e = x.getMission();
13325
- e && s.save(n, G.sessionId, { mission: e });
13374
+ e && It({ mission: e });
13326
13375
  }
13327
13376
  if (Me) {
13328
13377
  let e = T.getWorkingMemory();
13329
- e && s.save(n, G.sessionId, { workingMemory: e });
13378
+ e && It({ workingMemory: e });
13330
13379
  }
13331
13380
  if (be) {
13332
13381
  let e = w.getFocuses();
13333
- s.save(n, G.sessionId, { focus: e.length ? e : null });
13382
+ It({ focus: e.length ? e : null });
13334
13383
  }
13335
- oe && L && (s.save(n, G.sessionId, { checkpoints: L.exportStack() }), s.save(n, G.sessionId, { usage: i }));
13336
- let a = Vm(v);
13337
- a && a !== Nt && (Nt = a, s.updateTitle(n, G.sessionId, a)), e.autoTitle !== !1 && u && !Pt && v.some((e) => e.role === "user") && v.some((e) => e.role === "assistant") && (Pt = !0, (async () => {
13338
- let e = await u(v);
13339
- e && (await s.updateTitle(n, G.sessionId, e), await Ct());
13340
- })()), e.debug && console.log("[page-agent-sdk][persist] save", G.sessionId, `${v.length} msgs`);
13384
+ oe && L && (It({ checkpoints: L.exportStack() }), It({ usage: i }));
13385
+ let t = Vm(v);
13386
+ if (t && t !== Nt && (Nt = t, Lt(G.sessionId, t)), e.autoTitle !== !1 && u && !Pt && v.some((e) => e.role === "user") && v.some((e) => e.role === "assistant")) {
13387
+ Pt = !0;
13388
+ let e = G.sessionId;
13389
+ (async () => {
13390
+ try {
13391
+ let t = await u(v);
13392
+ if (t && G.refCount > 0 && G.sessionId === e) {
13393
+ try {
13394
+ await s.updateTitle(n, e, t);
13395
+ } catch (e) {
13396
+ Ft("updateTitle", e);
13397
+ }
13398
+ await Ct();
13399
+ }
13400
+ } catch {}
13401
+ })();
13402
+ }
13403
+ e.debug && console.log("[page-agent-sdk][persist] save", G.sessionId, `${v.length} msgs`);
13341
13404
  }
13342
13405
  return G.initDone = (async () => {
13343
13406
  await Ot(), await kt(), e.mcp?.length && (async () => {
@@ -15204,7 +15267,11 @@ var Yv = ["innerHTML"], Xv = {
15204
15267
  has: (e) => s.has(`${l}:${e}`),
15205
15268
  toggle: (e) => {
15206
15269
  let t = `${l}:${e}`;
15207
- s.has(t) ? s.delete(t) : (s.clear(), s.add(t));
15270
+ if (s.has(t)) s.delete(t);
15271
+ else {
15272
+ for (let e of Array.from(s)) e.startsWith(`${l}:`) && s.delete(e);
15273
+ s.add(t);
15274
+ }
15208
15275
  }
15209
15276
  };
15210
15277
  function d(e) {
@@ -15312,7 +15379,7 @@ var Yv = ["innerHTML"], Xv = {
15312
15379
  ], 2))), 128))])) : Q("", !0)
15313
15380
  ], 2))), 128))])) : Q("", !0);
15314
15381
  }
15315
- }), [["__scopeId", "data-v-abae31a2"]]);
15382
+ }), [["__scopeId", "data-v-558ca64f"]]);
15316
15383
  //#endregion
15317
15384
  //#region node_modules/marked/lib/marked.esm.js
15318
15385
  function $y() {