page-agent-sdk 3.23.0 → 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 +885 -617
- package/dist/page-agent-sdk.iife.js +161 -159
- package/dist/page-agent-sdk.js +4109 -3744
- package/dist/page-agent-sdk.umd.cjs +55 -53
- 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 +53 -6
- package/types/index.d.ts +53 -4
|
@@ -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,20 +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
|
-
args: r.call.args
|
|
2826
|
-
|
|
2825
|
+
args: r.call.args,
|
|
2826
|
+
id: r.id
|
|
2827
|
+
}), I("tool_call", {
|
|
2827
2828
|
round: f + 1,
|
|
2828
2829
|
name: r.call.name,
|
|
2829
2830
|
args: r.call.args,
|
|
@@ -2845,14 +2846,15 @@ function Wi(e) {
|
|
|
2845
2846
|
name: r.call.name,
|
|
2846
2847
|
result: o.content,
|
|
2847
2848
|
status: o.status,
|
|
2848
|
-
durationMs: s
|
|
2849
|
-
|
|
2849
|
+
durationMs: s,
|
|
2850
|
+
id: r.id
|
|
2851
|
+
}), I("tool_result", {
|
|
2850
2852
|
round: f + 1,
|
|
2851
2853
|
name: r.call.name,
|
|
2852
2854
|
result: o.content,
|
|
2853
2855
|
status: o.status,
|
|
2854
2856
|
durationMs: s
|
|
2855
|
-
}),
|
|
2857
|
+
}), de(i, o.status === "error" ? "error" : "ok", { resultSnippet: String(o.content).slice(0, 100) }), o;
|
|
2856
2858
|
}, n);
|
|
2857
2859
|
for (let e = 0; e < m.length; e++) {
|
|
2858
2860
|
let t = v[e];
|
|
@@ -2879,19 +2881,19 @@ function Wi(e) {
|
|
|
2879
2881
|
content: h
|
|
2880
2882
|
}), h;
|
|
2881
2883
|
let e = i[i.length - 1];
|
|
2882
|
-
if (e &&
|
|
2883
|
-
let e = i[0] &&
|
|
2884
|
-
|
|
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", {
|
|
2885
2887
|
round: "wrap_up",
|
|
2886
2888
|
model: c,
|
|
2887
2889
|
tools: [],
|
|
2888
|
-
messages:
|
|
2890
|
+
messages: xe(r)
|
|
2889
2891
|
});
|
|
2890
|
-
let a = await Ei(x, (e) =>
|
|
2892
|
+
let a = await Ei(x, (e) => ve(e, t, n, L))({
|
|
2891
2893
|
messages: r,
|
|
2892
|
-
state:
|
|
2894
|
+
state: z
|
|
2893
2895
|
});
|
|
2894
|
-
if (
|
|
2896
|
+
if (z = Ci(x, a, z), I("llm_response", {
|
|
2895
2897
|
round: "wrap_up",
|
|
2896
2898
|
content: a.content
|
|
2897
2899
|
}), a.aborted) return t({
|
|
@@ -2902,7 +2904,7 @@ function Wi(e) {
|
|
|
2902
2904
|
let e = a.content;
|
|
2903
2905
|
if (Oi(e)) {
|
|
2904
2906
|
let n = ki(e);
|
|
2905
|
-
|
|
2907
|
+
I("error", {
|
|
2906
2908
|
stage: "garbled_wrapup",
|
|
2907
2909
|
content: e.slice(0, 200)
|
|
2908
2910
|
}), t({
|
|
@@ -2926,41 +2928,41 @@ function Wi(e) {
|
|
|
2926
2928
|
}), r;
|
|
2927
2929
|
} finally {
|
|
2928
2930
|
try {
|
|
2929
|
-
await wi(x,
|
|
2931
|
+
await wi(x, z);
|
|
2930
2932
|
} catch (e) {
|
|
2931
2933
|
let t = Zr(e, "observable");
|
|
2932
2934
|
console.warn("[Agent] afterAgent 清理出错(observable,已忽略):", t.message);
|
|
2933
2935
|
}
|
|
2934
|
-
if (
|
|
2935
|
-
j(
|
|
2936
|
+
if (le && j) try {
|
|
2937
|
+
j(se.value, li(se.value));
|
|
2936
2938
|
} catch {}
|
|
2937
2939
|
}
|
|
2938
2940
|
}
|
|
2939
|
-
async function
|
|
2941
|
+
async function Ce(e, t, n) {
|
|
2940
2942
|
let r = "";
|
|
2941
|
-
return await
|
|
2943
|
+
return await Se(e, (e) => {
|
|
2942
2944
|
e.type === "done" && (r = e.content), n?.(e);
|
|
2943
2945
|
}, t), r;
|
|
2944
2946
|
}
|
|
2945
|
-
function Ce(e) {
|
|
2946
|
-
de = [...x.flatMap((e) => e.tools || []), ...e], z();
|
|
2947
|
-
}
|
|
2948
2947
|
function we(e) {
|
|
2949
|
-
|
|
2948
|
+
fe = [...x.flatMap((e) => e.tools || []), ...e], R();
|
|
2949
|
+
}
|
|
2950
|
+
function Te(e) {
|
|
2951
|
+
L = e, R(), M?.(e);
|
|
2950
2952
|
}
|
|
2951
2953
|
return {
|
|
2952
|
-
invoke:
|
|
2953
|
-
stream:
|
|
2954
|
-
getState: () =>
|
|
2954
|
+
invoke: Ce,
|
|
2955
|
+
stream: Se,
|
|
2956
|
+
getState: () => z,
|
|
2955
2957
|
get allTools() {
|
|
2956
|
-
return
|
|
2958
|
+
return fe;
|
|
2957
2959
|
},
|
|
2958
|
-
setTools:
|
|
2959
|
-
setLlm:
|
|
2960
|
+
setTools: we,
|
|
2961
|
+
setLlm: Te,
|
|
2960
2962
|
setModelCaps: F,
|
|
2961
|
-
debugLogs:
|
|
2962
|
-
spans:
|
|
2963
|
-
getEffectiveSystemPrompt: () =>
|
|
2963
|
+
debugLogs: ae,
|
|
2964
|
+
spans: se,
|
|
2965
|
+
getEffectiveSystemPrompt: () => B()
|
|
2964
2966
|
};
|
|
2965
2967
|
}
|
|
2966
2968
|
//#endregion
|
|
@@ -5050,31 +5052,33 @@ function Es(e) {
|
|
|
5050
5052
|
signal: i,
|
|
5051
5053
|
emit: a,
|
|
5052
5054
|
logSink: o
|
|
5053
|
-
}, c = (t, n, r) => (
|
|
5054
|
-
if (
|
|
5055
|
-
|
|
5055
|
+
}, c = (t, n, r, i) => (a) => {
|
|
5056
|
+
if (a.type === "reasoning") {
|
|
5057
|
+
i?.({
|
|
5056
5058
|
type: "subagent",
|
|
5057
5059
|
taskId: t,
|
|
5058
5060
|
label: n,
|
|
5059
5061
|
kind: "reasoning",
|
|
5060
5062
|
name: "",
|
|
5061
|
-
delta:
|
|
5063
|
+
delta: a.delta,
|
|
5064
|
+
toolCallId: r
|
|
5062
5065
|
});
|
|
5063
5066
|
return;
|
|
5064
5067
|
}
|
|
5065
5068
|
e.tracker?.pushStep(t, {
|
|
5066
|
-
kind:
|
|
5067
|
-
name:
|
|
5069
|
+
kind: a.type,
|
|
5070
|
+
name: a.name,
|
|
5068
5071
|
ts: Date.now()
|
|
5069
|
-
}),
|
|
5072
|
+
}), i && i({
|
|
5070
5073
|
type: "subagent",
|
|
5071
5074
|
taskId: t,
|
|
5072
5075
|
label: n,
|
|
5073
|
-
kind:
|
|
5074
|
-
name:
|
|
5075
|
-
args:
|
|
5076
|
-
result:
|
|
5077
|
-
status:
|
|
5076
|
+
kind: a.type,
|
|
5077
|
+
name: a.name,
|
|
5078
|
+
args: a.type === "tool_call" ? a.args : void 0,
|
|
5079
|
+
result: a.type === "tool_result" ? a.result : void 0,
|
|
5080
|
+
status: a.type === "tool_result" ? a.status : void 0,
|
|
5081
|
+
toolCallId: r
|
|
5078
5082
|
});
|
|
5079
5083
|
};
|
|
5080
5084
|
return {
|
|
@@ -5094,7 +5098,7 @@ function Es(e) {
|
|
|
5094
5098
|
prompt: t,
|
|
5095
5099
|
role: n,
|
|
5096
5100
|
model: a
|
|
5097
|
-
}, d, l.signal, c(f, p, l.emit), m, l.emit);
|
|
5101
|
+
}, d, l.signal, c(f, p, l.toolCallId, l.emit), m, l.emit);
|
|
5098
5102
|
return e.tracker?.finish(f, "done", r), r;
|
|
5099
5103
|
} catch (t) {
|
|
5100
5104
|
throw e.tracker?.finish(f, "error", String(t?.message ?? t)), t;
|
|
@@ -5118,7 +5122,7 @@ function Es(e) {
|
|
|
5118
5122
|
}), s = Date.now();
|
|
5119
5123
|
e.tracker?.start(r, t.prompt, a, s);
|
|
5120
5124
|
try {
|
|
5121
|
-
let n = await Ts(t, e, i.signal, c(r, a, i.emit), o, i.emit);
|
|
5125
|
+
let n = await Ts(t, e, i.signal, c(r, a, i.toolCallId, i.emit), o, i.emit);
|
|
5122
5126
|
return e.tracker?.finish(r, "done", n ?? "(未完成)"), {
|
|
5123
5127
|
ok: !0,
|
|
5124
5128
|
text: n ?? "(未完成)"
|
|
@@ -5144,7 +5148,8 @@ function Es(e) {
|
|
|
5144
5148
|
__pgSubagentCall: {
|
|
5145
5149
|
signal: e.signal ?? i,
|
|
5146
5150
|
emit: e.emit ?? a,
|
|
5147
|
-
logSink: e.logSink ?? o
|
|
5151
|
+
logSink: e.logSink ?? o,
|
|
5152
|
+
toolCallId: e.id
|
|
5148
5153
|
}
|
|
5149
5154
|
}, t(e))
|
|
5150
5155
|
};
|
|
@@ -5183,27 +5188,29 @@ function ks(e, n) {
|
|
|
5183
5188
|
signal: i,
|
|
5184
5189
|
emit: a,
|
|
5185
5190
|
logSink: o
|
|
5186
|
-
}, c = (e, t, n) => (
|
|
5187
|
-
if (
|
|
5188
|
-
|
|
5191
|
+
}, c = (e, t, n, r) => (i) => {
|
|
5192
|
+
if (i.type === "reasoning") {
|
|
5193
|
+
r?.({
|
|
5189
5194
|
type: "subagent",
|
|
5190
5195
|
taskId: e,
|
|
5191
5196
|
label: t,
|
|
5192
5197
|
kind: "reasoning",
|
|
5193
5198
|
name: "",
|
|
5194
|
-
delta:
|
|
5199
|
+
delta: i.delta,
|
|
5200
|
+
toolCallId: n
|
|
5195
5201
|
});
|
|
5196
5202
|
return;
|
|
5197
5203
|
}
|
|
5198
|
-
|
|
5204
|
+
r && r({
|
|
5199
5205
|
type: "subagent",
|
|
5200
5206
|
taskId: e,
|
|
5201
5207
|
label: t,
|
|
5202
|
-
kind:
|
|
5203
|
-
name:
|
|
5204
|
-
args:
|
|
5205
|
-
result:
|
|
5206
|
-
status:
|
|
5208
|
+
kind: i.type,
|
|
5209
|
+
name: i.name,
|
|
5210
|
+
args: i.type === "tool_call" ? i.args : void 0,
|
|
5211
|
+
result: i.type === "tool_result" ? i.result : void 0,
|
|
5212
|
+
status: i.type === "tool_result" ? i.status : void 0,
|
|
5213
|
+
toolCallId: n
|
|
5207
5214
|
});
|
|
5208
5215
|
}, l = [], u = [], d;
|
|
5209
5216
|
function f(e) {
|
|
@@ -5241,7 +5248,7 @@ function ks(e, n) {
|
|
|
5241
5248
|
if (!e.ok) return g("conflict", { heldBy: e.heldBy }), `COMPONENT_BUSY · 组件 [${h.join(", ")}] 正在被子 agent(${e.heldBy})修改,本次委派未执行。同一组件同一时间只能有一个委派在途;请先做其他组件,或等该委派结束后(下一轮)再重试本组件。`;
|
|
5242
5249
|
m = e.release, g("acquire");
|
|
5243
5250
|
}
|
|
5244
|
-
let _ = c(`use_${l.id}`, l.id, i.emit), v = u ? (e) => {
|
|
5251
|
+
let _ = c(`use_${l.id}`, l.id, i.toolCallId, i.emit), v = u ? (e) => {
|
|
5245
5252
|
e.type !== "reasoning" && u.pushStep(d, {
|
|
5246
5253
|
kind: e.type,
|
|
5247
5254
|
name: e.name,
|
|
@@ -5307,7 +5314,8 @@ function ks(e, n) {
|
|
|
5307
5314
|
__pgSubagentCall: {
|
|
5308
5315
|
signal: e.signal ?? i,
|
|
5309
5316
|
emit: e.emit ?? a,
|
|
5310
|
-
logSink: e.logSink ?? o
|
|
5317
|
+
logSink: e.logSink ?? o,
|
|
5318
|
+
toolCallId: e.id
|
|
5311
5319
|
}
|
|
5312
5320
|
}, t(e))
|
|
5313
5321
|
};
|
|
@@ -6645,6 +6653,7 @@ ${`- 输出形态:完整、自包含的 HTML 页面(.${r},可独立成页)`}
|
|
|
6645
6653
|
5. 生成/修改完成后必须调 validate_code 自检(结构合法性:标签闭合),报错用 vfs_edit 修正后复查,直到通过;
|
|
6646
6654
|
6. 最后 read(vfs + data)确认结构正确;只写 writablePaths 内 data + ${e} 下 vfs;
|
|
6647
6655
|
7. **简洁思考(硬约束,违反致超时/巨量 token)**:
|
|
6656
|
+
- **优先级总纲**:以下纪律是默认基调;**task 明确要求深入设计时,可在 task 限定的决策点上**放宽「方案探索上限」至 2~3 个(结构性取舍:性能/架构/降级);**底线不放宽** —— 装饰不穷举 / 不手算实现细节 / 不在思考里写代码草稿 / 终稿一次写成,任何 task 都不变。
|
|
6648
6657
|
- **写前简述(先定方向)**:写代码前先用 1-2 句简述方案(结构 + 关键技术选择,如「啤酒杯用 SVG,倒酒用 CSS animation 循环 2s」)→ 再直接实现。简述即定方向,实现时照做,不再反复权衡其他写法。
|
|
6649
6658
|
- **方案探索上限**:任何子问题**最多考虑 2 个方案**,选定即写代码;**禁止逐个推演 3+ 个编号方案**(如「方案1…方案12」穷举式探索)。复杂 CSS 交互(轮播/动画/手风琴等)直接用**已知成熟模式**(radio hack + keyframes / scroll-snap 等),不在思考里反复探索可行性边界 —— 选一个写,不行再 validate 后调。
|
|
6650
6659
|
- **视觉装饰效果不穷举(常见超时元凶)**:锯齿/撕边/打孔/异形/复杂渐变等**纯装饰**,选第一个想到的简单实现直接写代码(锯齿 repeating-linear-gradient 一行、打孔 radial-gradient 一行、异形 clip-path 一句),**禁止在思考里对比 linear-gradient / conic-gradient / radial-gradient / clip-path 多方案并逐个分析视觉差异** —— 装饰差异微小不值得多方案;写完看效果,不满意再调一处。真实复盘:子 agent 曾为「优惠券撕边」对比 4+ 渐变方案耗数千 token 致整页超时。
|
|
@@ -9091,7 +9100,7 @@ function Fu(e, n = {}) {
|
|
|
9091
9100
|
})
|
|
9092
9101
|
});
|
|
9093
9102
|
A(F, (e) => e?.mode === "transform");
|
|
9094
|
-
let
|
|
9103
|
+
let ae = r(async ({ jsonPath: e, jsonPaths: t, fields: r, depth: i, offset: a, limit: u }, d) => {
|
|
9095
9104
|
let f = v(d), m = $(s);
|
|
9096
9105
|
if (t && t.length) {
|
|
9097
9106
|
let e = !1, a = t.map((t) => {
|
|
@@ -9168,7 +9177,7 @@ function Fu(e, n = {}) {
|
|
|
9168
9177
|
offset: t.number().int().min(0).optional().describe("数组分页起始偏移(仅当读取目标是数组时生效,默认 0),配合 limit 分页读大数组"),
|
|
9169
9178
|
limit: t.number().int().min(1).max(200).optional().describe("数组分页每页条数(默认 50,上限 200;仅数组时生效),返回切片 + total/hasMore")
|
|
9170
9179
|
})
|
|
9171
|
-
}),
|
|
9180
|
+
}), I = r(async ({ value: e, patch: t, patches: r, del: i, dryRun: c }, u) => {
|
|
9172
9181
|
let d = v(u), f = "set";
|
|
9173
9182
|
i ? f = "delete" : (r && r.length || t) && (f = "edit");
|
|
9174
9183
|
let g = t?.value === void 0 ? e : t.value, _;
|
|
@@ -9328,8 +9337,8 @@ function Fu(e, n = {}) {
|
|
|
9328
9337
|
dryRun: t.boolean().optional().describe("预检模式:走完整校验链(schema + 白名单 + patch 应用到 clone)但不落盘、不入快照,返回预览。四意图(value/patch/patches/del)均支持;乐观锁冲突照常检测(返回 VERSION_CONFLICT 不挂起)")
|
|
9329
9338
|
})
|
|
9330
9339
|
});
|
|
9331
|
-
A(
|
|
9332
|
-
let
|
|
9340
|
+
A(I);
|
|
9341
|
+
let oe = r(async ({ jsonPath: e }) => {
|
|
9333
9342
|
let t = e || "", n = t ? Ji(o, t) : o;
|
|
9334
9343
|
return n ? `schema${t ? ` @ ${t}` : ""} = ${Q(sa(n))}` : Y({
|
|
9335
9344
|
code: "PATH_DENIED",
|
|
@@ -9340,7 +9349,7 @@ function Fu(e, n = {}) {
|
|
|
9340
9349
|
name: "schema_data",
|
|
9341
9350
|
description: "查看主数据(或子路径)的字段约束:类型/min/max/enum/必填/默认值/嵌套 shape。写前查约束,避免写错重试。不传 jsonPath 查根;传子路径(如 components.0)查该位置约束。",
|
|
9342
9351
|
schema: t.object({ jsonPath: t.string().optional().describe("要查约束的子路径;不传查根 schema") })
|
|
9343
|
-
}),
|
|
9352
|
+
}), se = r(async ({ snapshotId: e, against: t }) => {
|
|
9344
9353
|
let n = t != null, r, i;
|
|
9345
9354
|
if (n) {
|
|
9346
9355
|
let e = t;
|
|
@@ -9372,7 +9381,7 @@ function Fu(e, n = {}) {
|
|
|
9372
9381
|
snapshotId: t.number().int().optional().describe("对比的快照序号;不传则最近一次"),
|
|
9373
9382
|
against: t.unknown().optional().describe("对比的一段 JSON 值(与 snapshotId 互斥;传则忽略快照)")
|
|
9374
9383
|
})
|
|
9375
|
-
}),
|
|
9384
|
+
}), ce = [];
|
|
9376
9385
|
if (n.vfsStore) {
|
|
9377
9386
|
let e = n.vfsStore, i = (e) => `drafts/${e}.json`, c = r(({ draftId: t, chunk: n, mode: r }) => {
|
|
9378
9387
|
let a = i(t), o = e.files[a], s = r === "append" && o, c = s ? o.content + n : n;
|
|
@@ -9437,9 +9446,9 @@ function Fu(e, n = {}) {
|
|
|
9437
9446
|
expectedHash: t.string().optional().describe("乐观锁:改前 read/get 返回的 hash;传入则校验,不一致拒绝写入防覆盖。不传则自动用你最后读到的 hash(autoLock)")
|
|
9438
9447
|
})
|
|
9439
9448
|
});
|
|
9440
|
-
A(u),
|
|
9449
|
+
A(u), ce.push(c, u);
|
|
9441
9450
|
}
|
|
9442
|
-
let
|
|
9451
|
+
let le = [];
|
|
9443
9452
|
if (e.resources?.length && d) {
|
|
9444
9453
|
let e = r(async ({ path: e, handle: t }) => {
|
|
9445
9454
|
let n = e;
|
|
@@ -9543,9 +9552,9 @@ function Fu(e, n = {}) {
|
|
|
9543
9552
|
handle: t.string().optional().describe("占位符句柄(与 path 二选一)")
|
|
9544
9553
|
})
|
|
9545
9554
|
});
|
|
9546
|
-
A(a),
|
|
9555
|
+
A(a), le.push(e, n, i, a);
|
|
9547
9556
|
}
|
|
9548
|
-
let
|
|
9557
|
+
let ue = [
|
|
9549
9558
|
ee,
|
|
9550
9559
|
j,
|
|
9551
9560
|
M,
|
|
@@ -9556,25 +9565,25 @@ function Fu(e, n = {}) {
|
|
|
9556
9565
|
re,
|
|
9557
9566
|
ie,
|
|
9558
9567
|
F,
|
|
9559
|
-
I,
|
|
9560
|
-
L,
|
|
9561
9568
|
ae,
|
|
9569
|
+
I,
|
|
9562
9570
|
oe,
|
|
9563
|
-
|
|
9564
|
-
...ce
|
|
9571
|
+
se,
|
|
9572
|
+
...ce,
|
|
9573
|
+
...le
|
|
9565
9574
|
];
|
|
9566
|
-
Object.defineProperty(
|
|
9575
|
+
Object.defineProperty(ue, "controller", {
|
|
9567
9576
|
value: E,
|
|
9568
9577
|
enumerable: !1,
|
|
9569
9578
|
configurable: !1,
|
|
9570
9579
|
writable: !1
|
|
9571
9580
|
});
|
|
9572
|
-
for (let e of
|
|
9581
|
+
for (let e of ue) Object.defineProperty(e, "__dataOpsScoped", {
|
|
9573
9582
|
value: !0,
|
|
9574
9583
|
enumerable: !1,
|
|
9575
9584
|
configurable: !1
|
|
9576
9585
|
});
|
|
9577
|
-
return
|
|
9586
|
+
return ue;
|
|
9578
9587
|
}
|
|
9579
9588
|
//#endregion
|
|
9580
9589
|
//#region src/core/tools/fetchDoc.ts
|
|
@@ -9658,14 +9667,233 @@ var Hu = r(({ selector: e, depth: t, attrs: n, includeText: r }) => {
|
|
|
9658
9667
|
attrs: t.array(t.string()).optional().describe("属性白名单(传了 = 严格白名单;不传 = 默认常用 + data-*)"),
|
|
9659
9668
|
includeText: t.boolean().optional().describe("是否包含直接文本(默认 true)")
|
|
9660
9669
|
})
|
|
9661
|
-
}), 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
|
+
};
|
|
9662
9890
|
//#endregion
|
|
9663
9891
|
//#region src/core/tools/envTool.ts
|
|
9664
|
-
function
|
|
9892
|
+
function nd(e) {
|
|
9665
9893
|
let t = e;
|
|
9666
9894
|
return typeof t.tagName == "string" || typeof t.nodeType == "number" && typeof t.nodeName == "string";
|
|
9667
9895
|
}
|
|
9668
|
-
function
|
|
9896
|
+
function rd(e, t = 3, n = 2e3, r, i) {
|
|
9669
9897
|
if (e == null) return e;
|
|
9670
9898
|
if (typeof e == "string") return e.length > n ? e.slice(0, n) + "…(已截断)" : e;
|
|
9671
9899
|
if (typeof e == "number" || typeof e == "boolean") return e;
|
|
@@ -9674,14 +9902,14 @@ function Gu(e, t = 3, n = 2e3, r, i) {
|
|
|
9674
9902
|
if (typeof e == "bigint") return `${e.toString()}n`;
|
|
9675
9903
|
if (typeof e != "object") return String(e);
|
|
9676
9904
|
let a = e;
|
|
9677
|
-
if (
|
|
9905
|
+
if (nd(a)) {
|
|
9678
9906
|
let e = a;
|
|
9679
9907
|
return e.tagName ? `[Element: <${e.tagName.toLowerCase()}>]` : `[Node: ${e.nodeName}]`;
|
|
9680
9908
|
}
|
|
9681
9909
|
if (r?.has(a)) return "[Circular]";
|
|
9682
9910
|
let o = r ?? /* @__PURE__ */ new WeakSet();
|
|
9683
9911
|
if (o.add(a), Array.isArray(e)) {
|
|
9684
|
-
let r = e.slice(0, 100).map((e) =>
|
|
9912
|
+
let r = e.slice(0, 100).map((e) => rd(e, t - 1, n, o, i));
|
|
9685
9913
|
return e.length > 100 && r.push(`…(共 ${e.length} 项,已截断)`), r;
|
|
9686
9914
|
}
|
|
9687
9915
|
if (t < 0) return "(对象,已截断)";
|
|
@@ -9694,14 +9922,14 @@ function Gu(e, t = 3, n = 2e3, r, i) {
|
|
|
9694
9922
|
}
|
|
9695
9923
|
try {
|
|
9696
9924
|
let e = a[r];
|
|
9697
|
-
i?.test(r) ? s[r] = "[REDACTED]" : s[r] =
|
|
9925
|
+
i?.test(r) ? s[r] = "[REDACTED]" : s[r] = rd(e, t - 1, n, o, i);
|
|
9698
9926
|
} catch {
|
|
9699
9927
|
s[r] = "(getter 抛错)";
|
|
9700
9928
|
}
|
|
9701
9929
|
}
|
|
9702
9930
|
return s;
|
|
9703
9931
|
}
|
|
9704
|
-
function
|
|
9932
|
+
function id(e) {
|
|
9705
9933
|
let t = e ?? (typeof window < "u" ? window : {}), n = t.navigator, r = t.location, i = t.document;
|
|
9706
9934
|
return {
|
|
9707
9935
|
location: {
|
|
@@ -9734,9 +9962,9 @@ function Ku(e) {
|
|
|
9734
9962
|
} : "(无 document)"
|
|
9735
9963
|
};
|
|
9736
9964
|
}
|
|
9737
|
-
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 }) => {
|
|
9738
9966
|
if (e) {
|
|
9739
|
-
if (
|
|
9967
|
+
if (ad.test(e) || od.test(e)) return JSON.stringify({
|
|
9740
9968
|
key: e,
|
|
9741
9969
|
denied: !0,
|
|
9742
9970
|
reason: "安全:该 key 在 denylist(localStorage/sessionStorage/cookie/document 或敏感命名 token/secret/key/auth),不读取防泄漏"
|
|
@@ -9746,18 +9974,18 @@ var qu = /^(localStorage|sessionStorage|cookie|document|frames|frameElement|open
|
|
|
9746
9974
|
key: e,
|
|
9747
9975
|
exists: t !== void 0,
|
|
9748
9976
|
type: typeof t,
|
|
9749
|
-
value:
|
|
9977
|
+
value: rd(t, 3, 2e3, void 0, od)
|
|
9750
9978
|
}, null, 2);
|
|
9751
9979
|
}
|
|
9752
|
-
return JSON.stringify(
|
|
9980
|
+
return JSON.stringify(id(), null, 2);
|
|
9753
9981
|
}, {
|
|
9754
9982
|
name: "inspect_env",
|
|
9755
9983
|
description: "读宿主页面环境信息(排查调试)。不传参返回摘要(URL/origin、浏览器/语言、viewport、title/readyState);传 key 读指定 window 属性值(如 key:\"appConfig\")。只读,大结果自动外存 vfs。",
|
|
9756
9984
|
schema: t.object({ key: t.string().optional().describe("要读取的 window 属性名(如 \"appConfig\"/\"__DEBUG__\");不传 = 返回环境摘要") })
|
|
9757
|
-
}),
|
|
9985
|
+
}), cd = [sd];
|
|
9758
9986
|
//#endregion
|
|
9759
9987
|
//#region src/core/harness/budget.ts
|
|
9760
|
-
function
|
|
9988
|
+
function ld(e, t, n) {
|
|
9761
9989
|
let r = 0;
|
|
9762
9990
|
return {
|
|
9763
9991
|
name: "budget",
|
|
@@ -9782,12 +10010,12 @@ function Zu(e, t, n) {
|
|
|
9782
10010
|
}
|
|
9783
10011
|
//#endregion
|
|
9784
10012
|
//#region src/core/sdk/actions.ts
|
|
9785
|
-
var
|
|
9786
|
-
function
|
|
10013
|
+
var ud = /^[a-zA-Z][a-zA-Z0-9_]*$/;
|
|
10014
|
+
function dd(e) {
|
|
9787
10015
|
let n = [];
|
|
9788
10016
|
for (let [i, a] of Object.entries(e)) {
|
|
9789
|
-
if (!
|
|
9790
|
-
console.warn(`[page-agent-sdk][actions] 动作名 "${i}" 非法(须匹配 ${
|
|
10017
|
+
if (!ud.test(i)) {
|
|
10018
|
+
console.warn(`[page-agent-sdk][actions] 动作名 "${i}" 非法(须匹配 ${ud}),已跳过`);
|
|
9791
10019
|
continue;
|
|
9792
10020
|
}
|
|
9793
10021
|
let e = a.description || `宿主动作 ${i}`;
|
|
@@ -9807,9 +10035,9 @@ function $u(e) {
|
|
|
9807
10035
|
}
|
|
9808
10036
|
return n;
|
|
9809
10037
|
}
|
|
9810
|
-
function
|
|
10038
|
+
function fd(e) {
|
|
9811
10039
|
let t = {};
|
|
9812
|
-
for (let [n, r] of Object.entries(e))
|
|
10040
|
+
for (let [n, r] of Object.entries(e)) ud.test(n) && (t[n] = {
|
|
9813
10041
|
description: r.description,
|
|
9814
10042
|
hasParams: !!r.params
|
|
9815
10043
|
});
|
|
@@ -9817,11 +10045,11 @@ function ed(e) {
|
|
|
9817
10045
|
}
|
|
9818
10046
|
//#endregion
|
|
9819
10047
|
//#region src/core/toolsets.ts
|
|
9820
|
-
var
|
|
9821
|
-
function
|
|
10048
|
+
var pd = Lu, md = Uu;
|
|
10049
|
+
function hd(e, t) {
|
|
9822
10050
|
return Fu(e, t);
|
|
9823
10051
|
}
|
|
9824
|
-
function
|
|
10052
|
+
function gd(e, t, n, r, i) {
|
|
9825
10053
|
let a = zl(e);
|
|
9826
10054
|
return [
|
|
9827
10055
|
...a.dataOps ? t : [],
|
|
@@ -9832,7 +10060,7 @@ function id(e, t, n, r, i) {
|
|
|
9832
10060
|
}
|
|
9833
10061
|
//#endregion
|
|
9834
10062
|
//#region src/core/sdk/toolRegistry.ts
|
|
9835
|
-
function
|
|
10063
|
+
function _d(e) {
|
|
9836
10064
|
let t = /* @__PURE__ */ new Map(), n = [];
|
|
9837
10065
|
for (let r of e) for (let e of r.tools) {
|
|
9838
10066
|
let i = t.get(e.name);
|
|
@@ -9852,15 +10080,15 @@ function ad(e) {
|
|
|
9852
10080
|
}
|
|
9853
10081
|
//#endregion
|
|
9854
10082
|
//#region src/core/harness/usageHints.ts
|
|
9855
|
-
var
|
|
9856
|
-
function
|
|
10083
|
+
var vd = .7;
|
|
10084
|
+
function yd(e, t, n = "simple", r, i) {
|
|
9857
10085
|
let a = zl(e), o = n !== "advanced", s = n === "minimal";
|
|
9858
10086
|
return {
|
|
9859
10087
|
name: "usageHints",
|
|
9860
10088
|
augmentPrompt: (n) => {
|
|
9861
10089
|
let r = [];
|
|
9862
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) {
|
|
9863
|
-
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));
|
|
9864
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(" · 简单/明确任务(如\"标题改红色\")直接执行,不必走规划-反思。");
|
|
9865
10093
|
}
|
|
9866
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("用户在选项里选了哪个,就按那个方案继续;选「拒绝」则停止并询问如何调整。"));
|
|
@@ -9880,7 +10108,7 @@ function sd(e, t, n = "simple", r, i) {
|
|
|
9880
10108
|
}
|
|
9881
10109
|
//#endregion
|
|
9882
10110
|
//#region src/core/harness/resourcesPin.ts
|
|
9883
|
-
function
|
|
10111
|
+
function bd(e) {
|
|
9884
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 懒注册。";
|
|
9885
10113
|
return {
|
|
9886
10114
|
name: "resourcesPin",
|
|
@@ -9895,15 +10123,15 @@ function cd(e) {
|
|
|
9895
10123
|
}
|
|
9896
10124
|
//#endregion
|
|
9897
10125
|
//#region src/core/backends/skillStore.ts
|
|
9898
|
-
var
|
|
9899
|
-
function
|
|
9900
|
-
return `${
|
|
10126
|
+
var xd = "v:1::skill-store", Sd = "chat-sdk";
|
|
10127
|
+
function Cd(e, t, n) {
|
|
10128
|
+
return `${xd}::${e}::${t}::${n}`;
|
|
9901
10129
|
}
|
|
9902
|
-
function
|
|
9903
|
-
return `${
|
|
10130
|
+
function wd(e, t) {
|
|
10131
|
+
return `${xd}::${e}::${t}::`;
|
|
9904
10132
|
}
|
|
9905
|
-
function
|
|
9906
|
-
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) => {
|
|
9907
10135
|
a = e;
|
|
9908
10136
|
});
|
|
9909
10137
|
return (async () => {
|
|
@@ -9925,51 +10153,51 @@ function pd(e = {}) {
|
|
|
9925
10153
|
ready: o,
|
|
9926
10154
|
async list() {
|
|
9927
10155
|
let e = [];
|
|
9928
|
-
return await i.scan(
|
|
10156
|
+
return await i.scan(wd(t, r), (t, n) => {
|
|
9929
10157
|
e.push(n);
|
|
9930
10158
|
}), e;
|
|
9931
10159
|
},
|
|
9932
10160
|
async get(e) {
|
|
9933
|
-
return await i.get(
|
|
10161
|
+
return await i.get(Cd(t, r, e));
|
|
9934
10162
|
},
|
|
9935
10163
|
async put(e) {
|
|
9936
10164
|
try {
|
|
9937
|
-
await i.set(
|
|
10165
|
+
await i.set(Cd(t, r, e.name), e);
|
|
9938
10166
|
} catch (e) {
|
|
9939
10167
|
Cl(e) && (i = jl());
|
|
9940
10168
|
}
|
|
9941
10169
|
},
|
|
9942
10170
|
async remove(e) {
|
|
9943
|
-
let n =
|
|
10171
|
+
let n = Cd(t, r, e);
|
|
9944
10172
|
return await i.get(n) == null ? !1 : (await i.del(n), !0);
|
|
9945
10173
|
},
|
|
9946
10174
|
async clear() {
|
|
9947
|
-
await i.clearPrefix(
|
|
10175
|
+
await i.clearPrefix(wd(t, r));
|
|
9948
10176
|
},
|
|
9949
10177
|
dispose() {}
|
|
9950
10178
|
};
|
|
9951
10179
|
}
|
|
9952
10180
|
//#endregion
|
|
9953
10181
|
//#region src/core/backends/preferenceStore.ts
|
|
9954
|
-
var
|
|
10182
|
+
var Ed = [
|
|
9955
10183
|
"color",
|
|
9956
10184
|
"copy",
|
|
9957
10185
|
"layout",
|
|
9958
10186
|
"interaction",
|
|
9959
10187
|
"tech",
|
|
9960
10188
|
"other"
|
|
9961
|
-
],
|
|
9962
|
-
function
|
|
9963
|
-
return `${
|
|
10189
|
+
], Dd = "v:1::pref-store", Od = "chat-sdk";
|
|
10190
|
+
function kd(e, t, n) {
|
|
10191
|
+
return `${Dd}::${e}::${t}::${n}`;
|
|
9964
10192
|
}
|
|
9965
|
-
function
|
|
9966
|
-
return `${
|
|
10193
|
+
function Ad(e, t) {
|
|
10194
|
+
return `${Dd}::${e}::${t}::`;
|
|
9967
10195
|
}
|
|
9968
|
-
function
|
|
10196
|
+
function jd() {
|
|
9969
10197
|
return `pref-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
|
|
9970
10198
|
}
|
|
9971
|
-
function
|
|
9972
|
-
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) => {
|
|
9973
10201
|
o = e;
|
|
9974
10202
|
});
|
|
9975
10203
|
(async () => {
|
|
@@ -9990,7 +10218,7 @@ function bd(e = {}) {
|
|
|
9990
10218
|
})();
|
|
9991
10219
|
async function c() {
|
|
9992
10220
|
let e = [];
|
|
9993
|
-
return await a.scan(
|
|
10221
|
+
return await a.scan(Ad(t, r), (t, n) => {
|
|
9994
10222
|
e.push(n);
|
|
9995
10223
|
}), e;
|
|
9996
10224
|
}
|
|
@@ -10001,7 +10229,7 @@ function bd(e = {}) {
|
|
|
10001
10229
|
},
|
|
10002
10230
|
async put(e) {
|
|
10003
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 = {
|
|
10004
|
-
id: e.id ?? l?.id ??
|
|
10232
|
+
id: e.id ?? l?.id ?? jd(),
|
|
10005
10233
|
content: e.content,
|
|
10006
10234
|
topic: e.topic,
|
|
10007
10235
|
sourceSessionId: l?.sourceSessionId ?? e.sourceSessionId,
|
|
@@ -10009,71 +10237,71 @@ function bd(e = {}) {
|
|
|
10009
10237
|
createdAt: l?.createdAt ?? o,
|
|
10010
10238
|
updatedAt: Math.max(o, s + 1)
|
|
10011
10239
|
};
|
|
10012
|
-
l && l.id !== u.id && await a.del(
|
|
10240
|
+
l && l.id !== u.id && await a.del(kd(t, r, l.id));
|
|
10013
10241
|
try {
|
|
10014
|
-
await a.set(
|
|
10242
|
+
await a.set(kd(t, r, u.id), u);
|
|
10015
10243
|
} catch (e) {
|
|
10016
|
-
Cl(e) && (a = jl(), await a.set(
|
|
10244
|
+
Cl(e) && (a = jl(), await a.set(kd(t, r, u.id), u));
|
|
10017
10245
|
}
|
|
10018
10246
|
let d = await c();
|
|
10019
10247
|
if (d.length > i) {
|
|
10020
10248
|
let e = d.sort((e, t) => e.updatedAt - t.updatedAt).slice(0, d.length - i);
|
|
10021
|
-
for (let n of e) await a.del(
|
|
10249
|
+
for (let n of e) await a.del(kd(t, r, n.id));
|
|
10022
10250
|
}
|
|
10023
10251
|
return u;
|
|
10024
10252
|
},
|
|
10025
10253
|
async remove(e) {
|
|
10026
|
-
let n =
|
|
10254
|
+
let n = kd(t, r, e);
|
|
10027
10255
|
return await a.get(n) == null ? !1 : (await a.del(n), !0);
|
|
10028
10256
|
},
|
|
10029
10257
|
async clear() {
|
|
10030
|
-
await a.clearPrefix(
|
|
10258
|
+
await a.clearPrefix(Ad(t, r));
|
|
10031
10259
|
},
|
|
10032
10260
|
dispose() {}
|
|
10033
10261
|
};
|
|
10034
10262
|
}
|
|
10035
10263
|
//#endregion
|
|
10036
10264
|
//#region src/core/harness/preferences.ts
|
|
10037
|
-
var
|
|
10265
|
+
var Nd = {
|
|
10038
10266
|
color: "颜色",
|
|
10039
10267
|
copy: "文案",
|
|
10040
10268
|
layout: "排版",
|
|
10041
10269
|
interaction: "交互",
|
|
10042
10270
|
tech: "技术",
|
|
10043
10271
|
other: "其他"
|
|
10044
|
-
},
|
|
10272
|
+
}, Pd = [
|
|
10045
10273
|
/^(?:请|帮我|麻烦)?你?记住[::,,、]?\s*(.{4,200})/,
|
|
10046
10274
|
/^(?:从)?今后(?:开始|起)?[::,,]?\s*(.{4,200})/,
|
|
10047
10275
|
/^以后(?:都|全都|总是|尽量)?[::,,]?\s*(.{4,200})/
|
|
10048
|
-
],
|
|
10276
|
+
], Fd = /(?:不要|别再|别用|别加|太(?:艳|花|亮|暗|大|小|密|挤|乱|复杂|素|少)|不喜欢|讨厌|希望|更喜欢|偏好|永远|一律|统一保持|保持统一)/, Id = [
|
|
10049
10277
|
["layout", /布局|排版|间距|留白|密度|居中|对齐|栅格|边距|紧凑|圆角|分栏|层级|大小|尺寸/],
|
|
10050
10278
|
["copy", /文案|文字|标题|副标题|字体|字号|措辞|语气|口语|书面|简洁|简短|详尽|emoji|表情/],
|
|
10051
10279
|
["interaction", /动画|动效|过渡|交互|悬停|hover|点击反馈|弹窗|提示|加载|滚动/],
|
|
10052
10280
|
["tech", /代码|框架|组件|技术|写法|命名|注释|依赖|版本|接口/],
|
|
10053
10281
|
["color", /颜色|配色|色调|色彩|深色|浅色|饱和|渐变|紫|红|橙|黄|绿|青|蓝|粉|棕|灰|黑|白|金|银/]
|
|
10054
10282
|
];
|
|
10055
|
-
function
|
|
10056
|
-
for (let [t, n] of
|
|
10283
|
+
function Ld(e) {
|
|
10284
|
+
for (let [t, n] of Id) if (n.test(e)) return t;
|
|
10057
10285
|
return "other";
|
|
10058
10286
|
}
|
|
10059
|
-
function
|
|
10287
|
+
function Rd(e) {
|
|
10060
10288
|
let t = e.trim();
|
|
10061
|
-
if (!(!t || t.length > 500)) for (let e of
|
|
10289
|
+
if (!(!t || t.length > 500)) for (let e of Pd) {
|
|
10062
10290
|
let n = t.match(e);
|
|
10063
10291
|
if (n?.[1]) {
|
|
10064
10292
|
let e = n[1].trim().replace(/[。.!!]+$/, "");
|
|
10065
10293
|
return e.length < 3 ? void 0 : {
|
|
10066
10294
|
content: e,
|
|
10067
|
-
topic:
|
|
10295
|
+
topic: Ld(e)
|
|
10068
10296
|
};
|
|
10069
10297
|
}
|
|
10070
10298
|
}
|
|
10071
10299
|
}
|
|
10072
|
-
function
|
|
10300
|
+
function zd(e) {
|
|
10073
10301
|
let t = e.trim();
|
|
10074
|
-
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);
|
|
10075
10303
|
}
|
|
10076
|
-
function
|
|
10304
|
+
function Bd(e) {
|
|
10077
10305
|
return [
|
|
10078
10306
|
"你是用户偏好提取器。判断下面的用户消息是否包含「持久偏好」—— 对未来同类工作都适用的口味/规则(如配色口味、文案风格、排版密度),而非仅针对本轮的任务指令。",
|
|
10079
10307
|
"只输出 JSON(无任何其他文本):{\"captured\": true, \"content\": \"一句话中性陈述(用户视角,如:不用紫色,偏好低饱和)\", \"topic\": \"color|copy|layout|interaction|tech|other\"} 或 {\"captured\": false, \"content\": \"\", \"topic\": \"other\"}",
|
|
@@ -10082,7 +10310,7 @@ function Od(e) {
|
|
|
10082
10310
|
`用户消息:"""${e.slice(0, 800)}"""`
|
|
10083
10311
|
].join("\n");
|
|
10084
10312
|
}
|
|
10085
|
-
function
|
|
10313
|
+
function Vd(e) {
|
|
10086
10314
|
if (!e) return;
|
|
10087
10315
|
let t = (e.match(/```(?:json)?\s*([\s\S]*?)```/)?.[1] ?? e).match(/\{[\s\S]*\}/)?.[0];
|
|
10088
10316
|
if (t) try {
|
|
@@ -10091,19 +10319,19 @@ function kd(e) {
|
|
|
10091
10319
|
let n = typeof e.content == "string" ? e.content.trim().replace(/[。.!!]+$/, "") : "";
|
|
10092
10320
|
return n.length < 3 || n.length > 200 ? void 0 : {
|
|
10093
10321
|
content: n,
|
|
10094
|
-
topic:
|
|
10322
|
+
topic: Ed.includes(e.topic) ? e.topic : "other"
|
|
10095
10323
|
};
|
|
10096
10324
|
} catch {
|
|
10097
10325
|
return;
|
|
10098
10326
|
}
|
|
10099
10327
|
}
|
|
10100
|
-
function
|
|
10328
|
+
function Hd(e) {
|
|
10101
10329
|
if (!e.length) return;
|
|
10102
10330
|
let t = ["## 用户偏好(跨会话沉淀;除非用户本轮另有指示,遵守以下偏好)"];
|
|
10103
|
-
for (let n of e) t.push(`- ${
|
|
10331
|
+
for (let n of e) t.push(`- ${Nd[n.topic]}:${n.content}`);
|
|
10104
10332
|
return t.join("\n");
|
|
10105
10333
|
}
|
|
10106
|
-
function
|
|
10334
|
+
function Ud(e) {
|
|
10107
10335
|
let t = [], n = -1, r = Promise.resolve(), i = (t) => e.onDebug?.({
|
|
10108
10336
|
stage: "preferences",
|
|
10109
10337
|
...t
|
|
@@ -10124,21 +10352,21 @@ function jd(e) {
|
|
|
10124
10352
|
}
|
|
10125
10353
|
return {
|
|
10126
10354
|
name: "preferences",
|
|
10127
|
-
augmentPrompt: () =>
|
|
10355
|
+
augmentPrompt: () => Hd(t),
|
|
10128
10356
|
afterAgent: (t) => {
|
|
10129
10357
|
let r = t.messages ?? [];
|
|
10130
10358
|
for (let t = n + 1; t < r.length; t++) {
|
|
10131
10359
|
let n = r[t];
|
|
10132
10360
|
if (n.role !== "user" || typeof n.content != "string" || !n.content) continue;
|
|
10133
|
-
let o = n.content, s =
|
|
10361
|
+
let o = n.content, s = Rd(o);
|
|
10134
10362
|
if (s) {
|
|
10135
10363
|
a(s.content, s.topic, t, "explicit");
|
|
10136
10364
|
continue;
|
|
10137
10365
|
}
|
|
10138
|
-
if (e.llmInvoke &&
|
|
10366
|
+
if (e.llmInvoke && zd(o)) {
|
|
10139
10367
|
let n = t;
|
|
10140
|
-
e.llmInvoke(
|
|
10141
|
-
let t =
|
|
10368
|
+
e.llmInvoke(Bd(o)).then((e) => {
|
|
10369
|
+
let t = Vd(e);
|
|
10142
10370
|
t && a(t.content, t.topic, n, "llm");
|
|
10143
10371
|
}).catch((e) => i({ extractError: String(e) }));
|
|
10144
10372
|
}
|
|
@@ -10161,24 +10389,24 @@ function jd(e) {
|
|
|
10161
10389
|
}
|
|
10162
10390
|
};
|
|
10163
10391
|
}
|
|
10164
|
-
var
|
|
10165
|
-
function
|
|
10392
|
+
var Wd = /large_results\/[^\s"'`),]+\.txt/g;
|
|
10393
|
+
function Gd(e) {
|
|
10166
10394
|
let t = /* @__PURE__ */ new Set(), n = (e) => {
|
|
10167
10395
|
if (typeof e != "string" || !e) return;
|
|
10168
10396
|
let n;
|
|
10169
|
-
for (
|
|
10397
|
+
for (Wd.lastIndex = 0; (n = Wd.exec(e)) !== null;) t.add(n[0]);
|
|
10170
10398
|
};
|
|
10171
10399
|
for (let t of e) if (n(t.content), t.steps) for (let e of t.steps) n(e.result);
|
|
10172
10400
|
return t;
|
|
10173
10401
|
}
|
|
10174
|
-
function
|
|
10402
|
+
function Kd(e, t) {
|
|
10175
10403
|
let n = [];
|
|
10176
10404
|
for (let r of Object.keys(e)) r.startsWith("large_results/") && !t.has(r) && n.push(r);
|
|
10177
10405
|
return n;
|
|
10178
10406
|
}
|
|
10179
10407
|
//#endregion
|
|
10180
10408
|
//#region src/core/utils/serialRunner.ts
|
|
10181
|
-
function
|
|
10409
|
+
function qd() {
|
|
10182
10410
|
let e = Promise.resolve();
|
|
10183
10411
|
return function(t) {
|
|
10184
10412
|
let n = e.then(t, t);
|
|
@@ -10187,24 +10415,24 @@ function Fd() {
|
|
|
10187
10415
|
}
|
|
10188
10416
|
//#endregion
|
|
10189
10417
|
//#region src/core/sdk/createChatSdk.ts
|
|
10190
|
-
var
|
|
10191
|
-
function
|
|
10418
|
+
var Jd = 30, Yd = /* @__PURE__ */ new Map();
|
|
10419
|
+
function Xd(e, t) {
|
|
10192
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;
|
|
10193
10421
|
}
|
|
10194
|
-
function
|
|
10422
|
+
function Zd(e) {
|
|
10195
10423
|
return e === "spawn_agent" || e === "spawn_agents" || e.startsWith("use_");
|
|
10196
10424
|
}
|
|
10197
|
-
function
|
|
10425
|
+
function Qd(e, t, n, r) {
|
|
10198
10426
|
let i = 0;
|
|
10199
10427
|
return {
|
|
10200
10428
|
name: "sdk-events",
|
|
10201
10429
|
wrapToolCall: async (t, r) => {
|
|
10202
|
-
let i = await r(t), a =
|
|
10430
|
+
let i = await r(t), a = Xd(t.name, t.args);
|
|
10203
10431
|
return a ? e({
|
|
10204
10432
|
type: "data_change",
|
|
10205
10433
|
operation: a,
|
|
10206
10434
|
value: n()?.bind
|
|
10207
|
-
}) : i.status === "done" &&
|
|
10435
|
+
}) : i.status === "done" && Zd(t.name) && e({
|
|
10208
10436
|
type: "data_change",
|
|
10209
10437
|
operation: "edit",
|
|
10210
10438
|
value: n()?.bind
|
|
@@ -10231,7 +10459,7 @@ function Bd(e, t, n, r) {
|
|
|
10231
10459
|
}
|
|
10232
10460
|
};
|
|
10233
10461
|
}
|
|
10234
|
-
function
|
|
10462
|
+
function $d(e, t, n, r, i) {
|
|
10235
10463
|
if (!n) return i && console.warn(`[page-agent-sdk][focus] capabilities.focus 关闭,${t} 忽略`), {
|
|
10236
10464
|
ok: !1,
|
|
10237
10465
|
error: "capabilities.focus 关闭"
|
|
@@ -10249,7 +10477,7 @@ function Vd(e, t, n, r, i) {
|
|
|
10249
10477
|
error: "当前无主数据 schema,无法聚焦"
|
|
10250
10478
|
});
|
|
10251
10479
|
}
|
|
10252
|
-
function
|
|
10480
|
+
function ef(e, n) {
|
|
10253
10481
|
let i = {
|
|
10254
10482
|
prompt_tokens: 0,
|
|
10255
10483
|
completion_tokens: 0,
|
|
@@ -10267,8 +10495,8 @@ function Hd(e, n) {
|
|
|
10267
10495
|
maxBytes: e.vfs?.maxBytes,
|
|
10268
10496
|
poolBytes: e.vfs?.poolBytes
|
|
10269
10497
|
}), S = Ta([], { maxPlanRevisions: e.maxPlanRevisions }), C = ka(), w = Qa({
|
|
10270
|
-
getSchema: () =>
|
|
10271
|
-
getBind: () =>
|
|
10498
|
+
getSchema: () => R()?.schema,
|
|
10499
|
+
getBind: () => R()?.bind,
|
|
10272
10500
|
unfocusGuidance: e.toolMode === "advanced" ? "tool" : "ask-user",
|
|
10273
10501
|
onChange: (e) => G({
|
|
10274
10502
|
type: "focus_change",
|
|
@@ -10288,43 +10516,47 @@ function Hd(e, n) {
|
|
|
10288
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));
|
|
10289
10517
|
}
|
|
10290
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({
|
|
10291
|
-
getData: () =>
|
|
10292
|
-
consumeDataDirty: () =>
|
|
10519
|
+
getData: () => R()?.bind,
|
|
10520
|
+
consumeDataDirty: () => L?.consumeDataDirty?.() ?? !0,
|
|
10293
10521
|
slotPaths: O ? [""] : [],
|
|
10294
10522
|
vfsStore: x,
|
|
10295
10523
|
todosMw: S,
|
|
10296
10524
|
getTodos: () => D.current?.getState?.()?.todos ?? [],
|
|
10297
10525
|
messages: b,
|
|
10298
10526
|
maxCheckpoints: re && typeof re == "object" ? re.maxCheckpoints : void 0
|
|
10299
|
-
}) : 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({
|
|
10300
10528
|
...e,
|
|
10301
10529
|
locale: e.i18n?.locale
|
|
10302
10530
|
});
|
|
10303
10531
|
if (N) {
|
|
10304
10532
|
let e = M.map((e) => e._codeAsset.orchestratorPrompt).filter(Boolean).join("\n\n");
|
|
10305
|
-
e && (
|
|
10306
|
-
} else O?.schema && Qi(O.schema) && (
|
|
10307
|
-
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, {
|
|
10308
10536
|
onAudit: e.onAudit ?? (e.debug ? (e) => console.log("[page-agent-sdk][data audit]", e) : void 0),
|
|
10309
10537
|
maxSnapshots: e.maxSnapshots,
|
|
10310
10538
|
onConflict: a.set,
|
|
10311
10539
|
autoLock: e.autoLock,
|
|
10312
10540
|
interceptors: e.interceptors,
|
|
10313
|
-
vfsStore:
|
|
10541
|
+
vfsStore: se || O?.resources?.length ? x : void 0,
|
|
10314
10542
|
...P.length ? { pgIdPaths: P } : {},
|
|
10315
10543
|
...ne.length ? { largeTextPaths: ne } : {}
|
|
10316
|
-
}) : [],
|
|
10317
|
-
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?.() ?? [],
|
|
10318
10546
|
toolsExposed: e.toolMode === "advanced"
|
|
10319
|
-
}) : void 0,
|
|
10320
|
-
|
|
10321
|
-
|
|
10322
|
-
|
|
10323
|
-
|
|
10324
|
-
|
|
10325
|
-
let he = [
|
|
10326
|
-
|
|
10327
|
-
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 () => {
|
|
10328
10560
|
let e = F.list();
|
|
10329
10561
|
return e.length ? F.restore() ? `已回退到最近一次正常状态(checkpoint #${e[e.length - 1].id})。对话历史、主数据、vfs、todos 已整体还原。请基于回退后的状态重新判断并继续。` : "回退失败:无可用 checkpoint。" : "无可用 checkpoint,无法回退。";
|
|
10330
10562
|
}, {
|
|
@@ -10339,9 +10571,9 @@ function Hd(e, n) {
|
|
|
10339
10571
|
description: "列出可用会话 checkpoint(回退点)。",
|
|
10340
10572
|
schema: t.object({}).optional()
|
|
10341
10573
|
})] : [];
|
|
10342
|
-
|
|
10343
|
-
let
|
|
10344
|
-
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;
|
|
10345
10577
|
return n ? Ji(n, e) ? (w.setFocus({
|
|
10346
10578
|
path: e,
|
|
10347
10579
|
...t ? { label: t } : {}
|
|
@@ -10353,12 +10585,12 @@ function Hd(e, n) {
|
|
|
10353
10585
|
path: t.string().describe("要聚焦的组件 jsonPath,如 components.3"),
|
|
10354
10586
|
label: t.string().optional().describe("人类可读标签,如「导航栏」")
|
|
10355
10587
|
})
|
|
10356
|
-
}),
|
|
10588
|
+
}), Se = r(async () => (w.clearFocus(), "已清除聚焦,恢复全量可操作范围(可读写所有组件)。"), {
|
|
10357
10589
|
name: "clear_focus",
|
|
10358
10590
|
description: "清除当前聚焦,退出精修模式,恢复对全部组件的读写权限。",
|
|
10359
10591
|
schema: t.object({}).optional()
|
|
10360
|
-
}),
|
|
10361
|
-
let n =
|
|
10592
|
+
}), Ce = r(async ({ path: e, label: t }) => {
|
|
10593
|
+
let n = R()?.schema;
|
|
10362
10594
|
if (!n) return "聚焦失败:当前无主数据 schema,无法聚焦。";
|
|
10363
10595
|
if (!Ji(n, e)) return `PATH_DENIED · 聚焦失败:path "${e}" 不在 schema 内。请先用 read 查看可操作路径再聚焦。`;
|
|
10364
10596
|
w.addFocus({
|
|
@@ -10374,7 +10606,7 @@ function Hd(e, n) {
|
|
|
10374
10606
|
path: t.string().describe("要追加聚焦的组件 jsonPath,如 components.3"),
|
|
10375
10607
|
label: t.string().optional().describe("人类可读标签")
|
|
10376
10608
|
})
|
|
10377
|
-
}),
|
|
10609
|
+
}), we = r(async ({ path: e }) => {
|
|
10378
10610
|
let t = w.getFocuses().length;
|
|
10379
10611
|
w.removeFocus(e);
|
|
10380
10612
|
let n = w.getFocuses();
|
|
@@ -10383,61 +10615,61 @@ function Hd(e, n) {
|
|
|
10383
10615
|
name: "remove_focus",
|
|
10384
10616
|
description: "移除单个聚焦焦点(by path),保留其他焦点。移除最后一个等价退出精修。全部退出用 clear_focus。",
|
|
10385
10617
|
schema: t.object({ path: t.string().describe("要移除的焦点 jsonPath") })
|
|
10386
|
-
}),
|
|
10387
|
-
be,
|
|
10618
|
+
}), Te = V && e.toolMode === "advanced" ? [
|
|
10388
10619
|
xe,
|
|
10389
10620
|
Se,
|
|
10390
|
-
Ce
|
|
10621
|
+
Ce,
|
|
10622
|
+
we
|
|
10391
10623
|
] : [];
|
|
10392
|
-
|
|
10393
|
-
let
|
|
10394
|
-
function
|
|
10395
|
-
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([
|
|
10396
10628
|
{
|
|
10397
10629
|
label: "builtin",
|
|
10398
|
-
tools:
|
|
10630
|
+
tools: me
|
|
10399
10631
|
},
|
|
10400
10632
|
{
|
|
10401
10633
|
label: "user",
|
|
10402
|
-
tools:
|
|
10634
|
+
tools: he
|
|
10403
10635
|
},
|
|
10404
10636
|
{
|
|
10405
10637
|
label: "action",
|
|
10406
|
-
tools:
|
|
10638
|
+
tools: B
|
|
10407
10639
|
},
|
|
10408
10640
|
{
|
|
10409
10641
|
label: "humanConfirm",
|
|
10410
|
-
tools:
|
|
10642
|
+
tools: ye ? [ye] : []
|
|
10411
10643
|
},
|
|
10412
10644
|
{
|
|
10413
10645
|
label: "checkpoint",
|
|
10414
|
-
tools:
|
|
10646
|
+
tools: be
|
|
10415
10647
|
},
|
|
10416
10648
|
{
|
|
10417
10649
|
label: "focus",
|
|
10418
|
-
tools:
|
|
10650
|
+
tools: Te
|
|
10419
10651
|
},
|
|
10420
10652
|
{
|
|
10421
10653
|
label: "mcp",
|
|
10422
|
-
tools:
|
|
10654
|
+
tools: ge
|
|
10423
10655
|
},
|
|
10424
10656
|
{
|
|
10425
10657
|
label: "skill",
|
|
10426
|
-
tools:
|
|
10658
|
+
tools: Ee
|
|
10427
10659
|
}
|
|
10428
10660
|
]);
|
|
10429
10661
|
return t.length && console.warn("[page-agent-sdk] 工具重名,后注册覆盖先注册:", t.map((e) => `${e.name}(${e.loser}→${e.winner})`).join(", ")), e;
|
|
10430
10662
|
}
|
|
10431
|
-
let
|
|
10432
|
-
if (
|
|
10433
|
-
if (
|
|
10434
|
-
let
|
|
10435
|
-
e.debug &&
|
|
10436
|
-
let
|
|
10437
|
-
|
|
10438
|
-
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({
|
|
10439
10671
|
llm: He?.llm ?? e.llm,
|
|
10440
|
-
allTools: () => J.agent?.allTools ??
|
|
10672
|
+
allTools: () => J.agent?.allTools ?? H,
|
|
10441
10673
|
allowedTools: Ue.length ? Ue : void 0,
|
|
10442
10674
|
systemPrompt: He?.systemPrompt,
|
|
10443
10675
|
temperature: He?.temperature,
|
|
@@ -10447,12 +10679,12 @@ function Hd(e, n) {
|
|
|
10447
10679
|
maxParallel: He?.maxParallel,
|
|
10448
10680
|
debug: e.debug,
|
|
10449
10681
|
getFocuses: () => w.getFocuses(),
|
|
10450
|
-
getSchema: () =>
|
|
10451
|
-
tracker:
|
|
10682
|
+
getSchema: () => R()?.schema ?? null,
|
|
10683
|
+
tracker: Le,
|
|
10452
10684
|
guardMiddleware: Ke.length ? Ke : void 0,
|
|
10453
|
-
getVfsFiles:
|
|
10454
|
-
enterDataScope:
|
|
10455
|
-
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,
|
|
10456
10688
|
onUsage: (e) => {
|
|
10457
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);
|
|
10458
10690
|
},
|
|
@@ -10466,48 +10698,48 @@ function Hd(e, n) {
|
|
|
10466
10698
|
codeField: t.codeField,
|
|
10467
10699
|
craftNotes: t.craftNotes,
|
|
10468
10700
|
onWarning: (e) => console.warn(`[page-agent-sdk][code-asset] ${e}`),
|
|
10469
|
-
getController: () =>
|
|
10701
|
+
getController: () => L,
|
|
10470
10702
|
vfsStore: x
|
|
10471
10703
|
}), r = [...e.middleware ?? [], n];
|
|
10472
|
-
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);
|
|
10473
10705
|
return {
|
|
10474
10706
|
...e,
|
|
10475
10707
|
middleware: r
|
|
10476
10708
|
};
|
|
10477
|
-
}), Ye = N &&
|
|
10478
|
-
getBind: () =>
|
|
10709
|
+
}), Ye = N && Ie ? Fc() : void 0, Xe = Ye ? Vc({
|
|
10710
|
+
getBind: () => R()?.bind,
|
|
10479
10711
|
writablePaths: P,
|
|
10480
10712
|
getLocked: () => Ye.locked(),
|
|
10481
|
-
tools:
|
|
10482
|
-
}) : void 0, Ze =
|
|
10713
|
+
tools: H
|
|
10714
|
+
}) : void 0, Ze = Ie && Je !== void 0 ? ks(Je, {
|
|
10483
10715
|
llm: e.llm,
|
|
10484
|
-
allTools: () => J.agent?.allTools ??
|
|
10716
|
+
allTools: () => J.agent?.allTools ?? H,
|
|
10485
10717
|
debug: e.debug,
|
|
10486
10718
|
getFocuses: () => w.getFocuses(),
|
|
10487
|
-
getSchema: () =>
|
|
10488
|
-
getBind: () =>
|
|
10489
|
-
tracker:
|
|
10719
|
+
getSchema: () => R()?.schema ?? null,
|
|
10720
|
+
getBind: () => R()?.bind,
|
|
10721
|
+
tracker: Le,
|
|
10490
10722
|
guardMiddleware: Ke.length ? Ke : void 0,
|
|
10491
|
-
getVfsFiles:
|
|
10492
|
-
enterDataScope:
|
|
10493
|
-
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,
|
|
10494
10726
|
onUsage: (e) => {
|
|
10495
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);
|
|
10496
10728
|
},
|
|
10497
10729
|
timeoutMs: e.subagent?.timeoutMs,
|
|
10498
10730
|
...Ye ? {
|
|
10499
10731
|
componentLock: Ye,
|
|
10500
|
-
resolveComponents: (e) => Ic(e, Ac(
|
|
10732
|
+
resolveComponents: (e) => Ic(e, Ac(R()?.bind, P))
|
|
10501
10733
|
} : {}
|
|
10502
10734
|
}) : void 0, Qe = Ze ? Ze.controller : null, $e = [
|
|
10503
10735
|
"get_data",
|
|
10504
10736
|
"describe_data",
|
|
10505
10737
|
"read",
|
|
10506
10738
|
"fetch_document"
|
|
10507
|
-
], et =
|
|
10739
|
+
], et = H.filter((e) => $e.includes(e.name)), tt = Be ? As({
|
|
10508
10740
|
check: e.verify.check ?? Is({
|
|
10509
|
-
schemas: () =>
|
|
10510
|
-
root: () =>
|
|
10741
|
+
schemas: () => R() ? { "": R().schema } : {},
|
|
10742
|
+
root: () => R()?.bind
|
|
10511
10743
|
}),
|
|
10512
10744
|
adversarial: e.verify?.adversarial ? {
|
|
10513
10745
|
llm: e.llm,
|
|
@@ -10516,24 +10748,24 @@ function Hd(e, n) {
|
|
|
10516
10748
|
}) : void 0, nt = Ve ? Xs({
|
|
10517
10749
|
contextWindow: f.contextWindow,
|
|
10518
10750
|
thresholdRatio: Ul(e, f.contextWindow).summaryThresholdRatio
|
|
10519
|
-
}) : void 0, rt =
|
|
10520
|
-
...
|
|
10521
|
-
humanConfirm:
|
|
10751
|
+
}) : void 0, rt = yd({
|
|
10752
|
+
...I,
|
|
10753
|
+
humanConfirm: ve,
|
|
10522
10754
|
subagents: te?.map((e) => ({
|
|
10523
10755
|
id: e.id,
|
|
10524
10756
|
description: e.description,
|
|
10525
10757
|
temperature: e.temperature
|
|
10526
10758
|
}))
|
|
10527
|
-
},
|
|
10759
|
+
}, oe && !!O, e.toolMode, !!O?.resources?.length, { promptSoftCap: as(f.contextWindow, h.promptSoftCapTokens) }), it = O ? {
|
|
10528
10760
|
name: "dataHint",
|
|
10529
|
-
augmentPrompt: () => ic(
|
|
10761
|
+
augmentPrompt: () => ic(R(), e.schemaHint) || void 0
|
|
10530
10762
|
} : null, at = e.augmentSystem ? {
|
|
10531
10763
|
name: "augmentSystem",
|
|
10532
10764
|
augmentPrompt: (t) => {
|
|
10533
10765
|
try {
|
|
10534
10766
|
return e.augmentSystem({
|
|
10535
10767
|
state: t,
|
|
10536
|
-
data:
|
|
10768
|
+
data: R()
|
|
10537
10769
|
});
|
|
10538
10770
|
} catch (t) {
|
|
10539
10771
|
e.debug && console.log("[page-agent-sdk][augmentSystem] 回调抛错,降级跳过:", t.message);
|
|
@@ -10548,13 +10780,13 @@ function Hd(e, n) {
|
|
|
10548
10780
|
name: e.name,
|
|
10549
10781
|
description: e.description,
|
|
10550
10782
|
getContent: () => e.content
|
|
10551
|
-
}), dt = e.skillStorage === !1 ? null :
|
|
10783
|
+
}), dt = e.skillStorage === !1 ? null : Td({
|
|
10552
10784
|
...typeof e.skillStorage == "object" ? e.skillStorage : {},
|
|
10553
10785
|
id: e.skillStorage && typeof e.skillStorage == "object" && e.skillStorage.id ? e.skillStorage.id : `agent::${n}`
|
|
10554
|
-
}), ft =
|
|
10786
|
+
}), ft = I.preferences, pt = ft && e.preferenceStorage !== !1 ? Md({
|
|
10555
10787
|
...typeof e.preferenceStorage == "object" ? e.preferenceStorage : {},
|
|
10556
10788
|
id: e.preferenceStorage && typeof e.preferenceStorage == "object" && e.preferenceStorage.id ? e.preferenceStorage.id : `agent::${n}`
|
|
10557
|
-
}) : null, mt = pt ?
|
|
10789
|
+
}) : null, mt = pt ? Ud({
|
|
10558
10790
|
store: pt,
|
|
10559
10791
|
llmInvoke: l,
|
|
10560
10792
|
getSessionId: () => J.sessionId,
|
|
@@ -10586,41 +10818,41 @@ function Hd(e, n) {
|
|
|
10586
10818
|
J.infoTick.value++;
|
|
10587
10819
|
}
|
|
10588
10820
|
} catch {}
|
|
10589
|
-
}, _t =
|
|
10821
|
+
}, _t = Ne ? ls({
|
|
10590
10822
|
...h,
|
|
10591
10823
|
llmInvoke: l,
|
|
10592
|
-
getRegisteredData: () =>
|
|
10824
|
+
getRegisteredData: () => R() ? [{ description: R().description ?? "主数据对象" }] : [],
|
|
10593
10825
|
preserveLastToolResults: _,
|
|
10594
|
-
...
|
|
10826
|
+
...Pe ? {
|
|
10595
10827
|
decideInvoke: d,
|
|
10596
10828
|
getSnapshot: () => nt?.getSnapshot()
|
|
10597
10829
|
} : {}
|
|
10598
10830
|
}) : void 0, vt = Gl([
|
|
10599
10831
|
...it ? [it] : [],
|
|
10600
10832
|
rt,
|
|
10601
|
-
...
|
|
10833
|
+
...ke ? [C] : [],
|
|
10602
10834
|
...mt ? [mt] : [],
|
|
10603
|
-
...
|
|
10604
|
-
...
|
|
10605
|
-
readVfs:
|
|
10606
|
-
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,
|
|
10607
10839
|
onToolsReady: (e, t) => {
|
|
10608
10840
|
for (let n of t) {
|
|
10609
|
-
let t =
|
|
10610
|
-
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}`);
|
|
10611
10843
|
}
|
|
10612
|
-
|
|
10844
|
+
H = U(), J.agent && J.agent.setTools(H), J.infoTick.value++;
|
|
10613
10845
|
}
|
|
10614
10846
|
})] : [],
|
|
10615
|
-
...
|
|
10847
|
+
...Me ? [vc(x)] : [],
|
|
10616
10848
|
..._t ? [_t] : [],
|
|
10617
|
-
...
|
|
10618
|
-
...
|
|
10619
|
-
...
|
|
10620
|
-
...
|
|
10849
|
+
...Ae ? [T] : [],
|
|
10850
|
+
...V ? [w] : [],
|
|
10851
|
+
...pe ? [pe] : [],
|
|
10852
|
+
...Fe ? [E] : [],
|
|
10621
10853
|
...We ? [We] : [],
|
|
10622
|
-
...ie &&
|
|
10623
|
-
...
|
|
10854
|
+
...ie && ae && F ? [Vo(F)] : [],
|
|
10855
|
+
...ve ? [No()] : [],
|
|
10624
10856
|
...Ge ? [Ge] : [],
|
|
10625
10857
|
...tt ? [tt] : [],
|
|
10626
10858
|
...qe ? [qe] : [],
|
|
@@ -10629,12 +10861,12 @@ function Hd(e, n) {
|
|
|
10629
10861
|
...at ? [at] : [],
|
|
10630
10862
|
...nt ? [nt] : [],
|
|
10631
10863
|
...e.middleware || [],
|
|
10632
|
-
...
|
|
10864
|
+
...le ? [ld(i, {
|
|
10633
10865
|
tokenBudget: e.tokenBudget,
|
|
10634
10866
|
timeBudgetMs: e.timeBudgetMs
|
|
10635
10867
|
}, G)] : [],
|
|
10636
|
-
|
|
10637
|
-
]), 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;
|
|
10638
10870
|
function Ct(e) {
|
|
10639
10871
|
if (St) return (t) => {
|
|
10640
10872
|
if (t.type !== "approval_request") return;
|
|
@@ -10656,7 +10888,7 @@ function Hd(e, n) {
|
|
|
10656
10888
|
function wt(e) {
|
|
10657
10889
|
let t = Ct(e);
|
|
10658
10890
|
return (e) => {
|
|
10659
|
-
t?.(e), e.type
|
|
10891
|
+
t?.(e), e.type !== "approval_request" && G(e);
|
|
10660
10892
|
};
|
|
10661
10893
|
}
|
|
10662
10894
|
let Tt = /* @__PURE__ */ At([]);
|
|
@@ -10667,7 +10899,7 @@ function Hd(e, n) {
|
|
|
10667
10899
|
e.debug && console.warn("[page-agent-sdk][persist] refreshSessions 失败(已吞):", t);
|
|
10668
10900
|
}
|
|
10669
10901
|
}
|
|
10670
|
-
let Et =
|
|
10902
|
+
let Et = qd(), q = /* @__PURE__ */ new Set();
|
|
10671
10903
|
function Dt(e) {
|
|
10672
10904
|
let t = new AbortController(), n = () => t.abort();
|
|
10673
10905
|
return e && (e.aborted ? t.abort() : e.addEventListener("abort", n, { once: !0 })), q.add(t), {
|
|
@@ -10698,14 +10930,15 @@ function Hd(e, n) {
|
|
|
10698
10930
|
refCount: 0,
|
|
10699
10931
|
mcpClosers: [],
|
|
10700
10932
|
mcpServers: [],
|
|
10933
|
+
mcpFailed: [],
|
|
10701
10934
|
checkpoint: F,
|
|
10702
|
-
dataOpsController:
|
|
10935
|
+
dataOpsController: L,
|
|
10703
10936
|
skillsController: st ? st.controller : null,
|
|
10704
10937
|
infoTick: o,
|
|
10705
10938
|
pendingConflict: a.pendingConflict,
|
|
10706
10939
|
sessions: Tt,
|
|
10707
10940
|
refreshSessions: K,
|
|
10708
|
-
liveData:
|
|
10941
|
+
liveData: R,
|
|
10709
10942
|
usage: i,
|
|
10710
10943
|
emit: G,
|
|
10711
10944
|
runSerial: Et,
|
|
@@ -10713,20 +10946,20 @@ function Hd(e, n) {
|
|
|
10713
10946
|
abortAllActive: Ot,
|
|
10714
10947
|
unloadSkillTools(e) {
|
|
10715
10948
|
if (e) {
|
|
10716
|
-
let t =
|
|
10717
|
-
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;
|
|
10718
10951
|
} else {
|
|
10719
|
-
if (!
|
|
10720
|
-
for (let e of
|
|
10721
|
-
|
|
10952
|
+
if (!Ee.length) return;
|
|
10953
|
+
for (let e of Ee) z.delete(e.name), De.delete(e.name);
|
|
10954
|
+
Ee = [];
|
|
10722
10955
|
}
|
|
10723
|
-
|
|
10956
|
+
H = U(), J.agent && J.agent.setTools(H);
|
|
10724
10957
|
},
|
|
10725
10958
|
applySnapshot(t) {
|
|
10726
|
-
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) {
|
|
10727
10960
|
let n = t.focus, r = n ? Array.isArray(n) ? n : [n] : [];
|
|
10728
10961
|
if (r.length) {
|
|
10729
|
-
let t =
|
|
10962
|
+
let t = R()?.schema, n = t ? r.filter((e) => Ji(t, e.path)) : [];
|
|
10730
10963
|
if (n.length && (w.setFocus(null), n.forEach((e) => w.addFocus(e))), e.debug && n.length < r.length) {
|
|
10731
10964
|
let e = r.filter((e) => !n.includes(e)).map((e) => e.path);
|
|
10732
10965
|
console.warn("[page-agent-sdk][focus] 恢复的焦点部分 path 已失效(schema 变化/无 schema),剔除:", e);
|
|
@@ -10759,13 +10992,13 @@ function Hd(e, n) {
|
|
|
10759
10992
|
},
|
|
10760
10993
|
async send(e, t) {
|
|
10761
10994
|
if (await J.initDone, J.refCount <= 0) throw Error("page-agent-sdk: agent 已释放(unmount),拒绝排队中的 send");
|
|
10762
|
-
t ??= {}, t?.mission &&
|
|
10995
|
+
t ??= {}, t?.mission && ke && C.setMission(t.mission);
|
|
10763
10996
|
let n = e;
|
|
10764
10997
|
if (t.interceptors?.input) try {
|
|
10765
10998
|
let r = t.interceptors.input(e);
|
|
10766
10999
|
typeof r == "string" && (n = r);
|
|
10767
11000
|
} catch {}
|
|
10768
|
-
let r =
|
|
11001
|
+
let r = le ? t.maxAutoRetries ?? 1 : 0, i = 0, a = !1, o = wt(t.signal), c = J.sessionId;
|
|
10769
11002
|
for (;;) {
|
|
10770
11003
|
a ||= (b.push({
|
|
10771
11004
|
role: "user",
|
|
@@ -10902,15 +11135,15 @@ function Hd(e, n) {
|
|
|
10902
11135
|
async switchSession(t) {
|
|
10903
11136
|
if (await J.initDone, !s) throw Error("page-agent-sdk: storage 未开启,无法切换会话(请传 storage 选项)");
|
|
10904
11137
|
if (a.resolve("keep_external"), J.sessionId && s) {
|
|
10905
|
-
if (
|
|
11138
|
+
if (ke) {
|
|
10906
11139
|
let e = C.getMission();
|
|
10907
11140
|
e && zt({ mission: e });
|
|
10908
11141
|
}
|
|
10909
|
-
if (
|
|
11142
|
+
if (Ae) {
|
|
10910
11143
|
let e = T.getWorkingMemory();
|
|
10911
11144
|
e && zt({ workingMemory: e });
|
|
10912
11145
|
}
|
|
10913
|
-
if (
|
|
11146
|
+
if (V) {
|
|
10914
11147
|
let e = w.getFocuses();
|
|
10915
11148
|
zt({ focus: e.length ? e : null });
|
|
10916
11149
|
}
|
|
@@ -10934,7 +11167,7 @@ function Hd(e, n) {
|
|
|
10934
11167
|
},
|
|
10935
11168
|
stream: (e, t, n) => {
|
|
10936
11169
|
if (!J.agent) throw Error("page-agent-sdk: agent 尚未初始化完成,请先 await mount()");
|
|
10937
|
-
x?.setProtectedRefs?.(
|
|
11170
|
+
x?.setProtectedRefs?.(Gd(e));
|
|
10938
11171
|
let r = (e) => {
|
|
10939
11172
|
t?.(e), G(e), e.type === "subagent" && (e.kind === "tool_call" || e.kind === "tool_result") && J.infoTick.value++;
|
|
10940
11173
|
};
|
|
@@ -10947,25 +11180,25 @@ function Hd(e, n) {
|
|
|
10947
11180
|
},
|
|
10948
11181
|
release() {
|
|
10949
11182
|
if (J.refCount--, J.refCount <= 0) {
|
|
10950
|
-
Ot(),
|
|
11183
|
+
Ot(), _e = !0, s && (x.flush?.(), s.flush(), s.dispose()), dt && dt.dispose();
|
|
10951
11184
|
let e = J.mcpClosers.splice(0);
|
|
10952
|
-
e.length && Promise.allSettled(e.map((e) => e())),
|
|
11185
|
+
e.length && Promise.allSettled(e.map((e) => e())), Yd.delete(n);
|
|
10953
11186
|
}
|
|
10954
11187
|
},
|
|
10955
11188
|
resolveConflict: a.resolve,
|
|
10956
11189
|
setTools(e) {
|
|
10957
|
-
|
|
10958
|
-
|
|
10959
|
-
}),
|
|
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++;
|
|
10960
11193
|
},
|
|
10961
11194
|
addTool(e) {
|
|
10962
|
-
|
|
10963
|
-
for (let t =
|
|
10964
|
-
|
|
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++;
|
|
10965
11198
|
},
|
|
10966
11199
|
removeTool(e) {
|
|
10967
|
-
let t =
|
|
10968
|
-
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);
|
|
10969
11202
|
},
|
|
10970
11203
|
setLlm(t) {
|
|
10971
11204
|
let n;
|
|
@@ -11010,30 +11243,30 @@ function Hd(e, n) {
|
|
|
11010
11243
|
return n && J.infoTick.value++, n;
|
|
11011
11244
|
},
|
|
11012
11245
|
getActiveSubagents() {
|
|
11013
|
-
return
|
|
11246
|
+
return Le?.getActive() ?? [];
|
|
11014
11247
|
},
|
|
11015
11248
|
get subagentHistory() {
|
|
11016
|
-
return
|
|
11249
|
+
return Le?.getHistory() ?? [];
|
|
11017
11250
|
},
|
|
11018
11251
|
getInfo() {
|
|
11019
11252
|
return {
|
|
11020
11253
|
id: n,
|
|
11021
11254
|
sessionId: J.sessionId,
|
|
11022
11255
|
model: el(y) ? y.model ?? y.modelName : y.model,
|
|
11023
|
-
systemPrompt: J.agent?.getEffectiveSystemPrompt?.() ??
|
|
11024
|
-
tools: (J.agent?.allTools ??
|
|
11256
|
+
systemPrompt: J.agent?.getEffectiveSystemPrompt?.() ?? ue + ic(R(), e.schemaHint),
|
|
11257
|
+
tools: (J.agent?.allTools ?? H).map((e) => ({
|
|
11025
11258
|
name: e.name,
|
|
11026
11259
|
description: e.description,
|
|
11027
11260
|
schema: e.schema,
|
|
11028
|
-
source:
|
|
11261
|
+
source: z.get(e.name) || "user"
|
|
11029
11262
|
})),
|
|
11030
11263
|
skills: (st ? st.controller.get() : e.skills ?? []).map((e) => ({
|
|
11031
11264
|
name: e.name,
|
|
11032
11265
|
description: e.description
|
|
11033
11266
|
})),
|
|
11034
|
-
data:
|
|
11035
|
-
description:
|
|
11036
|
-
schema:
|
|
11267
|
+
data: R() ? {
|
|
11268
|
+
description: R().description,
|
|
11269
|
+
schema: R().schema
|
|
11037
11270
|
} : void 0,
|
|
11038
11271
|
contextPreset: e.contextPreset ?? "auto",
|
|
11039
11272
|
compression: {
|
|
@@ -11053,29 +11286,29 @@ function Hd(e, n) {
|
|
|
11053
11286
|
...e.evidence === void 0 ? {} : { evidence: e.evidence }
|
|
11054
11287
|
})),
|
|
11055
11288
|
planPhase: S.getPlanPhase(),
|
|
11056
|
-
mission:
|
|
11289
|
+
mission: ke ? C.getMission() : void 0,
|
|
11057
11290
|
preferences: ft && mt ? mt.getPreferences() : void 0,
|
|
11058
|
-
workingMemory:
|
|
11059
|
-
focus:
|
|
11060
|
-
focuses:
|
|
11061
|
-
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 ? {
|
|
11062
11295
|
spans: J.agent.spans.value,
|
|
11063
11296
|
metrics: li(J.agent.spans.value)
|
|
11064
11297
|
} : void 0,
|
|
11065
|
-
actions:
|
|
11298
|
+
actions: fd(e.actions ?? {}),
|
|
11066
11299
|
subagent: {
|
|
11067
11300
|
enabled: !!qe,
|
|
11068
11301
|
maxDepth: e.subagent?.maxDepth ?? 1,
|
|
11069
11302
|
maxParallel: e.subagent?.maxParallel ?? 4,
|
|
11070
11303
|
allowedTools: e.subagent?.allowedTools ?? [],
|
|
11071
11304
|
subagents: Qe?.get() ?? [],
|
|
11072
|
-
active:
|
|
11073
|
-
history:
|
|
11305
|
+
active: Le?.getActive() ?? [],
|
|
11306
|
+
history: Le?.getHistory() ?? [],
|
|
11074
11307
|
lockedComponents: Ye?.locked() ?? {}
|
|
11075
11308
|
},
|
|
11076
11309
|
verify: {
|
|
11077
11310
|
enabled: !!tt,
|
|
11078
|
-
maxAttempts: Be ?
|
|
11311
|
+
maxAttempts: Be ? Re : 0,
|
|
11079
11312
|
adversarial: Be && !!e.verify?.adversarial
|
|
11080
11313
|
},
|
|
11081
11314
|
context: (() => {
|
|
@@ -11086,20 +11319,23 @@ function Hd(e, n) {
|
|
|
11086
11319
|
}
|
|
11087
11320
|
return e;
|
|
11088
11321
|
})(),
|
|
11089
|
-
mcp: {
|
|
11322
|
+
mcp: {
|
|
11323
|
+
servers: J.mcpServers,
|
|
11324
|
+
...J.mcpFailed.length ? { failed: J.mcpFailed } : {}
|
|
11325
|
+
},
|
|
11090
11326
|
lastCompression: J.agent?.getState?.()?.lastCompression,
|
|
11091
11327
|
checkpoints: F ? {
|
|
11092
11328
|
enabled: !0,
|
|
11093
|
-
auto:
|
|
11329
|
+
auto: ae,
|
|
11094
11330
|
list: F.list()
|
|
11095
11331
|
} : void 0
|
|
11096
11332
|
};
|
|
11097
11333
|
},
|
|
11098
11334
|
getMission() {
|
|
11099
|
-
return
|
|
11335
|
+
return ke ? C.getMission() : void 0;
|
|
11100
11336
|
},
|
|
11101
11337
|
setMission(t) {
|
|
11102
|
-
if (!
|
|
11338
|
+
if (!ke) {
|
|
11103
11339
|
e.debug && console.warn("[page-agent-sdk][mission] capabilities.missionAnchor 关闭,setMission 忽略");
|
|
11104
11340
|
return;
|
|
11105
11341
|
}
|
|
@@ -11117,27 +11353,27 @@ function Hd(e, n) {
|
|
|
11117
11353
|
mt && (await mt.clearPreferences(), J.infoTick.value++);
|
|
11118
11354
|
},
|
|
11119
11355
|
getFocus() {
|
|
11120
|
-
return
|
|
11356
|
+
return V ? w.getFocus() : void 0;
|
|
11121
11357
|
},
|
|
11122
11358
|
getFocuses() {
|
|
11123
|
-
return
|
|
11359
|
+
return V ? w.getFocuses() : [];
|
|
11124
11360
|
},
|
|
11125
11361
|
setFocus(t) {
|
|
11126
|
-
let n =
|
|
11362
|
+
let n = $d(t, "setFocus", V, () => R()?.schema, e.debug);
|
|
11127
11363
|
return n.ok ? (w.setFocus(t), J.infoTick.value++, { ok: !0 }) : n;
|
|
11128
11364
|
},
|
|
11129
11365
|
addFocus(t) {
|
|
11130
|
-
let n =
|
|
11366
|
+
let n = $d(t, "addFocus", V, () => R()?.schema, e.debug);
|
|
11131
11367
|
return n.ok ? w.getFocuses().length >= 8 ? (e.debug && console.warn("[page-agent-sdk][focus] addFocus 拒绝:焦点数已达上限 8(augmentPrompt 注入每焦点子树 schema,过多致 system prompt 超预算)"), {
|
|
11132
11368
|
ok: !1,
|
|
11133
11369
|
error: "焦点数上限 8(避免 system prompt 撑爆)"
|
|
11134
11370
|
}) : (w.addFocus(t), J.infoTick.value++, { ok: !0 }) : n;
|
|
11135
11371
|
},
|
|
11136
11372
|
removeFocus(e) {
|
|
11137
|
-
|
|
11373
|
+
V && (w.removeFocus(e), J.infoTick.value++);
|
|
11138
11374
|
},
|
|
11139
11375
|
clearFocus() {
|
|
11140
|
-
|
|
11376
|
+
V && (w.clearFocus(), J.infoTick.value++);
|
|
11141
11377
|
}
|
|
11142
11378
|
};
|
|
11143
11379
|
async function kt() {
|
|
@@ -11171,14 +11407,14 @@ function Hd(e, n) {
|
|
|
11171
11407
|
}
|
|
11172
11408
|
function Mt(e) {
|
|
11173
11409
|
let t = {};
|
|
11174
|
-
for (let n of
|
|
11410
|
+
for (let n of Gd(e)) {
|
|
11175
11411
|
let e = x.files[n];
|
|
11176
11412
|
e && (t[n] = e.content);
|
|
11177
11413
|
}
|
|
11178
11414
|
return t;
|
|
11179
11415
|
}
|
|
11180
11416
|
function Nt() {
|
|
11181
|
-
let e =
|
|
11417
|
+
let e = Kd(x.files, Gd(b));
|
|
11182
11418
|
for (let t of e) delete x.files[t];
|
|
11183
11419
|
}
|
|
11184
11420
|
function Ft() {
|
|
@@ -11229,19 +11465,19 @@ function Hd(e, n) {
|
|
|
11229
11465
|
}
|
|
11230
11466
|
function Vt() {
|
|
11231
11467
|
if (!J.sessionId || !s) return;
|
|
11232
|
-
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) {
|
|
11233
11469
|
let e = C.getMission();
|
|
11234
11470
|
e && zt({ mission: e });
|
|
11235
11471
|
}
|
|
11236
|
-
if (
|
|
11472
|
+
if (Ae) {
|
|
11237
11473
|
let e = T.getWorkingMemory();
|
|
11238
11474
|
e && zt({ workingMemory: e });
|
|
11239
11475
|
}
|
|
11240
|
-
if (
|
|
11476
|
+
if (V) {
|
|
11241
11477
|
let e = w.getFocuses();
|
|
11242
11478
|
zt({ focus: e.length ? e : null });
|
|
11243
11479
|
}
|
|
11244
|
-
|
|
11480
|
+
le && F && (zt({ checkpoints: F.exportStack() }), zt({ usage: i }));
|
|
11245
11481
|
let t = $c(b);
|
|
11246
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")) {
|
|
11247
11483
|
Lt = !0;
|
|
@@ -11265,19 +11501,19 @@ function Hd(e, n) {
|
|
|
11265
11501
|
return J.initDone = (async () => {
|
|
11266
11502
|
await kt(), await jt(), mt && await mt.preload(), e.mcp?.length && (async () => {
|
|
11267
11503
|
let t = await Promise.allSettled(e.mcp.map((e) => tc(e))), n = t.flatMap((e) => e.status === "fulfilled" ? [e.value.close] : []);
|
|
11268
|
-
if (
|
|
11504
|
+
if (_e) {
|
|
11269
11505
|
Promise.allSettled(n.map((e) => e()));
|
|
11270
11506
|
return;
|
|
11271
11507
|
}
|
|
11272
11508
|
J.mcpClosers = n, J.mcpServers = [];
|
|
11273
11509
|
let r = /* @__PURE__ */ new Set();
|
|
11274
|
-
for (let e of
|
|
11275
|
-
let t =
|
|
11510
|
+
for (let e of H) {
|
|
11511
|
+
let t = z.get(e.name);
|
|
11276
11512
|
t && !t.startsWith("mcp:") && r.add(e.name);
|
|
11277
11513
|
}
|
|
11278
11514
|
t.forEach((t, n) => {
|
|
11279
11515
|
let i = e.mcp[n], a = i.name ?? i.url;
|
|
11280
|
-
t.status === "fulfilled"
|
|
11516
|
+
if (t.status === "fulfilled") J.mcpServers.push({
|
|
11281
11517
|
name: a,
|
|
11282
11518
|
url: i.url,
|
|
11283
11519
|
toolCount: t.value.tools.length
|
|
@@ -11286,15 +11522,33 @@ function Hd(e, n) {
|
|
|
11286
11522
|
console.warn(`[page-agent-sdk][mcp] 工具 "${e.name}" 与内置工具重名,已拒绝注入(安全保留字保护)`);
|
|
11287
11523
|
return;
|
|
11288
11524
|
}
|
|
11289
|
-
|
|
11290
|
-
})
|
|
11291
|
-
|
|
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`);
|
|
11292
11546
|
})();
|
|
11293
11547
|
let t = el(e.llm) ? e.llm : await m(e.llm);
|
|
11294
11548
|
J.agent = Wi({
|
|
11295
11549
|
llm: t,
|
|
11296
|
-
systemPrompt:
|
|
11297
|
-
tools:
|
|
11550
|
+
systemPrompt: ue,
|
|
11551
|
+
tools: H,
|
|
11298
11552
|
middleware: vt,
|
|
11299
11553
|
maxToolRounds: e.maxToolRounds,
|
|
11300
11554
|
maxRetries: e.maxRetries,
|
|
@@ -11302,12 +11556,12 @@ function Hd(e, n) {
|
|
|
11302
11556
|
maxParallelTools: e.maxParallelTools,
|
|
11303
11557
|
contextWindow: f.contextWindow,
|
|
11304
11558
|
maxOutputTokens: f.maxOutputTokens,
|
|
11305
|
-
maxVerifyAttempts: Be ?
|
|
11559
|
+
maxVerifyAttempts: Be ? Re : 0,
|
|
11306
11560
|
roundTokenBudget: e.roundTokenBudget ?? 0,
|
|
11307
11561
|
onLlmChange: (e) => {
|
|
11308
11562
|
y = e;
|
|
11309
11563
|
},
|
|
11310
|
-
onTrace:
|
|
11564
|
+
onTrace: ce ? (e, t) => {
|
|
11311
11565
|
try {
|
|
11312
11566
|
G({
|
|
11313
11567
|
type: "trace",
|
|
@@ -11318,15 +11572,15 @@ function Hd(e, n) {
|
|
|
11318
11572
|
} : void 0,
|
|
11319
11573
|
debug: e.debug
|
|
11320
11574
|
}), D.current = J.agent, Ze && Ze.setReconfigureHook && Ze.setReconfigureHook(() => {
|
|
11321
|
-
J.agent && J.agent.setTools(
|
|
11575
|
+
J.agent && J.agent.setTools(U());
|
|
11322
11576
|
});
|
|
11323
11577
|
})(), J;
|
|
11324
11578
|
}
|
|
11325
|
-
function
|
|
11579
|
+
function tf(e, t) {
|
|
11326
11580
|
let n = e.id ?? dl();
|
|
11327
11581
|
e.id || console.warn(`[page-agent-sdk] 未传 options.id,已生成随机 id "${n}"。刷新后持久化数据无法恢复,请传稳定 id。`);
|
|
11328
|
-
let r = e.streaming ?? !0, i = e.ui ?? "default", a, o = e.shareContext ?
|
|
11329
|
-
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++;
|
|
11330
11584
|
let s = null, c = Ll(e), l = null, u = null;
|
|
11331
11585
|
async function d(n) {
|
|
11332
11586
|
if (await a.initDone, s) {
|
|
@@ -11351,6 +11605,7 @@ function Ud(e, t) {
|
|
|
11351
11605
|
core: a,
|
|
11352
11606
|
dialogCfg: c,
|
|
11353
11607
|
i18n: e.i18n,
|
|
11608
|
+
debug: e.debug === !0,
|
|
11354
11609
|
streaming: r,
|
|
11355
11610
|
runSerial: a.runSerial,
|
|
11356
11611
|
hide: p,
|
|
@@ -11546,7 +11801,7 @@ function Ud(e, t) {
|
|
|
11546
11801
|
}
|
|
11547
11802
|
//#endregion
|
|
11548
11803
|
//#region src/core/sdk/ragSubagent.ts
|
|
11549
|
-
function
|
|
11804
|
+
function nf(e, t, n, r, i) {
|
|
11550
11805
|
let a = [];
|
|
11551
11806
|
e && a.push("vfs_grep + vfs_read(搜预注入文档)"), t && a.push(`${r}(语义检索)`), n && a.push(`${i}(按 source 加载)`), a.push("fetch_document(公网 URL)");
|
|
11552
11807
|
let o = [];
|
|
@@ -11561,7 +11816,7 @@ function Wd(e, t, n, r, i) {
|
|
|
11561
11816
|
|
|
11562
11817
|
你是只读检索角色,不要尝试修改任何数据。不要尝试上面未列出的工具。`;
|
|
11563
11818
|
}
|
|
11564
|
-
function
|
|
11819
|
+
function rf(e, t, n, r, i) {
|
|
11565
11820
|
let a = [], o = [];
|
|
11566
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)
|
|
11567
11822
|
|
|
@@ -11578,12 +11833,12 @@ ${a.join("\n")}
|
|
|
11578
11833
|
## 何时用何源
|
|
11579
11834
|
${o.join("\n")}`;
|
|
11580
11835
|
}
|
|
11581
|
-
var
|
|
11836
|
+
var af = {
|
|
11582
11837
|
name: "rag-search",
|
|
11583
11838
|
description: "多源知识检索策略:vfs 预注入文档 → 语义检索 → 指定文档加载 → 公网;综合结构化结论 + 溯源",
|
|
11584
|
-
getContent: () =>
|
|
11839
|
+
getContent: () => rf(!0, !0, !0, "search_docs", "load_doc")
|
|
11585
11840
|
};
|
|
11586
|
-
function
|
|
11841
|
+
function of(e, n, i) {
|
|
11587
11842
|
return r(async ({ query: e, topK: t }) => {
|
|
11588
11843
|
try {
|
|
11589
11844
|
let r = await n(e, { topK: t ?? i });
|
|
@@ -11600,7 +11855,7 @@ function qd(e, n, i) {
|
|
|
11600
11855
|
})
|
|
11601
11856
|
});
|
|
11602
11857
|
}
|
|
11603
|
-
function
|
|
11858
|
+
function sf(e, n) {
|
|
11604
11859
|
return r(async ({ source: e }) => {
|
|
11605
11860
|
try {
|
|
11606
11861
|
let t = await n(e), r = Array.isArray(t) ? t : [t];
|
|
@@ -11614,19 +11869,19 @@ function Jd(e, n) {
|
|
|
11614
11869
|
schema: t.object({ source: t.string().describe("文档标识(id/URL/key)") })
|
|
11615
11870
|
});
|
|
11616
11871
|
}
|
|
11617
|
-
function
|
|
11872
|
+
function cf(e) {
|
|
11618
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;
|
|
11619
11874
|
if (!t && !n && r === !1) throw Error("[page-agent-sdk][createRagSubagent] 至少配一种知识源:retriever / loader / useVfs(true)");
|
|
11620
11875
|
let p = [];
|
|
11621
|
-
t && p.push(
|
|
11876
|
+
t && p.push(of(s, t, o)), n && p.push(sf(c, n)), f && p.push(...f);
|
|
11622
11877
|
let m = r ? [
|
|
11623
11878
|
"vfs_grep",
|
|
11624
11879
|
"vfs_read",
|
|
11625
11880
|
"vfs_json_read"
|
|
11626
|
-
] : void 0, h =
|
|
11881
|
+
] : void 0, h = nf(r, !!t, !!n, s, c), g = {
|
|
11627
11882
|
name: "rag-search",
|
|
11628
|
-
description:
|
|
11629
|
-
getContent: () =>
|
|
11883
|
+
description: af.description,
|
|
11884
|
+
getContent: () => rf(r, !!t, !!n, s, c)
|
|
11630
11885
|
};
|
|
11631
11886
|
return {
|
|
11632
11887
|
id: i,
|
|
@@ -11641,7 +11896,7 @@ function Yd(e) {
|
|
|
11641
11896
|
}
|
|
11642
11897
|
//#endregion
|
|
11643
11898
|
//#region src/core/utils/clipboard.ts
|
|
11644
|
-
async function
|
|
11899
|
+
async function lf(e) {
|
|
11645
11900
|
try {
|
|
11646
11901
|
let t = globalThis.navigator?.clipboard;
|
|
11647
11902
|
if (t && typeof t.writeText == "function") return await t.writeText(e), !0;
|
|
@@ -11659,8 +11914,8 @@ async function Xd(e) {
|
|
|
11659
11914
|
}
|
|
11660
11915
|
//#endregion
|
|
11661
11916
|
//#region src/core/composables/useChat.ts
|
|
11662
|
-
var
|
|
11663
|
-
function
|
|
11917
|
+
var uf = 4e3;
|
|
11918
|
+
function df(e = {}) {
|
|
11664
11919
|
let { fetchResponse: t, fetchStream: n, onPersist: r, onClear: i, onQueuedCleared: a } = e, o = /* @__PURE__ */ bt({
|
|
11665
11920
|
messages: e.messages ?? [],
|
|
11666
11921
|
loading: !1,
|
|
@@ -11711,25 +11966,34 @@ function Qd(e = {}) {
|
|
|
11711
11966
|
t.steps.push({
|
|
11712
11967
|
name: e.name,
|
|
11713
11968
|
args: e.args,
|
|
11714
|
-
status: "running"
|
|
11969
|
+
status: "running",
|
|
11970
|
+
id: e.id
|
|
11715
11971
|
});
|
|
11716
11972
|
break;
|
|
11717
|
-
case "tool_result":
|
|
11718
|
-
|
|
11719
|
-
|
|
11720
|
-
let r = t.steps[
|
|
11721
|
-
|
|
11722
|
-
|
|
11973
|
+
case "tool_result": {
|
|
11974
|
+
let n = -1;
|
|
11975
|
+
if (e.id !== void 0 && (n = t.steps.findIndex((t) => t.id === e.id)), n < 0) {
|
|
11976
|
+
for (let r = t.steps.length - 1; r >= 0; r--) if (t.steps[r].name === e.name && t.steps[r].status === "running") {
|
|
11977
|
+
n = r;
|
|
11978
|
+
break;
|
|
11979
|
+
}
|
|
11980
|
+
}
|
|
11981
|
+
if (n >= 0) {
|
|
11982
|
+
let r = t.steps[n];
|
|
11983
|
+
r.result = e.result, r.status = e.status, r.durationMs = e.durationMs;
|
|
11984
|
+
let i = r.subReason;
|
|
11985
|
+
i && i.length > 80 && (r.subReason = i.slice(0, 80) + "…");
|
|
11723
11986
|
}
|
|
11724
11987
|
break;
|
|
11988
|
+
}
|
|
11725
11989
|
case "subagent": {
|
|
11726
|
-
let n = t.steps[t.steps.length - 1];
|
|
11990
|
+
let n = e.toolCallId === void 0 ? t.steps[t.steps.length - 1] : t.steps.find((t) => t.id === e.toolCallId);
|
|
11727
11991
|
if (!n) break;
|
|
11728
11992
|
if (e.kind === "reasoning") {
|
|
11729
11993
|
let t = e.delta || "";
|
|
11730
11994
|
n.subReasonFull = (n.subReasonFull || "") + t;
|
|
11731
11995
|
let r = (n.subReason || "") + t;
|
|
11732
|
-
n.subReason = r.length >
|
|
11996
|
+
n.subReason = r.length > uf ? r.slice(-4e3) : r;
|
|
11733
11997
|
break;
|
|
11734
11998
|
}
|
|
11735
11999
|
n.children ||= [];
|
|
@@ -11858,7 +12122,7 @@ function Qd(e = {}) {
|
|
|
11858
12122
|
}
|
|
11859
12123
|
//#endregion
|
|
11860
12124
|
//#region src/core/components/icons.ts
|
|
11861
|
-
var
|
|
12125
|
+
var ff = {
|
|
11862
12126
|
header: "🤖",
|
|
11863
12127
|
subagent: "🤖",
|
|
11864
12128
|
subagentProgress: "🧬",
|
|
@@ -11869,10 +12133,10 @@ var $d = {
|
|
|
11869
12133
|
recommend: "💡",
|
|
11870
12134
|
conflict: "⚠️"
|
|
11871
12135
|
};
|
|
11872
|
-
function
|
|
11873
|
-
let t = {
|
|
12136
|
+
function pf(e) {
|
|
12137
|
+
let t = { ...ff };
|
|
11874
12138
|
if (!e) return t;
|
|
11875
|
-
let n = Object.keys(
|
|
12139
|
+
let n = Object.keys(ff);
|
|
11876
12140
|
for (let r of n) {
|
|
11877
12141
|
let n = e[r];
|
|
11878
12142
|
typeof n == "string" && (t[r] = n);
|
|
@@ -11881,7 +12145,7 @@ function ef(e) {
|
|
|
11881
12145
|
}
|
|
11882
12146
|
//#endregion
|
|
11883
12147
|
//#region src/core/components/messages.ts
|
|
11884
|
-
var
|
|
12148
|
+
var mf = {
|
|
11885
12149
|
defaultTitle: "AI 助手",
|
|
11886
12150
|
inputPlaceholder: "输入消息,Enter 发送...",
|
|
11887
12151
|
newSession: "新建会话",
|
|
@@ -11984,6 +12248,8 @@ var tf = {
|
|
|
11984
12248
|
debugNoInfo: "暂无信息",
|
|
11985
12249
|
debugCardView: "🗂 卡片视图",
|
|
11986
12250
|
debugRequestBody: "📋 请求体",
|
|
12251
|
+
debugOnlyNew: "只看新增",
|
|
12252
|
+
debugShowAll: "全部消息",
|
|
11987
12253
|
debugViewRawJson: "查看原始 JSON",
|
|
11988
12254
|
debugCollapseRawJson: "收起原始 JSON",
|
|
11989
12255
|
debugModel: "模型",
|
|
@@ -12108,8 +12374,8 @@ var tf = {
|
|
|
12108
12374
|
codeDemoText: "这是一段示例文字,用于展示 CSS 效果。",
|
|
12109
12375
|
codeDemoButton: "按钮",
|
|
12110
12376
|
codeDemoInput: "输入框"
|
|
12111
|
-
},
|
|
12112
|
-
"zh-CN":
|
|
12377
|
+
}, hf = {
|
|
12378
|
+
"zh-CN": mf,
|
|
12113
12379
|
"en-US": {
|
|
12114
12380
|
defaultTitle: "AI Assistant",
|
|
12115
12381
|
inputPlaceholder: "Type a message, Enter to send...",
|
|
@@ -12213,6 +12479,8 @@ var tf = {
|
|
|
12213
12479
|
debugNoInfo: "No info",
|
|
12214
12480
|
debugCardView: "🗂 Cards",
|
|
12215
12481
|
debugRequestBody: "📋 Request body",
|
|
12482
|
+
debugOnlyNew: "New only",
|
|
12483
|
+
debugShowAll: "All messages",
|
|
12216
12484
|
debugViewRawJson: "View raw JSON",
|
|
12217
12485
|
debugCollapseRawJson: "Collapse raw JSON",
|
|
12218
12486
|
debugModel: "Model",
|
|
@@ -12339,10 +12607,10 @@ var tf = {
|
|
|
12339
12607
|
codeDemoInput: "Input"
|
|
12340
12608
|
}
|
|
12341
12609
|
};
|
|
12342
|
-
function
|
|
12610
|
+
function gf(e = "zh-CN", t) {
|
|
12343
12611
|
let n = {
|
|
12344
|
-
...
|
|
12345
|
-
...
|
|
12612
|
+
...mf,
|
|
12613
|
+
...hf[e]
|
|
12346
12614
|
};
|
|
12347
12615
|
if (!t) return n;
|
|
12348
12616
|
let r = { ...n };
|
|
@@ -12354,9 +12622,9 @@ function rf(e = "zh-CN", t) {
|
|
|
12354
12622
|
}
|
|
12355
12623
|
//#endregion
|
|
12356
12624
|
//#region src/core/composables/chatContext.ts
|
|
12357
|
-
var
|
|
12358
|
-
function
|
|
12359
|
-
let t =
|
|
12625
|
+
var _f = Symbol("chatContext");
|
|
12626
|
+
function vf(e = {}) {
|
|
12627
|
+
let t = df({
|
|
12360
12628
|
fetchResponse: e.fetchResponse,
|
|
12361
12629
|
fetchStream: e.fetchStream,
|
|
12362
12630
|
messages: e.messages,
|
|
@@ -12376,7 +12644,7 @@ function of(e = {}) {
|
|
|
12376
12644
|
}, h = /* @__PURE__ */ At({}), g = (e) => h.value[e] === !0, _ = (e) => {
|
|
12377
12645
|
h.value[e] = !g(e);
|
|
12378
12646
|
}, v = /* @__PURE__ */ At(!1), y = (e) => {
|
|
12379
|
-
|
|
12647
|
+
lf(e).then((e) => {
|
|
12380
12648
|
e && (v.value = !0, setTimeout(() => {
|
|
12381
12649
|
v.value = !1;
|
|
12382
12650
|
}, 1500));
|
|
@@ -12412,7 +12680,7 @@ function of(e = {}) {
|
|
|
12412
12680
|
e.onClearFocus?.();
|
|
12413
12681
|
}, j = (t) => {
|
|
12414
12682
|
e.onFocusChipClick?.(t);
|
|
12415
|
-
}, M =
|
|
12683
|
+
}, M = pf(e.icons), te = e.locale ?? "zh-CN";
|
|
12416
12684
|
return {
|
|
12417
12685
|
chat: t,
|
|
12418
12686
|
inputText: o,
|
|
@@ -12444,18 +12712,18 @@ function of(e = {}) {
|
|
|
12444
12712
|
focusChipClick: j,
|
|
12445
12713
|
icons: M,
|
|
12446
12714
|
locale: te,
|
|
12447
|
-
messages:
|
|
12715
|
+
messages: gf(te, e.dialogMessages)
|
|
12448
12716
|
};
|
|
12449
12717
|
}
|
|
12450
|
-
function
|
|
12451
|
-
let e = Rn(
|
|
12718
|
+
function yf() {
|
|
12719
|
+
let e = Rn(_f);
|
|
12452
12720
|
if (!e) throw Error("useChatContext 必须在 provide(chatContextKey) 的组件子树内调用");
|
|
12453
12721
|
return e;
|
|
12454
12722
|
}
|
|
12455
12723
|
//#endregion
|
|
12456
12724
|
//#region src/core/index.headless.ts
|
|
12457
|
-
function
|
|
12458
|
-
return
|
|
12725
|
+
function bf(e) {
|
|
12726
|
+
return tf(e);
|
|
12459
12727
|
}
|
|
12460
12728
|
//#endregion
|
|
12461
|
-
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 };
|