page-agent-sdk 3.23.1 → 3.24.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 +4 -4
- package/README.zh-CN.md +5 -4
- package/dist/page-agent-sdk.headless.js +831 -580
- package/dist/page-agent-sdk.iife.js +161 -159
- package/dist/page-agent-sdk.js +4055 -3707
- package/dist/page-agent-sdk.umd.cjs +52 -50
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/skills/page-agent-sdk-integrate/SKILL.md +3 -0
- package/types/headless.d.ts +45 -0
- package/types/index.d.ts +48 -1
|
@@ -169,42 +169,42 @@ process.env.NODE_ENV === "production" || Object.freeze([]);
|
|
|
169
169
|
var S = () => {}, C = (e) => e.charCodeAt(0) === 111 && e.charCodeAt(1) === 110 && (e.charCodeAt(2) > 122 || e.charCodeAt(2) < 97), w = (e) => e.startsWith("onUpdate:"), T = Object.assign, E = (e, t) => {
|
|
170
170
|
let n = e.indexOf(t);
|
|
171
171
|
n > -1 && e.splice(n, 1);
|
|
172
|
-
}, D = Object.prototype.hasOwnProperty, O = (e, t) => D.call(e, t), k = Array.isArray, A = (e) => re(e) === "[object Map]", ee = (e) => re(e) === "[object Set]", j = (e) => typeof e == "function", M = (e) => typeof e == "string", te = (e) => typeof e == "symbol", N = (e) => typeof e == "object" && !!e, P = (e) => (N(e) || j(e)) && j(e.then) && j(e.catch), ne = Object.prototype.toString, re = (e) => ne.call(e), ie = (e) => re(e).slice(8, -1), F = (e) => re(e) === "[object Object]",
|
|
172
|
+
}, D = Object.prototype.hasOwnProperty, O = (e, t) => D.call(e, t), k = Array.isArray, A = (e) => re(e) === "[object Map]", ee = (e) => re(e) === "[object Set]", j = (e) => typeof e == "function", M = (e) => typeof e == "string", te = (e) => typeof e == "symbol", N = (e) => typeof e == "object" && !!e, P = (e) => (N(e) || j(e)) && j(e.then) && j(e.catch), ne = Object.prototype.toString, re = (e) => ne.call(e), ie = (e) => re(e).slice(8, -1), F = (e) => re(e) === "[object Object]", ae = (e) => M(e) && e !== "NaN" && e[0] !== "-" && "" + parseInt(e, 10) === e, I = ((e) => {
|
|
173
173
|
let t = /* @__PURE__ */ Object.create(null);
|
|
174
174
|
return ((n) => t[n] || (t[n] = e(n)));
|
|
175
|
-
})((e) => e.charAt(0).toUpperCase() + e.slice(1)),
|
|
175
|
+
})((e) => e.charAt(0).toUpperCase() + e.slice(1)), oe = (e, t) => !Object.is(e, t), se = (e, t, n, r = !1) => {
|
|
176
176
|
Object.defineProperty(e, t, {
|
|
177
177
|
configurable: !0,
|
|
178
178
|
enumerable: !1,
|
|
179
179
|
writable: r,
|
|
180
180
|
value: n
|
|
181
181
|
});
|
|
182
|
-
},
|
|
183
|
-
function
|
|
182
|
+
}, ce, le = () => ce ||= typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : typeof window < "u" ? window : typeof global < "u" ? global : {};
|
|
183
|
+
function ue(e) {
|
|
184
184
|
if (k(e)) {
|
|
185
185
|
let t = {};
|
|
186
186
|
for (let n = 0; n < e.length; n++) {
|
|
187
|
-
let r = e[n], i = M(r) ?
|
|
187
|
+
let r = e[n], i = M(r) ? pe(r) : ue(r);
|
|
188
188
|
if (i) for (let e in i) t[e] = i[e];
|
|
189
189
|
}
|
|
190
190
|
return t;
|
|
191
191
|
} else if (M(e) || N(e)) return e;
|
|
192
192
|
}
|
|
193
|
-
var
|
|
194
|
-
function
|
|
193
|
+
var de = /;(?![^(]*\))/g, fe = /:([^]+)/, L = /\/\*[^]*?\*\//g;
|
|
194
|
+
function pe(e) {
|
|
195
195
|
let t = {};
|
|
196
|
-
return e.replace(
|
|
196
|
+
return e.replace(L, "").split(de).forEach((e) => {
|
|
197
197
|
if (e) {
|
|
198
|
-
let n = e.split(
|
|
198
|
+
let n = e.split(fe);
|
|
199
199
|
n.length > 1 && (t[n[0].trim()] = n[1].trim());
|
|
200
200
|
}
|
|
201
201
|
}), t;
|
|
202
202
|
}
|
|
203
|
-
function
|
|
203
|
+
function R(e) {
|
|
204
204
|
let t = "";
|
|
205
205
|
if (M(e)) t = e;
|
|
206
206
|
else if (k(e)) for (let n = 0; n < e.length; n++) {
|
|
207
|
-
let r =
|
|
207
|
+
let r = R(e[n]);
|
|
208
208
|
r && (t += r + " ");
|
|
209
209
|
}
|
|
210
210
|
else if (N(e)) for (let n in e) e[n] && (t += n + " ");
|
|
@@ -212,76 +212,76 @@ function z(e) {
|
|
|
212
212
|
}
|
|
213
213
|
//#endregion
|
|
214
214
|
//#region node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js
|
|
215
|
-
function
|
|
215
|
+
function z(e, ...t) {
|
|
216
216
|
console.warn(`[Vue warn] ${e}`, ...t);
|
|
217
217
|
}
|
|
218
|
-
var
|
|
219
|
-
function
|
|
220
|
-
return
|
|
218
|
+
var me;
|
|
219
|
+
function he() {
|
|
220
|
+
return me;
|
|
221
221
|
}
|
|
222
|
-
var
|
|
222
|
+
var B, ge = /* @__PURE__ */ new WeakSet(), _e = class {
|
|
223
223
|
constructor(e) {
|
|
224
|
-
this.fn = e, this.deps = void 0, this.depsTail = void 0, this.flags = 5, this.next = void 0, this.cleanup = void 0, this.scheduler = void 0,
|
|
224
|
+
this.fn = e, this.deps = void 0, this.depsTail = void 0, this.flags = 5, this.next = void 0, this.cleanup = void 0, this.scheduler = void 0, me && (me.active ? me.effects.push(this) : this.flags &= -2);
|
|
225
225
|
}
|
|
226
226
|
pause() {
|
|
227
227
|
this.flags |= 64;
|
|
228
228
|
}
|
|
229
229
|
resume() {
|
|
230
|
-
this.flags & 64 && (this.flags &= -65,
|
|
230
|
+
this.flags & 64 && (this.flags &= -65, ge.has(this) && (ge.delete(this), this.trigger()));
|
|
231
231
|
}
|
|
232
232
|
notify() {
|
|
233
|
-
this.flags & 2 && !(this.flags & 32) || this.flags & 8 ||
|
|
233
|
+
this.flags & 2 && !(this.flags & 32) || this.flags & 8 || V(this);
|
|
234
234
|
}
|
|
235
235
|
run() {
|
|
236
236
|
if (!(this.flags & 1)) return this.fn();
|
|
237
|
-
this.flags |= 2,
|
|
238
|
-
let e =
|
|
239
|
-
|
|
237
|
+
this.flags |= 2, je(this), Ce(this);
|
|
238
|
+
let e = B, t = U;
|
|
239
|
+
B = this, U = !0;
|
|
240
240
|
try {
|
|
241
241
|
return this.fn();
|
|
242
242
|
} finally {
|
|
243
|
-
process.env.NODE_ENV !== "production" &&
|
|
243
|
+
process.env.NODE_ENV !== "production" && B !== this && z("Active effect was not restored correctly - this is likely a Vue internal bug."), we(this), B = e, U = t, this.flags &= -3;
|
|
244
244
|
}
|
|
245
245
|
}
|
|
246
246
|
stop() {
|
|
247
247
|
if (this.flags & 1) {
|
|
248
|
-
for (let e = this.deps; e; e = e.nextDep)
|
|
249
|
-
this.deps = this.depsTail = void 0,
|
|
248
|
+
for (let e = this.deps; e; e = e.nextDep) De(e);
|
|
249
|
+
this.deps = this.depsTail = void 0, je(this), this.onStop && this.onStop(), this.flags &= -2;
|
|
250
250
|
}
|
|
251
251
|
}
|
|
252
252
|
trigger() {
|
|
253
|
-
this.flags & 64 ?
|
|
253
|
+
this.flags & 64 ? ge.add(this) : this.scheduler ? this.scheduler() : this.runIfDirty();
|
|
254
254
|
}
|
|
255
255
|
runIfDirty() {
|
|
256
|
-
|
|
256
|
+
Te(this) && this.run();
|
|
257
257
|
}
|
|
258
258
|
get dirty() {
|
|
259
|
-
return
|
|
259
|
+
return Te(this);
|
|
260
260
|
}
|
|
261
|
-
},
|
|
262
|
-
function
|
|
261
|
+
}, ve = 0, ye, be;
|
|
262
|
+
function V(e, t = !1) {
|
|
263
263
|
if (e.flags |= 8, t) {
|
|
264
|
-
e.next =
|
|
264
|
+
e.next = be, be = e;
|
|
265
265
|
return;
|
|
266
266
|
}
|
|
267
|
-
e.next =
|
|
268
|
-
}
|
|
269
|
-
function be() {
|
|
270
|
-
_e++;
|
|
267
|
+
e.next = ye, ye = e;
|
|
271
268
|
}
|
|
272
269
|
function xe() {
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
270
|
+
ve++;
|
|
271
|
+
}
|
|
272
|
+
function Se() {
|
|
273
|
+
if (--ve > 0) return;
|
|
274
|
+
if (be) {
|
|
275
|
+
let e = be;
|
|
276
|
+
for (be = void 0; e;) {
|
|
277
277
|
let t = e.next;
|
|
278
278
|
e.next = void 0, e.flags &= -9, e = t;
|
|
279
279
|
}
|
|
280
280
|
}
|
|
281
281
|
let e;
|
|
282
|
-
for (;
|
|
283
|
-
let t =
|
|
284
|
-
for (
|
|
282
|
+
for (; ye;) {
|
|
283
|
+
let t = ye;
|
|
284
|
+
for (ye = void 0; t;) {
|
|
285
285
|
let n = t.next;
|
|
286
286
|
if (t.next = void 0, t.flags &= -9, t.flags & 1) try {
|
|
287
287
|
t.trigger();
|
|
@@ -293,117 +293,117 @@ function xe() {
|
|
|
293
293
|
}
|
|
294
294
|
if (e) throw e;
|
|
295
295
|
}
|
|
296
|
-
function
|
|
296
|
+
function Ce(e) {
|
|
297
297
|
for (let t = e.deps; t; t = t.nextDep) t.version = -1, t.prevActiveLink = t.dep.activeLink, t.dep.activeLink = t;
|
|
298
298
|
}
|
|
299
|
-
function
|
|
299
|
+
function we(e) {
|
|
300
300
|
let t, n = e.depsTail, r = n;
|
|
301
301
|
for (; r;) {
|
|
302
302
|
let e = r.prevDep;
|
|
303
|
-
r.version === -1 ? (r === n && (n = e),
|
|
303
|
+
r.version === -1 ? (r === n && (n = e), De(r), H(r)) : t = r, r.dep.activeLink = r.prevActiveLink, r.prevActiveLink = void 0, r = e;
|
|
304
304
|
}
|
|
305
305
|
e.deps = t, e.depsTail = n;
|
|
306
306
|
}
|
|
307
|
-
function
|
|
308
|
-
for (let t = e.deps; t; t = t.nextDep) if (t.dep.version !== t.version || t.dep.computed && (
|
|
307
|
+
function Te(e) {
|
|
308
|
+
for (let t = e.deps; t; t = t.nextDep) if (t.dep.version !== t.version || t.dep.computed && (Ee(t.dep.computed) || t.dep.version !== t.version)) return !0;
|
|
309
309
|
return !!e._dirty;
|
|
310
310
|
}
|
|
311
|
-
function
|
|
312
|
-
if (e.flags & 4 && !(e.flags & 16) || (e.flags &= -17, e.globalVersion ===
|
|
311
|
+
function Ee(e) {
|
|
312
|
+
if (e.flags & 4 && !(e.flags & 16) || (e.flags &= -17, e.globalVersion === Me) || (e.globalVersion = Me, !e.isSSR && e.flags & 128 && (!e.deps && !e._dirty || !Te(e)))) return;
|
|
313
313
|
e.flags |= 2;
|
|
314
|
-
let t = e.dep, n =
|
|
315
|
-
|
|
314
|
+
let t = e.dep, n = B, r = U;
|
|
315
|
+
B = e, U = !0;
|
|
316
316
|
try {
|
|
317
|
-
|
|
317
|
+
Ce(e);
|
|
318
318
|
let n = e.fn(e._value);
|
|
319
|
-
(t.version === 0 ||
|
|
319
|
+
(t.version === 0 || oe(n, e._value)) && (e.flags |= 128, e._value = n, t.version++);
|
|
320
320
|
} catch (e) {
|
|
321
321
|
throw t.version++, e;
|
|
322
322
|
} finally {
|
|
323
|
-
|
|
323
|
+
B = n, U = r, we(e), e.flags &= -3;
|
|
324
324
|
}
|
|
325
325
|
}
|
|
326
|
-
function
|
|
326
|
+
function De(e, t = !1) {
|
|
327
327
|
let { dep: n, prevSub: r, nextSub: i } = e;
|
|
328
328
|
if (r && (r.nextSub = i, e.prevSub = void 0), i && (i.prevSub = r, e.nextSub = void 0), process.env.NODE_ENV !== "production" && n.subsHead === e && (n.subsHead = i), n.subs === e && (n.subs = r, !r && n.computed)) {
|
|
329
329
|
n.computed.flags &= -5;
|
|
330
|
-
for (let e = n.computed.deps; e; e = e.nextDep)
|
|
330
|
+
for (let e = n.computed.deps; e; e = e.nextDep) De(e, !0);
|
|
331
331
|
}
|
|
332
332
|
!t && !--n.sc && n.map && n.map.delete(n.key);
|
|
333
333
|
}
|
|
334
|
-
function
|
|
334
|
+
function H(e) {
|
|
335
335
|
let { prevDep: t, nextDep: n } = e;
|
|
336
336
|
t && (t.nextDep = n, e.prevDep = void 0), n && (n.prevDep = t, e.nextDep = void 0);
|
|
337
337
|
}
|
|
338
|
-
var
|
|
339
|
-
function Oe() {
|
|
340
|
-
De.push(W), W = !1;
|
|
341
|
-
}
|
|
338
|
+
var U = !0, Oe = [];
|
|
342
339
|
function ke() {
|
|
343
|
-
|
|
344
|
-
|
|
340
|
+
Oe.push(U), U = !1;
|
|
341
|
+
}
|
|
342
|
+
function Ae() {
|
|
343
|
+
let e = Oe.pop();
|
|
344
|
+
U = e === void 0 || e;
|
|
345
345
|
}
|
|
346
|
-
function
|
|
346
|
+
function je(e) {
|
|
347
347
|
let { cleanup: t } = e;
|
|
348
348
|
if (e.cleanup = void 0, t) {
|
|
349
|
-
let e =
|
|
350
|
-
|
|
349
|
+
let e = B;
|
|
350
|
+
B = void 0;
|
|
351
351
|
try {
|
|
352
352
|
t();
|
|
353
353
|
} finally {
|
|
354
|
-
|
|
354
|
+
B = e;
|
|
355
355
|
}
|
|
356
356
|
}
|
|
357
357
|
}
|
|
358
|
-
var
|
|
358
|
+
var Me = 0, Ne = class {
|
|
359
359
|
constructor(e, t) {
|
|
360
360
|
this.sub = e, this.dep = t, this.version = t.version, this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0;
|
|
361
361
|
}
|
|
362
|
-
},
|
|
362
|
+
}, Pe = class {
|
|
363
363
|
constructor(e) {
|
|
364
364
|
this.computed = e, this.version = 0, this.activeLink = void 0, this.subs = void 0, this.map = void 0, this.key = void 0, this.sc = 0, this.__v_skip = !0, process.env.NODE_ENV !== "production" && (this.subsHead = void 0);
|
|
365
365
|
}
|
|
366
366
|
track(e) {
|
|
367
|
-
if (!
|
|
367
|
+
if (!B || !U || B === this.computed) return;
|
|
368
368
|
let t = this.activeLink;
|
|
369
|
-
if (t === void 0 || t.sub !==
|
|
369
|
+
if (t === void 0 || t.sub !== B) t = this.activeLink = new Ne(B, this), B.deps ? (t.prevDep = B.depsTail, B.depsTail.nextDep = t, B.depsTail = t) : B.deps = B.depsTail = t, Fe(t);
|
|
370
370
|
else if (t.version === -1 && (t.version = this.version, t.nextDep)) {
|
|
371
371
|
let e = t.nextDep;
|
|
372
|
-
e.prevDep = t.prevDep, t.prevDep && (t.prevDep.nextDep = e), t.prevDep =
|
|
372
|
+
e.prevDep = t.prevDep, t.prevDep && (t.prevDep.nextDep = e), t.prevDep = B.depsTail, t.nextDep = void 0, B.depsTail.nextDep = t, B.depsTail = t, B.deps === t && (B.deps = e);
|
|
373
373
|
}
|
|
374
|
-
return process.env.NODE_ENV !== "production" &&
|
|
374
|
+
return process.env.NODE_ENV !== "production" && B.onTrack && B.onTrack(T({ effect: B }, e)), t;
|
|
375
375
|
}
|
|
376
376
|
trigger(e) {
|
|
377
|
-
this.version++,
|
|
377
|
+
this.version++, Me++, this.notify(e);
|
|
378
378
|
}
|
|
379
379
|
notify(e) {
|
|
380
|
-
|
|
380
|
+
xe();
|
|
381
381
|
try {
|
|
382
382
|
if (process.env.NODE_ENV !== "production") for (let t = this.subsHead; t; t = t.nextSub) t.sub.onTrigger && !(t.sub.flags & 8) && t.sub.onTrigger(T({ effect: t.sub }, e));
|
|
383
383
|
for (let e = this.subs; e; e = e.prevSub) e.sub.notify() && e.sub.dep.notify();
|
|
384
384
|
} finally {
|
|
385
|
-
|
|
385
|
+
Se();
|
|
386
386
|
}
|
|
387
387
|
}
|
|
388
388
|
};
|
|
389
|
-
function
|
|
389
|
+
function Fe(e) {
|
|
390
390
|
if (e.dep.sc++, e.sub.flags & 4) {
|
|
391
391
|
let t = e.dep.computed;
|
|
392
392
|
if (t && !e.dep.subs) {
|
|
393
393
|
t.flags |= 20;
|
|
394
|
-
for (let e = t.deps; e; e = e.nextDep)
|
|
394
|
+
for (let e = t.deps; e; e = e.nextDep) Fe(e);
|
|
395
395
|
}
|
|
396
396
|
let n = e.dep.subs;
|
|
397
397
|
n !== e && (e.prevSub = n, n && (n.nextSub = e)), process.env.NODE_ENV !== "production" && e.dep.subsHead === void 0 && (e.dep.subsHead = e), e.dep.subs = e;
|
|
398
398
|
}
|
|
399
399
|
}
|
|
400
|
-
var
|
|
401
|
-
function
|
|
402
|
-
if (
|
|
403
|
-
let r =
|
|
404
|
-
r ||
|
|
400
|
+
var Ie = /* @__PURE__ */ new WeakMap(), Le = /* @__PURE__ */ Symbol(process.env.NODE_ENV === "production" ? "" : "Object iterate"), Re = /* @__PURE__ */ Symbol(process.env.NODE_ENV === "production" ? "" : "Map keys iterate"), ze = /* @__PURE__ */ Symbol(process.env.NODE_ENV === "production" ? "" : "Array iterate");
|
|
401
|
+
function W(e, t, n) {
|
|
402
|
+
if (U && B) {
|
|
403
|
+
let r = Ie.get(e);
|
|
404
|
+
r || Ie.set(e, r = /* @__PURE__ */ new Map());
|
|
405
405
|
let i = r.get(n);
|
|
406
|
-
i || (r.set(n, i = new
|
|
406
|
+
i || (r.set(n, i = new Pe()), i.map = r, i.key = n), process.env.NODE_ENV === "production" ? i.track() : i.track({
|
|
407
407
|
target: e,
|
|
408
408
|
type: t,
|
|
409
409
|
key: n
|
|
@@ -411,9 +411,9 @@ function ze(e, t, n) {
|
|
|
411
411
|
}
|
|
412
412
|
}
|
|
413
413
|
function Be(e, t, n, r, i, a) {
|
|
414
|
-
let o =
|
|
414
|
+
let o = Ie.get(e);
|
|
415
415
|
if (!o) {
|
|
416
|
-
|
|
416
|
+
Me++;
|
|
417
417
|
return;
|
|
418
418
|
}
|
|
419
419
|
let s = (o) => {
|
|
@@ -426,34 +426,34 @@ function Be(e, t, n, r, i, a) {
|
|
|
426
426
|
oldTarget: a
|
|
427
427
|
}));
|
|
428
428
|
};
|
|
429
|
-
if (
|
|
429
|
+
if (xe(), t === "clear") o.forEach(s);
|
|
430
430
|
else {
|
|
431
|
-
let i = k(e), a = i &&
|
|
431
|
+
let i = k(e), a = i && ae(n);
|
|
432
432
|
if (i && n === "length") {
|
|
433
433
|
let e = Number(r);
|
|
434
434
|
o.forEach((t, n) => {
|
|
435
|
-
(n === "length" || n ===
|
|
435
|
+
(n === "length" || n === ze || !te(n) && n >= e) && s(t);
|
|
436
436
|
});
|
|
437
|
-
} else switch ((n !== void 0 || o.has(void 0)) && s(o.get(n)), a && s(o.get(
|
|
437
|
+
} else switch ((n !== void 0 || o.has(void 0)) && s(o.get(n)), a && s(o.get(ze)), t) {
|
|
438
438
|
case "add":
|
|
439
|
-
i ? a && s(o.get("length")) : (s(o.get(
|
|
439
|
+
i ? a && s(o.get("length")) : (s(o.get(Le)), A(e) && s(o.get(Re)));
|
|
440
440
|
break;
|
|
441
441
|
case "delete":
|
|
442
|
-
i || (s(o.get(
|
|
442
|
+
i || (s(o.get(Le)), A(e) && s(o.get(Re)));
|
|
443
443
|
break;
|
|
444
444
|
case "set":
|
|
445
|
-
A(e) && s(o.get(
|
|
445
|
+
A(e) && s(o.get(Le));
|
|
446
446
|
break;
|
|
447
447
|
}
|
|
448
448
|
}
|
|
449
|
-
|
|
449
|
+
Se();
|
|
450
450
|
}
|
|
451
451
|
function Ve(e) {
|
|
452
452
|
let t = /* @__PURE__ */ q(e);
|
|
453
|
-
return t === e ? t : (
|
|
453
|
+
return t === e ? t : (W(t, "iterate", ze), /* @__PURE__ */ K(e) ? t : t.map(Ot));
|
|
454
454
|
}
|
|
455
455
|
function He(e) {
|
|
456
|
-
return
|
|
456
|
+
return W(e = /* @__PURE__ */ q(e), "iterate", ze), e;
|
|
457
457
|
}
|
|
458
458
|
function Ue(e, t) {
|
|
459
459
|
return /* @__PURE__ */ Tt(e) ? J(/* @__PURE__ */ wt(e) ? Ot(t) : t) : Ot(t);
|
|
@@ -577,20 +577,20 @@ function Je(e, t, n, r) {
|
|
|
577
577
|
}
|
|
578
578
|
function Ye(e, t, n) {
|
|
579
579
|
let r = /* @__PURE__ */ q(e);
|
|
580
|
-
|
|
580
|
+
W(r, "iterate", ze);
|
|
581
581
|
let i = r[t](...n);
|
|
582
582
|
return (i === -1 || i === !1) && /* @__PURE__ */ Et(n[0]) ? (n[0] = /* @__PURE__ */ q(n[0]), r[t](...n)) : i;
|
|
583
583
|
}
|
|
584
584
|
function Xe(e, t, n = []) {
|
|
585
|
-
|
|
585
|
+
ke(), xe();
|
|
586
586
|
let r = (/* @__PURE__ */ q(e))[t].apply(e, n);
|
|
587
|
-
return
|
|
587
|
+
return Se(), Ae(), r;
|
|
588
588
|
}
|
|
589
589
|
var Ze = /* @__PURE__ */ b("__proto__,__v_isRef,__isVue"), Qe = new Set(/* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((e) => e !== "arguments" && e !== "caller").map((e) => Symbol[e]).filter(te));
|
|
590
590
|
function $e(e) {
|
|
591
591
|
te(e) || (e = String(e));
|
|
592
592
|
let t = /* @__PURE__ */ q(this);
|
|
593
|
-
return
|
|
593
|
+
return W(t, "has", e), t.hasOwnProperty(e);
|
|
594
594
|
}
|
|
595
595
|
var et = class {
|
|
596
596
|
constructor(e = !1, t = !1) {
|
|
@@ -610,9 +610,9 @@ var et = class {
|
|
|
610
610
|
if (t === "hasOwnProperty") return $e;
|
|
611
611
|
}
|
|
612
612
|
let o = Reflect.get(e, t, /* @__PURE__ */ kt(e) ? e : n);
|
|
613
|
-
if ((te(t) ? Qe.has(t) : Ze(t)) || (r ||
|
|
613
|
+
if ((te(t) ? Qe.has(t) : Ze(t)) || (r || W(e, "get", t), i)) return o;
|
|
614
614
|
if (/* @__PURE__ */ kt(o)) {
|
|
615
|
-
let e = a &&
|
|
615
|
+
let e = a && ae(t) ? o : o.value;
|
|
616
616
|
return r && N(e) ? /* @__PURE__ */ xt(e) : e;
|
|
617
617
|
}
|
|
618
618
|
return N(o) ? r ? /* @__PURE__ */ xt(o) : /* @__PURE__ */ bt(o) : o;
|
|
@@ -622,13 +622,13 @@ var et = class {
|
|
|
622
622
|
super(!1, e);
|
|
623
623
|
}
|
|
624
624
|
set(e, t, n, r) {
|
|
625
|
-
let i = e[t], a = k(e) &&
|
|
625
|
+
let i = e[t], a = k(e) && ae(t);
|
|
626
626
|
if (!this._isShallow) {
|
|
627
627
|
let r = /* @__PURE__ */ Tt(i);
|
|
628
|
-
if (!/* @__PURE__ */ K(n) && !/* @__PURE__ */ Tt(n) && (i = /* @__PURE__ */ q(i), n = /* @__PURE__ */ q(n)), !a && /* @__PURE__ */ kt(i) && !/* @__PURE__ */ kt(n)) return r ? (process.env.NODE_ENV !== "production" &&
|
|
628
|
+
if (!/* @__PURE__ */ K(n) && !/* @__PURE__ */ Tt(n) && (i = /* @__PURE__ */ q(i), n = /* @__PURE__ */ q(n)), !a && /* @__PURE__ */ kt(i) && !/* @__PURE__ */ kt(n)) return r ? (process.env.NODE_ENV !== "production" && z(`Set operation on key "${String(t)}" failed: target is readonly.`, e[t]), !0) : (i.value = n, !0);
|
|
629
629
|
}
|
|
630
630
|
let o = a ? Number(t) < e.length : O(e, t), s = Reflect.set(e, t, n, /* @__PURE__ */ kt(e) ? e : r);
|
|
631
|
-
return e === /* @__PURE__ */ q(r) && s && (o ?
|
|
631
|
+
return e === /* @__PURE__ */ q(r) && s && (o ? oe(n, i) && Be(e, "set", t, n, i) : Be(e, "add", t, n)), s;
|
|
632
632
|
}
|
|
633
633
|
deleteProperty(e, t) {
|
|
634
634
|
let n = O(e, t), r = e[t], i = Reflect.deleteProperty(e, t);
|
|
@@ -636,26 +636,26 @@ var et = class {
|
|
|
636
636
|
}
|
|
637
637
|
has(e, t) {
|
|
638
638
|
let n = Reflect.has(e, t);
|
|
639
|
-
return (!te(t) || !Qe.has(t)) &&
|
|
639
|
+
return (!te(t) || !Qe.has(t)) && W(e, "has", t), n;
|
|
640
640
|
}
|
|
641
641
|
ownKeys(e) {
|
|
642
|
-
return
|
|
642
|
+
return W(e, "iterate", k(e) ? "length" : Le), Reflect.ownKeys(e);
|
|
643
643
|
}
|
|
644
644
|
}, nt = class extends et {
|
|
645
645
|
constructor(e = !1) {
|
|
646
646
|
super(!0, e);
|
|
647
647
|
}
|
|
648
648
|
set(e, t) {
|
|
649
|
-
return process.env.NODE_ENV !== "production" &&
|
|
649
|
+
return process.env.NODE_ENV !== "production" && z(`Set operation on key "${String(t)}" failed: target is readonly.`, e), !0;
|
|
650
650
|
}
|
|
651
651
|
deleteProperty(e, t) {
|
|
652
|
-
return process.env.NODE_ENV !== "production" &&
|
|
652
|
+
return process.env.NODE_ENV !== "production" && z(`Delete operation on key "${String(t)}" failed: target is readonly.`, e), !0;
|
|
653
653
|
}
|
|
654
654
|
}, rt = /* @__PURE__ */ new tt(), it = /* @__PURE__ */ new nt(), at = /* @__PURE__ */ new nt(!0), ot = (e) => e, G = (e) => Reflect.getPrototypeOf(e);
|
|
655
655
|
function st(e, t, n) {
|
|
656
656
|
return function(...r) {
|
|
657
657
|
let i = this.__v_raw, a = /* @__PURE__ */ q(i), o = A(a), s = e === "entries" || e === Symbol.iterator && o, c = e === "keys" && o, l = i[e](...r), u = n ? ot : t ? J : Ot;
|
|
658
|
-
return !t &&
|
|
658
|
+
return !t && W(a, "iterate", c ? Re : Le), T(Object.create(l), { next() {
|
|
659
659
|
let { value: e, done: t } = l.next();
|
|
660
660
|
return t ? {
|
|
661
661
|
value: e,
|
|
@@ -671,7 +671,7 @@ function ct(e) {
|
|
|
671
671
|
return function(...t) {
|
|
672
672
|
if (process.env.NODE_ENV !== "production") {
|
|
673
673
|
let n = t[0] ? `on key "${t[0]}" ` : "";
|
|
674
|
-
|
|
674
|
+
z(`${I(e)} operation ${n}failed: target is readonly.`, /* @__PURE__ */ q(this));
|
|
675
675
|
}
|
|
676
676
|
return e === "delete" ? !1 : e === "clear" ? void 0 : this;
|
|
677
677
|
};
|
|
@@ -680,7 +680,7 @@ function lt(e, t) {
|
|
|
680
680
|
let n = {
|
|
681
681
|
get(n) {
|
|
682
682
|
let r = this.__v_raw, i = /* @__PURE__ */ q(r), a = /* @__PURE__ */ q(n);
|
|
683
|
-
e || (
|
|
683
|
+
e || (oe(n, a) && W(i, "get", n), W(i, "get", a));
|
|
684
684
|
let { has: o } = G(i), s = t ? ot : e ? J : Ot;
|
|
685
685
|
if (o.call(i, n)) return s(r.get(n));
|
|
686
686
|
if (o.call(i, a)) return s(r.get(a));
|
|
@@ -688,15 +688,15 @@ function lt(e, t) {
|
|
|
688
688
|
},
|
|
689
689
|
get size() {
|
|
690
690
|
let t = this.__v_raw;
|
|
691
|
-
return !e &&
|
|
691
|
+
return !e && W(/* @__PURE__ */ q(t), "iterate", Le), t.size;
|
|
692
692
|
},
|
|
693
693
|
has(t) {
|
|
694
694
|
let n = this.__v_raw, r = /* @__PURE__ */ q(n), i = /* @__PURE__ */ q(t);
|
|
695
|
-
return e || (
|
|
695
|
+
return e || (oe(t, i) && W(r, "has", t), W(r, "has", i)), t === i ? n.has(t) : n.has(t) || n.has(i);
|
|
696
696
|
},
|
|
697
697
|
forEach(n, r) {
|
|
698
698
|
let i = this, a = i.__v_raw, o = /* @__PURE__ */ q(a), s = t ? ot : e ? J : Ot;
|
|
699
|
-
return !e &&
|
|
699
|
+
return !e && W(o, "iterate", Le), a.forEach((e, t) => n.call(r, s(e), s(t), i));
|
|
700
700
|
}
|
|
701
701
|
};
|
|
702
702
|
return T(n, e ? {
|
|
@@ -707,14 +707,14 @@ function lt(e, t) {
|
|
|
707
707
|
} : {
|
|
708
708
|
add(e) {
|
|
709
709
|
let n = /* @__PURE__ */ q(this), r = G(n), i = /* @__PURE__ */ q(e), a = !t && !/* @__PURE__ */ K(e) && !/* @__PURE__ */ Tt(e) ? i : e;
|
|
710
|
-
return r.has.call(n, a) ||
|
|
710
|
+
return r.has.call(n, a) || oe(e, a) && r.has.call(n, e) || oe(i, a) && r.has.call(n, i) || (n.add(a), Be(n, "add", a, a)), this;
|
|
711
711
|
},
|
|
712
712
|
set(e, n) {
|
|
713
713
|
!t && !/* @__PURE__ */ K(n) && !/* @__PURE__ */ Tt(n) && (n = /* @__PURE__ */ q(n));
|
|
714
714
|
let r = /* @__PURE__ */ q(this), { has: i, get: a } = G(r), o = i.call(r, e);
|
|
715
715
|
o ? process.env.NODE_ENV !== "production" && mt(r, i, e) : (e = /* @__PURE__ */ q(e), o = i.call(r, e));
|
|
716
716
|
let s = a.call(r, e);
|
|
717
|
-
return r.set(e, n), o ?
|
|
717
|
+
return r.set(e, n), o ? oe(n, s) && Be(r, "set", e, n, s) : Be(r, "add", e, n), this;
|
|
718
718
|
},
|
|
719
719
|
delete(e) {
|
|
720
720
|
let t = /* @__PURE__ */ q(this), { has: n, get: r } = G(t), i = n.call(t, e);
|
|
@@ -744,7 +744,7 @@ function mt(e, t, n) {
|
|
|
744
744
|
let r = /* @__PURE__ */ q(n);
|
|
745
745
|
if (r !== n && t.call(e, r)) {
|
|
746
746
|
let t = ie(e);
|
|
747
|
-
|
|
747
|
+
z(`Reactive ${t} contains both the raw and reactive versions of the same object${t === "Map" ? " as keys" : ""}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`);
|
|
748
748
|
}
|
|
749
749
|
}
|
|
750
750
|
var ht = /* @__PURE__ */ new WeakMap(), gt = /* @__PURE__ */ new WeakMap(), _t = /* @__PURE__ */ new WeakMap(), vt = /* @__PURE__ */ new WeakMap();
|
|
@@ -772,7 +772,7 @@ function St(e) {
|
|
|
772
772
|
return Ct(e, !0, at, pt, vt);
|
|
773
773
|
}
|
|
774
774
|
function Ct(e, t, n, r, i) {
|
|
775
|
-
if (!N(e)) return process.env.NODE_ENV !== "production" &&
|
|
775
|
+
if (!N(e)) return process.env.NODE_ENV !== "production" && z(`value cannot be made ${t ? "readonly" : "reactive"}: ${String(e)}`), e;
|
|
776
776
|
if (e.__v_raw && !(t && e.__v_isReactive) || e.__v_skip || !Object.isExtensible(e)) return e;
|
|
777
777
|
let a = i.get(e);
|
|
778
778
|
if (a) return a;
|
|
@@ -803,7 +803,7 @@ function q(e) {
|
|
|
803
803
|
return t ? /* @__PURE__ */ q(t) : e;
|
|
804
804
|
}
|
|
805
805
|
function Dt(e) {
|
|
806
|
-
return !O(e, "__v_skip") && Object.isExtensible(e) &&
|
|
806
|
+
return !O(e, "__v_skip") && Object.isExtensible(e) && se(e, "__v_skip", !0), e;
|
|
807
807
|
}
|
|
808
808
|
var Ot = (e) => N(e) ? /* @__PURE__ */ bt(e) : e, J = (e) => N(e) ? /* @__PURE__ */ xt(e) : e;
|
|
809
809
|
// @__NO_SIDE_EFFECTS__
|
|
@@ -823,7 +823,7 @@ function Mt(e, t) {
|
|
|
823
823
|
}
|
|
824
824
|
var Nt = class {
|
|
825
825
|
constructor(e, t) {
|
|
826
|
-
this.dep = new
|
|
826
|
+
this.dep = new Pe(), this.__v_isRef = !0, this.__v_isShallow = !1, this._rawValue = t ? e : /* @__PURE__ */ q(e), this._value = t ? e : Ot(e), this.__v_isShallow = t;
|
|
827
827
|
}
|
|
828
828
|
get value() {
|
|
829
829
|
return process.env.NODE_ENV === "production" ? this.dep.track() : this.dep.track({
|
|
@@ -834,7 +834,7 @@ var Nt = class {
|
|
|
834
834
|
}
|
|
835
835
|
set value(e) {
|
|
836
836
|
let t = this._rawValue, n = this.__v_isShallow || /* @__PURE__ */ K(e) || /* @__PURE__ */ Tt(e);
|
|
837
|
-
e = n ? e : /* @__PURE__ */ q(e),
|
|
837
|
+
e = n ? e : /* @__PURE__ */ q(e), oe(e, t) && (this._rawValue = e, this._value = n ? e : Ot(e), process.env.NODE_ENV === "production" ? this.dep.trigger() : this.dep.trigger({
|
|
838
838
|
target: this,
|
|
839
839
|
type: "set",
|
|
840
840
|
key: "value",
|
|
@@ -866,10 +866,10 @@ function Lt(e) {
|
|
|
866
866
|
}
|
|
867
867
|
var Rt = class {
|
|
868
868
|
constructor(e, t, n) {
|
|
869
|
-
this.fn = e, this.setter = t, this._value = void 0, this.dep = new
|
|
869
|
+
this.fn = e, this.setter = t, this._value = void 0, this.dep = new Pe(this), this.__v_isRef = !0, this.deps = void 0, this.depsTail = void 0, this.flags = 16, this.globalVersion = Me - 1, this.next = void 0, this.effect = this, this.__v_isReadonly = !t, this.isSSR = n;
|
|
870
870
|
}
|
|
871
871
|
notify() {
|
|
872
|
-
if (this.flags |= 16, !(this.flags & 8) &&
|
|
872
|
+
if (this.flags |= 16, !(this.flags & 8) && B !== this) return V(this, !0), !0;
|
|
873
873
|
process.env.NODE_ENV;
|
|
874
874
|
}
|
|
875
875
|
get value() {
|
|
@@ -878,10 +878,10 @@ var Rt = class {
|
|
|
878
878
|
type: "get",
|
|
879
879
|
key: "value"
|
|
880
880
|
});
|
|
881
|
-
return
|
|
881
|
+
return Ee(this), e && (e.version = this.dep.version), this._value;
|
|
882
882
|
}
|
|
883
883
|
set value(e) {
|
|
884
|
-
this.setter ? this.setter(e) : process.env.NODE_ENV !== "production" &&
|
|
884
|
+
this.setter ? this.setter(e) : process.env.NODE_ENV !== "production" && z("Write operation failed: computed value is readonly");
|
|
885
885
|
}
|
|
886
886
|
};
|
|
887
887
|
// @__NO_SIDE_EFFECTS__
|
|
@@ -896,11 +896,11 @@ function Ut(e, t = !1, n = Ht) {
|
|
|
896
896
|
if (n) {
|
|
897
897
|
let t = Vt.get(n);
|
|
898
898
|
t || Vt.set(n, t = []), t.push(e);
|
|
899
|
-
} else process.env.NODE_ENV !== "production" && !t &&
|
|
899
|
+
} else process.env.NODE_ENV !== "production" && !t && z("onWatcherCleanup() was called when there was no active watcher to associate with.");
|
|
900
900
|
}
|
|
901
901
|
function Wt(e, t, n = x) {
|
|
902
902
|
let { immediate: r, deep: i, once: a, scheduler: o, augmentJob: s, call: c } = n, l = (e) => {
|
|
903
|
-
(n.onWarn ||
|
|
903
|
+
(n.onWarn || z)("Invalid watch source: ", e, "A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.");
|
|
904
904
|
}, u = (e) => i ? e : /* @__PURE__ */ K(e) || i === !1 || i === 0 ? Gt(e, 1) : Gt(e), d, f, p, m, h = !1, g = !1;
|
|
905
905
|
if (/* @__PURE__ */ kt(e) ? (f = () => e.value, h = /* @__PURE__ */ K(e)) : /* @__PURE__ */ wt(e) ? (f = () => u(e), h = !0) : k(e) ? (g = !0, h = e.some((e) => /* @__PURE__ */ wt(e) || /* @__PURE__ */ K(e)), f = () => e.map((e) => {
|
|
906
906
|
if (/* @__PURE__ */ kt(e)) return e.value;
|
|
@@ -909,11 +909,11 @@ function Wt(e, t, n = x) {
|
|
|
909
909
|
process.env.NODE_ENV !== "production" && l(e);
|
|
910
910
|
})) : j(e) ? f = t ? c ? () => c(e, 2) : e : () => {
|
|
911
911
|
if (p) {
|
|
912
|
-
|
|
912
|
+
ke();
|
|
913
913
|
try {
|
|
914
914
|
p();
|
|
915
915
|
} finally {
|
|
916
|
-
|
|
916
|
+
Ae();
|
|
917
917
|
}
|
|
918
918
|
}
|
|
919
919
|
let t = Ht;
|
|
@@ -927,7 +927,7 @@ function Wt(e, t, n = x) {
|
|
|
927
927
|
let e = f, t = i === !0 ? Infinity : i;
|
|
928
928
|
f = () => Gt(e(), t);
|
|
929
929
|
}
|
|
930
|
-
let _ =
|
|
930
|
+
let _ = he(), v = () => {
|
|
931
931
|
d.stop(), _ && _.active && E(_.effects, d);
|
|
932
932
|
};
|
|
933
933
|
if (a && t) {
|
|
@@ -940,7 +940,7 @@ function Wt(e, t, n = x) {
|
|
|
940
940
|
let y = g ? Array(e.length).fill(Bt) : Bt, b = (e) => {
|
|
941
941
|
if (!(!(d.flags & 1) || !d.dirty && !e)) if (t) {
|
|
942
942
|
let n = d.run();
|
|
943
|
-
if (e || i || h || (g ? n.some((e, t) =>
|
|
943
|
+
if (e || i || h || (g ? n.some((e, t) => oe(e, y[t])) : oe(n, y))) {
|
|
944
944
|
p && p();
|
|
945
945
|
let e = Ht;
|
|
946
946
|
Ht = d;
|
|
@@ -957,7 +957,7 @@ function Wt(e, t, n = x) {
|
|
|
957
957
|
}
|
|
958
958
|
} else d.run();
|
|
959
959
|
};
|
|
960
|
-
return s && s(b), d = new
|
|
960
|
+
return s && s(b), d = new _e(f), d.scheduler = o ? () => o(b, !1) : b, m = (e) => Ut(e, !1, d), p = d.onStop = () => {
|
|
961
961
|
let e = Vt.get(d);
|
|
962
962
|
if (e) {
|
|
963
963
|
if (c) c(e, 4);
|
|
@@ -991,7 +991,7 @@ function Jt() {
|
|
|
991
991
|
var Yt = !1;
|
|
992
992
|
function Xt(e, ...t) {
|
|
993
993
|
if (Yt) return;
|
|
994
|
-
Yt = !0,
|
|
994
|
+
Yt = !0, ke();
|
|
995
995
|
let n = Kt.length ? Kt[Kt.length - 1].component : null, r = n && n.appContext.config.warnHandler, i = Zt();
|
|
996
996
|
if (r) rn(r, n, 11, [
|
|
997
997
|
e + t.map((e) => e.toString?.call(e) ?? JSON.stringify(e)).join(""),
|
|
@@ -1003,7 +1003,7 @@ function Xt(e, ...t) {
|
|
|
1003
1003
|
let n = [`[Vue warn]: ${e}`, ...t];
|
|
1004
1004
|
i.length && n.push("\n", ...Qt(i)), console.warn(...n);
|
|
1005
1005
|
}
|
|
1006
|
-
|
|
1006
|
+
Ae(), Yt = !1;
|
|
1007
1007
|
}
|
|
1008
1008
|
function Zt() {
|
|
1009
1009
|
let e = Kt[Kt.length - 1];
|
|
@@ -1112,11 +1112,11 @@ function on(e, t, n, r = !0) {
|
|
|
1112
1112
|
r = r.parent;
|
|
1113
1113
|
}
|
|
1114
1114
|
if (a) {
|
|
1115
|
-
|
|
1115
|
+
ke(), rn(a, null, 10, [
|
|
1116
1116
|
e,
|
|
1117
1117
|
i,
|
|
1118
1118
|
o
|
|
1119
|
-
]),
|
|
1119
|
+
]), Ae();
|
|
1120
1120
|
return;
|
|
1121
1121
|
}
|
|
1122
1122
|
}
|
|
@@ -1198,7 +1198,7 @@ function wn(e, t) {
|
|
|
1198
1198
|
return e.set(t, n + 1), !1;
|
|
1199
1199
|
}
|
|
1200
1200
|
var Tn = /* @__PURE__ */ new Map();
|
|
1201
|
-
process.env.NODE_ENV !== "production" && (
|
|
1201
|
+
process.env.NODE_ENV !== "production" && (le().__VUE_HMR_RUNTIME__ = {
|
|
1202
1202
|
createRecord: Mn(Dn),
|
|
1203
1203
|
rerender: Mn(kn),
|
|
1204
1204
|
reload: Mn(An)
|
|
@@ -1317,7 +1317,7 @@ var Wn = (e) => e.__isTeleport;
|
|
|
1317
1317
|
function Gn(e, t) {
|
|
1318
1318
|
e.shapeFlag & 6 && e.component ? (e.transition = t, Gn(e.component.subTree, t)) : e.shapeFlag & 128 ? (e.ssContent.transition = t.clone(e.ssContent), e.ssFallback.transition = t.clone(e.ssFallback)) : e.transition = t;
|
|
1319
1319
|
}
|
|
1320
|
-
|
|
1320
|
+
le().requestIdleCallback, le().cancelIdleCallback;
|
|
1321
1321
|
var Kn = /* @__PURE__ */ Symbol.for("v-ndc"), qn = (e) => e ? Ir(e) ? Rr(e) : qn(e.parent) : null, Jn = /* @__PURE__ */ T(/* @__PURE__ */ Object.create(null), {
|
|
1322
1322
|
$: (e) => e,
|
|
1323
1323
|
$el: (e) => e.vnode.el,
|
|
@@ -1356,7 +1356,7 @@ var Kn = /* @__PURE__ */ Symbol.for("v-ndc"), qn = (e) => e ? Ir(e) ? Rr(e) : qn
|
|
|
1356
1356
|
else Qn && (o[t] = 0);
|
|
1357
1357
|
}
|
|
1358
1358
|
let l = Jn[t], u, d;
|
|
1359
|
-
if (l) return t === "$attrs" ? (
|
|
1359
|
+
if (l) return t === "$attrs" ? (W(e.attrs, "get", ""), process.env.NODE_ENV) : process.env.NODE_ENV !== "production" && t === "$slots" && W(e, "get", t), l(e);
|
|
1360
1360
|
if ((u = s.__cssModules) && (u = u[t])) return u;
|
|
1361
1361
|
if (n !== x && O(n, t)) return o[t] = 4, n[t];
|
|
1362
1362
|
if (d = c.config.globalProperties, O(d, t)) return d[t];
|
|
@@ -1510,7 +1510,7 @@ function Tr(e, t = null, n = null, r = 0, i = null, a = !1) {
|
|
|
1510
1510
|
if (Ur(e) && (e = e.__vccOpts), t) {
|
|
1511
1511
|
t = Er(t);
|
|
1512
1512
|
let { class: e, style: n } = t;
|
|
1513
|
-
e && !M(e) && (t.class =
|
|
1513
|
+
e && !M(e) && (t.class = R(e)), N(n) && (/* @__PURE__ */ Et(n) && !k(n) && (n = T({}, n)), t.style = ue(n));
|
|
1514
1514
|
}
|
|
1515
1515
|
let o = M(e) ? 1 : pr(e) ? 128 : Wn(e) ? 64 : N(e) ? 4 : j(e) ? 2 : 0;
|
|
1516
1516
|
return process.env.NODE_ENV !== "production" && o & 4 && /* @__PURE__ */ Et(e) && (e = /* @__PURE__ */ q(e), Xt("Vue received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with `markRaw` or using `shallowRef` instead of `ref`.", "\nComponent that was made reactive: ", e)), Cr(e, t, n, r, i, o, a, !0);
|
|
@@ -1584,8 +1584,8 @@ function jr(...e) {
|
|
|
1584
1584
|
let t = {};
|
|
1585
1585
|
for (let n = 0; n < e.length; n++) {
|
|
1586
1586
|
let r = e[n];
|
|
1587
|
-
for (let e in r) if (e === "class") t.class !== r.class && (t.class =
|
|
1588
|
-
else if (e === "style") t.style =
|
|
1587
|
+
for (let e in r) if (e === "class") t.class !== r.class && (t.class = R([t.class, r.class]));
|
|
1588
|
+
else if (e === "style") t.style = ue([t.style, r.style]);
|
|
1589
1589
|
else if (C(e)) {
|
|
1590
1590
|
let n = t[e], i = r[e];
|
|
1591
1591
|
i && n !== i && !(k(n) && n.includes(i)) ? t[e] = n ? [].concat(n, i) : i : i == null && n == null && !w(e) && (t[e] = i);
|
|
@@ -1595,7 +1595,7 @@ function jr(...e) {
|
|
|
1595
1595
|
}
|
|
1596
1596
|
var Mr = null, Nr = () => Mr || In, Pr;
|
|
1597
1597
|
{
|
|
1598
|
-
let e =
|
|
1598
|
+
let e = le(), t = (t, n) => {
|
|
1599
1599
|
let r;
|
|
1600
1600
|
return (r = e[t]) || (r = e[t] = []), r.push(n), (e) => {
|
|
1601
1601
|
r.length > 1 ? r.forEach((t) => t(e)) : r[0](e);
|
|
@@ -1666,9 +1666,9 @@ function Gr() {
|
|
|
1666
1666
|
"VueInstance"
|
|
1667
1667
|
];
|
|
1668
1668
|
if (/* @__PURE__ */ kt(t)) {
|
|
1669
|
-
|
|
1669
|
+
ke();
|
|
1670
1670
|
let n = t.value;
|
|
1671
|
-
return
|
|
1671
|
+
return Ae(), [
|
|
1672
1672
|
"div",
|
|
1673
1673
|
{},
|
|
1674
1674
|
[
|
|
@@ -2394,22 +2394,22 @@ function Wi(e) {
|
|
|
2394
2394
|
function F(e) {
|
|
2395
2395
|
P = e, re = si(P.contextWindow), ie = ci(P.contextWindow);
|
|
2396
2396
|
}
|
|
2397
|
-
let
|
|
2398
|
-
function
|
|
2397
|
+
let ae = /* @__PURE__ */ jt([]);
|
|
2398
|
+
function I(e, t) {
|
|
2399
2399
|
let n = {
|
|
2400
2400
|
timestamp: Date.now(),
|
|
2401
2401
|
type: e,
|
|
2402
2402
|
data: t
|
|
2403
2403
|
};
|
|
2404
|
-
|
|
2404
|
+
ae.value.push(n), ae.value.length > Ri && ae.value.splice(0, ae.value.length - Ri), Pt(ae), A?.(n), te && console.log(`%c[Agent] ${e}`, "color:#667eea;font-weight:bold", t);
|
|
2405
2405
|
}
|
|
2406
|
-
let
|
|
2407
|
-
|
|
2408
|
-
},
|
|
2409
|
-
function
|
|
2410
|
-
if (!
|
|
2406
|
+
let oe = (e) => {
|
|
2407
|
+
ae.value.push(e), ae.value.length > Ri && ae.value.splice(0, ae.value.length - Ri), Pt(ae);
|
|
2408
|
+
}, se = /* @__PURE__ */ jt([]), ce = 0, le = !!ee || !!j;
|
|
2409
|
+
function ue(e, t, n, r = {}) {
|
|
2410
|
+
if (!le) return null;
|
|
2411
2411
|
let i = {
|
|
2412
|
-
id: `span-${++
|
|
2412
|
+
id: `span-${++ce}`,
|
|
2413
2413
|
parentId: e,
|
|
2414
2414
|
name: n,
|
|
2415
2415
|
type: t,
|
|
@@ -2417,12 +2417,12 @@ function Wi(e) {
|
|
|
2417
2417
|
status: "ok",
|
|
2418
2418
|
attributes: r
|
|
2419
2419
|
};
|
|
2420
|
-
return
|
|
2420
|
+
return se.value.push(i), se.value.length > Ri && se.value.splice(0, se.value.length - Ri), Pt(se), i;
|
|
2421
2421
|
}
|
|
2422
|
-
function
|
|
2423
|
-
!e || !
|
|
2422
|
+
function de(e, t = "ok", n) {
|
|
2423
|
+
!e || !le || (e.endTs = Date.now(), e.durationMs = e.endTs - e.startTs, e.status = t, n && Object.assign(e.attributes, n), Pt(se), ee?.(e));
|
|
2424
2424
|
}
|
|
2425
|
-
let
|
|
2425
|
+
let fe = [...x.flatMap((e) => e.tools || []), ...b], L = e.llm ?? new n({
|
|
2426
2426
|
apiKey: t,
|
|
2427
2427
|
model: c,
|
|
2428
2428
|
temperature: l,
|
|
@@ -2433,50 +2433,50 @@ function Wi(e) {
|
|
|
2433
2433
|
...m
|
|
2434
2434
|
},
|
|
2435
2435
|
...p ? { modelKwargs: p } : {}
|
|
2436
|
-
}),
|
|
2437
|
-
function
|
|
2438
|
-
|
|
2436
|
+
}), pe = fe.length > 0 ? L.bindTools?.(fe) ?? L : L;
|
|
2437
|
+
function R() {
|
|
2438
|
+
pe = fe.length > 0 ? L.bindTools?.(fe) ?? L : L;
|
|
2439
2439
|
}
|
|
2440
|
-
let
|
|
2441
|
-
function
|
|
2440
|
+
let z = ui(), me = .25, he = /* @__PURE__ */ new Set(["mission", "workingMemory"]);
|
|
2441
|
+
function B() {
|
|
2442
2442
|
let e = v || "你是一个智能助手。", t = [];
|
|
2443
2443
|
for (let e of x) if (e.augmentPrompt) {
|
|
2444
|
-
let n = e.augmentPrompt(
|
|
2444
|
+
let n = e.augmentPrompt(z);
|
|
2445
2445
|
n && t.push({
|
|
2446
2446
|
name: e.name,
|
|
2447
2447
|
text: n,
|
|
2448
2448
|
tokens: X(n),
|
|
2449
|
-
pin:
|
|
2449
|
+
pin: he.has(e.name)
|
|
2450
2450
|
});
|
|
2451
2451
|
}
|
|
2452
|
-
let n = Math.max(2e3, Math.round(P.contextWindow *
|
|
2452
|
+
let n = Math.max(2e3, Math.round(P.contextWindow * me)), r = X(e) + t.reduce((e, t) => e + t.tokens, 0);
|
|
2453
2453
|
if (r > n) {
|
|
2454
2454
|
let e = r, i = [];
|
|
2455
2455
|
for (let e of t.filter((e) => !e.pin).sort((e, t) => t.tokens - e.tokens)) {
|
|
2456
2456
|
if (r <= n) break;
|
|
2457
2457
|
i.push(`${e.name}(${e.tokens})`), r -= e.tokens, e.text = "";
|
|
2458
2458
|
}
|
|
2459
|
-
i.length && console.warn(`[page-agent-sdk] 系统段超预算(${e} > ${n} tokens,窗口 ${P.contextWindow} 的 ${
|
|
2459
|
+
i.length && console.warn(`[page-agent-sdk] 系统段超预算(${e} > ${n} tokens,窗口 ${P.contextWindow} 的 ${me * 100}%),drop 非核心段:${i.join(", ")}(保 base/mission/workingMemory)`);
|
|
2460
2460
|
}
|
|
2461
2461
|
return [e, ...t.filter((e) => e.text).map((e) => e.text)].join("\n\n");
|
|
2462
2462
|
}
|
|
2463
|
-
function
|
|
2464
|
-
let t = [new o(
|
|
2463
|
+
function ge(e) {
|
|
2464
|
+
let t = [new o(B())];
|
|
2465
2465
|
for (let n of e) n.role === "user" ? t.push(new a(n.content)) : n.role === "assistant" ? t.push(new i(n.content)) : n.role === "system" && t.push(new o(n.content));
|
|
2466
2466
|
return t;
|
|
2467
2467
|
}
|
|
2468
|
-
function
|
|
2469
|
-
let t = e[0] &&
|
|
2470
|
-
return [new o(
|
|
2468
|
+
function _e(e) {
|
|
2469
|
+
let t = e[0] && be(e[0]) === "system" ? e.slice(1) : e.slice();
|
|
2470
|
+
return [new o(B()), ...t];
|
|
2471
2471
|
}
|
|
2472
|
-
async function
|
|
2473
|
-
let a = r ??
|
|
2472
|
+
async function ve(e, t, n, r) {
|
|
2473
|
+
let a = r ?? pe, o = {
|
|
2474
2474
|
signal: n,
|
|
2475
2475
|
maxRetries: w,
|
|
2476
2476
|
baseDelayMs: T,
|
|
2477
2477
|
onRetry: ({ attempt: e, error: t, waitMs: n }) => {
|
|
2478
2478
|
let r = t?.message ?? String(t);
|
|
2479
|
-
|
|
2479
|
+
I("error", {
|
|
2480
2480
|
stage: "model_retry",
|
|
2481
2481
|
attempt: e,
|
|
2482
2482
|
waitMs: n,
|
|
@@ -2508,14 +2508,14 @@ function Wi(e) {
|
|
|
2508
2508
|
};
|
|
2509
2509
|
if (yi(a) && !e._ctxRetry) {
|
|
2510
2510
|
e._ctxRetry = !0;
|
|
2511
|
-
let i = (e) => X(typeof e.content == "string" ? e.content : JSON.stringify(e.content)), a = e.messages.reduce((e, t) => e + i(t), 0), o =
|
|
2512
|
-
return
|
|
2511
|
+
let i = (e) => X(typeof e.content == "string" ? e.content : JSON.stringify(e.content)), a = e.messages.reduce((e, t) => e + i(t), 0), o = V(e.messages, Math.round(P.contextWindow * .3)), s = o.reduce((e, t) => e + i(t), 0);
|
|
2512
|
+
return I("error", {
|
|
2513
2513
|
stage: "context_overflow_retry",
|
|
2514
2514
|
at: "launch",
|
|
2515
2515
|
beforeTokens: a,
|
|
2516
2516
|
afterTokens: s,
|
|
2517
2517
|
window: P.contextWindow
|
|
2518
|
-
}), console.warn(`[page-agent-sdk] 上下文超限(启动)→ 激进 trim 重试:${a} → ${s} tokens`),
|
|
2518
|
+
}), console.warn(`[page-agent-sdk] 上下文超限(启动)→ 激进 trim 重试:${a} → ${s} tokens`), ve({
|
|
2519
2519
|
...e,
|
|
2520
2520
|
messages: o
|
|
2521
2521
|
}, t, n, r);
|
|
@@ -2544,7 +2544,7 @@ function Wi(e) {
|
|
|
2544
2544
|
});
|
|
2545
2545
|
}
|
|
2546
2546
|
} catch (a) {
|
|
2547
|
-
if (a instanceof gi) throw s.abort(),
|
|
2547
|
+
if (a instanceof gi) throw s.abort(), I("error", {
|
|
2548
2548
|
stage: "stream_stalled",
|
|
2549
2549
|
waitedMs: a.waitedMs,
|
|
2550
2550
|
stallMs: E
|
|
@@ -2557,13 +2557,13 @@ function Wi(e) {
|
|
|
2557
2557
|
};
|
|
2558
2558
|
if (yi(a) && l === null && u === "" && !e._ctxRetry) {
|
|
2559
2559
|
e._ctxRetry = !0;
|
|
2560
|
-
let i = (e) => X(typeof e.content == "string" ? e.content : JSON.stringify(e.content)), a = e.messages.reduce((e, t) => e + i(t), 0), o =
|
|
2561
|
-
return
|
|
2560
|
+
let i = (e) => X(typeof e.content == "string" ? e.content : JSON.stringify(e.content)), a = e.messages.reduce((e, t) => e + i(t), 0), o = V(e.messages, Math.round(P.contextWindow * .3)), s = o.reduce((e, t) => e + i(t), 0);
|
|
2561
|
+
return I("error", {
|
|
2562
2562
|
stage: "context_overflow_retry",
|
|
2563
2563
|
beforeTokens: a,
|
|
2564
2564
|
afterTokens: s,
|
|
2565
2565
|
window: P.contextWindow
|
|
2566
|
-
}), console.warn(`[page-agent-sdk] 上下文超限 → 激进 trim 重试:${a} → ${s} tokens(窗口 ${P.contextWindow})`),
|
|
2566
|
+
}), console.warn(`[page-agent-sdk] 上下文超限 → 激进 trim 重试:${a} → ${s} tokens(窗口 ${P.contextWindow})`), ve({
|
|
2567
2567
|
...e,
|
|
2568
2568
|
messages: o
|
|
2569
2569
|
}, t, n, r);
|
|
@@ -2577,8 +2577,8 @@ function Wi(e) {
|
|
|
2577
2577
|
content: u
|
|
2578
2578
|
};
|
|
2579
2579
|
}
|
|
2580
|
-
async function
|
|
2581
|
-
let t =
|
|
2580
|
+
async function ye(e) {
|
|
2581
|
+
let t = fe.find((t) => t.name === e.name);
|
|
2582
2582
|
if (!t) return {
|
|
2583
2583
|
content: `工具 "${e.name}" 不存在`,
|
|
2584
2584
|
status: "error"
|
|
@@ -2590,7 +2590,7 @@ function Wi(e) {
|
|
|
2590
2590
|
}, r = await t.invoke(e.args, { configurable: n }), i = typeof r == "string" ? r : JSON.stringify(r);
|
|
2591
2591
|
return i = ti(i, {
|
|
2592
2592
|
files: e.state.files,
|
|
2593
|
-
vfsAvailable:
|
|
2593
|
+
vfsAvailable: fe.some((e) => e.name === "vfs_read"),
|
|
2594
2594
|
toolName: e.name,
|
|
2595
2595
|
threshold: re,
|
|
2596
2596
|
passThroughChars: ie
|
|
@@ -2605,15 +2605,15 @@ function Wi(e) {
|
|
|
2605
2605
|
};
|
|
2606
2606
|
}
|
|
2607
2607
|
}
|
|
2608
|
-
function
|
|
2608
|
+
function be(e) {
|
|
2609
2609
|
return e instanceof a ? "human" : e instanceof i ? "ai" : e instanceof o ? "system" : e instanceof s ? "tool" : "unknown";
|
|
2610
2610
|
}
|
|
2611
|
-
function
|
|
2611
|
+
function V(e, t) {
|
|
2612
2612
|
return Bi(e, t);
|
|
2613
2613
|
}
|
|
2614
|
-
function
|
|
2614
|
+
function xe(e) {
|
|
2615
2615
|
return !te && !A ? [] : e.map((e) => {
|
|
2616
|
-
let t =
|
|
2616
|
+
let t = be(e), n = { role: t === "human" ? "user" : t === "ai" ? "assistant" : t }, r = typeof e.content == "string" ? e.content : JSON.stringify(e.content);
|
|
2617
2617
|
r && (n.content = r.length > zi ? r.slice(0, zi) + `…(截断 ${r.length - zi} 字符)` : r);
|
|
2618
2618
|
let i = e.tool_calls;
|
|
2619
2619
|
Array.isArray(i) && i.length && (n.tool_calls = i.map((e) => ({
|
|
@@ -2628,20 +2628,20 @@ function Wi(e) {
|
|
|
2628
2628
|
return a && (n.tool_call_id = a), n;
|
|
2629
2629
|
});
|
|
2630
2630
|
}
|
|
2631
|
-
async function
|
|
2632
|
-
|
|
2631
|
+
async function Se(e, t, n) {
|
|
2632
|
+
se.value = [], ce = 0, z = ui(), z.messages = e, z = await xi(x, z);
|
|
2633
2633
|
let r = e;
|
|
2634
2634
|
for (let e of x) if (e.compressInput) {
|
|
2635
|
-
let t =
|
|
2636
|
-
r = Array.isArray(n) ? n : n.messages, n && !Array.isArray(n) && n.stats ? (
|
|
2637
|
-
...
|
|
2635
|
+
let t = ue(void 0, "compression", `compress:${e.name}`, {}), n = await e.compressInput(r);
|
|
2636
|
+
r = Array.isArray(n) ? n : n.messages, n && !Array.isArray(n) && n.stats ? (z = {
|
|
2637
|
+
...z,
|
|
2638
2638
|
lastCompression: n.stats
|
|
2639
|
-
},
|
|
2639
|
+
}, de(t, "ok", { stats: n.stats })) : de(t);
|
|
2640
2640
|
}
|
|
2641
2641
|
{
|
|
2642
|
-
let e = X(v || "你是一个智能助手。"), n = Math.max(2e3, Math.round(P.contextWindow *
|
|
2642
|
+
let e = X(v || "你是一个智能助手。"), n = Math.max(2e3, Math.round(P.contextWindow * me));
|
|
2643
2643
|
if (e > n) {
|
|
2644
|
-
let r = `[page-agent-sdk] systemPrompt 本身(${e} tokens)超过系统段预算(${n} tokens,窗口 ${P.contextWindow} 的 ${
|
|
2644
|
+
let r = `[page-agent-sdk] systemPrompt 本身(${e} tokens)超过系统段预算(${n} tokens,窗口 ${P.contextWindow} 的 ${me * 100}%);请缩减 systemPrompt 或换更大窗口模型`;
|
|
2645
2645
|
return console.error(r), t({
|
|
2646
2646
|
type: "error",
|
|
2647
2647
|
message: r,
|
|
@@ -2653,13 +2653,13 @@ function Wi(e) {
|
|
|
2653
2653
|
}), "";
|
|
2654
2654
|
}
|
|
2655
2655
|
}
|
|
2656
|
-
let i =
|
|
2657
|
-
|
|
2656
|
+
let i = ge(r);
|
|
2657
|
+
I("context", {
|
|
2658
2658
|
model: c,
|
|
2659
|
-
tools:
|
|
2659
|
+
tools: fe.map((e) => e.name),
|
|
2660
2660
|
middleware: x.map((e) => e.name)
|
|
2661
2661
|
});
|
|
2662
|
-
let l = Ei(x, (e) =>
|
|
2662
|
+
let l = Ei(x, (e) => ve(e, t, n)), u = Di(x, ye), d = {
|
|
2663
2663
|
rounds: 0,
|
|
2664
2664
|
maxToolRounds: N,
|
|
2665
2665
|
invokeUsage: {
|
|
@@ -2670,13 +2670,13 @@ function Wi(e) {
|
|
|
2670
2670
|
writeFailures: {},
|
|
2671
2671
|
budgetHinted: !1
|
|
2672
2672
|
};
|
|
2673
|
-
|
|
2673
|
+
z.loopProgress = d;
|
|
2674
2674
|
let f = 0, p = 0, m = Vi(N, C), h = null, g = 0, b = !1, S = 0;
|
|
2675
2675
|
try {
|
|
2676
2676
|
for (; (f < N || b) && p < m && (p++, !n?.aborted);) {
|
|
2677
2677
|
if (k > 0 && d.invokeUsage.total_tokens > k) {
|
|
2678
2678
|
let e = `本轮 token 预算(约 ${k})已用尽:任务在 ${f} 轮工具调用后中断,已完成的部分均保留。可继续对话,指定下一步(如「继续完成」/「只改 X」/「提高预算重试」)。`;
|
|
2679
|
-
return
|
|
2679
|
+
return I("error", {
|
|
2680
2680
|
stage: "round_token_budget_exceeded",
|
|
2681
2681
|
used: d.invokeUsage.total_tokens,
|
|
2682
2682
|
budget: k,
|
|
@@ -2695,38 +2695,38 @@ function Wi(e) {
|
|
|
2695
2695
|
content: e
|
|
2696
2696
|
}), e;
|
|
2697
2697
|
}
|
|
2698
|
-
let e =
|
|
2698
|
+
let e = ue(void 0, "round", `round ${p}`, { round: p })?.id;
|
|
2699
2699
|
t({
|
|
2700
2700
|
type: "round_start",
|
|
2701
2701
|
round: p
|
|
2702
|
-
}),
|
|
2702
|
+
}), z = Si(x, {
|
|
2703
2703
|
messages: i,
|
|
2704
|
-
state:
|
|
2705
|
-
}), i =
|
|
2706
|
-
let r =
|
|
2704
|
+
state: z
|
|
2705
|
+
}), i = _e(i), i = V(i, Math.round(P.contextWindow * .6));
|
|
2706
|
+
let r = ue(e, "model", c, {
|
|
2707
2707
|
round: f + 1,
|
|
2708
|
-
tools:
|
|
2708
|
+
tools: fe.map((e) => e.name)
|
|
2709
2709
|
});
|
|
2710
|
-
|
|
2710
|
+
I("llm_request", {
|
|
2711
2711
|
round: f + 1,
|
|
2712
2712
|
model: c,
|
|
2713
|
-
tools:
|
|
2714
|
-
messages:
|
|
2713
|
+
tools: fe.map((e) => e.name),
|
|
2714
|
+
messages: xe(i)
|
|
2715
2715
|
});
|
|
2716
2716
|
let o = await l({
|
|
2717
2717
|
messages: i,
|
|
2718
|
-
state:
|
|
2718
|
+
state: z
|
|
2719
2719
|
});
|
|
2720
|
-
i.push(o.message),
|
|
2720
|
+
i.push(o.message), I("llm_response", {
|
|
2721
2721
|
round: f + 1,
|
|
2722
2722
|
content: o.content,
|
|
2723
2723
|
toolCalls: o.toolCalls
|
|
2724
|
-
}),
|
|
2724
|
+
}), de(r, o.aborted ? "timeout" : "ok", { usage: _(o.message) });
|
|
2725
2725
|
{
|
|
2726
2726
|
let e = y(o.message);
|
|
2727
2727
|
e && (d.invokeUsage.prompt_tokens += e.prompt_tokens ?? 0, d.invokeUsage.completion_tokens += e.completion_tokens ?? 0, d.invokeUsage.total_tokens += e.total_tokens ?? 0);
|
|
2728
2728
|
}
|
|
2729
|
-
if (
|
|
2729
|
+
if (z = Ci(x, o, z), o.aborted) return t({
|
|
2730
2730
|
type: "done",
|
|
2731
2731
|
content: o.content
|
|
2732
2732
|
}), o.content;
|
|
@@ -2740,21 +2740,21 @@ function Wi(e) {
|
|
|
2740
2740
|
name: e.name,
|
|
2741
2741
|
args: e.args,
|
|
2742
2742
|
type: "tool_call"
|
|
2743
|
-
}))),
|
|
2743
|
+
}))), I("middleware", {
|
|
2744
2744
|
stage: "dsml_parsed",
|
|
2745
2745
|
count: n.length,
|
|
2746
2746
|
names: n.map((e) => e.name)
|
|
2747
2747
|
});
|
|
2748
2748
|
} else {
|
|
2749
2749
|
if (e && g < 2) {
|
|
2750
|
-
g += 1, b = !0,
|
|
2750
|
+
g += 1, b = !0, I("middleware", {
|
|
2751
2751
|
stage: "format_retry",
|
|
2752
2752
|
attempt: g,
|
|
2753
2753
|
content: o.content.slice(0, 200)
|
|
2754
2754
|
}), i.push(new a("⚠️ 你刚才把工具调用写成了文本(伪 XML/标签/DSML 标记,如 <|tool_calls|>、<||DSML||>、<invoke name=...>),未被系统识别为工具调用,因此未执行,页面无变化。请直接用标准 function calling(工具调用)格式重新发起工具调用,不要在回复正文里输出这些标签或 JSON 文本。"));
|
|
2755
2755
|
continue;
|
|
2756
2756
|
}
|
|
2757
|
-
if (e && (
|
|
2757
|
+
if (e && (I("error", {
|
|
2758
2758
|
stage: "garbled_exhausted",
|
|
2759
2759
|
retries: g,
|
|
2760
2760
|
content: o.content.slice(0, 200)
|
|
@@ -2765,24 +2765,24 @@ function Wi(e) {
|
|
|
2765
2765
|
code: "GARBLED_TOOL_CALL_EXHAUSTED",
|
|
2766
2766
|
context: { content: o.content.slice(0, 200) }
|
|
2767
2767
|
})), !e && f > 0 && S < 2 && Mi(o.content)) {
|
|
2768
|
-
S += 1, b = !0,
|
|
2768
|
+
S += 1, b = !0, I("middleware", {
|
|
2769
2769
|
stage: "transitional_retry",
|
|
2770
2770
|
attempt: S,
|
|
2771
2771
|
content: o.content.slice(0, 160)
|
|
2772
2772
|
}), i.push(new a("⚠️ 你刚才输出的是计划/过渡性表述(如「我先看看」「稍后委派」),任务尚未完成。请立即继续执行 —— 调用所需工具把任务做完,全部完成后再给出总结回复。"));
|
|
2773
2773
|
continue;
|
|
2774
2774
|
}
|
|
2775
|
-
if (!e && O > 0 &&
|
|
2775
|
+
if (!e && O > 0 && z.verifyAttempts < O) {
|
|
2776
2776
|
let e = await Ti(x, {
|
|
2777
2777
|
messages: i,
|
|
2778
|
-
state:
|
|
2778
|
+
state: z,
|
|
2779
2779
|
response: o,
|
|
2780
|
-
log: (e, t) =>
|
|
2780
|
+
log: (e, t) => I(e, t)
|
|
2781
2781
|
});
|
|
2782
2782
|
if (e) {
|
|
2783
|
-
h = o.content,
|
|
2783
|
+
h = o.content, z.verifyAttempts += 1, i.push(new a(`⚠️ 验证未通过,请修正:${e}`)), I("middleware", {
|
|
2784
2784
|
stage: "verify_retry",
|
|
2785
|
-
attempt:
|
|
2785
|
+
attempt: z.verifyAttempts,
|
|
2786
2786
|
feedback: e
|
|
2787
2787
|
});
|
|
2788
2788
|
continue;
|
|
@@ -2810,21 +2810,21 @@ function Wi(e) {
|
|
|
2810
2810
|
id: r,
|
|
2811
2811
|
name: e.name,
|
|
2812
2812
|
args: e.args,
|
|
2813
|
-
state:
|
|
2813
|
+
state: z,
|
|
2814
2814
|
signal: n,
|
|
2815
2815
|
emit: t,
|
|
2816
|
-
logSink:
|
|
2816
|
+
logSink: oe
|
|
2817
2817
|
}
|
|
2818
2818
|
};
|
|
2819
2819
|
}), v = await ni(m, D, async (r) => {
|
|
2820
2820
|
if (n?.aborted) return;
|
|
2821
|
-
let i =
|
|
2821
|
+
let i = ue(e, "tool", r.call.name, { name: r.call.name }), a = Date.now();
|
|
2822
2822
|
t({
|
|
2823
2823
|
type: "tool_call",
|
|
2824
2824
|
name: r.call.name,
|
|
2825
2825
|
args: r.call.args,
|
|
2826
2826
|
id: r.id
|
|
2827
|
-
}),
|
|
2827
|
+
}), I("tool_call", {
|
|
2828
2828
|
round: f + 1,
|
|
2829
2829
|
name: r.call.name,
|
|
2830
2830
|
args: r.call.args,
|
|
@@ -2848,13 +2848,13 @@ function Wi(e) {
|
|
|
2848
2848
|
status: o.status,
|
|
2849
2849
|
durationMs: s,
|
|
2850
2850
|
id: r.id
|
|
2851
|
-
}),
|
|
2851
|
+
}), I("tool_result", {
|
|
2852
2852
|
round: f + 1,
|
|
2853
2853
|
name: r.call.name,
|
|
2854
2854
|
result: o.content,
|
|
2855
2855
|
status: o.status,
|
|
2856
2856
|
durationMs: s
|
|
2857
|
-
}),
|
|
2857
|
+
}), de(i, o.status === "error" ? "error" : "ok", { resultSnippet: String(o.content).slice(0, 100) }), o;
|
|
2858
2858
|
}, n);
|
|
2859
2859
|
for (let e = 0; e < m.length; e++) {
|
|
2860
2860
|
let t = v[e];
|
|
@@ -2881,19 +2881,19 @@ function Wi(e) {
|
|
|
2881
2881
|
content: h
|
|
2882
2882
|
}), h;
|
|
2883
2883
|
let e = i[i.length - 1];
|
|
2884
|
-
if (e &&
|
|
2885
|
-
let e = i[0] &&
|
|
2886
|
-
|
|
2884
|
+
if (e && be(e) === "tool") {
|
|
2885
|
+
let e = i[0] && be(i[0]) === "system" ? i.slice(1) : i.slice(), r = [new o(B() + "\n\n工具调用次数已达上限,请基于已有工具结果直接给出最终回答,不要再调用工具。"), ...e];
|
|
2886
|
+
I("llm_request", {
|
|
2887
2887
|
round: "wrap_up",
|
|
2888
2888
|
model: c,
|
|
2889
2889
|
tools: [],
|
|
2890
|
-
messages:
|
|
2890
|
+
messages: xe(r)
|
|
2891
2891
|
});
|
|
2892
|
-
let a = await Ei(x, (e) =>
|
|
2892
|
+
let a = await Ei(x, (e) => ve(e, t, n, L))({
|
|
2893
2893
|
messages: r,
|
|
2894
|
-
state:
|
|
2894
|
+
state: z
|
|
2895
2895
|
});
|
|
2896
|
-
if (
|
|
2896
|
+
if (z = Ci(x, a, z), I("llm_response", {
|
|
2897
2897
|
round: "wrap_up",
|
|
2898
2898
|
content: a.content
|
|
2899
2899
|
}), a.aborted) return t({
|
|
@@ -2904,7 +2904,7 @@ function Wi(e) {
|
|
|
2904
2904
|
let e = a.content;
|
|
2905
2905
|
if (Oi(e)) {
|
|
2906
2906
|
let n = ki(e);
|
|
2907
|
-
|
|
2907
|
+
I("error", {
|
|
2908
2908
|
stage: "garbled_wrapup",
|
|
2909
2909
|
content: e.slice(0, 200)
|
|
2910
2910
|
}), t({
|
|
@@ -2928,41 +2928,41 @@ function Wi(e) {
|
|
|
2928
2928
|
}), r;
|
|
2929
2929
|
} finally {
|
|
2930
2930
|
try {
|
|
2931
|
-
await wi(x,
|
|
2931
|
+
await wi(x, z);
|
|
2932
2932
|
} catch (e) {
|
|
2933
2933
|
let t = Zr(e, "observable");
|
|
2934
2934
|
console.warn("[Agent] afterAgent 清理出错(observable,已忽略):", t.message);
|
|
2935
2935
|
}
|
|
2936
|
-
if (
|
|
2937
|
-
j(
|
|
2936
|
+
if (le && j) try {
|
|
2937
|
+
j(se.value, li(se.value));
|
|
2938
2938
|
} catch {}
|
|
2939
2939
|
}
|
|
2940
2940
|
}
|
|
2941
|
-
async function
|
|
2941
|
+
async function Ce(e, t, n) {
|
|
2942
2942
|
let r = "";
|
|
2943
|
-
return await
|
|
2943
|
+
return await Se(e, (e) => {
|
|
2944
2944
|
e.type === "done" && (r = e.content), n?.(e);
|
|
2945
2945
|
}, t), r;
|
|
2946
2946
|
}
|
|
2947
|
-
function Ce(e) {
|
|
2948
|
-
de = [...x.flatMap((e) => e.tools || []), ...e], z();
|
|
2949
|
-
}
|
|
2950
2947
|
function we(e) {
|
|
2951
|
-
|
|
2948
|
+
fe = [...x.flatMap((e) => e.tools || []), ...e], R();
|
|
2949
|
+
}
|
|
2950
|
+
function Te(e) {
|
|
2951
|
+
L = e, R(), M?.(e);
|
|
2952
2952
|
}
|
|
2953
2953
|
return {
|
|
2954
|
-
invoke:
|
|
2955
|
-
stream:
|
|
2956
|
-
getState: () =>
|
|
2954
|
+
invoke: Ce,
|
|
2955
|
+
stream: Se,
|
|
2956
|
+
getState: () => z,
|
|
2957
2957
|
get allTools() {
|
|
2958
|
-
return
|
|
2958
|
+
return fe;
|
|
2959
2959
|
},
|
|
2960
|
-
setTools:
|
|
2961
|
-
setLlm:
|
|
2960
|
+
setTools: we,
|
|
2961
|
+
setLlm: Te,
|
|
2962
2962
|
setModelCaps: F,
|
|
2963
|
-
debugLogs:
|
|
2964
|
-
spans:
|
|
2965
|
-
getEffectiveSystemPrompt: () =>
|
|
2963
|
+
debugLogs: ae,
|
|
2964
|
+
spans: se,
|
|
2965
|
+
getEffectiveSystemPrompt: () => B()
|
|
2966
2966
|
};
|
|
2967
2967
|
}
|
|
2968
2968
|
//#endregion
|
|
@@ -6653,6 +6653,7 @@ ${`- 输出形态:完整、自包含的 HTML 页面(.${r},可独立成页)`}
|
|
|
6653
6653
|
5. 生成/修改完成后必须调 validate_code 自检(结构合法性:标签闭合),报错用 vfs_edit 修正后复查,直到通过;
|
|
6654
6654
|
6. 最后 read(vfs + data)确认结构正确;只写 writablePaths 内 data + ${e} 下 vfs;
|
|
6655
6655
|
7. **简洁思考(硬约束,违反致超时/巨量 token)**:
|
|
6656
|
+
- **优先级总纲**:以下纪律是默认基调;**task 明确要求深入设计时,可在 task 限定的决策点上**放宽「方案探索上限」至 2~3 个(结构性取舍:性能/架构/降级);**底线不放宽** —— 装饰不穷举 / 不手算实现细节 / 不在思考里写代码草稿 / 终稿一次写成,任何 task 都不变。
|
|
6656
6657
|
- **写前简述(先定方向)**:写代码前先用 1-2 句简述方案(结构 + 关键技术选择,如「啤酒杯用 SVG,倒酒用 CSS animation 循环 2s」)→ 再直接实现。简述即定方向,实现时照做,不再反复权衡其他写法。
|
|
6657
6658
|
- **方案探索上限**:任何子问题**最多考虑 2 个方案**,选定即写代码;**禁止逐个推演 3+ 个编号方案**(如「方案1…方案12」穷举式探索)。复杂 CSS 交互(轮播/动画/手风琴等)直接用**已知成熟模式**(radio hack + keyframes / scroll-snap 等),不在思考里反复探索可行性边界 —— 选一个写,不行再 validate 后调。
|
|
6658
6659
|
- **视觉装饰效果不穷举(常见超时元凶)**:锯齿/撕边/打孔/异形/复杂渐变等**纯装饰**,选第一个想到的简单实现直接写代码(锯齿 repeating-linear-gradient 一行、打孔 radial-gradient 一行、异形 clip-path 一句),**禁止在思考里对比 linear-gradient / conic-gradient / radial-gradient / clip-path 多方案并逐个分析视觉差异** —— 装饰差异微小不值得多方案;写完看效果,不满意再调一处。真实复盘:子 agent 曾为「优惠券撕边」对比 4+ 渐变方案耗数千 token 致整页超时。
|
|
@@ -9099,7 +9100,7 @@ function Fu(e, n = {}) {
|
|
|
9099
9100
|
})
|
|
9100
9101
|
});
|
|
9101
9102
|
A(F, (e) => e?.mode === "transform");
|
|
9102
|
-
let
|
|
9103
|
+
let ae = r(async ({ jsonPath: e, jsonPaths: t, fields: r, depth: i, offset: a, limit: u }, d) => {
|
|
9103
9104
|
let f = v(d), m = $(s);
|
|
9104
9105
|
if (t && t.length) {
|
|
9105
9106
|
let e = !1, a = t.map((t) => {
|
|
@@ -9176,7 +9177,7 @@ function Fu(e, n = {}) {
|
|
|
9176
9177
|
offset: t.number().int().min(0).optional().describe("数组分页起始偏移(仅当读取目标是数组时生效,默认 0),配合 limit 分页读大数组"),
|
|
9177
9178
|
limit: t.number().int().min(1).max(200).optional().describe("数组分页每页条数(默认 50,上限 200;仅数组时生效),返回切片 + total/hasMore")
|
|
9178
9179
|
})
|
|
9179
|
-
}),
|
|
9180
|
+
}), I = r(async ({ value: e, patch: t, patches: r, del: i, dryRun: c }, u) => {
|
|
9180
9181
|
let d = v(u), f = "set";
|
|
9181
9182
|
i ? f = "delete" : (r && r.length || t) && (f = "edit");
|
|
9182
9183
|
let g = t?.value === void 0 ? e : t.value, _;
|
|
@@ -9336,8 +9337,8 @@ function Fu(e, n = {}) {
|
|
|
9336
9337
|
dryRun: t.boolean().optional().describe("预检模式:走完整校验链(schema + 白名单 + patch 应用到 clone)但不落盘、不入快照,返回预览。四意图(value/patch/patches/del)均支持;乐观锁冲突照常检测(返回 VERSION_CONFLICT 不挂起)")
|
|
9337
9338
|
})
|
|
9338
9339
|
});
|
|
9339
|
-
A(
|
|
9340
|
-
let
|
|
9340
|
+
A(I);
|
|
9341
|
+
let oe = r(async ({ jsonPath: e }) => {
|
|
9341
9342
|
let t = e || "", n = t ? Ji(o, t) : o;
|
|
9342
9343
|
return n ? `schema${t ? ` @ ${t}` : ""} = ${Q(sa(n))}` : Y({
|
|
9343
9344
|
code: "PATH_DENIED",
|
|
@@ -9348,7 +9349,7 @@ function Fu(e, n = {}) {
|
|
|
9348
9349
|
name: "schema_data",
|
|
9349
9350
|
description: "查看主数据(或子路径)的字段约束:类型/min/max/enum/必填/默认值/嵌套 shape。写前查约束,避免写错重试。不传 jsonPath 查根;传子路径(如 components.0)查该位置约束。",
|
|
9350
9351
|
schema: t.object({ jsonPath: t.string().optional().describe("要查约束的子路径;不传查根 schema") })
|
|
9351
|
-
}),
|
|
9352
|
+
}), se = r(async ({ snapshotId: e, against: t }) => {
|
|
9352
9353
|
let n = t != null, r, i;
|
|
9353
9354
|
if (n) {
|
|
9354
9355
|
let e = t;
|
|
@@ -9380,7 +9381,7 @@ function Fu(e, n = {}) {
|
|
|
9380
9381
|
snapshotId: t.number().int().optional().describe("对比的快照序号;不传则最近一次"),
|
|
9381
9382
|
against: t.unknown().optional().describe("对比的一段 JSON 值(与 snapshotId 互斥;传则忽略快照)")
|
|
9382
9383
|
})
|
|
9383
|
-
}),
|
|
9384
|
+
}), ce = [];
|
|
9384
9385
|
if (n.vfsStore) {
|
|
9385
9386
|
let e = n.vfsStore, i = (e) => `drafts/${e}.json`, c = r(({ draftId: t, chunk: n, mode: r }) => {
|
|
9386
9387
|
let a = i(t), o = e.files[a], s = r === "append" && o, c = s ? o.content + n : n;
|
|
@@ -9445,9 +9446,9 @@ function Fu(e, n = {}) {
|
|
|
9445
9446
|
expectedHash: t.string().optional().describe("乐观锁:改前 read/get 返回的 hash;传入则校验,不一致拒绝写入防覆盖。不传则自动用你最后读到的 hash(autoLock)")
|
|
9446
9447
|
})
|
|
9447
9448
|
});
|
|
9448
|
-
A(u),
|
|
9449
|
+
A(u), ce.push(c, u);
|
|
9449
9450
|
}
|
|
9450
|
-
let
|
|
9451
|
+
let le = [];
|
|
9451
9452
|
if (e.resources?.length && d) {
|
|
9452
9453
|
let e = r(async ({ path: e, handle: t }) => {
|
|
9453
9454
|
let n = e;
|
|
@@ -9551,9 +9552,9 @@ function Fu(e, n = {}) {
|
|
|
9551
9552
|
handle: t.string().optional().describe("占位符句柄(与 path 二选一)")
|
|
9552
9553
|
})
|
|
9553
9554
|
});
|
|
9554
|
-
A(a),
|
|
9555
|
+
A(a), le.push(e, n, i, a);
|
|
9555
9556
|
}
|
|
9556
|
-
let
|
|
9557
|
+
let ue = [
|
|
9557
9558
|
ee,
|
|
9558
9559
|
j,
|
|
9559
9560
|
M,
|
|
@@ -9564,25 +9565,25 @@ function Fu(e, n = {}) {
|
|
|
9564
9565
|
re,
|
|
9565
9566
|
ie,
|
|
9566
9567
|
F,
|
|
9567
|
-
I,
|
|
9568
|
-
L,
|
|
9569
9568
|
ae,
|
|
9569
|
+
I,
|
|
9570
9570
|
oe,
|
|
9571
|
-
|
|
9572
|
-
...ce
|
|
9571
|
+
se,
|
|
9572
|
+
...ce,
|
|
9573
|
+
...le
|
|
9573
9574
|
];
|
|
9574
|
-
Object.defineProperty(
|
|
9575
|
+
Object.defineProperty(ue, "controller", {
|
|
9575
9576
|
value: E,
|
|
9576
9577
|
enumerable: !1,
|
|
9577
9578
|
configurable: !1,
|
|
9578
9579
|
writable: !1
|
|
9579
9580
|
});
|
|
9580
|
-
for (let e of
|
|
9581
|
+
for (let e of ue) Object.defineProperty(e, "__dataOpsScoped", {
|
|
9581
9582
|
value: !0,
|
|
9582
9583
|
enumerable: !1,
|
|
9583
9584
|
configurable: !1
|
|
9584
9585
|
});
|
|
9585
|
-
return
|
|
9586
|
+
return ue;
|
|
9586
9587
|
}
|
|
9587
9588
|
//#endregion
|
|
9588
9589
|
//#region src/core/tools/fetchDoc.ts
|
|
@@ -9666,14 +9667,233 @@ var Hu = r(({ selector: e, depth: t, attrs: n, includeText: r }) => {
|
|
|
9666
9667
|
attrs: t.array(t.string()).optional().describe("属性白名单(传了 = 严格白名单;不传 = 默认常用 + data-*)"),
|
|
9667
9668
|
includeText: t.boolean().optional().describe("是否包含直接文本(默认 true)")
|
|
9668
9669
|
})
|
|
9669
|
-
}), Uu = [Hu];
|
|
9670
|
+
}), Uu = [Hu], Wu = /* @__PURE__ */ "display.position.visibility.opacity.color.background-color.background-image.font-size.font-weight.line-height.text-align.z-index.overflow.width.height.margin.padding.border.border-radius.box-shadow.transform.transition.animation.cursor.pointer-events.flex-direction.gap.max-width.min-height".split("."), Gu = /* @__PURE__ */ new WeakMap(), Ku = !1;
|
|
9671
|
+
function qu() {
|
|
9672
|
+
if (Ku) return;
|
|
9673
|
+
let e = globalThis.EventTarget;
|
|
9674
|
+
if (!e?.prototype?.addEventListener) return;
|
|
9675
|
+
Ku = !0;
|
|
9676
|
+
let t = e.prototype.addEventListener, n = e.prototype.removeEventListener;
|
|
9677
|
+
e.prototype.addEventListener = function(e, ...n) {
|
|
9678
|
+
try {
|
|
9679
|
+
let t = Gu.get(this);
|
|
9680
|
+
t || (t = /* @__PURE__ */ new Map(), Gu.set(this, t)), t.set(String(e), (t.get(String(e)) ?? 0) + 1);
|
|
9681
|
+
} catch {}
|
|
9682
|
+
return t.call(this, e, ...n);
|
|
9683
|
+
}, e.prototype.removeEventListener = function(e, ...t) {
|
|
9684
|
+
try {
|
|
9685
|
+
let t = Gu.get(this);
|
|
9686
|
+
if (t) {
|
|
9687
|
+
let n = (t.get(String(e)) ?? 1) - 1;
|
|
9688
|
+
n <= 0 ? t.delete(String(e)) : t.set(String(e), n);
|
|
9689
|
+
}
|
|
9690
|
+
} catch {}
|
|
9691
|
+
return n.call(this, e, ...t);
|
|
9692
|
+
};
|
|
9693
|
+
}
|
|
9694
|
+
function Ju(e) {
|
|
9695
|
+
return [...Gu.get(e)?.entries() ?? []].filter(([, e]) => e > 0).map(([e]) => e);
|
|
9696
|
+
}
|
|
9697
|
+
function Yu(e, t = 12) {
|
|
9698
|
+
let n = [], r = e, i = 0;
|
|
9699
|
+
for (; r && r.tagName && i < t;) {
|
|
9700
|
+
let e = r.tagName.toLowerCase(), t = r.id;
|
|
9701
|
+
if (t) {
|
|
9702
|
+
n.unshift(`${e}#${t}`);
|
|
9703
|
+
break;
|
|
9704
|
+
}
|
|
9705
|
+
if (typeof r.getAttribute == "function") {
|
|
9706
|
+
let t = (r.getAttribute("class") || "").split(/\s+/).filter(Boolean)[0];
|
|
9707
|
+
t && /^[A-Za-z][\w-]*$/.test(t) && (e += `.${t}`);
|
|
9708
|
+
}
|
|
9709
|
+
let a = r.parentElement;
|
|
9710
|
+
if (a) {
|
|
9711
|
+
let t = Array.from(a.children).filter((e) => e.tagName === r.tagName);
|
|
9712
|
+
t.length > 1 && (e += `:nth-of-type(${t.indexOf(r) + 1})`);
|
|
9713
|
+
}
|
|
9714
|
+
n.unshift(e), r = a, i++;
|
|
9715
|
+
}
|
|
9716
|
+
return n.join(" > ");
|
|
9717
|
+
}
|
|
9718
|
+
function Xu(e, t, n = {}) {
|
|
9719
|
+
if (!e) return {
|
|
9720
|
+
hits: [],
|
|
9721
|
+
total: 0,
|
|
9722
|
+
truncated: !1
|
|
9723
|
+
};
|
|
9724
|
+
let r = Math.max(1, Math.min(n.limit ?? 10, 20)), i = n.mode ?? "selector", a = [];
|
|
9725
|
+
if (i === "selector") try {
|
|
9726
|
+
a = Array.from(e.querySelectorAll(t));
|
|
9727
|
+
} catch {
|
|
9728
|
+
return {
|
|
9729
|
+
hits: [],
|
|
9730
|
+
total: 0,
|
|
9731
|
+
truncated: !1
|
|
9732
|
+
};
|
|
9733
|
+
}
|
|
9734
|
+
else {
|
|
9735
|
+
a = Array.from(e.querySelectorAll("*")).filter((e) => {
|
|
9736
|
+
let n = e.tagName.toLowerCase();
|
|
9737
|
+
if (n === "script" || n === "style" || n === "noscript") return !1;
|
|
9738
|
+
let r = (e.textContent || "").trim();
|
|
9739
|
+
return r.length > 0 && r.includes(t);
|
|
9740
|
+
});
|
|
9741
|
+
let n = a.slice(0, 100), r = new Set(n);
|
|
9742
|
+
a = n.filter((e) => {
|
|
9743
|
+
for (let t of r) if (t !== e && e.contains(t)) return !1;
|
|
9744
|
+
return !0;
|
|
9745
|
+
});
|
|
9746
|
+
}
|
|
9747
|
+
let o = Math.min(a.length, r);
|
|
9748
|
+
return {
|
|
9749
|
+
hits: a.slice(0, o).map((e) => {
|
|
9750
|
+
let n = Array.from(e.childNodes).filter((e) => e.nodeType === 3).map((e) => e.textContent || "").join("").trim();
|
|
9751
|
+
if (i === "text" && !n) {
|
|
9752
|
+
let r = (e.textContent || "").trim(), i = r.indexOf(t);
|
|
9753
|
+
n = r.slice(Math.max(0, i - 20), i + t.length + 40);
|
|
9754
|
+
}
|
|
9755
|
+
return {
|
|
9756
|
+
selector: Yu(e),
|
|
9757
|
+
tag: e.tagName.toLowerCase(),
|
|
9758
|
+
text: n.slice(0, 120)
|
|
9759
|
+
};
|
|
9760
|
+
}),
|
|
9761
|
+
total: a.length,
|
|
9762
|
+
truncated: a.length > o
|
|
9763
|
+
};
|
|
9764
|
+
}
|
|
9765
|
+
var Zu = [
|
|
9766
|
+
"content",
|
|
9767
|
+
"display",
|
|
9768
|
+
"width",
|
|
9769
|
+
"height",
|
|
9770
|
+
"background-color",
|
|
9771
|
+
"position"
|
|
9772
|
+
];
|
|
9773
|
+
function Qu(e, t = {}) {
|
|
9774
|
+
if (!e) return null;
|
|
9775
|
+
let n = {
|
|
9776
|
+
selector: Yu(e),
|
|
9777
|
+
tag: e.tagName.toLowerCase(),
|
|
9778
|
+
attrs: {}
|
|
9779
|
+
};
|
|
9780
|
+
for (let t of Array.from(e.attributes)) !(Ru.includes(t.name) || t.name.startsWith("data-")) || zu.test(t.name) || Bu.test(t.name) || (n.attrs[t.name] = t.value);
|
|
9781
|
+
let r = Array.from(e.childNodes).filter((e) => e.nodeType === 3).map((e) => e.textContent || "").join("").trim();
|
|
9782
|
+
r && (n.text = r.slice(0, 400));
|
|
9783
|
+
let i = String(e.innerText ?? e.textContent ?? "").trim();
|
|
9784
|
+
if (i && (n.textAll = i.slice(0, 1e3)), (t.includeRect ?? !0) && typeof e.getBoundingClientRect == "function") {
|
|
9785
|
+
let t = e.getBoundingClientRect();
|
|
9786
|
+
n.rect = {
|
|
9787
|
+
x: Math.round(t.x),
|
|
9788
|
+
y: Math.round(t.y),
|
|
9789
|
+
width: Math.round(t.width),
|
|
9790
|
+
height: Math.round(t.height)
|
|
9791
|
+
};
|
|
9792
|
+
}
|
|
9793
|
+
if (t.includeHtml) {
|
|
9794
|
+
let r = Math.min(t.htmlLimit ?? 1500, 4e3), i = e.outerHTML ?? "";
|
|
9795
|
+
n.html = i.length > r ? i.slice(0, r) + `…(截断 ${i.length - r} 字符)` : i;
|
|
9796
|
+
}
|
|
9797
|
+
let a = t.getComputedStyle ?? globalThis.window?.getComputedStyle?.bind(globalThis.window), o = (n) => {
|
|
9798
|
+
let r = {};
|
|
9799
|
+
if (typeof a != "function") return r;
|
|
9800
|
+
try {
|
|
9801
|
+
let i = a(e, n ?? null);
|
|
9802
|
+
for (let e of n ? Zu : t.styles ?? Wu) {
|
|
9803
|
+
let t = typeof i.getPropertyValue == "function" ? i.getPropertyValue(e) : i[e];
|
|
9804
|
+
t && (r[e] = String(t).slice(0, 200));
|
|
9805
|
+
}
|
|
9806
|
+
} catch {}
|
|
9807
|
+
return r;
|
|
9808
|
+
};
|
|
9809
|
+
if ((t.styles === void 0 || t.styles.length > 0) && (n.styles = o()), t.pseudo && (n.pseudoStyles = {
|
|
9810
|
+
before: o("::before"),
|
|
9811
|
+
after: o("::after")
|
|
9812
|
+
}), t.includeEvents !== !1) {
|
|
9813
|
+
let t = Array.from(e.attributes).filter((e) => /^on\w+$/i.test(e.name)).map((e) => ({
|
|
9814
|
+
type: e.name.toLowerCase().slice(2),
|
|
9815
|
+
snippet: e.value.slice(0, 100)
|
|
9816
|
+
})), r = e.__vueParentComponent?.vnode?.props;
|
|
9817
|
+
n.events = {
|
|
9818
|
+
inline: t,
|
|
9819
|
+
vue: r ? Object.keys(r).filter((e) => /^on[A-Z]/.test(e)).map((e) => e.slice(2).toLowerCase()) : [],
|
|
9820
|
+
captured: Ju(e)
|
|
9821
|
+
};
|
|
9822
|
+
}
|
|
9823
|
+
return n;
|
|
9824
|
+
}
|
|
9825
|
+
var $u = r(({ query: e, mode: t, limit: n, root: r }) => {
|
|
9826
|
+
qu();
|
|
9827
|
+
let i = r ? document.querySelector(r) : document;
|
|
9828
|
+
if (r && !i) return `未找到 root 元素:selector="${r}"`;
|
|
9829
|
+
let a = Xu(i, e, {
|
|
9830
|
+
mode: t,
|
|
9831
|
+
limit: n
|
|
9832
|
+
});
|
|
9833
|
+
return a.total ? JSON.stringify({
|
|
9834
|
+
...a,
|
|
9835
|
+
note: a.truncated ? `共 ${a.total} 处命中,仅返回前 ${a.hits.length} 处` : void 0
|
|
9836
|
+
}, null, 2) : t === "text" ? `未找到包含文本「${e}」的元素` : `selector "${e}" 未匹配到元素`;
|
|
9837
|
+
}, {
|
|
9838
|
+
name: "dom_search",
|
|
9839
|
+
description: "搜索页面元素:CSS 选择器或可见文本两种模式,返回命中元素的 CSS 路径 + 文本片段(≤20 处)。定位元素/查渲染结果用;找到 selector 后可用 dom_info 看详情或 get_dom 看结构。",
|
|
9840
|
+
schema: t.object({
|
|
9841
|
+
query: t.string().describe("selector 模式 = CSS 选择器(如 \".banner .title\");text 模式 = 文本关键词"),
|
|
9842
|
+
mode: t.enum(["selector", "text"]).optional().describe("搜索模式(默认 selector;text = 文本包含匹配)"),
|
|
9843
|
+
limit: t.number().int().min(1).max(20).optional().describe("返回上限(默认 10)"),
|
|
9844
|
+
root: t.string().optional().describe("限定搜索范围的容器选择器(默认整页)")
|
|
9845
|
+
})
|
|
9846
|
+
}), ed = r(({ selector: e, styles: t, includeHtml: n, htmlLimit: r, includeEvents: i, includeRect: a, pseudo: o }) => {
|
|
9847
|
+
qu();
|
|
9848
|
+
let s = document.querySelector(e);
|
|
9849
|
+
if (!s) return `未找到匹配元素:selector="${e}"(可先用 dom_search 定位)`;
|
|
9850
|
+
let c = Qu(s, {
|
|
9851
|
+
styles: t,
|
|
9852
|
+
includeHtml: n,
|
|
9853
|
+
htmlLimit: r,
|
|
9854
|
+
includeEvents: i,
|
|
9855
|
+
includeRect: a,
|
|
9856
|
+
pseudo: o
|
|
9857
|
+
});
|
|
9858
|
+
return c ? JSON.stringify(c, null, 2) : `selector="${e}" 读取失败`;
|
|
9859
|
+
}, {
|
|
9860
|
+
name: "dom_info",
|
|
9861
|
+
description: "读单个元素完整信息:内容(直接文本/全文本/HTML 片段)+ 计算样式(默认排障高频预设,可指定属性列表)+ 几何位置 + 事件绑定(inline on*/Vue props/addEventListener 记录;记录器仅覆盖 SDK 加载后注册的监听)。验证样式落地/排查交互绑定用。",
|
|
9862
|
+
schema: t.object({
|
|
9863
|
+
selector: t.string().describe("CSS 选择器(取首个匹配;可先用 dom_search 定位)"),
|
|
9864
|
+
styles: t.array(t.string()).optional().describe("计算样式属性列表(不传 = 常用预设 ~30 项)"),
|
|
9865
|
+
includeHtml: t.boolean().optional().describe("是否含 outerHTML 片段(默认 false,大 HTML 省 token)"),
|
|
9866
|
+
htmlLimit: t.number().int().min(100).max(4e3).optional().describe("HTML 片段上限字符(默认 1500)"),
|
|
9867
|
+
includeEvents: t.boolean().optional().describe("是否含事件绑定(默认 true)"),
|
|
9868
|
+
includeRect: t.boolean().optional().describe("是否含几何位置(默认 true)"),
|
|
9869
|
+
pseudo: t.boolean().optional().describe("是否含 ::before/::after 伪元素摘要(默认 false)")
|
|
9870
|
+
})
|
|
9871
|
+
}), td = {
|
|
9872
|
+
name: "dom-inspect",
|
|
9873
|
+
description: "页面 DOM 深度检视工具(dom_search 搜索元素 / dom_info 读内容·计算样式·事件绑定·几何)。定位元素、验证样式落地、排查交互绑定时加载",
|
|
9874
|
+
getContent: () => [
|
|
9875
|
+
"# DOM 检视工具用法",
|
|
9876
|
+
"## dom_search({ query, mode?, limit?, root? })",
|
|
9877
|
+
"- mode=\"selector\"(默认):query 为 CSS 选择器;mode=\"text\":文本关键词包含匹配(跳过 script/style)",
|
|
9878
|
+
"- 返回命中列表:CSS 路径(selector)+ 文本片段;超 limit 标注总数",
|
|
9879
|
+
"## dom_info({ selector, styles?, includeHtml?, pseudo?, ... })",
|
|
9880
|
+
"- selector 取首个匹配(先用 dom_search 定位更稳)",
|
|
9881
|
+
"- styles 不传 = 排障高频预设(display/position/color/background/font/z-index/transform 等约 30 项);传数组 = 只取指定属性",
|
|
9882
|
+
"- includeHtml: true 附 outerHTML 片段(默认省);pseudo: true 附 ::before/::after 摘要",
|
|
9883
|
+
"- events 三源:inline on* 属性 / Vue vnode props(onXxx)/ addEventListener 记录器(⚠ 仅记录本 SDK 加载之后注册的监听,更早的挂载捕不到)",
|
|
9884
|
+
"- rect:视口坐标 + 宽高(验证可见性/布局)",
|
|
9885
|
+
"## 排障套路",
|
|
9886
|
+
"1. dom_search(mode:\"text\", query:按钮文案) 定位 → 2. dom_info(styles:[\"display\",\"background-color\",\"pointer-events\"]) 验证样式/点击性 → 3. 不符则改数据(get_dom 看结构对照)"
|
|
9887
|
+
].join("\n"),
|
|
9888
|
+
tools: [() => [$u, ed]]
|
|
9889
|
+
};
|
|
9670
9890
|
//#endregion
|
|
9671
9891
|
//#region src/core/tools/envTool.ts
|
|
9672
|
-
function
|
|
9892
|
+
function nd(e) {
|
|
9673
9893
|
let t = e;
|
|
9674
9894
|
return typeof t.tagName == "string" || typeof t.nodeType == "number" && typeof t.nodeName == "string";
|
|
9675
9895
|
}
|
|
9676
|
-
function
|
|
9896
|
+
function rd(e, t = 3, n = 2e3, r, i) {
|
|
9677
9897
|
if (e == null) return e;
|
|
9678
9898
|
if (typeof e == "string") return e.length > n ? e.slice(0, n) + "…(已截断)" : e;
|
|
9679
9899
|
if (typeof e == "number" || typeof e == "boolean") return e;
|
|
@@ -9682,14 +9902,14 @@ function Gu(e, t = 3, n = 2e3, r, i) {
|
|
|
9682
9902
|
if (typeof e == "bigint") return `${e.toString()}n`;
|
|
9683
9903
|
if (typeof e != "object") return String(e);
|
|
9684
9904
|
let a = e;
|
|
9685
|
-
if (
|
|
9905
|
+
if (nd(a)) {
|
|
9686
9906
|
let e = a;
|
|
9687
9907
|
return e.tagName ? `[Element: <${e.tagName.toLowerCase()}>]` : `[Node: ${e.nodeName}]`;
|
|
9688
9908
|
}
|
|
9689
9909
|
if (r?.has(a)) return "[Circular]";
|
|
9690
9910
|
let o = r ?? /* @__PURE__ */ new WeakSet();
|
|
9691
9911
|
if (o.add(a), Array.isArray(e)) {
|
|
9692
|
-
let r = e.slice(0, 100).map((e) =>
|
|
9912
|
+
let r = e.slice(0, 100).map((e) => rd(e, t - 1, n, o, i));
|
|
9693
9913
|
return e.length > 100 && r.push(`…(共 ${e.length} 项,已截断)`), r;
|
|
9694
9914
|
}
|
|
9695
9915
|
if (t < 0) return "(对象,已截断)";
|
|
@@ -9702,14 +9922,14 @@ function Gu(e, t = 3, n = 2e3, r, i) {
|
|
|
9702
9922
|
}
|
|
9703
9923
|
try {
|
|
9704
9924
|
let e = a[r];
|
|
9705
|
-
i?.test(r) ? s[r] = "[REDACTED]" : s[r] =
|
|
9925
|
+
i?.test(r) ? s[r] = "[REDACTED]" : s[r] = rd(e, t - 1, n, o, i);
|
|
9706
9926
|
} catch {
|
|
9707
9927
|
s[r] = "(getter 抛错)";
|
|
9708
9928
|
}
|
|
9709
9929
|
}
|
|
9710
9930
|
return s;
|
|
9711
9931
|
}
|
|
9712
|
-
function
|
|
9932
|
+
function id(e) {
|
|
9713
9933
|
let t = e ?? (typeof window < "u" ? window : {}), n = t.navigator, r = t.location, i = t.document;
|
|
9714
9934
|
return {
|
|
9715
9935
|
location: {
|
|
@@ -9742,9 +9962,9 @@ function Ku(e) {
|
|
|
9742
9962
|
} : "(无 document)"
|
|
9743
9963
|
};
|
|
9744
9964
|
}
|
|
9745
|
-
var
|
|
9965
|
+
var ad = /^(localStorage|sessionStorage|cookie|document|frames|frameElement|opener|parent|top|self|window|globalThis|closed|history|navigation|trustedTypes|origin|crossOriginIsolated)$/, od = /token|secret|password|passwd|api[-_]?key|auth|cred|csrf|session|ticket/i, sd = r(({ key: e }) => {
|
|
9746
9966
|
if (e) {
|
|
9747
|
-
if (
|
|
9967
|
+
if (ad.test(e) || od.test(e)) return JSON.stringify({
|
|
9748
9968
|
key: e,
|
|
9749
9969
|
denied: !0,
|
|
9750
9970
|
reason: "安全:该 key 在 denylist(localStorage/sessionStorage/cookie/document 或敏感命名 token/secret/key/auth),不读取防泄漏"
|
|
@@ -9754,18 +9974,18 @@ var qu = /^(localStorage|sessionStorage|cookie|document|frames|frameElement|open
|
|
|
9754
9974
|
key: e,
|
|
9755
9975
|
exists: t !== void 0,
|
|
9756
9976
|
type: typeof t,
|
|
9757
|
-
value:
|
|
9977
|
+
value: rd(t, 3, 2e3, void 0, od)
|
|
9758
9978
|
}, null, 2);
|
|
9759
9979
|
}
|
|
9760
|
-
return JSON.stringify(
|
|
9980
|
+
return JSON.stringify(id(), null, 2);
|
|
9761
9981
|
}, {
|
|
9762
9982
|
name: "inspect_env",
|
|
9763
9983
|
description: "读宿主页面环境信息(排查调试)。不传参返回摘要(URL/origin、浏览器/语言、viewport、title/readyState);传 key 读指定 window 属性值(如 key:\"appConfig\")。只读,大结果自动外存 vfs。",
|
|
9764
9984
|
schema: t.object({ key: t.string().optional().describe("要读取的 window 属性名(如 \"appConfig\"/\"__DEBUG__\");不传 = 返回环境摘要") })
|
|
9765
|
-
}),
|
|
9985
|
+
}), cd = [sd];
|
|
9766
9986
|
//#endregion
|
|
9767
9987
|
//#region src/core/harness/budget.ts
|
|
9768
|
-
function
|
|
9988
|
+
function ld(e, t, n) {
|
|
9769
9989
|
let r = 0;
|
|
9770
9990
|
return {
|
|
9771
9991
|
name: "budget",
|
|
@@ -9790,12 +10010,12 @@ function Zu(e, t, n) {
|
|
|
9790
10010
|
}
|
|
9791
10011
|
//#endregion
|
|
9792
10012
|
//#region src/core/sdk/actions.ts
|
|
9793
|
-
var
|
|
9794
|
-
function
|
|
10013
|
+
var ud = /^[a-zA-Z][a-zA-Z0-9_]*$/;
|
|
10014
|
+
function dd(e) {
|
|
9795
10015
|
let n = [];
|
|
9796
10016
|
for (let [i, a] of Object.entries(e)) {
|
|
9797
|
-
if (!
|
|
9798
|
-
console.warn(`[page-agent-sdk][actions] 动作名 "${i}" 非法(须匹配 ${
|
|
10017
|
+
if (!ud.test(i)) {
|
|
10018
|
+
console.warn(`[page-agent-sdk][actions] 动作名 "${i}" 非法(须匹配 ${ud}),已跳过`);
|
|
9799
10019
|
continue;
|
|
9800
10020
|
}
|
|
9801
10021
|
let e = a.description || `宿主动作 ${i}`;
|
|
@@ -9815,9 +10035,9 @@ function $u(e) {
|
|
|
9815
10035
|
}
|
|
9816
10036
|
return n;
|
|
9817
10037
|
}
|
|
9818
|
-
function
|
|
10038
|
+
function fd(e) {
|
|
9819
10039
|
let t = {};
|
|
9820
|
-
for (let [n, r] of Object.entries(e))
|
|
10040
|
+
for (let [n, r] of Object.entries(e)) ud.test(n) && (t[n] = {
|
|
9821
10041
|
description: r.description,
|
|
9822
10042
|
hasParams: !!r.params
|
|
9823
10043
|
});
|
|
@@ -9825,11 +10045,11 @@ function ed(e) {
|
|
|
9825
10045
|
}
|
|
9826
10046
|
//#endregion
|
|
9827
10047
|
//#region src/core/toolsets.ts
|
|
9828
|
-
var
|
|
9829
|
-
function
|
|
10048
|
+
var pd = Lu, md = Uu;
|
|
10049
|
+
function hd(e, t) {
|
|
9830
10050
|
return Fu(e, t);
|
|
9831
10051
|
}
|
|
9832
|
-
function
|
|
10052
|
+
function gd(e, t, n, r, i) {
|
|
9833
10053
|
let a = zl(e);
|
|
9834
10054
|
return [
|
|
9835
10055
|
...a.dataOps ? t : [],
|
|
@@ -9840,7 +10060,7 @@ function id(e, t, n, r, i) {
|
|
|
9840
10060
|
}
|
|
9841
10061
|
//#endregion
|
|
9842
10062
|
//#region src/core/sdk/toolRegistry.ts
|
|
9843
|
-
function
|
|
10063
|
+
function _d(e) {
|
|
9844
10064
|
let t = /* @__PURE__ */ new Map(), n = [];
|
|
9845
10065
|
for (let r of e) for (let e of r.tools) {
|
|
9846
10066
|
let i = t.get(e.name);
|
|
@@ -9860,15 +10080,15 @@ function ad(e) {
|
|
|
9860
10080
|
}
|
|
9861
10081
|
//#endregion
|
|
9862
10082
|
//#region src/core/harness/usageHints.ts
|
|
9863
|
-
var
|
|
9864
|
-
function
|
|
10083
|
+
var vd = .7;
|
|
10084
|
+
function yd(e, t, n = "simple", r, i) {
|
|
9865
10085
|
let a = zl(e), o = n !== "advanced", s = n === "minimal";
|
|
9866
10086
|
return {
|
|
9867
10087
|
name: "usageHints",
|
|
9868
10088
|
augmentPrompt: (n) => {
|
|
9869
10089
|
let r = [];
|
|
9870
10090
|
if (a.planning && (r.push("【自适应规划】按任务复杂度决定是否先规划,不要对简单任务过度编排:"), r.push(" · 简单/明确任务(改单字段、调样式、查值)→ 直接 read/write 执行,不必 write_todos。"), r.push(" · 复杂任务(多步、大改、有歧义、不可逆)→ 先 write_todos 拆解,首个任务标 in_progress,逐项推进。"), r.push(" · 执行中发现步骤要改/补/细分 → 用 update_todo({id, content?, status?}) 按 id 增量改单项,不必重传整个清单。"), e?.humanConfirm ? r.push(" · 规划出多步方案若需用户拍板 → 先 request_human_confirmation 给方案选项,确认后再执行。") : r.push(" · 规划出多步方案若需用户拍板 → 以文字列出方案选项等用户回复,勿自行拍板。"), r.push(" · 规划阶段有轮次预算(maxPlanRevisions,默认 5):勿反复调研/改计划而不执行,规划充分后即开始 write 落地。")), t && (o ? (r.push("读写主数据用 read/write(高层入口,自动乐观锁 + 自动快照)。read({jsonPath}) 读子路径当前值(返回含 hash,write 时自动比对,无需手动传);read() 不传读整个主数据 + 说明。write 改值两姿势:① 改单个字段/子路径用 write({patch:{op:\"set\", jsonPath:\"路径.字段\", value:新值}})——patch.value 就是该字段的新值(类型匹配:string 直传字符串、number 传数字、对象传对象),不要包成 {字段:值} 对象(字段名已在 jsonPath);也兼容 write({value:新值, patch:{op,jsonPath}}) 顶层 value(向后兼容,但优先 patch.value,避免与整体 set 的 value 混淆);② 替换整个对象用 write({value:{整个新对象}})。op:set 设值 / remove 删 / merge 合并对象 / append 追加数组 / move 移动数组元素(value=目标路径字符串:数组本身=追加到末尾、数组内下标=插到该位置;同数组即重排如组件调序,目标下标按移除源后解释,一步完成免双 set 交换);批量多改动 write({patches:[{op,jsonPath,value},...]});删子路径 write({patch:{jsonPath:\"路径\"}, del:true})。写入自动经 schema 校验(失败不写,按错误提示改值类型/形状后重试)+ 自动存快照" + (s ? "。" : "(出错可用 restore_data 回退)。")), r.push("修改大对象/数组优先用 write 的 patch 增量(只发改动部分),避免整体重传被 max_tokens 截断致 JSON 不完整。"), r.push("读大数组(read 返回 hasMore=true)用 read({jsonPath,offset,limit}) 分页(offset+=limit 续读,默认 limit=50);一次读多个不相关子路径用 read({jsonPaths:[...]}) 省轮次;复杂 patches 改动先 write({patches,dryRun:true}) 预检(走完整校验不落盘)。"), r.push("read/describe 返回按 schema 投影:仅 schema 声明的字段可见(未声明字段自动隐藏,防误操作);要操作某字段需集成方在 schema 声明。"), s || (r.push("查任意路径完整约束或对比快照差异需切 advanced 工具模式(schema_data/diff_data,当前未装载勿调用);查历史快照值(只读不改当前)用 history_data({id?,jsonPath?})。"), r.push("在大数组里按条件筛选用 query_data(JSONPath,如 $.components[?(@.type==\"card\" && @.price<100)]),返回匹配元素 path/index;定位后用 write patch 改。找名字记不清的元素用 search_data(substring/regex/fuzzy)。批量过滤/映射/聚合/重写大数组用 eval_script(沙箱脚本,mode=query 只读/transform 落地)。"))) : (r.push("改主数据前先 get_data({jsonPath}) 读其当前真实值与 hash(返回末尾 hash=xxx),基于真实值改,不要凭记忆。写入(set/edit/delete)时回传 expectedHash=该 hash 启用乐观锁——若主数据在你 get 之后被外部代码/其他 agent/用户手动改过,会触发冲突:集成方若开启人工介入,工具会挂起等用户决定(保留外部/强制覆盖/回退),你应等待工具返回后按结果继续(保留外部→重新 get 再改;强制覆盖→已写入,继续;回退→已回退到历史快照,基于回退值重写);未开启人工介入时返回 VERSION_CONFLICT 不写入,重新 get 拿最新值与 hash 再改。"), r.push("不确定主数据字段结构时用 describe_data 查看说明。"), r.push("修改大对象/数组优先用 edit_data 增量 patch(只发改动部分),避免 set_data 整体重传被 max_tokens 截断导致 JSON 不完整、校验失败。"), r.push("修改主数据出错时可用 restore_data 回退最近一次。"), r.push("在大数组里按条件筛选元素用 query_data(JSONPath,如 $.components[?(@.type==\"card\" && @.price<100)]),返回匹配元素的 path/index;定位后再 edit_data 改。"), r.push("找名字记不清的元素用 search_data(支持 substring/regex/fuzzy 模糊搜索)。"), r.push("需要过滤/映射/聚合/批量重写大数组时用 eval_script(沙箱脚本,入参 data);只读探查用 mode=query,批量重写用 mode=transform(返回值经校验后落地)。"), r.push("读大数组用 read({jsonPath,offset,limit}) 分页(返回 hasMore=true 时 offset+=limit 续读);一次读多个不相关子路径用 read({jsonPaths});复杂改动先 write({...,dryRun:true}) 预检不落盘。"), r.push("对比当前与历史快照(或一段 JSON against)的差异用 diff_data({snapshotId?,against?})(返回结构化 path→from/to,verify 自纠/操作审计/\"刚才改了啥\");只读查历史快照值用 history_data({id?,jsonPath?})。"))), a.subagent && r.push("独立子任务可 spawn_agent 委派(过程隔离,不占主上下文):默认只读,需要子 agent 写数据时传 writablePaths(路径前缀白名单,越界 PATH_OUT_OF_SCOPE)。多个独立子任务可 spawn_agents 并行委派(各子互不通信,结论由你汇总;并行委派不可授写权限,写操作由你收尾执行)。"), a.inspectEnv && r.push("排查页面环境(当前 URL/浏览器/视口/集成方调试变量)用 inspect_env——不传参返回环境摘要(location/navigator/viewport/document),传 key 读特定 window 属性(如 inspect_env({key:\"appConfig\"}) 读 window.appConfig)。改完数据看渲染、定位\"为何没生效\"时用它(只读,不改数据)。"), a.domInspect && r.push("改完数据想确认渲染是否生效(或定位元素/辅助 UI 设计问答)用 get_dom({selector?,depth?}) 读渲染后 DOM(结构化返回 tag/attrs/text/children,depth 控制深度防爆炸,只读)。配合宿主 actions(save_draft/publish 等)形成\"改数据→get_dom 看渲染→触发动作\"闭环。"), a.draftWrite && !o && (r.push("生成超大 JSON(如 50+ 组件页面,单次 write 受 max_tokens 限制装不下)用 draft_write 分块构建 → draft_commit 原子提交:draft_write({draftId, chunk, mode}) mode:\"start\" 新建/\"append\" 追加(拼 JSON 片段到 drafts 池);累积完 draft_commit({draftId}) 合并 + schema 校验 + 写主数据(失败草稿保留可修后重试,成功自动清草稿)。小改仍用 write patch,只在大 JSON 从零生成时用 draft。"), r.push("⚠️ 大 JSON 分块构建是典型多轮工具调用(draft_write×N + draft_commit + read 确认 + 调研 read/query),默认 maxToolRounds=10 可能触顶被 while 截断导致草稿写不完;目标组件数大时集成方应在 createChatSdk 配 maxToolRounds ≥ 20(或按 N+5 估算)。draft_commit 提交同样走乐观锁(改前 read 拿 hash,bind 被改过会触发冲突介入,不静默覆盖)。")), a.todoDeps && r.push("复杂任务可用 todos 层级依赖:write_todos 时给 todo 传 parentId(父任务 id,表达层级)+ deps(依赖的 todo id 数组,必须先完成)。有依赖的任务,deps 全 completed 后再标 in_progress;完成时 update_todo({id, status:\"completed\", evidence:\"完成证据\"}) 记证据。无依赖关系的任务不传 parentId/deps(扁平)。"), a.focus && !o && (r.push("【上下文聚焦】判断任务范围,用 set_focus/add_focus/remove_focus/clear_focus 自动收敛工作范围:"), r.push(" · 局部任务(只改某一组件/区域,如「调导航栏」「改 components.3 样式」)→ 先 read 定位 jsonPath,再 set_focus({path:\"该子树路径\"}) 聚焦;聚焦后每轮只看该子树结构,写其他位置会被 PATH_DENIED 拒绝。"), r.push(" · 多个相关组件(如「同时改导航栏和页脚」)→ set_focus 聚焦首个后用 add_focus({path}) 追加其余;聚焦后可写任一焦点子树,越界仍被拒;移除单个用 remove_focus({path})。"), r.push(" · 全局任务(多处/整体结构,如「重排所有组件」「换主题」)→ 不要聚焦,保持全量视野直接写。"), r.push(" · 完成局部精修、要转向其他区域或做整体改动 → 调 clear_focus 退出聚焦(清空全部焦点),恢复全部读写权限。"), r.push(" · set_focus/add_focus 的 path 必须在 schema 内(类型校验);不确定路径先 read/describe_data 查。")), e?.subagents?.length) {
|
|
9871
|
-
let t = e.subagents.filter((e) => (e.temperature ?? 0) >=
|
|
10091
|
+
let t = e.subagents.filter((e) => (e.temperature ?? 0) >= vd || /规划|创意|设计|方案|brainstorm|plan/i.test(e.description)), n = e.subagents.filter((e) => (e.temperature ?? 0) < vd && /反思|审查|挑刺|校验|review|critique|reflect/i.test(e.description));
|
|
9872
10092
|
r.push("【规划-反思-执行·路由】按任务性质选模式,不要对简单任务过度编排:"), t.length && (r.push(` · 创作/设计/开放性需求(如"设计主题风格""换个感觉")→ 先调 ${t.map((e) => "use_" + e.id).join("/")} 出 2-3 套方案(高温创意),`), r.push(e?.humanConfirm ? " 不要自己拍板;拿到方案后,若需用户拍板用 request_human_confirmation 弹选项。" : " 不要自己拍板;拿到方案后以文字列出选项等用户回复(humanConfirm 未开,勿调不存在工具)。")), n.length && r.push(` · 严谨/易错/校验类 → 可先调 ${n.map((e) => "use_" + e.id).join("/")} 反思挑刺(低温审查),据反馈修订。`), r.push(o ? " · 方案定稿后,由你(主 agent)用 write 落地成 JSON(低温度执行 + schema 校验 + 写前确认)。" : " · 方案定稿后,由你(主 agent)用 edit_data 落地成 JSON(低温度执行 + schema 校验 + 写前确认)。"), r.push(" · 简单/明确任务(如\"标题改红色\")直接执行,不必走规划-反思。");
|
|
9873
10093
|
}
|
|
9874
10094
|
e?.humanConfirm && (r.push("【人工确认·必读】以下情形必须先调 request_human_confirmation 征询用户、拿到答复后再继续,不要自行拍板:"), r.push(" 1) 用户让你「给方案/列选项/我来选/挑一个」时:把每个方案作为一个 option,调 request_human_confirmation(question=简述, options=[方案A,方案B,...], recommendation=你推荐的)。不要只回文字罗列方案让用户自己回复——要用工具把选项做成可点选按钮。"), r.push(" 2) 需求有歧义/不确定时:调工具问清楚(options 不传则用户答同意或拒绝)。"), r.push(" 3) 即将执行高风险不可逆操作(删除/覆盖/批量改动)前:调工具确认。"), r.push(" 4) 规划出多步方案需用户确认时:把整个方案(或关键分步)作为 option 调 request_human_confirmation,确认后再执行。"), r.push("用户在选项里选了哪个,就按那个方案继续;选「拒绝」则停止并询问如何调整。"));
|
|
@@ -9888,7 +10108,7 @@ function sd(e, t, n = "simple", r, i) {
|
|
|
9888
10108
|
}
|
|
9889
10109
|
//#endregion
|
|
9890
10110
|
//#region src/core/harness/resourcesPin.ts
|
|
9891
|
-
function
|
|
10111
|
+
function bd(e) {
|
|
9892
10112
|
let t = e.toolsExposed === !1 ? "读到 ⟦frozen:path⟧/⟦res:handle⟧ 占位符 = 精确值在冻结区/资源池(不入消息流);resource_get/resource_update 为 advanced 工具,当前模式未装载,勿尝试调用;freeze 字段不可写(撞 FROZEN_FIELD 即放弃);verbatim 字段保持原值,勿在当前模式下尝试改写(直接写新值会 VERBATIM_MISMATCH);撞 RESOURCE_EVICTED/RESOURCE_NOT_FOUND 重新 read 懒注册。" : "读到 ⟦frozen:path⟧/⟦res:handle⟧ 占位符 = 精确值在冻结区/资源池(不入消息流);需真值用 resource_get({path});freeze 字段不可写(撞 FROZEN_FIELD 即放弃);verbatim 直接写新值会 VERBATIM_MISMATCH,先 resource_update 再写回句柄;撞 RESOURCE_EVICTED/RESOURCE_NOT_FOUND 重新 read 懒注册。";
|
|
9893
10113
|
return {
|
|
9894
10114
|
name: "resourcesPin",
|
|
@@ -9903,15 +10123,15 @@ function cd(e) {
|
|
|
9903
10123
|
}
|
|
9904
10124
|
//#endregion
|
|
9905
10125
|
//#region src/core/backends/skillStore.ts
|
|
9906
|
-
var
|
|
9907
|
-
function
|
|
9908
|
-
return `${
|
|
10126
|
+
var xd = "v:1::skill-store", Sd = "chat-sdk";
|
|
10127
|
+
function Cd(e, t, n) {
|
|
10128
|
+
return `${xd}::${e}::${t}::${n}`;
|
|
9909
10129
|
}
|
|
9910
|
-
function
|
|
9911
|
-
return `${
|
|
10130
|
+
function wd(e, t) {
|
|
10131
|
+
return `${xd}::${e}::${t}::`;
|
|
9912
10132
|
}
|
|
9913
|
-
function
|
|
9914
|
-
let t = e.dbName ??
|
|
10133
|
+
function Td(e = {}) {
|
|
10134
|
+
let t = e.dbName ?? Sd, n = e.backend ?? "indexed", r = e.id ?? "", i, a, o = new Promise((e) => {
|
|
9915
10135
|
a = e;
|
|
9916
10136
|
});
|
|
9917
10137
|
return (async () => {
|
|
@@ -9933,51 +10153,51 @@ function pd(e = {}) {
|
|
|
9933
10153
|
ready: o,
|
|
9934
10154
|
async list() {
|
|
9935
10155
|
let e = [];
|
|
9936
|
-
return await i.scan(
|
|
10156
|
+
return await i.scan(wd(t, r), (t, n) => {
|
|
9937
10157
|
e.push(n);
|
|
9938
10158
|
}), e;
|
|
9939
10159
|
},
|
|
9940
10160
|
async get(e) {
|
|
9941
|
-
return await i.get(
|
|
10161
|
+
return await i.get(Cd(t, r, e));
|
|
9942
10162
|
},
|
|
9943
10163
|
async put(e) {
|
|
9944
10164
|
try {
|
|
9945
|
-
await i.set(
|
|
10165
|
+
await i.set(Cd(t, r, e.name), e);
|
|
9946
10166
|
} catch (e) {
|
|
9947
10167
|
Cl(e) && (i = jl());
|
|
9948
10168
|
}
|
|
9949
10169
|
},
|
|
9950
10170
|
async remove(e) {
|
|
9951
|
-
let n =
|
|
10171
|
+
let n = Cd(t, r, e);
|
|
9952
10172
|
return await i.get(n) == null ? !1 : (await i.del(n), !0);
|
|
9953
10173
|
},
|
|
9954
10174
|
async clear() {
|
|
9955
|
-
await i.clearPrefix(
|
|
10175
|
+
await i.clearPrefix(wd(t, r));
|
|
9956
10176
|
},
|
|
9957
10177
|
dispose() {}
|
|
9958
10178
|
};
|
|
9959
10179
|
}
|
|
9960
10180
|
//#endregion
|
|
9961
10181
|
//#region src/core/backends/preferenceStore.ts
|
|
9962
|
-
var
|
|
10182
|
+
var Ed = [
|
|
9963
10183
|
"color",
|
|
9964
10184
|
"copy",
|
|
9965
10185
|
"layout",
|
|
9966
10186
|
"interaction",
|
|
9967
10187
|
"tech",
|
|
9968
10188
|
"other"
|
|
9969
|
-
],
|
|
9970
|
-
function
|
|
9971
|
-
return `${
|
|
10189
|
+
], Dd = "v:1::pref-store", Od = "chat-sdk";
|
|
10190
|
+
function kd(e, t, n) {
|
|
10191
|
+
return `${Dd}::${e}::${t}::${n}`;
|
|
9972
10192
|
}
|
|
9973
|
-
function
|
|
9974
|
-
return `${
|
|
10193
|
+
function Ad(e, t) {
|
|
10194
|
+
return `${Dd}::${e}::${t}::`;
|
|
9975
10195
|
}
|
|
9976
|
-
function
|
|
10196
|
+
function jd() {
|
|
9977
10197
|
return `pref-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
|
|
9978
10198
|
}
|
|
9979
|
-
function
|
|
9980
|
-
let t = e.dbName ??
|
|
10199
|
+
function Md(e = {}) {
|
|
10200
|
+
let t = e.dbName ?? Od, n = e.backend ?? "indexed", r = e.id ?? "", i = e.maxEntries ?? 20, a, o, s = new Promise((e) => {
|
|
9981
10201
|
o = e;
|
|
9982
10202
|
});
|
|
9983
10203
|
(async () => {
|
|
@@ -9998,7 +10218,7 @@ function bd(e = {}) {
|
|
|
9998
10218
|
})();
|
|
9999
10219
|
async function c() {
|
|
10000
10220
|
let e = [];
|
|
10001
|
-
return await a.scan(
|
|
10221
|
+
return await a.scan(Ad(t, r), (t, n) => {
|
|
10002
10222
|
e.push(n);
|
|
10003
10223
|
}), e;
|
|
10004
10224
|
}
|
|
@@ -10009,7 +10229,7 @@ function bd(e = {}) {
|
|
|
10009
10229
|
},
|
|
10010
10230
|
async put(e) {
|
|
10011
10231
|
let n = await c(), o = Date.now(), s = n.reduce((e, t) => Math.max(e, t.updatedAt), 0), l = n.find((t) => t.topic === e.topic), u = {
|
|
10012
|
-
id: e.id ?? l?.id ??
|
|
10232
|
+
id: e.id ?? l?.id ?? jd(),
|
|
10013
10233
|
content: e.content,
|
|
10014
10234
|
topic: e.topic,
|
|
10015
10235
|
sourceSessionId: l?.sourceSessionId ?? e.sourceSessionId,
|
|
@@ -10017,71 +10237,71 @@ function bd(e = {}) {
|
|
|
10017
10237
|
createdAt: l?.createdAt ?? o,
|
|
10018
10238
|
updatedAt: Math.max(o, s + 1)
|
|
10019
10239
|
};
|
|
10020
|
-
l && l.id !== u.id && await a.del(
|
|
10240
|
+
l && l.id !== u.id && await a.del(kd(t, r, l.id));
|
|
10021
10241
|
try {
|
|
10022
|
-
await a.set(
|
|
10242
|
+
await a.set(kd(t, r, u.id), u);
|
|
10023
10243
|
} catch (e) {
|
|
10024
|
-
Cl(e) && (a = jl(), await a.set(
|
|
10244
|
+
Cl(e) && (a = jl(), await a.set(kd(t, r, u.id), u));
|
|
10025
10245
|
}
|
|
10026
10246
|
let d = await c();
|
|
10027
10247
|
if (d.length > i) {
|
|
10028
10248
|
let e = d.sort((e, t) => e.updatedAt - t.updatedAt).slice(0, d.length - i);
|
|
10029
|
-
for (let n of e) await a.del(
|
|
10249
|
+
for (let n of e) await a.del(kd(t, r, n.id));
|
|
10030
10250
|
}
|
|
10031
10251
|
return u;
|
|
10032
10252
|
},
|
|
10033
10253
|
async remove(e) {
|
|
10034
|
-
let n =
|
|
10254
|
+
let n = kd(t, r, e);
|
|
10035
10255
|
return await a.get(n) == null ? !1 : (await a.del(n), !0);
|
|
10036
10256
|
},
|
|
10037
10257
|
async clear() {
|
|
10038
|
-
await a.clearPrefix(
|
|
10258
|
+
await a.clearPrefix(Ad(t, r));
|
|
10039
10259
|
},
|
|
10040
10260
|
dispose() {}
|
|
10041
10261
|
};
|
|
10042
10262
|
}
|
|
10043
10263
|
//#endregion
|
|
10044
10264
|
//#region src/core/harness/preferences.ts
|
|
10045
|
-
var
|
|
10265
|
+
var Nd = {
|
|
10046
10266
|
color: "颜色",
|
|
10047
10267
|
copy: "文案",
|
|
10048
10268
|
layout: "排版",
|
|
10049
10269
|
interaction: "交互",
|
|
10050
10270
|
tech: "技术",
|
|
10051
10271
|
other: "其他"
|
|
10052
|
-
},
|
|
10272
|
+
}, Pd = [
|
|
10053
10273
|
/^(?:请|帮我|麻烦)?你?记住[::,,、]?\s*(.{4,200})/,
|
|
10054
10274
|
/^(?:从)?今后(?:开始|起)?[::,,]?\s*(.{4,200})/,
|
|
10055
10275
|
/^以后(?:都|全都|总是|尽量)?[::,,]?\s*(.{4,200})/
|
|
10056
|
-
],
|
|
10276
|
+
], Fd = /(?:不要|别再|别用|别加|太(?:艳|花|亮|暗|大|小|密|挤|乱|复杂|素|少)|不喜欢|讨厌|希望|更喜欢|偏好|永远|一律|统一保持|保持统一)/, Id = [
|
|
10057
10277
|
["layout", /布局|排版|间距|留白|密度|居中|对齐|栅格|边距|紧凑|圆角|分栏|层级|大小|尺寸/],
|
|
10058
10278
|
["copy", /文案|文字|标题|副标题|字体|字号|措辞|语气|口语|书面|简洁|简短|详尽|emoji|表情/],
|
|
10059
10279
|
["interaction", /动画|动效|过渡|交互|悬停|hover|点击反馈|弹窗|提示|加载|滚动/],
|
|
10060
10280
|
["tech", /代码|框架|组件|技术|写法|命名|注释|依赖|版本|接口/],
|
|
10061
10281
|
["color", /颜色|配色|色调|色彩|深色|浅色|饱和|渐变|紫|红|橙|黄|绿|青|蓝|粉|棕|灰|黑|白|金|银/]
|
|
10062
10282
|
];
|
|
10063
|
-
function
|
|
10064
|
-
for (let [t, n] of
|
|
10283
|
+
function Ld(e) {
|
|
10284
|
+
for (let [t, n] of Id) if (n.test(e)) return t;
|
|
10065
10285
|
return "other";
|
|
10066
10286
|
}
|
|
10067
|
-
function
|
|
10287
|
+
function Rd(e) {
|
|
10068
10288
|
let t = e.trim();
|
|
10069
|
-
if (!(!t || t.length > 500)) for (let e of
|
|
10289
|
+
if (!(!t || t.length > 500)) for (let e of Pd) {
|
|
10070
10290
|
let n = t.match(e);
|
|
10071
10291
|
if (n?.[1]) {
|
|
10072
10292
|
let e = n[1].trim().replace(/[。.!!]+$/, "");
|
|
10073
10293
|
return e.length < 3 ? void 0 : {
|
|
10074
10294
|
content: e,
|
|
10075
|
-
topic:
|
|
10295
|
+
topic: Ld(e)
|
|
10076
10296
|
};
|
|
10077
10297
|
}
|
|
10078
10298
|
}
|
|
10079
10299
|
}
|
|
10080
|
-
function
|
|
10300
|
+
function zd(e) {
|
|
10081
10301
|
let t = e.trim();
|
|
10082
|
-
return t.length < 4 || t.length > 500 || /^(你好|hi|hello|ok|好的|继续|嗯|谢谢|hey|哈喽|收到|明白)/i.test(t) ? !1 :
|
|
10302
|
+
return t.length < 4 || t.length > 500 || /^(你好|hi|hello|ok|好的|继续|嗯|谢谢|hey|哈喽|收到|明白)/i.test(t) ? !1 : Fd.test(t);
|
|
10083
10303
|
}
|
|
10084
|
-
function
|
|
10304
|
+
function Bd(e) {
|
|
10085
10305
|
return [
|
|
10086
10306
|
"你是用户偏好提取器。判断下面的用户消息是否包含「持久偏好」—— 对未来同类工作都适用的口味/规则(如配色口味、文案风格、排版密度),而非仅针对本轮的任务指令。",
|
|
10087
10307
|
"只输出 JSON(无任何其他文本):{\"captured\": true, \"content\": \"一句话中性陈述(用户视角,如:不用紫色,偏好低饱和)\", \"topic\": \"color|copy|layout|interaction|tech|other\"} 或 {\"captured\": false, \"content\": \"\", \"topic\": \"other\"}",
|
|
@@ -10090,7 +10310,7 @@ function Od(e) {
|
|
|
10090
10310
|
`用户消息:"""${e.slice(0, 800)}"""`
|
|
10091
10311
|
].join("\n");
|
|
10092
10312
|
}
|
|
10093
|
-
function
|
|
10313
|
+
function Vd(e) {
|
|
10094
10314
|
if (!e) return;
|
|
10095
10315
|
let t = (e.match(/```(?:json)?\s*([\s\S]*?)```/)?.[1] ?? e).match(/\{[\s\S]*\}/)?.[0];
|
|
10096
10316
|
if (t) try {
|
|
@@ -10099,19 +10319,19 @@ function kd(e) {
|
|
|
10099
10319
|
let n = typeof e.content == "string" ? e.content.trim().replace(/[。.!!]+$/, "") : "";
|
|
10100
10320
|
return n.length < 3 || n.length > 200 ? void 0 : {
|
|
10101
10321
|
content: n,
|
|
10102
|
-
topic:
|
|
10322
|
+
topic: Ed.includes(e.topic) ? e.topic : "other"
|
|
10103
10323
|
};
|
|
10104
10324
|
} catch {
|
|
10105
10325
|
return;
|
|
10106
10326
|
}
|
|
10107
10327
|
}
|
|
10108
|
-
function
|
|
10328
|
+
function Hd(e) {
|
|
10109
10329
|
if (!e.length) return;
|
|
10110
10330
|
let t = ["## 用户偏好(跨会话沉淀;除非用户本轮另有指示,遵守以下偏好)"];
|
|
10111
|
-
for (let n of e) t.push(`- ${
|
|
10331
|
+
for (let n of e) t.push(`- ${Nd[n.topic]}:${n.content}`);
|
|
10112
10332
|
return t.join("\n");
|
|
10113
10333
|
}
|
|
10114
|
-
function
|
|
10334
|
+
function Ud(e) {
|
|
10115
10335
|
let t = [], n = -1, r = Promise.resolve(), i = (t) => e.onDebug?.({
|
|
10116
10336
|
stage: "preferences",
|
|
10117
10337
|
...t
|
|
@@ -10132,21 +10352,21 @@ function jd(e) {
|
|
|
10132
10352
|
}
|
|
10133
10353
|
return {
|
|
10134
10354
|
name: "preferences",
|
|
10135
|
-
augmentPrompt: () =>
|
|
10355
|
+
augmentPrompt: () => Hd(t),
|
|
10136
10356
|
afterAgent: (t) => {
|
|
10137
10357
|
let r = t.messages ?? [];
|
|
10138
10358
|
for (let t = n + 1; t < r.length; t++) {
|
|
10139
10359
|
let n = r[t];
|
|
10140
10360
|
if (n.role !== "user" || typeof n.content != "string" || !n.content) continue;
|
|
10141
|
-
let o = n.content, s =
|
|
10361
|
+
let o = n.content, s = Rd(o);
|
|
10142
10362
|
if (s) {
|
|
10143
10363
|
a(s.content, s.topic, t, "explicit");
|
|
10144
10364
|
continue;
|
|
10145
10365
|
}
|
|
10146
|
-
if (e.llmInvoke &&
|
|
10366
|
+
if (e.llmInvoke && zd(o)) {
|
|
10147
10367
|
let n = t;
|
|
10148
|
-
e.llmInvoke(
|
|
10149
|
-
let t =
|
|
10368
|
+
e.llmInvoke(Bd(o)).then((e) => {
|
|
10369
|
+
let t = Vd(e);
|
|
10150
10370
|
t && a(t.content, t.topic, n, "llm");
|
|
10151
10371
|
}).catch((e) => i({ extractError: String(e) }));
|
|
10152
10372
|
}
|
|
@@ -10169,24 +10389,24 @@ function jd(e) {
|
|
|
10169
10389
|
}
|
|
10170
10390
|
};
|
|
10171
10391
|
}
|
|
10172
|
-
var
|
|
10173
|
-
function
|
|
10392
|
+
var Wd = /large_results\/[^\s"'`),]+\.txt/g;
|
|
10393
|
+
function Gd(e) {
|
|
10174
10394
|
let t = /* @__PURE__ */ new Set(), n = (e) => {
|
|
10175
10395
|
if (typeof e != "string" || !e) return;
|
|
10176
10396
|
let n;
|
|
10177
|
-
for (
|
|
10397
|
+
for (Wd.lastIndex = 0; (n = Wd.exec(e)) !== null;) t.add(n[0]);
|
|
10178
10398
|
};
|
|
10179
10399
|
for (let t of e) if (n(t.content), t.steps) for (let e of t.steps) n(e.result);
|
|
10180
10400
|
return t;
|
|
10181
10401
|
}
|
|
10182
|
-
function
|
|
10402
|
+
function Kd(e, t) {
|
|
10183
10403
|
let n = [];
|
|
10184
10404
|
for (let r of Object.keys(e)) r.startsWith("large_results/") && !t.has(r) && n.push(r);
|
|
10185
10405
|
return n;
|
|
10186
10406
|
}
|
|
10187
10407
|
//#endregion
|
|
10188
10408
|
//#region src/core/utils/serialRunner.ts
|
|
10189
|
-
function
|
|
10409
|
+
function qd() {
|
|
10190
10410
|
let e = Promise.resolve();
|
|
10191
10411
|
return function(t) {
|
|
10192
10412
|
let n = e.then(t, t);
|
|
@@ -10195,24 +10415,24 @@ function Fd() {
|
|
|
10195
10415
|
}
|
|
10196
10416
|
//#endregion
|
|
10197
10417
|
//#region src/core/sdk/createChatSdk.ts
|
|
10198
|
-
var
|
|
10199
|
-
function
|
|
10418
|
+
var Jd = 30, Yd = /* @__PURE__ */ new Map();
|
|
10419
|
+
function Xd(e, t) {
|
|
10200
10420
|
return e === "set_data" ? "set" : e === "edit_data" ? "edit" : e === "delete_data" ? "delete" : e === "restore_data" ? "restore" : e === "write" ? t?.del ? "delete" : t?.patch ? "edit" : "set" : null;
|
|
10201
10421
|
}
|
|
10202
|
-
function
|
|
10422
|
+
function Zd(e) {
|
|
10203
10423
|
return e === "spawn_agent" || e === "spawn_agents" || e.startsWith("use_");
|
|
10204
10424
|
}
|
|
10205
|
-
function
|
|
10425
|
+
function Qd(e, t, n, r) {
|
|
10206
10426
|
let i = 0;
|
|
10207
10427
|
return {
|
|
10208
10428
|
name: "sdk-events",
|
|
10209
10429
|
wrapToolCall: async (t, r) => {
|
|
10210
|
-
let i = await r(t), a =
|
|
10430
|
+
let i = await r(t), a = Xd(t.name, t.args);
|
|
10211
10431
|
return a ? e({
|
|
10212
10432
|
type: "data_change",
|
|
10213
10433
|
operation: a,
|
|
10214
10434
|
value: n()?.bind
|
|
10215
|
-
}) : i.status === "done" &&
|
|
10435
|
+
}) : i.status === "done" && Zd(t.name) && e({
|
|
10216
10436
|
type: "data_change",
|
|
10217
10437
|
operation: "edit",
|
|
10218
10438
|
value: n()?.bind
|
|
@@ -10239,7 +10459,7 @@ function Bd(e, t, n, r) {
|
|
|
10239
10459
|
}
|
|
10240
10460
|
};
|
|
10241
10461
|
}
|
|
10242
|
-
function
|
|
10462
|
+
function $d(e, t, n, r, i) {
|
|
10243
10463
|
if (!n) return i && console.warn(`[page-agent-sdk][focus] capabilities.focus 关闭,${t} 忽略`), {
|
|
10244
10464
|
ok: !1,
|
|
10245
10465
|
error: "capabilities.focus 关闭"
|
|
@@ -10257,7 +10477,7 @@ function Vd(e, t, n, r, i) {
|
|
|
10257
10477
|
error: "当前无主数据 schema,无法聚焦"
|
|
10258
10478
|
});
|
|
10259
10479
|
}
|
|
10260
|
-
function
|
|
10480
|
+
function ef(e, n) {
|
|
10261
10481
|
let i = {
|
|
10262
10482
|
prompt_tokens: 0,
|
|
10263
10483
|
completion_tokens: 0,
|
|
@@ -10275,8 +10495,8 @@ function Hd(e, n) {
|
|
|
10275
10495
|
maxBytes: e.vfs?.maxBytes,
|
|
10276
10496
|
poolBytes: e.vfs?.poolBytes
|
|
10277
10497
|
}), S = Ta([], { maxPlanRevisions: e.maxPlanRevisions }), C = ka(), w = Qa({
|
|
10278
|
-
getSchema: () =>
|
|
10279
|
-
getBind: () =>
|
|
10498
|
+
getSchema: () => R()?.schema,
|
|
10499
|
+
getBind: () => R()?.bind,
|
|
10280
10500
|
unfocusGuidance: e.toolMode === "advanced" ? "tool" : "ask-user",
|
|
10281
10501
|
onChange: (e) => G({
|
|
10282
10502
|
type: "focus_change",
|
|
@@ -10296,43 +10516,47 @@ function Hd(e, n) {
|
|
|
10296
10516
|
t.length ? (e._codeAsset.writablePaths = t, Array.isArray(e.writablePaths) && (e.writablePaths = t), e._rebuildCodeAssetPaths?.(t[0]), console.info(`[page-agent-sdk][createHtmlSubagent] 未传 writablePaths,已从 schema 推断: [${t.map((e) => `'${e}'`).join(", ")}]`)) : (console.warn("[page-agent-sdk][createHtmlSubagent] 未能从 schema 推断 writablePaths(开放 schema(z.any()/z.record())/嵌套容器(如 sections[].children[])/点路径 codeField(如 props.html_code)不支持自动推断),已跳过该 html 子 agent(整体不受影响);如确需代码资产机制(vfs + 格式校验 + 增量 commit),请显式传 writablePaths(代码组件 data 区,如 ['components'])"), j.add(e));
|
|
10297
10517
|
}
|
|
10298
10518
|
let M = j.size ? ee.filter((e) => !j.has(e)) : ee, te = j.size ? (A ?? []).filter((e) => !j.has(e)) : A, N = M.length > 0, P = M.flatMap((e) => e._codeAsset.writablePaths), ne = M.flatMap((e) => e._codeAsset.writablePaths.map((t) => `${t}.${e._codeAsset.codeField}`)), re = e.checkpoint, ie = re !== void 0 && re !== !1, F = ie ? Bo({
|
|
10299
|
-
getData: () =>
|
|
10300
|
-
consumeDataDirty: () =>
|
|
10519
|
+
getData: () => R()?.bind,
|
|
10520
|
+
consumeDataDirty: () => L?.consumeDataDirty?.() ?? !0,
|
|
10301
10521
|
slotPaths: O ? [""] : [],
|
|
10302
10522
|
vfsStore: x,
|
|
10303
10523
|
todosMw: S,
|
|
10304
10524
|
getTodos: () => D.current?.getState?.()?.todos ?? [],
|
|
10305
10525
|
messages: b,
|
|
10306
10526
|
maxCheckpoints: re && typeof re == "object" ? re.maxCheckpoints : void 0
|
|
10307
|
-
}) : null,
|
|
10527
|
+
}) : null, ae = !re || typeof re != "object" || re.auto !== !1, I = zl(e.capabilities), oe = I.dataOps, se = I.draftWrite, ce = I.tracing, le = I.automation, ue = ac({
|
|
10308
10528
|
...e,
|
|
10309
10529
|
locale: e.i18n?.locale
|
|
10310
10530
|
});
|
|
10311
10531
|
if (N) {
|
|
10312
10532
|
let e = M.map((e) => e._codeAsset.orchestratorPrompt).filter(Boolean).join("\n\n");
|
|
10313
|
-
e && (
|
|
10314
|
-
} else O?.schema && Qi(O.schema) && (
|
|
10315
|
-
let
|
|
10533
|
+
e && (ue += "\n\n" + e);
|
|
10534
|
+
} else O?.schema && Qi(O.schema) && (ue += "\n\n" + ga.htmlDirectWriteFallback, console.warn("[page-agent-sdk] 检测到 schema 含 code 字段但未注册 html 子 agent:已自动注入「主 agent 自己写 HTML」编排(code 作普通字段直接 write,无 vfs 工作副本 / 无格式校验门禁)。如需代码资产机制(vfs + 格式校验 + 增量 commit + 主上下文 code 摘要),注册 createHtmlSubagent;若确为降级意图可忽略。"));
|
|
10535
|
+
let de = oe && O ? Fu(O, {
|
|
10316
10536
|
onAudit: e.onAudit ?? (e.debug ? (e) => console.log("[page-agent-sdk][data audit]", e) : void 0),
|
|
10317
10537
|
maxSnapshots: e.maxSnapshots,
|
|
10318
10538
|
onConflict: a.set,
|
|
10319
10539
|
autoLock: e.autoLock,
|
|
10320
10540
|
interceptors: e.interceptors,
|
|
10321
|
-
vfsStore:
|
|
10541
|
+
vfsStore: se || O?.resources?.length ? x : void 0,
|
|
10322
10542
|
...P.length ? { pgIdPaths: P } : {},
|
|
10323
10543
|
...ne.length ? { largeTextPaths: ne } : {}
|
|
10324
|
-
}) : [],
|
|
10325
|
-
getResourcesSnapshot: () =>
|
|
10544
|
+
}) : [], fe = oe ? Eu(de, e.toolMode) : [], L = oe && O ? de.controller ?? null : null, pe = oe && O?.resources?.length && L?.getResourcesSnapshot ? bd({
|
|
10545
|
+
getResourcesSnapshot: () => L?.getResourcesSnapshot?.() ?? [],
|
|
10326
10546
|
toolsExposed: e.toolMode === "advanced"
|
|
10327
|
-
}) : void 0,
|
|
10328
|
-
|
|
10329
|
-
|
|
10330
|
-
|
|
10331
|
-
|
|
10332
|
-
|
|
10333
|
-
let he = [
|
|
10334
|
-
|
|
10335
|
-
let
|
|
10547
|
+
}) : void 0, R = () => L?.get() ?? O, z = /* @__PURE__ */ new Map(), me = gd(I, fe, Lu, I.domInspect && !I.skills ? [
|
|
10548
|
+
...Uu,
|
|
10549
|
+
$u,
|
|
10550
|
+
ed
|
|
10551
|
+
] : Uu, cd);
|
|
10552
|
+
me.forEach((e) => z.set(e.name, "builtin"));
|
|
10553
|
+
let he = [...e.tools || []];
|
|
10554
|
+
he.forEach((e) => z.set(e.name, "user"));
|
|
10555
|
+
let B = dd(e.actions ?? {});
|
|
10556
|
+
B.forEach((e) => z.set(e.name, "action"));
|
|
10557
|
+
let ge = [], _e = !1, ve = e.humanConfirm !== !1 && (!e.approval || e.approval.humanConfirmTool !== !1), ye = ve ? Mo() : null;
|
|
10558
|
+
ye && z.set(Ao, "builtin");
|
|
10559
|
+
let be = ie && F ? [r(async () => {
|
|
10336
10560
|
let e = F.list();
|
|
10337
10561
|
return e.length ? F.restore() ? `已回退到最近一次正常状态(checkpoint #${e[e.length - 1].id})。对话历史、主数据、vfs、todos 已整体还原。请基于回退后的状态重新判断并继续。` : "回退失败:无可用 checkpoint。" : "无可用 checkpoint,无法回退。";
|
|
10338
10562
|
}, {
|
|
@@ -10347,9 +10571,9 @@ function Hd(e, n) {
|
|
|
10347
10571
|
description: "列出可用会话 checkpoint(回退点)。",
|
|
10348
10572
|
schema: t.object({}).optional()
|
|
10349
10573
|
})] : [];
|
|
10350
|
-
|
|
10351
|
-
let
|
|
10352
|
-
let n =
|
|
10574
|
+
be.forEach((e) => z.set(e.name, "builtin"));
|
|
10575
|
+
let V = I.focus, xe = r(async ({ path: e, label: t }) => {
|
|
10576
|
+
let n = R()?.schema;
|
|
10353
10577
|
return n ? Ji(n, e) ? (w.setFocus({
|
|
10354
10578
|
path: e,
|
|
10355
10579
|
...t ? { label: t } : {}
|
|
@@ -10361,12 +10585,12 @@ function Hd(e, n) {
|
|
|
10361
10585
|
path: t.string().describe("要聚焦的组件 jsonPath,如 components.3"),
|
|
10362
10586
|
label: t.string().optional().describe("人类可读标签,如「导航栏」")
|
|
10363
10587
|
})
|
|
10364
|
-
}),
|
|
10588
|
+
}), Se = r(async () => (w.clearFocus(), "已清除聚焦,恢复全量可操作范围(可读写所有组件)。"), {
|
|
10365
10589
|
name: "clear_focus",
|
|
10366
10590
|
description: "清除当前聚焦,退出精修模式,恢复对全部组件的读写权限。",
|
|
10367
10591
|
schema: t.object({}).optional()
|
|
10368
|
-
}),
|
|
10369
|
-
let n =
|
|
10592
|
+
}), Ce = r(async ({ path: e, label: t }) => {
|
|
10593
|
+
let n = R()?.schema;
|
|
10370
10594
|
if (!n) return "聚焦失败:当前无主数据 schema,无法聚焦。";
|
|
10371
10595
|
if (!Ji(n, e)) return `PATH_DENIED · 聚焦失败:path "${e}" 不在 schema 内。请先用 read 查看可操作路径再聚焦。`;
|
|
10372
10596
|
w.addFocus({
|
|
@@ -10382,7 +10606,7 @@ function Hd(e, n) {
|
|
|
10382
10606
|
path: t.string().describe("要追加聚焦的组件 jsonPath,如 components.3"),
|
|
10383
10607
|
label: t.string().optional().describe("人类可读标签")
|
|
10384
10608
|
})
|
|
10385
|
-
}),
|
|
10609
|
+
}), we = r(async ({ path: e }) => {
|
|
10386
10610
|
let t = w.getFocuses().length;
|
|
10387
10611
|
w.removeFocus(e);
|
|
10388
10612
|
let n = w.getFocuses();
|
|
@@ -10391,61 +10615,61 @@ function Hd(e, n) {
|
|
|
10391
10615
|
name: "remove_focus",
|
|
10392
10616
|
description: "移除单个聚焦焦点(by path),保留其他焦点。移除最后一个等价退出精修。全部退出用 clear_focus。",
|
|
10393
10617
|
schema: t.object({ path: t.string().describe("要移除的焦点 jsonPath") })
|
|
10394
|
-
}),
|
|
10395
|
-
be,
|
|
10618
|
+
}), Te = V && e.toolMode === "advanced" ? [
|
|
10396
10619
|
xe,
|
|
10397
10620
|
Se,
|
|
10398
|
-
Ce
|
|
10621
|
+
Ce,
|
|
10622
|
+
we
|
|
10399
10623
|
] : [];
|
|
10400
|
-
|
|
10401
|
-
let
|
|
10402
|
-
function
|
|
10403
|
-
let { tools: e, collisions: t } =
|
|
10624
|
+
Te.forEach((e) => z.set(e.name, "builtin"));
|
|
10625
|
+
let Ee = [], De = /* @__PURE__ */ new Map(), H = U();
|
|
10626
|
+
function U() {
|
|
10627
|
+
let { tools: e, collisions: t } = _d([
|
|
10404
10628
|
{
|
|
10405
10629
|
label: "builtin",
|
|
10406
|
-
tools:
|
|
10630
|
+
tools: me
|
|
10407
10631
|
},
|
|
10408
10632
|
{
|
|
10409
10633
|
label: "user",
|
|
10410
|
-
tools:
|
|
10634
|
+
tools: he
|
|
10411
10635
|
},
|
|
10412
10636
|
{
|
|
10413
10637
|
label: "action",
|
|
10414
|
-
tools:
|
|
10638
|
+
tools: B
|
|
10415
10639
|
},
|
|
10416
10640
|
{
|
|
10417
10641
|
label: "humanConfirm",
|
|
10418
|
-
tools:
|
|
10642
|
+
tools: ye ? [ye] : []
|
|
10419
10643
|
},
|
|
10420
10644
|
{
|
|
10421
10645
|
label: "checkpoint",
|
|
10422
|
-
tools:
|
|
10646
|
+
tools: be
|
|
10423
10647
|
},
|
|
10424
10648
|
{
|
|
10425
10649
|
label: "focus",
|
|
10426
|
-
tools:
|
|
10650
|
+
tools: Te
|
|
10427
10651
|
},
|
|
10428
10652
|
{
|
|
10429
10653
|
label: "mcp",
|
|
10430
|
-
tools:
|
|
10654
|
+
tools: ge
|
|
10431
10655
|
},
|
|
10432
10656
|
{
|
|
10433
10657
|
label: "skill",
|
|
10434
|
-
tools:
|
|
10658
|
+
tools: Ee
|
|
10435
10659
|
}
|
|
10436
10660
|
]);
|
|
10437
10661
|
return t.length && console.warn("[page-agent-sdk] 工具重名,后注册覆盖先注册:", t.map((e) => `${e.name}(${e.loser}→${e.winner})`).join(", ")), e;
|
|
10438
10662
|
}
|
|
10439
|
-
let
|
|
10440
|
-
if (
|
|
10441
|
-
if (
|
|
10442
|
-
let
|
|
10443
|
-
e.debug &&
|
|
10444
|
-
let
|
|
10445
|
-
|
|
10446
|
-
let He = e.subagent, Ue = He?.allowedTools ?? [], We = e.permissions?.length ? Oo(e.permissions) : void 0, Ge = e.approval && (e.approval.tools !== void 0 || e.approval.confirm) ? ko(e.approval) : void 0, Ke = [...We ? [We] : [], ...Ge ? [Ge] : []], qe = !
|
|
10663
|
+
let Oe = I.planning, ke = I.missionAnchor, Ae = I.workingMemory, je = I.skills, Me = I.vfs || N;
|
|
10664
|
+
if (Me) for (let e of gc) z.set(e, "builtin");
|
|
10665
|
+
if (Oe) for (let e of S.tools ?? []) z.set(e.name, "builtin");
|
|
10666
|
+
let Ne = I.summarization, Pe = I.agentCompression && !!d;
|
|
10667
|
+
e.debug && I.agentCompression && !d && console.warn("[page-agent-sdk][agentCompression] agentCompression 开启但 summaryLlm 不可用(或缺 apiKey / 模型不支持工具),压缩决策不启用,回退静态压缩");
|
|
10668
|
+
let Fe = I.memory, Ie = I.subagent, Le = Ie ? us() : void 0, Re = e.verify?.maxAttempts ?? 2, ze = !!(e.verify?.check || e.verify?.maxAttempts || e.verify?.adversarial), W = e.capabilities?.verify === !1, Be = (I.verify || ze && !W) && e.verify?.enabled !== !1 && Re > 0, Ve = I.contextInspector;
|
|
10669
|
+
ze && !Be && e.verify?.enabled !== !1 && console.warn("[page-agent-sdk][verify] 检测到 verify 配置(check/maxAttempts/adversarial)但未装载(capabilities.verify:false 显式关闭 或 maxAttempts≤0)");
|
|
10670
|
+
let He = e.subagent, Ue = He?.allowedTools ?? [], We = e.permissions?.length ? Oo(e.permissions) : void 0, Ge = e.approval && (e.approval.tools !== void 0 || e.approval.confirm) ? ko(e.approval) : void 0, Ke = [...We ? [We] : [], ...Ge ? [Ge] : []], qe = !Ie || He?.enabled === !1 ? void 0 : Es({
|
|
10447
10671
|
llm: He?.llm ?? e.llm,
|
|
10448
|
-
allTools: () => J.agent?.allTools ??
|
|
10672
|
+
allTools: () => J.agent?.allTools ?? H,
|
|
10449
10673
|
allowedTools: Ue.length ? Ue : void 0,
|
|
10450
10674
|
systemPrompt: He?.systemPrompt,
|
|
10451
10675
|
temperature: He?.temperature,
|
|
@@ -10455,12 +10679,12 @@ function Hd(e, n) {
|
|
|
10455
10679
|
maxParallel: He?.maxParallel,
|
|
10456
10680
|
debug: e.debug,
|
|
10457
10681
|
getFocuses: () => w.getFocuses(),
|
|
10458
|
-
getSchema: () =>
|
|
10459
|
-
tracker:
|
|
10682
|
+
getSchema: () => R()?.schema ?? null,
|
|
10683
|
+
tracker: Le,
|
|
10460
10684
|
guardMiddleware: Ke.length ? Ke : void 0,
|
|
10461
|
-
getVfsFiles:
|
|
10462
|
-
enterDataScope:
|
|
10463
|
-
exitDataScope:
|
|
10685
|
+
getVfsFiles: Me ? () => x.files : void 0,
|
|
10686
|
+
enterDataScope: L?.enterScope ? (e) => L.enterScope(e) : void 0,
|
|
10687
|
+
exitDataScope: L?.exitScope ? (e) => L.exitScope(e) : void 0,
|
|
10464
10688
|
onUsage: (e) => {
|
|
10465
10689
|
i.prompt_tokens = (i.prompt_tokens ?? 0) + (e.prompt_tokens ?? 0), i.completion_tokens = (i.completion_tokens ?? 0) + (e.completion_tokens ?? 0), i.total_tokens = (i.total_tokens ?? 0) + (e.total_tokens ?? 0);
|
|
10466
10690
|
},
|
|
@@ -10474,48 +10698,48 @@ function Hd(e, n) {
|
|
|
10474
10698
|
codeField: t.codeField,
|
|
10475
10699
|
craftNotes: t.craftNotes,
|
|
10476
10700
|
onWarning: (e) => console.warn(`[page-agent-sdk][code-asset] ${e}`),
|
|
10477
|
-
getController: () =>
|
|
10701
|
+
getController: () => L,
|
|
10478
10702
|
vfsStore: x
|
|
10479
10703
|
}), r = [...e.middleware ?? [], n];
|
|
10480
|
-
for (let e of r) e && typeof e == "object" && typeof e._setGetController == "function" && e._setGetController(() =>
|
|
10704
|
+
for (let e of r) e && typeof e == "object" && typeof e._setGetController == "function" && e._setGetController(() => L);
|
|
10481
10705
|
return {
|
|
10482
10706
|
...e,
|
|
10483
10707
|
middleware: r
|
|
10484
10708
|
};
|
|
10485
|
-
}), Ye = N &&
|
|
10486
|
-
getBind: () =>
|
|
10709
|
+
}), Ye = N && Ie ? Fc() : void 0, Xe = Ye ? Vc({
|
|
10710
|
+
getBind: () => R()?.bind,
|
|
10487
10711
|
writablePaths: P,
|
|
10488
10712
|
getLocked: () => Ye.locked(),
|
|
10489
|
-
tools:
|
|
10490
|
-
}) : void 0, Ze =
|
|
10713
|
+
tools: H
|
|
10714
|
+
}) : void 0, Ze = Ie && Je !== void 0 ? ks(Je, {
|
|
10491
10715
|
llm: e.llm,
|
|
10492
|
-
allTools: () => J.agent?.allTools ??
|
|
10716
|
+
allTools: () => J.agent?.allTools ?? H,
|
|
10493
10717
|
debug: e.debug,
|
|
10494
10718
|
getFocuses: () => w.getFocuses(),
|
|
10495
|
-
getSchema: () =>
|
|
10496
|
-
getBind: () =>
|
|
10497
|
-
tracker:
|
|
10719
|
+
getSchema: () => R()?.schema ?? null,
|
|
10720
|
+
getBind: () => R()?.bind,
|
|
10721
|
+
tracker: Le,
|
|
10498
10722
|
guardMiddleware: Ke.length ? Ke : void 0,
|
|
10499
|
-
getVfsFiles:
|
|
10500
|
-
enterDataScope:
|
|
10501
|
-
exitDataScope:
|
|
10723
|
+
getVfsFiles: Me ? () => x.files : void 0,
|
|
10724
|
+
enterDataScope: L?.enterScope ? (e) => L.enterScope(e) : void 0,
|
|
10725
|
+
exitDataScope: L?.exitScope ? (e) => L.exitScope(e) : void 0,
|
|
10502
10726
|
onUsage: (e) => {
|
|
10503
10727
|
i.prompt_tokens = (i.prompt_tokens ?? 0) + (e.prompt_tokens ?? 0), i.completion_tokens = (i.completion_tokens ?? 0) + (e.completion_tokens ?? 0), i.total_tokens = (i.total_tokens ?? 0) + (e.total_tokens ?? 0);
|
|
10504
10728
|
},
|
|
10505
10729
|
timeoutMs: e.subagent?.timeoutMs,
|
|
10506
10730
|
...Ye ? {
|
|
10507
10731
|
componentLock: Ye,
|
|
10508
|
-
resolveComponents: (e) => Ic(e, Ac(
|
|
10732
|
+
resolveComponents: (e) => Ic(e, Ac(R()?.bind, P))
|
|
10509
10733
|
} : {}
|
|
10510
10734
|
}) : void 0, Qe = Ze ? Ze.controller : null, $e = [
|
|
10511
10735
|
"get_data",
|
|
10512
10736
|
"describe_data",
|
|
10513
10737
|
"read",
|
|
10514
10738
|
"fetch_document"
|
|
10515
|
-
], et =
|
|
10739
|
+
], et = H.filter((e) => $e.includes(e.name)), tt = Be ? As({
|
|
10516
10740
|
check: e.verify.check ?? Is({
|
|
10517
|
-
schemas: () =>
|
|
10518
|
-
root: () =>
|
|
10741
|
+
schemas: () => R() ? { "": R().schema } : {},
|
|
10742
|
+
root: () => R()?.bind
|
|
10519
10743
|
}),
|
|
10520
10744
|
adversarial: e.verify?.adversarial ? {
|
|
10521
10745
|
llm: e.llm,
|
|
@@ -10524,24 +10748,24 @@ function Hd(e, n) {
|
|
|
10524
10748
|
}) : void 0, nt = Ve ? Xs({
|
|
10525
10749
|
contextWindow: f.contextWindow,
|
|
10526
10750
|
thresholdRatio: Ul(e, f.contextWindow).summaryThresholdRatio
|
|
10527
|
-
}) : void 0, rt =
|
|
10528
|
-
...
|
|
10529
|
-
humanConfirm:
|
|
10751
|
+
}) : void 0, rt = yd({
|
|
10752
|
+
...I,
|
|
10753
|
+
humanConfirm: ve,
|
|
10530
10754
|
subagents: te?.map((e) => ({
|
|
10531
10755
|
id: e.id,
|
|
10532
10756
|
description: e.description,
|
|
10533
10757
|
temperature: e.temperature
|
|
10534
10758
|
}))
|
|
10535
|
-
},
|
|
10759
|
+
}, oe && !!O, e.toolMode, !!O?.resources?.length, { promptSoftCap: as(f.contextWindow, h.promptSoftCapTokens) }), it = O ? {
|
|
10536
10760
|
name: "dataHint",
|
|
10537
|
-
augmentPrompt: () => ic(
|
|
10761
|
+
augmentPrompt: () => ic(R(), e.schemaHint) || void 0
|
|
10538
10762
|
} : null, at = e.augmentSystem ? {
|
|
10539
10763
|
name: "augmentSystem",
|
|
10540
10764
|
augmentPrompt: (t) => {
|
|
10541
10765
|
try {
|
|
10542
10766
|
return e.augmentSystem({
|
|
10543
10767
|
state: t,
|
|
10544
|
-
data:
|
|
10768
|
+
data: R()
|
|
10545
10769
|
});
|
|
10546
10770
|
} catch (t) {
|
|
10547
10771
|
e.debug && console.log("[page-agent-sdk][augmentSystem] 回调抛错,降级跳过:", t.message);
|
|
@@ -10556,13 +10780,13 @@ function Hd(e, n) {
|
|
|
10556
10780
|
name: e.name,
|
|
10557
10781
|
description: e.description,
|
|
10558
10782
|
getContent: () => e.content
|
|
10559
|
-
}), dt = e.skillStorage === !1 ? null :
|
|
10783
|
+
}), dt = e.skillStorage === !1 ? null : Td({
|
|
10560
10784
|
...typeof e.skillStorage == "object" ? e.skillStorage : {},
|
|
10561
10785
|
id: e.skillStorage && typeof e.skillStorage == "object" && e.skillStorage.id ? e.skillStorage.id : `agent::${n}`
|
|
10562
|
-
}), ft =
|
|
10786
|
+
}), ft = I.preferences, pt = ft && e.preferenceStorage !== !1 ? Md({
|
|
10563
10787
|
...typeof e.preferenceStorage == "object" ? e.preferenceStorage : {},
|
|
10564
10788
|
id: e.preferenceStorage && typeof e.preferenceStorage == "object" && e.preferenceStorage.id ? e.preferenceStorage.id : `agent::${n}`
|
|
10565
|
-
}) : null, mt = pt ?
|
|
10789
|
+
}) : null, mt = pt ? Ud({
|
|
10566
10790
|
store: pt,
|
|
10567
10791
|
llmInvoke: l,
|
|
10568
10792
|
getSessionId: () => J.sessionId,
|
|
@@ -10594,41 +10818,41 @@ function Hd(e, n) {
|
|
|
10594
10818
|
J.infoTick.value++;
|
|
10595
10819
|
}
|
|
10596
10820
|
} catch {}
|
|
10597
|
-
}, _t =
|
|
10821
|
+
}, _t = Ne ? ls({
|
|
10598
10822
|
...h,
|
|
10599
10823
|
llmInvoke: l,
|
|
10600
|
-
getRegisteredData: () =>
|
|
10824
|
+
getRegisteredData: () => R() ? [{ description: R().description ?? "主数据对象" }] : [],
|
|
10601
10825
|
preserveLastToolResults: _,
|
|
10602
|
-
...
|
|
10826
|
+
...Pe ? {
|
|
10603
10827
|
decideInvoke: d,
|
|
10604
10828
|
getSnapshot: () => nt?.getSnapshot()
|
|
10605
10829
|
} : {}
|
|
10606
10830
|
}) : void 0, vt = Gl([
|
|
10607
10831
|
...it ? [it] : [],
|
|
10608
10832
|
rt,
|
|
10609
|
-
...
|
|
10833
|
+
...ke ? [C] : [],
|
|
10610
10834
|
...mt ? [mt] : [],
|
|
10611
|
-
...
|
|
10612
|
-
...
|
|
10613
|
-
readVfs:
|
|
10614
|
-
hostScriptEnabled:
|
|
10835
|
+
...Oe ? [S] : [],
|
|
10836
|
+
...je ? [st = xo([...I.domInspect && !(e.skills || []).some((e) => e.name === td.name) ? [td] : [], ...e.skills || []], {
|
|
10837
|
+
readVfs: Me ? (e) => x.files[e]?.content : void 0,
|
|
10838
|
+
hostScriptEnabled: I.skillHostScript,
|
|
10615
10839
|
onToolsReady: (e, t) => {
|
|
10616
10840
|
for (let n of t) {
|
|
10617
|
-
let t =
|
|
10618
|
-
t >= 0 &&
|
|
10841
|
+
let t = Ee.findIndex((e) => e.name === n.name);
|
|
10842
|
+
t >= 0 && Ee.splice(t, 1), Ee.push(n), De.set(n.name, e), z.set(n.name, `skill:${e}`);
|
|
10619
10843
|
}
|
|
10620
|
-
|
|
10844
|
+
H = U(), J.agent && J.agent.setTools(H), J.infoTick.value++;
|
|
10621
10845
|
}
|
|
10622
10846
|
})] : [],
|
|
10623
|
-
...
|
|
10847
|
+
...Me ? [vc(x)] : [],
|
|
10624
10848
|
..._t ? [_t] : [],
|
|
10625
|
-
...
|
|
10626
|
-
...
|
|
10627
|
-
...
|
|
10628
|
-
...
|
|
10849
|
+
...Ae ? [T] : [],
|
|
10850
|
+
...V ? [w] : [],
|
|
10851
|
+
...pe ? [pe] : [],
|
|
10852
|
+
...Fe ? [E] : [],
|
|
10629
10853
|
...We ? [We] : [],
|
|
10630
|
-
...ie &&
|
|
10631
|
-
...
|
|
10854
|
+
...ie && ae && F ? [Vo(F)] : [],
|
|
10855
|
+
...ve ? [No()] : [],
|
|
10632
10856
|
...Ge ? [Ge] : [],
|
|
10633
10857
|
...tt ? [tt] : [],
|
|
10634
10858
|
...qe ? [qe] : [],
|
|
@@ -10637,12 +10861,12 @@ function Hd(e, n) {
|
|
|
10637
10861
|
...at ? [at] : [],
|
|
10638
10862
|
...nt ? [nt] : [],
|
|
10639
10863
|
...e.middleware || [],
|
|
10640
|
-
...
|
|
10864
|
+
...le ? [ld(i, {
|
|
10641
10865
|
tokenBudget: e.tokenBudget,
|
|
10642
10866
|
timeBudgetMs: e.timeBudgetMs
|
|
10643
10867
|
}, G)] : [],
|
|
10644
|
-
|
|
10645
|
-
]), yt = e.maxMemoryRounds ??
|
|
10868
|
+
Qd(G, b, R, i)
|
|
10869
|
+
]), yt = e.maxMemoryRounds ?? Jd, xt = e.approval?.timeoutMs, St = xt === void 0 || xt === 0 ? 3e4 : !Number.isFinite(xt) || xt < 0 ? 0 : xt;
|
|
10646
10870
|
function Ct(e) {
|
|
10647
10871
|
if (St) return (t) => {
|
|
10648
10872
|
if (t.type !== "approval_request") return;
|
|
@@ -10664,7 +10888,7 @@ function Hd(e, n) {
|
|
|
10664
10888
|
function wt(e) {
|
|
10665
10889
|
let t = Ct(e);
|
|
10666
10890
|
return (e) => {
|
|
10667
|
-
t?.(e), e.type
|
|
10891
|
+
t?.(e), e.type !== "approval_request" && G(e);
|
|
10668
10892
|
};
|
|
10669
10893
|
}
|
|
10670
10894
|
let Tt = /* @__PURE__ */ At([]);
|
|
@@ -10675,7 +10899,7 @@ function Hd(e, n) {
|
|
|
10675
10899
|
e.debug && console.warn("[page-agent-sdk][persist] refreshSessions 失败(已吞):", t);
|
|
10676
10900
|
}
|
|
10677
10901
|
}
|
|
10678
|
-
let Et =
|
|
10902
|
+
let Et = qd(), q = /* @__PURE__ */ new Set();
|
|
10679
10903
|
function Dt(e) {
|
|
10680
10904
|
let t = new AbortController(), n = () => t.abort();
|
|
10681
10905
|
return e && (e.aborted ? t.abort() : e.addEventListener("abort", n, { once: !0 })), q.add(t), {
|
|
@@ -10706,14 +10930,15 @@ function Hd(e, n) {
|
|
|
10706
10930
|
refCount: 0,
|
|
10707
10931
|
mcpClosers: [],
|
|
10708
10932
|
mcpServers: [],
|
|
10933
|
+
mcpFailed: [],
|
|
10709
10934
|
checkpoint: F,
|
|
10710
|
-
dataOpsController:
|
|
10935
|
+
dataOpsController: L,
|
|
10711
10936
|
skillsController: st ? st.controller : null,
|
|
10712
10937
|
infoTick: o,
|
|
10713
10938
|
pendingConflict: a.pendingConflict,
|
|
10714
10939
|
sessions: Tt,
|
|
10715
10940
|
refreshSessions: K,
|
|
10716
|
-
liveData:
|
|
10941
|
+
liveData: R,
|
|
10717
10942
|
usage: i,
|
|
10718
10943
|
emit: G,
|
|
10719
10944
|
runSerial: Et,
|
|
@@ -10721,20 +10946,20 @@ function Hd(e, n) {
|
|
|
10721
10946
|
abortAllActive: Ot,
|
|
10722
10947
|
unloadSkillTools(e) {
|
|
10723
10948
|
if (e) {
|
|
10724
|
-
let t =
|
|
10725
|
-
if (
|
|
10949
|
+
let t = Ee.length;
|
|
10950
|
+
if (Ee = Ee.filter((t) => De.get(t.name) === e ? (z.delete(t.name), De.delete(t.name), !1) : !0), Ee.length === t) return;
|
|
10726
10951
|
} else {
|
|
10727
|
-
if (!
|
|
10728
|
-
for (let e of
|
|
10729
|
-
|
|
10952
|
+
if (!Ee.length) return;
|
|
10953
|
+
for (let e of Ee) z.delete(e.name), De.delete(e.name);
|
|
10954
|
+
Ee = [];
|
|
10730
10955
|
}
|
|
10731
|
-
|
|
10956
|
+
H = U(), J.agent && J.agent.setTools(H);
|
|
10732
10957
|
},
|
|
10733
10958
|
applySnapshot(t) {
|
|
10734
|
-
if (t.messages?.length && b.push(...t.messages), t.vfs && x.hydrate && x.hydrate(t.vfs), t.todos?.length && S.reset(t.todos), t.memory && !e.memory && E.reset(t.memory), t.checkpoints?.length && F && F.importStack(t.checkpoints), t.usage && Object.assign(i, t.usage), t.mission &&
|
|
10959
|
+
if (t.messages?.length && b.push(...t.messages), t.vfs && x.hydrate && x.hydrate(t.vfs), t.todos?.length && S.reset(t.todos), t.memory && !e.memory && E.reset(t.memory), t.checkpoints?.length && F && F.importStack(t.checkpoints), t.usage && Object.assign(i, t.usage), t.mission && ke && C.setMission(t.mission), t.workingMemory && Ae && T.restore(t.workingMemory), V) {
|
|
10735
10960
|
let n = t.focus, r = n ? Array.isArray(n) ? n : [n] : [];
|
|
10736
10961
|
if (r.length) {
|
|
10737
|
-
let t =
|
|
10962
|
+
let t = R()?.schema, n = t ? r.filter((e) => Ji(t, e.path)) : [];
|
|
10738
10963
|
if (n.length && (w.setFocus(null), n.forEach((e) => w.addFocus(e))), e.debug && n.length < r.length) {
|
|
10739
10964
|
let e = r.filter((e) => !n.includes(e)).map((e) => e.path);
|
|
10740
10965
|
console.warn("[page-agent-sdk][focus] 恢复的焦点部分 path 已失效(schema 变化/无 schema),剔除:", e);
|
|
@@ -10767,13 +10992,13 @@ function Hd(e, n) {
|
|
|
10767
10992
|
},
|
|
10768
10993
|
async send(e, t) {
|
|
10769
10994
|
if (await J.initDone, J.refCount <= 0) throw Error("page-agent-sdk: agent 已释放(unmount),拒绝排队中的 send");
|
|
10770
|
-
t ??= {}, t?.mission &&
|
|
10995
|
+
t ??= {}, t?.mission && ke && C.setMission(t.mission);
|
|
10771
10996
|
let n = e;
|
|
10772
10997
|
if (t.interceptors?.input) try {
|
|
10773
10998
|
let r = t.interceptors.input(e);
|
|
10774
10999
|
typeof r == "string" && (n = r);
|
|
10775
11000
|
} catch {}
|
|
10776
|
-
let r =
|
|
11001
|
+
let r = le ? t.maxAutoRetries ?? 1 : 0, i = 0, a = !1, o = wt(t.signal), c = J.sessionId;
|
|
10777
11002
|
for (;;) {
|
|
10778
11003
|
a ||= (b.push({
|
|
10779
11004
|
role: "user",
|
|
@@ -10910,15 +11135,15 @@ function Hd(e, n) {
|
|
|
10910
11135
|
async switchSession(t) {
|
|
10911
11136
|
if (await J.initDone, !s) throw Error("page-agent-sdk: storage 未开启,无法切换会话(请传 storage 选项)");
|
|
10912
11137
|
if (a.resolve("keep_external"), J.sessionId && s) {
|
|
10913
|
-
if (
|
|
11138
|
+
if (ke) {
|
|
10914
11139
|
let e = C.getMission();
|
|
10915
11140
|
e && zt({ mission: e });
|
|
10916
11141
|
}
|
|
10917
|
-
if (
|
|
11142
|
+
if (Ae) {
|
|
10918
11143
|
let e = T.getWorkingMemory();
|
|
10919
11144
|
e && zt({ workingMemory: e });
|
|
10920
11145
|
}
|
|
10921
|
-
if (
|
|
11146
|
+
if (V) {
|
|
10922
11147
|
let e = w.getFocuses();
|
|
10923
11148
|
zt({ focus: e.length ? e : null });
|
|
10924
11149
|
}
|
|
@@ -10942,7 +11167,7 @@ function Hd(e, n) {
|
|
|
10942
11167
|
},
|
|
10943
11168
|
stream: (e, t, n) => {
|
|
10944
11169
|
if (!J.agent) throw Error("page-agent-sdk: agent 尚未初始化完成,请先 await mount()");
|
|
10945
|
-
x?.setProtectedRefs?.(
|
|
11170
|
+
x?.setProtectedRefs?.(Gd(e));
|
|
10946
11171
|
let r = (e) => {
|
|
10947
11172
|
t?.(e), G(e), e.type === "subagent" && (e.kind === "tool_call" || e.kind === "tool_result") && J.infoTick.value++;
|
|
10948
11173
|
};
|
|
@@ -10955,25 +11180,25 @@ function Hd(e, n) {
|
|
|
10955
11180
|
},
|
|
10956
11181
|
release() {
|
|
10957
11182
|
if (J.refCount--, J.refCount <= 0) {
|
|
10958
|
-
Ot(),
|
|
11183
|
+
Ot(), _e = !0, s && (x.flush?.(), s.flush(), s.dispose()), dt && dt.dispose();
|
|
10959
11184
|
let e = J.mcpClosers.splice(0);
|
|
10960
|
-
e.length && Promise.allSettled(e.map((e) => e())),
|
|
11185
|
+
e.length && Promise.allSettled(e.map((e) => e())), Yd.delete(n);
|
|
10961
11186
|
}
|
|
10962
11187
|
},
|
|
10963
11188
|
resolveConflict: a.resolve,
|
|
10964
11189
|
setTools(e) {
|
|
10965
|
-
|
|
10966
|
-
|
|
10967
|
-
}),
|
|
11190
|
+
he.length = 0, e.forEach((e) => {
|
|
11191
|
+
he.push(e), z.set(e.name, "user");
|
|
11192
|
+
}), H = U(), J.agent && J.agent.setTools(H), J.infoTick.value++;
|
|
10968
11193
|
},
|
|
10969
11194
|
addTool(e) {
|
|
10970
|
-
|
|
10971
|
-
for (let t =
|
|
10972
|
-
|
|
11195
|
+
H.some((t) => t.name === e.name) && console.warn(`[page-agent-sdk] 工具 "${e.name}" 已存在,新工具覆盖(后注册覆盖先注册)`);
|
|
11196
|
+
for (let t = he.length - 1; t >= 0; t--) he[t].name === e.name && he.splice(t, 1);
|
|
11197
|
+
he.push(e), z.set(e.name, "user"), H = U(), J.agent && J.agent.setTools(H), J.infoTick.value++;
|
|
10973
11198
|
},
|
|
10974
11199
|
removeTool(e) {
|
|
10975
|
-
let t =
|
|
10976
|
-
return t < 0 ? !1 : (
|
|
11200
|
+
let t = he.findIndex((t) => t.name === e);
|
|
11201
|
+
return t < 0 ? !1 : (he.splice(t, 1), z.delete(e), H = U(), J.agent && J.agent.setTools(H), J.infoTick.value++, !0);
|
|
10977
11202
|
},
|
|
10978
11203
|
setLlm(t) {
|
|
10979
11204
|
let n;
|
|
@@ -11018,30 +11243,30 @@ function Hd(e, n) {
|
|
|
11018
11243
|
return n && J.infoTick.value++, n;
|
|
11019
11244
|
},
|
|
11020
11245
|
getActiveSubagents() {
|
|
11021
|
-
return
|
|
11246
|
+
return Le?.getActive() ?? [];
|
|
11022
11247
|
},
|
|
11023
11248
|
get subagentHistory() {
|
|
11024
|
-
return
|
|
11249
|
+
return Le?.getHistory() ?? [];
|
|
11025
11250
|
},
|
|
11026
11251
|
getInfo() {
|
|
11027
11252
|
return {
|
|
11028
11253
|
id: n,
|
|
11029
11254
|
sessionId: J.sessionId,
|
|
11030
11255
|
model: el(y) ? y.model ?? y.modelName : y.model,
|
|
11031
|
-
systemPrompt: J.agent?.getEffectiveSystemPrompt?.() ??
|
|
11032
|
-
tools: (J.agent?.allTools ??
|
|
11256
|
+
systemPrompt: J.agent?.getEffectiveSystemPrompt?.() ?? ue + ic(R(), e.schemaHint),
|
|
11257
|
+
tools: (J.agent?.allTools ?? H).map((e) => ({
|
|
11033
11258
|
name: e.name,
|
|
11034
11259
|
description: e.description,
|
|
11035
11260
|
schema: e.schema,
|
|
11036
|
-
source:
|
|
11261
|
+
source: z.get(e.name) || "user"
|
|
11037
11262
|
})),
|
|
11038
11263
|
skills: (st ? st.controller.get() : e.skills ?? []).map((e) => ({
|
|
11039
11264
|
name: e.name,
|
|
11040
11265
|
description: e.description
|
|
11041
11266
|
})),
|
|
11042
|
-
data:
|
|
11043
|
-
description:
|
|
11044
|
-
schema:
|
|
11267
|
+
data: R() ? {
|
|
11268
|
+
description: R().description,
|
|
11269
|
+
schema: R().schema
|
|
11045
11270
|
} : void 0,
|
|
11046
11271
|
contextPreset: e.contextPreset ?? "auto",
|
|
11047
11272
|
compression: {
|
|
@@ -11061,29 +11286,29 @@ function Hd(e, n) {
|
|
|
11061
11286
|
...e.evidence === void 0 ? {} : { evidence: e.evidence }
|
|
11062
11287
|
})),
|
|
11063
11288
|
planPhase: S.getPlanPhase(),
|
|
11064
|
-
mission:
|
|
11289
|
+
mission: ke ? C.getMission() : void 0,
|
|
11065
11290
|
preferences: ft && mt ? mt.getPreferences() : void 0,
|
|
11066
|
-
workingMemory:
|
|
11067
|
-
focus:
|
|
11068
|
-
focuses:
|
|
11069
|
-
trace:
|
|
11291
|
+
workingMemory: Ae ? T.getWorkingMemory() : void 0,
|
|
11292
|
+
focus: V ? w.getFocus() : void 0,
|
|
11293
|
+
focuses: V ? w.getFocuses() : [],
|
|
11294
|
+
trace: ce && J.agent?.spans ? {
|
|
11070
11295
|
spans: J.agent.spans.value,
|
|
11071
11296
|
metrics: li(J.agent.spans.value)
|
|
11072
11297
|
} : void 0,
|
|
11073
|
-
actions:
|
|
11298
|
+
actions: fd(e.actions ?? {}),
|
|
11074
11299
|
subagent: {
|
|
11075
11300
|
enabled: !!qe,
|
|
11076
11301
|
maxDepth: e.subagent?.maxDepth ?? 1,
|
|
11077
11302
|
maxParallel: e.subagent?.maxParallel ?? 4,
|
|
11078
11303
|
allowedTools: e.subagent?.allowedTools ?? [],
|
|
11079
11304
|
subagents: Qe?.get() ?? [],
|
|
11080
|
-
active:
|
|
11081
|
-
history:
|
|
11305
|
+
active: Le?.getActive() ?? [],
|
|
11306
|
+
history: Le?.getHistory() ?? [],
|
|
11082
11307
|
lockedComponents: Ye?.locked() ?? {}
|
|
11083
11308
|
},
|
|
11084
11309
|
verify: {
|
|
11085
11310
|
enabled: !!tt,
|
|
11086
|
-
maxAttempts: Be ?
|
|
11311
|
+
maxAttempts: Be ? Re : 0,
|
|
11087
11312
|
adversarial: Be && !!e.verify?.adversarial
|
|
11088
11313
|
},
|
|
11089
11314
|
context: (() => {
|
|
@@ -11094,20 +11319,23 @@ function Hd(e, n) {
|
|
|
11094
11319
|
}
|
|
11095
11320
|
return e;
|
|
11096
11321
|
})(),
|
|
11097
|
-
mcp: {
|
|
11322
|
+
mcp: {
|
|
11323
|
+
servers: J.mcpServers,
|
|
11324
|
+
...J.mcpFailed.length ? { failed: J.mcpFailed } : {}
|
|
11325
|
+
},
|
|
11098
11326
|
lastCompression: J.agent?.getState?.()?.lastCompression,
|
|
11099
11327
|
checkpoints: F ? {
|
|
11100
11328
|
enabled: !0,
|
|
11101
|
-
auto:
|
|
11329
|
+
auto: ae,
|
|
11102
11330
|
list: F.list()
|
|
11103
11331
|
} : void 0
|
|
11104
11332
|
};
|
|
11105
11333
|
},
|
|
11106
11334
|
getMission() {
|
|
11107
|
-
return
|
|
11335
|
+
return ke ? C.getMission() : void 0;
|
|
11108
11336
|
},
|
|
11109
11337
|
setMission(t) {
|
|
11110
|
-
if (!
|
|
11338
|
+
if (!ke) {
|
|
11111
11339
|
e.debug && console.warn("[page-agent-sdk][mission] capabilities.missionAnchor 关闭,setMission 忽略");
|
|
11112
11340
|
return;
|
|
11113
11341
|
}
|
|
@@ -11125,27 +11353,27 @@ function Hd(e, n) {
|
|
|
11125
11353
|
mt && (await mt.clearPreferences(), J.infoTick.value++);
|
|
11126
11354
|
},
|
|
11127
11355
|
getFocus() {
|
|
11128
|
-
return
|
|
11356
|
+
return V ? w.getFocus() : void 0;
|
|
11129
11357
|
},
|
|
11130
11358
|
getFocuses() {
|
|
11131
|
-
return
|
|
11359
|
+
return V ? w.getFocuses() : [];
|
|
11132
11360
|
},
|
|
11133
11361
|
setFocus(t) {
|
|
11134
|
-
let n =
|
|
11362
|
+
let n = $d(t, "setFocus", V, () => R()?.schema, e.debug);
|
|
11135
11363
|
return n.ok ? (w.setFocus(t), J.infoTick.value++, { ok: !0 }) : n;
|
|
11136
11364
|
},
|
|
11137
11365
|
addFocus(t) {
|
|
11138
|
-
let n =
|
|
11366
|
+
let n = $d(t, "addFocus", V, () => R()?.schema, e.debug);
|
|
11139
11367
|
return n.ok ? w.getFocuses().length >= 8 ? (e.debug && console.warn("[page-agent-sdk][focus] addFocus 拒绝:焦点数已达上限 8(augmentPrompt 注入每焦点子树 schema,过多致 system prompt 超预算)"), {
|
|
11140
11368
|
ok: !1,
|
|
11141
11369
|
error: "焦点数上限 8(避免 system prompt 撑爆)"
|
|
11142
11370
|
}) : (w.addFocus(t), J.infoTick.value++, { ok: !0 }) : n;
|
|
11143
11371
|
},
|
|
11144
11372
|
removeFocus(e) {
|
|
11145
|
-
|
|
11373
|
+
V && (w.removeFocus(e), J.infoTick.value++);
|
|
11146
11374
|
},
|
|
11147
11375
|
clearFocus() {
|
|
11148
|
-
|
|
11376
|
+
V && (w.clearFocus(), J.infoTick.value++);
|
|
11149
11377
|
}
|
|
11150
11378
|
};
|
|
11151
11379
|
async function kt() {
|
|
@@ -11179,14 +11407,14 @@ function Hd(e, n) {
|
|
|
11179
11407
|
}
|
|
11180
11408
|
function Mt(e) {
|
|
11181
11409
|
let t = {};
|
|
11182
|
-
for (let n of
|
|
11410
|
+
for (let n of Gd(e)) {
|
|
11183
11411
|
let e = x.files[n];
|
|
11184
11412
|
e && (t[n] = e.content);
|
|
11185
11413
|
}
|
|
11186
11414
|
return t;
|
|
11187
11415
|
}
|
|
11188
11416
|
function Nt() {
|
|
11189
|
-
let e =
|
|
11417
|
+
let e = Kd(x.files, Gd(b));
|
|
11190
11418
|
for (let t of e) delete x.files[t];
|
|
11191
11419
|
}
|
|
11192
11420
|
function Ft() {
|
|
@@ -11237,19 +11465,19 @@ function Hd(e, n) {
|
|
|
11237
11465
|
}
|
|
11238
11466
|
function Vt() {
|
|
11239
11467
|
if (!J.sessionId || !s) return;
|
|
11240
|
-
if (zt({ messages: JSON.parse(JSON.stringify(b)) }), zt({ todos: J.agent?.getState?.()?.todos ?? [] }),
|
|
11468
|
+
if (zt({ messages: JSON.parse(JSON.stringify(b)) }), zt({ todos: J.agent?.getState?.()?.todos ?? [] }), ke) {
|
|
11241
11469
|
let e = C.getMission();
|
|
11242
11470
|
e && zt({ mission: e });
|
|
11243
11471
|
}
|
|
11244
|
-
if (
|
|
11472
|
+
if (Ae) {
|
|
11245
11473
|
let e = T.getWorkingMemory();
|
|
11246
11474
|
e && zt({ workingMemory: e });
|
|
11247
11475
|
}
|
|
11248
|
-
if (
|
|
11476
|
+
if (V) {
|
|
11249
11477
|
let e = w.getFocuses();
|
|
11250
11478
|
zt({ focus: e.length ? e : null });
|
|
11251
11479
|
}
|
|
11252
|
-
|
|
11480
|
+
le && F && (zt({ checkpoints: F.exportStack() }), zt({ usage: i }));
|
|
11253
11481
|
let t = $c(b);
|
|
11254
11482
|
if (t && t !== It && (It = t, Bt(J.sessionId, t)), e.autoTitle !== !1 && u && !Lt && b.some((e) => e.role === "user") && b.some((e) => e.role === "assistant")) {
|
|
11255
11483
|
Lt = !0;
|
|
@@ -11273,19 +11501,19 @@ function Hd(e, n) {
|
|
|
11273
11501
|
return J.initDone = (async () => {
|
|
11274
11502
|
await kt(), await jt(), mt && await mt.preload(), e.mcp?.length && (async () => {
|
|
11275
11503
|
let t = await Promise.allSettled(e.mcp.map((e) => tc(e))), n = t.flatMap((e) => e.status === "fulfilled" ? [e.value.close] : []);
|
|
11276
|
-
if (
|
|
11504
|
+
if (_e) {
|
|
11277
11505
|
Promise.allSettled(n.map((e) => e()));
|
|
11278
11506
|
return;
|
|
11279
11507
|
}
|
|
11280
11508
|
J.mcpClosers = n, J.mcpServers = [];
|
|
11281
11509
|
let r = /* @__PURE__ */ new Set();
|
|
11282
|
-
for (let e of
|
|
11283
|
-
let t =
|
|
11510
|
+
for (let e of H) {
|
|
11511
|
+
let t = z.get(e.name);
|
|
11284
11512
|
t && !t.startsWith("mcp:") && r.add(e.name);
|
|
11285
11513
|
}
|
|
11286
11514
|
t.forEach((t, n) => {
|
|
11287
11515
|
let i = e.mcp[n], a = i.name ?? i.url;
|
|
11288
|
-
t.status === "fulfilled"
|
|
11516
|
+
if (t.status === "fulfilled") J.mcpServers.push({
|
|
11289
11517
|
name: a,
|
|
11290
11518
|
url: i.url,
|
|
11291
11519
|
toolCount: t.value.tools.length
|
|
@@ -11294,15 +11522,33 @@ function Hd(e, n) {
|
|
|
11294
11522
|
console.warn(`[page-agent-sdk][mcp] 工具 "${e.name}" 与内置工具重名,已拒绝注入(安全保留字保护)`);
|
|
11295
11523
|
return;
|
|
11296
11524
|
}
|
|
11297
|
-
|
|
11298
|
-
})
|
|
11299
|
-
|
|
11525
|
+
z.set(e.name, `mcp:${a}`), ge.push(e);
|
|
11526
|
+
});
|
|
11527
|
+
else {
|
|
11528
|
+
console.warn(`[page-agent-sdk][mcp] server ${a} 连接失败:`, t.reason);
|
|
11529
|
+
let e = String(t.reason?.message ?? t.reason ?? "").slice(0, 200);
|
|
11530
|
+
J.mcpFailed.push({
|
|
11531
|
+
name: a,
|
|
11532
|
+
url: i.url,
|
|
11533
|
+
error: e
|
|
11534
|
+
}), G({
|
|
11535
|
+
type: "error",
|
|
11536
|
+
message: `MCP server「${a}」连接失败,其工具不可用:${e}`,
|
|
11537
|
+
severity: "observable",
|
|
11538
|
+
code: "MCP_CONNECT_FAILED",
|
|
11539
|
+
context: {
|
|
11540
|
+
server: a,
|
|
11541
|
+
url: i.url
|
|
11542
|
+
}
|
|
11543
|
+
});
|
|
11544
|
+
}
|
|
11545
|
+
}), ge.length && (H = U(), J.agent && J.agent.setTools(H), J.infoTick.value++), e.debug && console.log(`[page-agent-sdk][mcp] 注入 ${ge.length} 个工具,${J.mcpServers.length} 个 server`);
|
|
11300
11546
|
})();
|
|
11301
11547
|
let t = el(e.llm) ? e.llm : await m(e.llm);
|
|
11302
11548
|
J.agent = Wi({
|
|
11303
11549
|
llm: t,
|
|
11304
|
-
systemPrompt:
|
|
11305
|
-
tools:
|
|
11550
|
+
systemPrompt: ue,
|
|
11551
|
+
tools: H,
|
|
11306
11552
|
middleware: vt,
|
|
11307
11553
|
maxToolRounds: e.maxToolRounds,
|
|
11308
11554
|
maxRetries: e.maxRetries,
|
|
@@ -11310,12 +11556,12 @@ function Hd(e, n) {
|
|
|
11310
11556
|
maxParallelTools: e.maxParallelTools,
|
|
11311
11557
|
contextWindow: f.contextWindow,
|
|
11312
11558
|
maxOutputTokens: f.maxOutputTokens,
|
|
11313
|
-
maxVerifyAttempts: Be ?
|
|
11559
|
+
maxVerifyAttempts: Be ? Re : 0,
|
|
11314
11560
|
roundTokenBudget: e.roundTokenBudget ?? 0,
|
|
11315
11561
|
onLlmChange: (e) => {
|
|
11316
11562
|
y = e;
|
|
11317
11563
|
},
|
|
11318
|
-
onTrace:
|
|
11564
|
+
onTrace: ce ? (e, t) => {
|
|
11319
11565
|
try {
|
|
11320
11566
|
G({
|
|
11321
11567
|
type: "trace",
|
|
@@ -11326,15 +11572,15 @@ function Hd(e, n) {
|
|
|
11326
11572
|
} : void 0,
|
|
11327
11573
|
debug: e.debug
|
|
11328
11574
|
}), D.current = J.agent, Ze && Ze.setReconfigureHook && Ze.setReconfigureHook(() => {
|
|
11329
|
-
J.agent && J.agent.setTools(
|
|
11575
|
+
J.agent && J.agent.setTools(U());
|
|
11330
11576
|
});
|
|
11331
11577
|
})(), J;
|
|
11332
11578
|
}
|
|
11333
|
-
function
|
|
11579
|
+
function tf(e, t) {
|
|
11334
11580
|
let n = e.id ?? dl();
|
|
11335
11581
|
e.id || console.warn(`[page-agent-sdk] 未传 options.id,已生成随机 id "${n}"。刷新后持久化数据无法恢复,请传稳定 id。`);
|
|
11336
|
-
let r = e.streaming ?? !0, i = e.ui ?? "default", a, o = e.shareContext ?
|
|
11337
|
-
o ? a = o : (a =
|
|
11582
|
+
let r = e.streaming ?? !0, i = e.ui ?? "default", a, o = e.shareContext ? Yd.get(n) : void 0;
|
|
11583
|
+
o ? a = o : (a = ef(e, n), e.shareContext && Yd.set(n, a)), a.refCount++;
|
|
11338
11584
|
let s = null, c = Ll(e), l = null, u = null;
|
|
11339
11585
|
async function d(n) {
|
|
11340
11586
|
if (await a.initDone, s) {
|
|
@@ -11359,6 +11605,7 @@ function Ud(e, t) {
|
|
|
11359
11605
|
core: a,
|
|
11360
11606
|
dialogCfg: c,
|
|
11361
11607
|
i18n: e.i18n,
|
|
11608
|
+
debug: e.debug === !0,
|
|
11362
11609
|
streaming: r,
|
|
11363
11610
|
runSerial: a.runSerial,
|
|
11364
11611
|
hide: p,
|
|
@@ -11554,7 +11801,7 @@ function Ud(e, t) {
|
|
|
11554
11801
|
}
|
|
11555
11802
|
//#endregion
|
|
11556
11803
|
//#region src/core/sdk/ragSubagent.ts
|
|
11557
|
-
function
|
|
11804
|
+
function nf(e, t, n, r, i) {
|
|
11558
11805
|
let a = [];
|
|
11559
11806
|
e && a.push("vfs_grep + vfs_read(搜预注入文档)"), t && a.push(`${r}(语义检索)`), n && a.push(`${i}(按 source 加载)`), a.push("fetch_document(公网 URL)");
|
|
11560
11807
|
let o = [];
|
|
@@ -11569,7 +11816,7 @@ function Wd(e, t, n, r, i) {
|
|
|
11569
11816
|
|
|
11570
11817
|
你是只读检索角色,不要尝试修改任何数据。不要尝试上面未列出的工具。`;
|
|
11571
11818
|
}
|
|
11572
|
-
function
|
|
11819
|
+
function rf(e, t, n, r, i) {
|
|
11573
11820
|
let a = [], o = [];
|
|
11574
11821
|
return e && (a.push("- vfs_grep / vfs_read:搜集成方预注入 vfs 的文档(组件文档 / UI 规范)—— 快、静态,先查"), o.push("- 静态文档(组件库文档 / UI 规范):vfs_grep")), t && (a.push(`- ${r}:语义检索(retriever 向量库)—— 模糊匹配,关键词不确定 / 语义相似时用`), o.push(`- 语义相似(「瀑布流组件」「倒计时」「拼团」):${r}`)), n && (a.push(`- ${i}:按 source 精确加载(已知文档 id / URL / key)—— 精确取特定文档`), o.push(`- 已知文档 id / URL:${i}`)), a.push("- fetch_document:公网 URL —— 查公开资料"), o.push("- 公开 URL(设计规范网站 / 第三方文档):fetch_document"), `# 知识检索策略(RAG)
|
|
11575
11822
|
|
|
@@ -11586,12 +11833,12 @@ ${a.join("\n")}
|
|
|
11586
11833
|
## 何时用何源
|
|
11587
11834
|
${o.join("\n")}`;
|
|
11588
11835
|
}
|
|
11589
|
-
var
|
|
11836
|
+
var af = {
|
|
11590
11837
|
name: "rag-search",
|
|
11591
11838
|
description: "多源知识检索策略:vfs 预注入文档 → 语义检索 → 指定文档加载 → 公网;综合结构化结论 + 溯源",
|
|
11592
|
-
getContent: () =>
|
|
11839
|
+
getContent: () => rf(!0, !0, !0, "search_docs", "load_doc")
|
|
11593
11840
|
};
|
|
11594
|
-
function
|
|
11841
|
+
function of(e, n, i) {
|
|
11595
11842
|
return r(async ({ query: e, topK: t }) => {
|
|
11596
11843
|
try {
|
|
11597
11844
|
let r = await n(e, { topK: t ?? i });
|
|
@@ -11608,7 +11855,7 @@ function qd(e, n, i) {
|
|
|
11608
11855
|
})
|
|
11609
11856
|
});
|
|
11610
11857
|
}
|
|
11611
|
-
function
|
|
11858
|
+
function sf(e, n) {
|
|
11612
11859
|
return r(async ({ source: e }) => {
|
|
11613
11860
|
try {
|
|
11614
11861
|
let t = await n(e), r = Array.isArray(t) ? t : [t];
|
|
@@ -11622,19 +11869,19 @@ function Jd(e, n) {
|
|
|
11622
11869
|
schema: t.object({ source: t.string().describe("文档标识(id/URL/key)") })
|
|
11623
11870
|
});
|
|
11624
11871
|
}
|
|
11625
|
-
function
|
|
11872
|
+
function cf(e) {
|
|
11626
11873
|
let { retriever: t, loader: n, useVfs: r = !0, id: i = "rag", description: a, topK: o = 5, searchToolName: s = "search_docs", loadToolName: c = "load_doc", maxToolRounds: l = 8, summarization: u, skills: d, extraTools: f } = e;
|
|
11627
11874
|
if (!t && !n && r === !1) throw Error("[page-agent-sdk][createRagSubagent] 至少配一种知识源:retriever / loader / useVfs(true)");
|
|
11628
11875
|
let p = [];
|
|
11629
|
-
t && p.push(
|
|
11876
|
+
t && p.push(of(s, t, o)), n && p.push(sf(c, n)), f && p.push(...f);
|
|
11630
11877
|
let m = r ? [
|
|
11631
11878
|
"vfs_grep",
|
|
11632
11879
|
"vfs_read",
|
|
11633
11880
|
"vfs_json_read"
|
|
11634
|
-
] : void 0, h =
|
|
11881
|
+
] : void 0, h = nf(r, !!t, !!n, s, c), g = {
|
|
11635
11882
|
name: "rag-search",
|
|
11636
|
-
description:
|
|
11637
|
-
getContent: () =>
|
|
11883
|
+
description: af.description,
|
|
11884
|
+
getContent: () => rf(r, !!t, !!n, s, c)
|
|
11638
11885
|
};
|
|
11639
11886
|
return {
|
|
11640
11887
|
id: i,
|
|
@@ -11649,7 +11896,7 @@ function Yd(e) {
|
|
|
11649
11896
|
}
|
|
11650
11897
|
//#endregion
|
|
11651
11898
|
//#region src/core/utils/clipboard.ts
|
|
11652
|
-
async function
|
|
11899
|
+
async function lf(e) {
|
|
11653
11900
|
try {
|
|
11654
11901
|
let t = globalThis.navigator?.clipboard;
|
|
11655
11902
|
if (t && typeof t.writeText == "function") return await t.writeText(e), !0;
|
|
@@ -11667,8 +11914,8 @@ async function Xd(e) {
|
|
|
11667
11914
|
}
|
|
11668
11915
|
//#endregion
|
|
11669
11916
|
//#region src/core/composables/useChat.ts
|
|
11670
|
-
var
|
|
11671
|
-
function
|
|
11917
|
+
var uf = 4e3;
|
|
11918
|
+
function df(e = {}) {
|
|
11672
11919
|
let { fetchResponse: t, fetchStream: n, onPersist: r, onClear: i, onQueuedCleared: a } = e, o = /* @__PURE__ */ bt({
|
|
11673
11920
|
messages: e.messages ?? [],
|
|
11674
11921
|
loading: !1,
|
|
@@ -11746,7 +11993,7 @@ function Qd(e = {}) {
|
|
|
11746
11993
|
let t = e.delta || "";
|
|
11747
11994
|
n.subReasonFull = (n.subReasonFull || "") + t;
|
|
11748
11995
|
let r = (n.subReason || "") + t;
|
|
11749
|
-
n.subReason = r.length >
|
|
11996
|
+
n.subReason = r.length > uf ? r.slice(-4e3) : r;
|
|
11750
11997
|
break;
|
|
11751
11998
|
}
|
|
11752
11999
|
n.children ||= [];
|
|
@@ -11875,7 +12122,7 @@ function Qd(e = {}) {
|
|
|
11875
12122
|
}
|
|
11876
12123
|
//#endregion
|
|
11877
12124
|
//#region src/core/components/icons.ts
|
|
11878
|
-
var
|
|
12125
|
+
var ff = {
|
|
11879
12126
|
header: "🤖",
|
|
11880
12127
|
subagent: "🤖",
|
|
11881
12128
|
subagentProgress: "🧬",
|
|
@@ -11886,10 +12133,10 @@ var $d = {
|
|
|
11886
12133
|
recommend: "💡",
|
|
11887
12134
|
conflict: "⚠️"
|
|
11888
12135
|
};
|
|
11889
|
-
function
|
|
11890
|
-
let t = {
|
|
12136
|
+
function pf(e) {
|
|
12137
|
+
let t = { ...ff };
|
|
11891
12138
|
if (!e) return t;
|
|
11892
|
-
let n = Object.keys(
|
|
12139
|
+
let n = Object.keys(ff);
|
|
11893
12140
|
for (let r of n) {
|
|
11894
12141
|
let n = e[r];
|
|
11895
12142
|
typeof n == "string" && (t[r] = n);
|
|
@@ -11898,7 +12145,7 @@ function ef(e) {
|
|
|
11898
12145
|
}
|
|
11899
12146
|
//#endregion
|
|
11900
12147
|
//#region src/core/components/messages.ts
|
|
11901
|
-
var
|
|
12148
|
+
var mf = {
|
|
11902
12149
|
defaultTitle: "AI 助手",
|
|
11903
12150
|
inputPlaceholder: "输入消息,Enter 发送...",
|
|
11904
12151
|
newSession: "新建会话",
|
|
@@ -12001,6 +12248,8 @@ var tf = {
|
|
|
12001
12248
|
debugNoInfo: "暂无信息",
|
|
12002
12249
|
debugCardView: "🗂 卡片视图",
|
|
12003
12250
|
debugRequestBody: "📋 请求体",
|
|
12251
|
+
debugOnlyNew: "只看新增",
|
|
12252
|
+
debugShowAll: "全部消息",
|
|
12004
12253
|
debugViewRawJson: "查看原始 JSON",
|
|
12005
12254
|
debugCollapseRawJson: "收起原始 JSON",
|
|
12006
12255
|
debugModel: "模型",
|
|
@@ -12125,8 +12374,8 @@ var tf = {
|
|
|
12125
12374
|
codeDemoText: "这是一段示例文字,用于展示 CSS 效果。",
|
|
12126
12375
|
codeDemoButton: "按钮",
|
|
12127
12376
|
codeDemoInput: "输入框"
|
|
12128
|
-
},
|
|
12129
|
-
"zh-CN":
|
|
12377
|
+
}, hf = {
|
|
12378
|
+
"zh-CN": mf,
|
|
12130
12379
|
"en-US": {
|
|
12131
12380
|
defaultTitle: "AI Assistant",
|
|
12132
12381
|
inputPlaceholder: "Type a message, Enter to send...",
|
|
@@ -12230,6 +12479,8 @@ var tf = {
|
|
|
12230
12479
|
debugNoInfo: "No info",
|
|
12231
12480
|
debugCardView: "🗂 Cards",
|
|
12232
12481
|
debugRequestBody: "📋 Request body",
|
|
12482
|
+
debugOnlyNew: "New only",
|
|
12483
|
+
debugShowAll: "All messages",
|
|
12233
12484
|
debugViewRawJson: "View raw JSON",
|
|
12234
12485
|
debugCollapseRawJson: "Collapse raw JSON",
|
|
12235
12486
|
debugModel: "Model",
|
|
@@ -12356,10 +12607,10 @@ var tf = {
|
|
|
12356
12607
|
codeDemoInput: "Input"
|
|
12357
12608
|
}
|
|
12358
12609
|
};
|
|
12359
|
-
function
|
|
12610
|
+
function gf(e = "zh-CN", t) {
|
|
12360
12611
|
let n = {
|
|
12361
|
-
...
|
|
12362
|
-
...
|
|
12612
|
+
...mf,
|
|
12613
|
+
...hf[e]
|
|
12363
12614
|
};
|
|
12364
12615
|
if (!t) return n;
|
|
12365
12616
|
let r = { ...n };
|
|
@@ -12371,9 +12622,9 @@ function rf(e = "zh-CN", t) {
|
|
|
12371
12622
|
}
|
|
12372
12623
|
//#endregion
|
|
12373
12624
|
//#region src/core/composables/chatContext.ts
|
|
12374
|
-
var
|
|
12375
|
-
function
|
|
12376
|
-
let t =
|
|
12625
|
+
var _f = Symbol("chatContext");
|
|
12626
|
+
function vf(e = {}) {
|
|
12627
|
+
let t = df({
|
|
12377
12628
|
fetchResponse: e.fetchResponse,
|
|
12378
12629
|
fetchStream: e.fetchStream,
|
|
12379
12630
|
messages: e.messages,
|
|
@@ -12393,7 +12644,7 @@ function of(e = {}) {
|
|
|
12393
12644
|
}, h = /* @__PURE__ */ At({}), g = (e) => h.value[e] === !0, _ = (e) => {
|
|
12394
12645
|
h.value[e] = !g(e);
|
|
12395
12646
|
}, v = /* @__PURE__ */ At(!1), y = (e) => {
|
|
12396
|
-
|
|
12647
|
+
lf(e).then((e) => {
|
|
12397
12648
|
e && (v.value = !0, setTimeout(() => {
|
|
12398
12649
|
v.value = !1;
|
|
12399
12650
|
}, 1500));
|
|
@@ -12429,7 +12680,7 @@ function of(e = {}) {
|
|
|
12429
12680
|
e.onClearFocus?.();
|
|
12430
12681
|
}, j = (t) => {
|
|
12431
12682
|
e.onFocusChipClick?.(t);
|
|
12432
|
-
}, M =
|
|
12683
|
+
}, M = pf(e.icons), te = e.locale ?? "zh-CN";
|
|
12433
12684
|
return {
|
|
12434
12685
|
chat: t,
|
|
12435
12686
|
inputText: o,
|
|
@@ -12461,18 +12712,18 @@ function of(e = {}) {
|
|
|
12461
12712
|
focusChipClick: j,
|
|
12462
12713
|
icons: M,
|
|
12463
12714
|
locale: te,
|
|
12464
|
-
messages:
|
|
12715
|
+
messages: gf(te, e.dialogMessages)
|
|
12465
12716
|
};
|
|
12466
12717
|
}
|
|
12467
|
-
function
|
|
12468
|
-
let e = Rn(
|
|
12718
|
+
function yf() {
|
|
12719
|
+
let e = Rn(_f);
|
|
12469
12720
|
if (!e) throw Error("useChatContext 必须在 provide(chatContextKey) 的组件子树内调用");
|
|
12470
12721
|
return e;
|
|
12471
12722
|
}
|
|
12472
12723
|
//#endregion
|
|
12473
12724
|
//#region src/core/index.headless.ts
|
|
12474
|
-
function
|
|
12475
|
-
return
|
|
12725
|
+
function bf(e) {
|
|
12726
|
+
return tf(e);
|
|
12476
12727
|
}
|
|
12477
12728
|
//#endregion
|
|
12478
|
-
export { Rl as CAPABILITIES, Vl as CONTEXT_PRESETS, Qc as CompressDecisionSchema, is as DEFAULT_PROMPT_SOFT_CAP, nc as DEFAULT_SYSTEM_PROMPT, yc as HTML_VOID_TAGS, Ao as HUMAN_CONFIRM_TOOL_NAME, ai as MIN_CONTEXT_WINDOW, rs as SOFT_CAP_MIN_WINDOW, Zo as STOP_WORDS, Aa as UNSAFE_KEYS,
|
|
12729
|
+
export { Rl as CAPABILITIES, Vl as CONTEXT_PRESETS, Qc as CompressDecisionSchema, Wu as DEFAULT_COMPUTED_STYLES, is as DEFAULT_PROMPT_SOFT_CAP, nc as DEFAULT_SYSTEM_PROMPT, yc as HTML_VOID_TAGS, Ao as HUMAN_CONFIRM_TOOL_NAME, ai as MIN_CONTEXT_WINDOW, rs as SOFT_CAP_MIN_WINDOW, Zo as STOP_WORDS, Aa as UNSAFE_KEYS, fd as actionsToInspectInfo, dd as actionsToTools, Qr as agentError, Ys as analyzeContext, Ba as applyPatchToClone, Ua as applyPatchToLive, Zr as asAgentError, Yu as buildCssPath, ic as buildDataPrompt, ac as buildSystemPrompt, _f as chatContextKey, Du as commitSetToBind, tc as connectMcp, m as constructLlmFromConfig, p as constructOpenLlmSync, lf as copyText, Wi as createAgent, ko as createApprovalMiddleware, vf as createChatContext, bf as createChatSdk, Bo as createCheckpointManager, Vo as createCheckpointMiddleware, ul as createConflictManager, Xs as createContextInspectorMiddleware, Fu as createDataOps, Gc as createHtmlFormatCheck, Jc as createHtmlSubagent, No as createHumanConfirmMiddleware, Mo as createHumanConfirmTool, jl as createMemoryBackend, So as createMemoryMiddleware, u as createProxyLlm, cf as createRagSubagent, ao as createSandboxRunner, Bl as createSdkEvents, qd as createSerialRunner, Fl as createSessionStore, Td as createSkillStore, Es as createSubagentMiddleware, us as createSubagentTracker, ks as createSubagentsMiddleware, yd as createUsageHintsMiddleware, As as createVerifyMiddleware, lc as createVfs, Nl as createWebStorageBackend, Is as createWriteBackCheck, Fa as deepClone, hd as defineDataToolset, so as defineSkill, Yc as defineTool, Pa as deleteByPath, $c as deriveTitle, sa as describeSchemaNode, Oi as detectGarbledToolCall, qa as diffObjects, ed as domInfoTool, td as domInspectSkill, $u as domSearchTool, Vu as domToStructure, Uu as domTools, md as domToolsStatic, qu as ensureDomListenerRecorder, $o as estimateMessageTokens, es as estimateRoundTokens, X as estimateTokens, g as extractReasoningDelta, ba as extractSchemaHint, Zs as extractText, h as extractTextDelta, _ as extractUsage, Lu as fetchDocTools, pd as fetchTools, Eu as filterByToolMode, Ka as findStrippedKeys, ca as formatConstraints, qr as formatZodIssues, Z as getByPath, Hu as getDomTool, Qu as getElementInfo, id as getEnvSummary, Ju as getRecordedListeners, Ji as getSchemaAtPath, Gi as getSchemaTopKeys, li as getTraceMetrics, $ as hashValue, ha as htmlOrchestratorPrompt, ts as indexSummarize, sd as inspectEnvTool, cd as inspectTools, el as isChatModel, yi as isContextLengthError, Ki as isPathAllowed, Cl as isQuotaError, ja as isUnsafePath, tu as jpEval, Yr as jsonParseError, Ra as limitDepth, Ia as maybeParseValue, y as normalizeUsage, ci as offloadPassThroughChars, si as offloadThresholdChars, ma as presets, ta as projectBySchema, ea as projectBySchemaDeep, La as projectFields, ns as recallRounds, la as renderSchemaHint, ua as renderSchemaOverview, pa as renderSchemaShallow, zl as resolveCapabilities, Ul as resolveContextOptions, Ll as resolveDialogConfig, ll as resolveLlm, oi as resolveModelCaps, as as resolvePromptSoftCap, Il as resolveStorage, Ga as restoreInPlace, Wa as restoreLive, Xr as routeError, oo as runHostScript, au as runSandboxedScript, Ma as safeMerge, rd as safeSerialize, Q as safeStringify, Xu as searchDom, ru as searchJson, gd as selectBuiltinTools, Na as setByPath, os as shouldTriggerCompression, ga as systemPromptHelpers, Qo as tokenize, Y as toolError, qi as unwrapSchema, df as useChat, yf as useChatContext, xc as validateHtmlFormat, e as z, Jr as zodError };
|