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.
- package/README.md +3 -3
- package/README.zh-CN.md +3 -3
- package/dist/page-agent-sdk.headless.js +926 -863
- package/dist/page-agent-sdk.iife.js +91 -91
- package/dist/page-agent-sdk.js +132 -65
- package/dist/page-agent-sdk.umd.cjs +10 -10
- package/dist/style.css +1 -1
- package/package.json +2 -1
- package/types/index.d.ts +8 -0
package/dist/page-agent-sdk.js
CHANGED
|
@@ -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
|
-
|
|
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 =
|
|
5001
|
-
|
|
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:
|
|
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
|
|
7301
|
-
if (!
|
|
7302
|
-
for (let e of
|
|
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
|
|
11296
|
+
let i = l ? zu(s, o) : s, a;
|
|
11285
11297
|
try {
|
|
11286
|
-
|
|
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
|
|
11296
|
-
return `{"matched":${
|
|
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 (
|
|
11468
|
-
let e = t.map((
|
|
11469
|
-
let
|
|
11470
|
-
if (!ju(
|
|
11471
|
-
|
|
11472
|
-
|
|
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,
|
|
11475
|
-
e && (
|
|
11487
|
+
let e = Nu(o, a);
|
|
11488
|
+
e && (c = zu(c, e));
|
|
11476
11489
|
}
|
|
11477
|
-
let
|
|
11478
|
-
if (p && (
|
|
11479
|
-
jp:
|
|
11480
|
-
resolved:
|
|
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
|
-
|
|
11497
|
+
u = n.interceptors.read(u);
|
|
11485
11498
|
} catch (e) {
|
|
11486
|
-
return `- ${
|
|
11499
|
+
return `- ${a}: [READ_INTERCEPT: ${e.message}]`;
|
|
11487
11500
|
}
|
|
11488
|
-
return r && r.length && (
|
|
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${
|
|
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
|
-
|
|
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
|
-
|
|
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",
|
|
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: () =>
|
|
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(),
|
|
12910
|
+
Mt(), Rt();
|
|
12892
12911
|
},
|
|
12893
12912
|
async send(e, t) {
|
|
12894
|
-
await G.initDone,
|
|
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 &&
|
|
13059
|
+
e && It({ mission: e });
|
|
13029
13060
|
}
|
|
13030
13061
|
if (Me) {
|
|
13031
13062
|
let e = T.getWorkingMemory();
|
|
13032
|
-
e &&
|
|
13063
|
+
e && It({ workingMemory: e });
|
|
13033
13064
|
}
|
|
13034
13065
|
if (be) {
|
|
13035
13066
|
let e = w.getFocuses();
|
|
13036
|
-
|
|
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 &&
|
|
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)
|
|
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 &&
|
|
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),
|
|
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
|
-
|
|
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 &&
|
|
13374
|
+
e && It({ mission: e });
|
|
13326
13375
|
}
|
|
13327
13376
|
if (Me) {
|
|
13328
13377
|
let e = T.getWorkingMemory();
|
|
13329
|
-
e &&
|
|
13378
|
+
e && It({ workingMemory: e });
|
|
13330
13379
|
}
|
|
13331
13380
|
if (be) {
|
|
13332
13381
|
let e = w.getFocuses();
|
|
13333
|
-
|
|
13382
|
+
It({ focus: e.length ? e : null });
|
|
13334
13383
|
}
|
|
13335
|
-
oe && L && (
|
|
13336
|
-
let
|
|
13337
|
-
|
|
13338
|
-
|
|
13339
|
-
e
|
|
13340
|
-
|
|
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)
|
|
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-
|
|
15382
|
+
}), [["__scopeId", "data-v-558ca64f"]]);
|
|
15316
15383
|
//#endregion
|
|
15317
15384
|
//#region node_modules/marked/lib/marked.esm.js
|
|
15318
15385
|
function $y() {
|