page-agent-sdk 4.16.0 → 4.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -562,19 +562,19 @@ var G, Ee = /* @__PURE__ */ new WeakSet(), De = class {
562
562
  }
563
563
  run() {
564
564
  if (!(this.flags & 1)) return this.fn();
565
- this.flags |= 2, We(this), Pe(this);
566
- let e = G, t = Be;
567
- G = this, Be = !0;
565
+ this.flags |= 2, Ue(this), Pe(this);
566
+ let e = G, t = K;
567
+ G = this, K = !0;
568
568
  try {
569
569
  return this.fn();
570
570
  } finally {
571
- process.env.NODE_ENV !== "production" && G !== this && Ce("Active effect was not restored correctly - this is likely a Vue internal bug."), Fe(this), G = e, Be = t, this.flags &= -3;
571
+ process.env.NODE_ENV !== "production" && G !== this && Ce("Active effect was not restored correctly - this is likely a Vue internal bug."), Fe(this), G = e, K = t, this.flags &= -3;
572
572
  }
573
573
  }
574
574
  stop() {
575
575
  if (this.flags & 1) {
576
576
  for (let e = this.deps; e; e = e.nextDep) Re(e);
577
- this.deps = this.depsTail = void 0, We(this), this.onStop && this.onStop(), this.flags &= -2;
577
+ this.deps = this.depsTail = void 0, Ue(this), this.onStop && this.onStop(), this.flags &= -2;
578
578
  }
579
579
  }
580
580
  trigger() {
@@ -637,10 +637,10 @@ function Ie(e) {
637
637
  return !!e._dirty;
638
638
  }
639
639
  function Le(e) {
640
- if (e.flags & 4 && !(e.flags & 16) || (e.flags &= -17, e.globalVersion === Ge) || (e.globalVersion = Ge, !e.isSSR && e.flags & 128 && (!e.deps && !e._dirty || !Ie(e)))) return;
640
+ if (e.flags & 4 && !(e.flags & 16) || (e.flags &= -17, e.globalVersion === We) || (e.globalVersion = We, !e.isSSR && e.flags & 128 && (!e.deps && !e._dirty || !Ie(e)))) return;
641
641
  e.flags |= 2;
642
- let t = e.dep, n = G, r = Be;
643
- G = e, Be = !0;
642
+ let t = e.dep, n = G, r = K;
643
+ G = e, K = !0;
644
644
  try {
645
645
  Pe(e);
646
646
  let n = e.fn(e._value);
@@ -648,7 +648,7 @@ function Le(e) {
648
648
  } catch (e) {
649
649
  throw t.version++, e;
650
650
  } finally {
651
- G = n, Be = r, Fe(e), e.flags &= -3;
651
+ G = n, K = r, Fe(e), e.flags &= -3;
652
652
  }
653
653
  }
654
654
  function Re(e, t = !1) {
@@ -663,15 +663,15 @@ function ze(e) {
663
663
  let { prevDep: t, nextDep: n } = e;
664
664
  t && (t.nextDep = n, e.prevDep = void 0), n && (n.prevDep = t, e.nextDep = void 0);
665
665
  }
666
- var Be = !0, Ve = [];
667
- function He() {
668
- Ve.push(Be), Be = !1;
666
+ var K = !0, Be = [];
667
+ function Ve() {
668
+ Be.push(K), K = !1;
669
669
  }
670
- function Ue() {
671
- let e = Ve.pop();
672
- Be = e === void 0 || e;
670
+ function He() {
671
+ let e = Be.pop();
672
+ K = e === void 0 || e;
673
673
  }
674
- function We(e) {
674
+ function Ue(e) {
675
675
  let { cleanup: t } = e;
676
676
  if (e.cleanup = void 0, t) {
677
677
  let e = G;
@@ -683,18 +683,18 @@ function We(e) {
683
683
  }
684
684
  }
685
685
  }
686
- var Ge = 0, Ke = class {
686
+ var We = 0, Ge = class {
687
687
  constructor(e, t) {
688
688
  this.sub = e, this.dep = t, this.version = t.version, this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0;
689
689
  }
690
- }, qe = class {
690
+ }, Ke = class {
691
691
  constructor(e) {
692
692
  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);
693
693
  }
694
694
  track(e) {
695
- if (!G || !Be || G === this.computed) return;
695
+ if (!G || !K || G === this.computed) return;
696
696
  let t = this.activeLink;
697
- if (t === void 0 || t.sub !== G) t = this.activeLink = new Ke(G, this), G.deps ? (t.prevDep = G.depsTail, G.depsTail.nextDep = t, G.depsTail = t) : G.deps = G.depsTail = t, K(t);
697
+ if (t === void 0 || t.sub !== G) t = this.activeLink = new Ge(G, this), G.deps ? (t.prevDep = G.depsTail, G.depsTail.nextDep = t, G.depsTail = t) : G.deps = G.depsTail = t, qe(t);
698
698
  else if (t.version === -1 && (t.version = this.version, t.nextDep)) {
699
699
  let e = t.nextDep;
700
700
  e.prevDep = t.prevDep, t.prevDep && (t.prevDep.nextDep = e), t.prevDep = G.depsTail, t.nextDep = void 0, G.depsTail.nextDep = t, G.depsTail = t, G.deps === t && (G.deps = e);
@@ -702,7 +702,7 @@ var Ge = 0, Ke = class {
702
702
  return process.env.NODE_ENV !== "production" && G.onTrack && G.onTrack(M({ effect: G }, e)), t;
703
703
  }
704
704
  trigger(e) {
705
- this.version++, Ge++, this.notify(e);
705
+ this.version++, We++, this.notify(e);
706
706
  }
707
707
  notify(e) {
708
708
  Me();
@@ -714,24 +714,24 @@ var Ge = 0, Ke = class {
714
714
  }
715
715
  }
716
716
  };
717
- function K(e) {
717
+ function qe(e) {
718
718
  if (e.dep.sc++, e.sub.flags & 4) {
719
719
  let t = e.dep.computed;
720
720
  if (t && !e.dep.subs) {
721
721
  t.flags |= 20;
722
- for (let e = t.deps; e; e = e.nextDep) K(e);
722
+ for (let e = t.deps; e; e = e.nextDep) qe(e);
723
723
  }
724
724
  let n = e.dep.subs;
725
725
  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;
726
726
  }
727
727
  }
728
- var Je = /* @__PURE__ */ new WeakMap(), Ye = /* @__PURE__ */ Symbol(process.env.NODE_ENV === "production" ? "" : "Object iterate"), Xe = /* @__PURE__ */ Symbol(process.env.NODE_ENV === "production" ? "" : "Map keys iterate"), Ze = /* @__PURE__ */ Symbol(process.env.NODE_ENV === "production" ? "" : "Array iterate");
729
- function q(e, t, n) {
730
- if (Be && G) {
731
- let r = Je.get(e);
732
- r || Je.set(e, r = /* @__PURE__ */ new Map());
728
+ var q = /* @__PURE__ */ new WeakMap(), Je = /* @__PURE__ */ Symbol(process.env.NODE_ENV === "production" ? "" : "Object iterate"), Ye = /* @__PURE__ */ Symbol(process.env.NODE_ENV === "production" ? "" : "Map keys iterate"), Xe = /* @__PURE__ */ Symbol(process.env.NODE_ENV === "production" ? "" : "Array iterate");
729
+ function Ze(e, t, n) {
730
+ if (K && G) {
731
+ let r = q.get(e);
732
+ r || q.set(e, r = /* @__PURE__ */ new Map());
733
733
  let i = r.get(n);
734
- i || (r.set(n, i = new qe()), i.map = r, i.key = n), process.env.NODE_ENV === "production" ? i.track() : i.track({
734
+ i || (r.set(n, i = new Ke()), i.map = r, i.key = n), process.env.NODE_ENV === "production" ? i.track() : i.track({
735
735
  target: e,
736
736
  type: t,
737
737
  key: n
@@ -739,9 +739,9 @@ function q(e, t, n) {
739
739
  }
740
740
  }
741
741
  function Qe(e, t, n, r, i, a) {
742
- let o = Je.get(e);
742
+ let o = q.get(e);
743
743
  if (!o) {
744
- Ge++;
744
+ We++;
745
745
  return;
746
746
  }
747
747
  let s = (o) => {
@@ -760,17 +760,17 @@ function Qe(e, t, n, r, i, a) {
760
760
  if (i && n === "length") {
761
761
  let e = Number(r);
762
762
  o.forEach((t, n) => {
763
- (n === "length" || n === Ze || !de(n) && n >= e) && s(t);
763
+ (n === "length" || n === Xe || !de(n) && n >= e) && s(t);
764
764
  });
765
- } else switch ((n !== void 0 || o.has(void 0)) && s(o.get(n)), a && s(o.get(Ze)), t) {
765
+ } else switch ((n !== void 0 || o.has(void 0)) && s(o.get(n)), a && s(o.get(Xe)), t) {
766
766
  case "add":
767
- i ? a && s(o.get("length")) : (s(o.get(Ye)), le(e) && s(o.get(Xe)));
767
+ i ? a && s(o.get("length")) : (s(o.get(Je)), le(e) && s(o.get(Ye)));
768
768
  break;
769
769
  case "delete":
770
- i || (s(o.get(Ye)), le(e) && s(o.get(Xe)));
770
+ i || (s(o.get(Je)), le(e) && s(o.get(Ye)));
771
771
  break;
772
772
  case "set":
773
- le(e) && s(o.get(Ye));
773
+ le(e) && s(o.get(Je));
774
774
  break;
775
775
  }
776
776
  }
@@ -778,10 +778,10 @@ function Qe(e, t, n, r, i, a) {
778
778
  }
779
779
  function $e(e) {
780
780
  let t = /* @__PURE__ */ Y(e);
781
- return t === e ? t : (q(t, "iterate", Ze), /* @__PURE__ */ Rt(e) ? t : t.map(Vt));
781
+ return t === e ? t : (Ze(t, "iterate", Xe), /* @__PURE__ */ Rt(e) ? t : t.map(Vt));
782
782
  }
783
783
  function et(e) {
784
- return q(e = /* @__PURE__ */ Y(e), "iterate", Ze), e;
784
+ return Ze(e = /* @__PURE__ */ Y(e), "iterate", Xe), e;
785
785
  }
786
786
  function tt(e, t) {
787
787
  return /* @__PURE__ */ Lt(e) ? Ht(/* @__PURE__ */ It(e) ? Vt(t) : t) : Vt(t);
@@ -905,20 +905,20 @@ function ot(e, t, n, r) {
905
905
  }
906
906
  function st(e, t, n) {
907
907
  let r = /* @__PURE__ */ Y(e);
908
- q(r, "iterate", Ze);
908
+ Ze(r, "iterate", Xe);
909
909
  let i = r[t](...n);
910
910
  return (i === -1 || i === !1) && /* @__PURE__ */ zt(n[0]) ? (n[0] = /* @__PURE__ */ Y(n[0]), r[t](...n)) : i;
911
911
  }
912
912
  function ct(e, t, n = []) {
913
- He(), Me();
913
+ Ve(), Me();
914
914
  let r = (/* @__PURE__ */ Y(e))[t].apply(e, n);
915
- return Ne(), Ue(), r;
915
+ return Ne(), He(), r;
916
916
  }
917
917
  var lt = /* @__PURE__ */ ae("__proto__,__v_isRef,__isVue"), ut = new Set(/* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((e) => e !== "arguments" && e !== "caller").map((e) => Symbol[e]).filter(de));
918
918
  function dt(e) {
919
919
  de(e) || (e = String(e));
920
920
  let t = /* @__PURE__ */ Y(this);
921
- return q(t, "has", e), t.hasOwnProperty(e);
921
+ return Ze(t, "has", e), t.hasOwnProperty(e);
922
922
  }
923
923
  var ft = class {
924
924
  constructor(e = !1, t = !1) {
@@ -930,7 +930,7 @@ var ft = class {
930
930
  if (t === "__v_isReactive") return !r;
931
931
  if (t === "__v_isReadonly") return r;
932
932
  if (t === "__v_isShallow") return i;
933
- if (t === "__v_raw") return n === (r ? i ? At : J : i ? kt : Ot).get(e) || Object.getPrototypeOf(e) === Object.getPrototypeOf(n) ? e : void 0;
933
+ if (t === "__v_raw") return n === (r ? i ? J : At : i ? kt : Ot).get(e) || Object.getPrototypeOf(e) === Object.getPrototypeOf(n) ? e : void 0;
934
934
  let a = F(e);
935
935
  if (!r) {
936
936
  let e;
@@ -938,7 +938,7 @@ var ft = class {
938
938
  if (t === "hasOwnProperty") return dt;
939
939
  }
940
940
  let o = Reflect.get(e, t, /* @__PURE__ */ Ut(e) ? e : n);
941
- if ((de(t) ? ut.has(t) : lt(t)) || (r || q(e, "get", t), i)) return o;
941
+ if ((de(t) ? ut.has(t) : lt(t)) || (r || Ze(e, "get", t), i)) return o;
942
942
  if (/* @__PURE__ */ Ut(o)) {
943
943
  let e = a && me(t) ? o : o.value;
944
944
  return r && R(e) ? /* @__PURE__ */ Nt(e) : e;
@@ -964,10 +964,10 @@ var ft = class {
964
964
  }
965
965
  has(e, t) {
966
966
  let n = Reflect.has(e, t);
967
- return (!de(t) || !ut.has(t)) && q(e, "has", t), n;
967
+ return (!de(t) || !ut.has(t)) && Ze(e, "has", t), n;
968
968
  }
969
969
  ownKeys(e) {
970
- return q(e, "iterate", F(e) ? "length" : Ye), Reflect.ownKeys(e);
970
+ return Ze(e, "iterate", F(e) ? "length" : Je), Reflect.ownKeys(e);
971
971
  }
972
972
  }, mt = class extends ft {
973
973
  constructor(e = !1) {
@@ -983,7 +983,7 @@ var ft = class {
983
983
  function bt(e, t, n) {
984
984
  return function(...r) {
985
985
  let i = this.__v_raw, a = /* @__PURE__ */ Y(i), o = le(a), s = e === "entries" || e === Symbol.iterator && o, c = e === "keys" && o, l = i[e](...r), u = n ? vt : t ? Ht : Vt;
986
- return !t && q(a, "iterate", c ? Xe : Ye), M(Object.create(l), { next() {
986
+ return !t && Ze(a, "iterate", c ? Ye : Je), M(Object.create(l), { next() {
987
987
  let { value: e, done: t } = l.next();
988
988
  return t ? {
989
989
  value: e,
@@ -1008,7 +1008,7 @@ function St(e, t) {
1008
1008
  let n = {
1009
1009
  get(n) {
1010
1010
  let r = this.__v_raw, i = /* @__PURE__ */ Y(r), a = /* @__PURE__ */ Y(n);
1011
- e || (H(n, a) && q(i, "get", n), q(i, "get", a));
1011
+ e || (H(n, a) && Ze(i, "get", n), Ze(i, "get", a));
1012
1012
  let { has: o } = yt(i), s = t ? vt : e ? Ht : Vt;
1013
1013
  if (o.call(i, n)) return s(r.get(n));
1014
1014
  if (o.call(i, a)) return s(r.get(a));
@@ -1016,15 +1016,15 @@ function St(e, t) {
1016
1016
  },
1017
1017
  get size() {
1018
1018
  let t = this.__v_raw;
1019
- return !e && q(/* @__PURE__ */ Y(t), "iterate", Ye), t.size;
1019
+ return !e && Ze(/* @__PURE__ */ Y(t), "iterate", Je), t.size;
1020
1020
  },
1021
1021
  has(t) {
1022
1022
  let n = this.__v_raw, r = /* @__PURE__ */ Y(n), i = /* @__PURE__ */ Y(t);
1023
- return e || (H(t, i) && q(r, "has", t), q(r, "has", i)), t === i ? n.has(t) : n.has(t) || n.has(i);
1023
+ return e || (H(t, i) && Ze(r, "has", t), Ze(r, "has", i)), t === i ? n.has(t) : n.has(t) || n.has(i);
1024
1024
  },
1025
1025
  forEach(n, r) {
1026
1026
  let i = this, a = i.__v_raw, o = /* @__PURE__ */ Y(a), s = t ? vt : e ? Ht : Vt;
1027
- return !e && q(o, "iterate", Ye), a.forEach((e, t) => n.call(r, s(e), s(t), i));
1027
+ return !e && Ze(o, "iterate", Je), a.forEach((e, t) => n.call(r, s(e), s(t), i));
1028
1028
  }
1029
1029
  };
1030
1030
  return M(n, e ? {
@@ -1075,7 +1075,7 @@ function Dt(e, t, n) {
1075
1075
  Ce(`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.`);
1076
1076
  }
1077
1077
  }
1078
- var Ot = /* @__PURE__ */ new WeakMap(), kt = /* @__PURE__ */ new WeakMap(), J = /* @__PURE__ */ new WeakMap(), At = /* @__PURE__ */ new WeakMap();
1078
+ var Ot = /* @__PURE__ */ new WeakMap(), kt = /* @__PURE__ */ new WeakMap(), At = /* @__PURE__ */ new WeakMap(), J = /* @__PURE__ */ new WeakMap();
1079
1079
  function jt(e) {
1080
1080
  switch (e) {
1081
1081
  case "Object":
@@ -1093,11 +1093,11 @@ function Mt(e) {
1093
1093
  }
1094
1094
  // @__NO_SIDE_EFFECTS__
1095
1095
  function Nt(e) {
1096
- return Ft(e, !0, gt, Tt, J);
1096
+ return Ft(e, !0, gt, Tt, At);
1097
1097
  }
1098
1098
  // @__NO_SIDE_EFFECTS__
1099
1099
  function Pt(e) {
1100
- return Ft(e, !0, _t, Et, At);
1100
+ return Ft(e, !0, _t, Et, J);
1101
1101
  }
1102
1102
  function Ft(e, t, n, r, i) {
1103
1103
  if (!R(e)) return process.env.NODE_ENV !== "production" && Ce(`value cannot be made ${t ? "readonly" : "reactive"}: ${String(e)}`), e;
@@ -1151,7 +1151,7 @@ function Kt(e, t) {
1151
1151
  }
1152
1152
  var qt = class {
1153
1153
  constructor(e, t) {
1154
- this.dep = new qe(), this.__v_isRef = !0, this.__v_isShallow = !1, this._rawValue = t ? e : /* @__PURE__ */ Y(e), this._value = t ? e : Vt(e), this.__v_isShallow = t;
1154
+ this.dep = new Ke(), this.__v_isRef = !0, this.__v_isShallow = !1, this._rawValue = t ? e : /* @__PURE__ */ Y(e), this._value = t ? e : Vt(e), this.__v_isShallow = t;
1155
1155
  }
1156
1156
  get value() {
1157
1157
  return process.env.NODE_ENV === "production" ? this.dep.track() : this.dep.track({
@@ -1182,19 +1182,19 @@ function Jt(e) {
1182
1182
  function Yt(e) {
1183
1183
  return /* @__PURE__ */ Ut(e) ? e.value : e;
1184
1184
  }
1185
- var X = {
1185
+ var Xt = {
1186
1186
  get: (e, t, n) => t === "__v_raw" ? e : Yt(Reflect.get(e, t, n)),
1187
1187
  set: (e, t, n, r) => {
1188
1188
  let i = e[t];
1189
1189
  return /* @__PURE__ */ Ut(i) && !/* @__PURE__ */ Ut(n) ? (i.value = n, !0) : Reflect.set(e, t, n, r);
1190
1190
  }
1191
1191
  };
1192
- function Xt(e) {
1193
- return /* @__PURE__ */ It(e) ? e : new Proxy(e, X);
1192
+ function X(e) {
1193
+ return /* @__PURE__ */ It(e) ? e : new Proxy(e, Xt);
1194
1194
  }
1195
1195
  var Zt = class {
1196
1196
  constructor(e, t, n) {
1197
- this.fn = e, this.setter = t, this._value = void 0, this.dep = new qe(this), this.__v_isRef = !0, this.deps = void 0, this.depsTail = void 0, this.flags = 16, this.globalVersion = Ge - 1, this.next = void 0, this.effect = this, this.__v_isReadonly = !t, this.isSSR = n;
1197
+ this.fn = e, this.setter = t, this._value = void 0, this.dep = new Ke(this), this.__v_isRef = !0, this.deps = void 0, this.depsTail = void 0, this.flags = 16, this.globalVersion = We - 1, this.next = void 0, this.effect = this, this.__v_isReadonly = !t, this.isSSR = n;
1198
1198
  }
1199
1199
  notify() {
1200
1200
  if (this.flags |= 16, !(this.flags & 8) && G !== this) return je(this, !0), !0;
@@ -1237,11 +1237,11 @@ function rn(e, t, n = A) {
1237
1237
  process.env.NODE_ENV !== "production" && l(e);
1238
1238
  })) : L(e) ? f = t ? c ? () => c(e, 2) : e : () => {
1239
1239
  if (p) {
1240
- He();
1240
+ Ve();
1241
1241
  try {
1242
1242
  p();
1243
1243
  } finally {
1244
- Ue();
1244
+ He();
1245
1245
  }
1246
1246
  }
1247
1247
  let t = tn;
@@ -1319,7 +1319,7 @@ function cn() {
1319
1319
  var ln = !1;
1320
1320
  function un(e, ...t) {
1321
1321
  if (ln) return;
1322
- ln = !0, He();
1322
+ ln = !0, Ve();
1323
1323
  let n = on.length ? on[on.length - 1].component : null, r = n && n.appContext.config.warnHandler, i = dn();
1324
1324
  if (r) _n(r, n, 11, [
1325
1325
  e + t.map((e) => e.toString?.call(e) ?? JSON.stringify(e)).join(""),
@@ -1331,7 +1331,7 @@ function un(e, ...t) {
1331
1331
  let n = [`[Vue warn]: ${e}`, ...t];
1332
1332
  i.length && n.push("\n", ...fn(i)), console.warn(...n);
1333
1333
  }
1334
- Ue(), ln = !1;
1334
+ He(), ln = !1;
1335
1335
  }
1336
1336
  function dn() {
1337
1337
  let e = on[on.length - 1];
@@ -1440,11 +1440,11 @@ function yn(e, t, n, r = !0) {
1440
1440
  r = r.parent;
1441
1441
  }
1442
1442
  if (a) {
1443
- He(), _n(a, null, 10, [
1443
+ Ve(), _n(a, null, 10, [
1444
1444
  e,
1445
1445
  i,
1446
1446
  o
1447
- ]), Ue();
1447
+ ]), He();
1448
1448
  return;
1449
1449
  }
1450
1450
  }
@@ -1684,7 +1684,7 @@ var ar = /* @__PURE__ */ Symbol.for("v-ndc"), or = (e) => e ? Yr(e) ? Zr(e) : or
1684
1684
  else dr && (o[t] = 0);
1685
1685
  }
1686
1686
  let l = sr[t], u, d;
1687
- if (l) return t === "$attrs" ? (q(e.attrs, "get", ""), process.env.NODE_ENV) : process.env.NODE_ENV !== "production" && t === "$slots" && q(e, "get", t), l(e);
1687
+ if (l) return t === "$attrs" ? (Ze(e.attrs, "get", ""), process.env.NODE_ENV) : process.env.NODE_ENV !== "production" && t === "$slots" && Ze(e, "get", t), l(e);
1688
1688
  if ((u = s.__cssModules) && (u = u[t])) return u;
1689
1689
  if (n !== A && P(n, t)) return o[t] = 4, n[t];
1690
1690
  if (d = c.config.globalProperties, P(d, t)) return d[t];
@@ -1943,7 +1943,7 @@ function Yr(e) {
1943
1943
  var Xr = !1;
1944
1944
  process.env.NODE_ENV;
1945
1945
  function Zr(e) {
1946
- return e.exposed ? e.exposeProxy ||= new Proxy(Xt(Bt(e.exposed)), {
1946
+ return e.exposed ? e.exposeProxy ||= new Proxy(X(Bt(e.exposed)), {
1947
1947
  get(t, n) {
1948
1948
  if (n in t) return t[n];
1949
1949
  if (n in sr) return sr[n](e);
@@ -1994,9 +1994,9 @@ function ii() {
1994
1994
  "VueInstance"
1995
1995
  ];
1996
1996
  if (/* @__PURE__ */ Ut(t)) {
1997
- He();
1997
+ Ve();
1998
1998
  let n = t.value;
1999
- return Ue(), [
1999
+ return He(), [
2000
2000
  "div",
2001
2001
  {},
2002
2002
  [
@@ -3108,7 +3108,12 @@ var ja = "", Ma = "根(整体)", Na = /* @__PURE__ */ new Set([
3108
3108
  "read",
3109
3109
  "query_data",
3110
3110
  "search_data"
3111
- ]), Pa = /* @__PURE__ */ new Set(["resource_update", "resource_delete"]), Fa = /* @__PURE__ */ new Set(["remove", "move"]);
3111
+ ]), Pa = /* @__PURE__ */ new Set([
3112
+ "resource_update",
3113
+ "resource_delete",
3114
+ "dom_edit",
3115
+ "dom_restore"
3116
+ ]), Fa = /* @__PURE__ */ new Set(["remove", "move"]);
3112
3117
  function Ia(e) {
3113
3118
  let t = String(e).trim();
3114
3119
  return t === "(root)" || t === "$" ? ja : (t.startsWith("$.") ? t = t.slice(2) : t.startsWith("$") && (t = t.slice(1)), t = t.replace(/\[(\d+)\]/g, ".$1"), t);
@@ -10668,7 +10673,7 @@ function Sf(e) {
10668
10673
  name: "component-write-guard",
10669
10674
  wrapToolCall: async (t, n) => {
10670
10675
  let r = e.tools?.find((e) => e.name === t.name);
10671
- if (!(r && "writeCapable" in r && (typeof r.writeCapable == "function" ? r.writeCapable(t.args) : r.writeCapable === !0))) return n(t);
10676
+ if (!(r && "writeCapable" in r && (typeof r.writeCapable == "function" ? r.writeCapable(t.args) : r.writeCapable === !0)) || Pa.has(t.name)) return n(t);
10672
10677
  let i = t.args ?? {};
10673
10678
  if (i.dryRun === !0) return n(t);
10674
10679
  if (t.name === "restore_data") {
@@ -12401,6 +12406,11 @@ var em = [
12401
12406
  {
12402
12407
  name: "pageContext",
12403
12408
  defaultOn: !1
12409
+ },
12410
+ {
12411
+ name: "domEdit",
12412
+ defaultOn: !1,
12413
+ requires: ["domInspect"]
12404
12414
  }
12405
12415
  ];
12406
12416
  function tm(e) {
@@ -13307,9 +13317,298 @@ function Rh(e) {
13307
13317
  });
13308
13318
  }
13309
13319
  //#endregion
13320
+ //#region src/core/tools/domEdit.ts
13321
+ var zh = "data-pg-snap", Bh = 20, Vh = 256 * 1024, Hh = t.enum([
13322
+ "before",
13323
+ "after",
13324
+ "prepend",
13325
+ "append",
13326
+ "replace"
13327
+ ]), Uh = /* @__PURE__ */ new Set([
13328
+ "script",
13329
+ "iframe",
13330
+ "object",
13331
+ "embed",
13332
+ "link",
13333
+ "meta",
13334
+ "base"
13335
+ ]), Wh = /^on\w+$/i, Gh = /* @__PURE__ */ new Set([
13336
+ "href",
13337
+ "src",
13338
+ "action",
13339
+ "formaction",
13340
+ "xlink:href",
13341
+ "data"
13342
+ ]);
13343
+ function Kh(e) {
13344
+ return /^\s*(javascript|vbscript)\s*:/i.test(e);
13345
+ }
13346
+ function qh(e) {
13347
+ return !e || !/^[a-zA-Z_:][-a-zA-Z0-9_:.]*$/.test(e) ? `非法属性名 "${e}"` : Wh.test(e) ? `事件属性 ${e} 被拒(on* 内联脚本防误执行)` : null;
13348
+ }
13349
+ function Jh(e, t) {
13350
+ let n = [];
13351
+ Uh.has(e.toLowerCase()) && n.push(`标签 <${e}> 被拒(可执行/页面行为面;文档标注场景请用常规内容标签)`);
13352
+ for (let [e, r] of Object.entries(t ?? {})) {
13353
+ let t = qh(e);
13354
+ t ? n.push(t) : Gh.has(e.toLowerCase()) && Kh(String(r)) && n.push(`${e} 的 javascript:/vbscript: 协议被拒`);
13355
+ }
13356
+ return n;
13357
+ }
13358
+ var Yh = t.discriminatedUnion("op", [
13359
+ t.object({
13360
+ op: t.literal("set_text"),
13361
+ selector: t.string().min(1),
13362
+ text: t.string()
13363
+ }),
13364
+ t.object({
13365
+ op: t.literal("set_html"),
13366
+ selector: t.string().min(1),
13367
+ html: t.string()
13368
+ }),
13369
+ t.object({
13370
+ op: t.literal("set_attr"),
13371
+ selector: t.string().min(1),
13372
+ name: t.string().min(1),
13373
+ value: t.string()
13374
+ }),
13375
+ t.object({
13376
+ op: t.literal("remove_attr"),
13377
+ selector: t.string().min(1),
13378
+ name: t.string().min(1)
13379
+ }),
13380
+ t.object({
13381
+ op: t.literal("add_class"),
13382
+ selector: t.string().min(1),
13383
+ classes: t.string().min(1).describe("空格分隔")
13384
+ }),
13385
+ t.object({
13386
+ op: t.literal("remove_class"),
13387
+ selector: t.string().min(1),
13388
+ classes: t.string().min(1).describe("空格分隔")
13389
+ }),
13390
+ t.object({
13391
+ op: t.literal("set_style"),
13392
+ selector: t.string().min(1),
13393
+ style: t.record(t.string(), t.string()).describe("CSS 属性 → 值")
13394
+ }),
13395
+ t.object({
13396
+ op: t.literal("insert"),
13397
+ anchor: t.string().min(1).describe("锚元素 selector"),
13398
+ position: Hh.describe("before/after = 锚前后兄弟;prepend/append = 锚首尾子;replace = 换掉锚本身"),
13399
+ tag: t.string().min(1).describe("新元素标签名,如 div/span/mark"),
13400
+ attrs: t.record(t.string(), t.string()).optional(),
13401
+ text: t.string().optional(),
13402
+ html: t.string().optional()
13403
+ }),
13404
+ t.object({
13405
+ op: t.literal("remove"),
13406
+ selector: t.string().min(1)
13407
+ }),
13408
+ t.object({
13409
+ op: t.literal("move"),
13410
+ selector: t.string().min(1).describe("要移动的元素"),
13411
+ to: t.string().min(1).describe("目标父容器 selector"),
13412
+ position: t.enum([
13413
+ "prepend",
13414
+ "append",
13415
+ "before",
13416
+ "after"
13417
+ ]).describe("并入 to 的方式")
13418
+ }),
13419
+ t.object({
13420
+ op: t.literal("highlight"),
13421
+ selector: t.string().min(1),
13422
+ color: t.string().optional().describe("高亮色(默认黄 #fef08a)"),
13423
+ scroll: t.boolean().optional().describe("滚动到可视区(默认 true)"),
13424
+ note: t.string().optional().describe("可选浮注文案")
13425
+ })
13426
+ ]);
13427
+ function Xh(e) {
13428
+ let t = [];
13429
+ for (let n = 0; n < e.length; n++) {
13430
+ let r = e[n], i = `patches[${n}](${r.op})`;
13431
+ if (r.op === "set_attr") {
13432
+ let e = qh(r.name);
13433
+ e ? t.push(`${i}: ${e}`) : Gh.has(r.name.toLowerCase()) && Kh(r.value) && t.push(`${i}: ${r.name} 的 javascript:/vbscript: 协议被拒`);
13434
+ }
13435
+ r.op === "insert" && (t.push(...Jh(r.tag, r.attrs).map((e) => `${i}: ${e}`)), r.text !== void 0 && r.html !== void 0 && t.push(`${i}: text 与 html 二选一`)), r.op === "highlight" && r.color && !/^#[0-9a-fA-F]{3,8}$|^[a-zA-Z]+$/.test(r.color) && t.push(`${i}: color 仅接受 hex 或颜色名`);
13436
+ }
13437
+ return t;
13438
+ }
13439
+ function Zh(e = {}) {
13440
+ let n = [], r = 0, i = () => e.getDocument?.() ?? (typeof document < "u" ? document : null), a = (e, t, n) => {
13441
+ let r = [];
13442
+ try {
13443
+ r = Array.from(e.querySelectorAll(t));
13444
+ } catch {
13445
+ return { err: `${n}: selector 语法错误 "${t}"` };
13446
+ }
13447
+ return r.length ? r.length > 1 ? { err: `${n}: selector 命中 ${r.length} 个元素,写操作要求唯一匹配。加层级/属性约束收窄(如 "${t}:first-child" 不行就用索引路径或唯一 class)` } : { el: r[0] } : { err: `${n}: 未命中任何元素(selector="${t}")。先用 get_dom/dom_search 定位,再写更精确的 selector` };
13448
+ }, o = (e) => ji(e) ? "目标元素位于 SDK 对话框自身 DOM 内,写操作被拒(防 agent 改坏自己的 UI)。请操作宿主页面内容区域" : null, c = (e, t) => {
13449
+ if (!e) return null;
13450
+ let n = e.outerHTML;
13451
+ if (n.length > Vh) return `快照超限:受影响子树 ${(n.length / 1024).toFixed(0)}KB > ${Vh / 1024}KB。缩小 selector 到更深的子树再改(快照是回滚安全网,巨树快照爆内存)`;
13452
+ let i = e.getAttribute?.(zh) ?? "";
13453
+ return i || (i = `pg${++r}`, e.setAttribute?.(zh, i)), t.some((e) => e.id === i) || t.push({
13454
+ id: i,
13455
+ html: n
13456
+ }), null;
13457
+ }, l = (e, t, n) => {
13458
+ switch (t.op) {
13459
+ case "set_text":
13460
+ case "set_html":
13461
+ case "set_attr":
13462
+ case "remove_attr":
13463
+ case "add_class":
13464
+ case "remove_class":
13465
+ case "set_style":
13466
+ case "highlight": {
13467
+ let r = a(e, t.selector, `${t.op} selector`);
13468
+ if ("err" in r) return r.err;
13469
+ let i = o(r.el);
13470
+ if (i) return i;
13471
+ let s = c(r.el, n);
13472
+ if (s) return s;
13473
+ switch (t.op) {
13474
+ case "set_text":
13475
+ r.el.textContent = t.text;
13476
+ break;
13477
+ case "set_html":
13478
+ r.el.innerHTML = t.html;
13479
+ break;
13480
+ case "set_attr":
13481
+ r.el.setAttribute(t.name, t.value);
13482
+ break;
13483
+ case "remove_attr":
13484
+ r.el.removeAttribute(t.name);
13485
+ break;
13486
+ case "add_class":
13487
+ r.el.classList?.add(...t.classes.split(/\s+/).filter(Boolean));
13488
+ break;
13489
+ case "remove_class":
13490
+ r.el.classList?.remove(...t.classes.split(/\s+/).filter(Boolean));
13491
+ break;
13492
+ case "set_style": {
13493
+ let e = r.el.style;
13494
+ for (let [n, r] of Object.entries(t.style)) e[n] = r;
13495
+ break;
13496
+ }
13497
+ case "highlight": {
13498
+ let e = t.color ?? "#fef08a", n = r.el.style;
13499
+ n.backgroundColor = e, n.outline = "2px solid rgba(59,130,246,.85)", t.note && r.el.setAttribute("title", t.note), t.scroll !== !1 && r.el.scrollIntoView?.({
13500
+ behavior: "smooth",
13501
+ block: "center"
13502
+ });
13503
+ break;
13504
+ }
13505
+ }
13506
+ return null;
13507
+ }
13508
+ case "insert": {
13509
+ let r = a(e, t.anchor, "insert anchor");
13510
+ if ("err" in r) return r.err;
13511
+ let i = r.el, s = o(i) ?? (t.position === "replace" ? null : o(i.parentElement ?? i));
13512
+ if (s) return s;
13513
+ let l = t.position === "prepend" || t.position === "append" ? i : i.parentElement, u = c(l ?? i, n);
13514
+ if (u) return u;
13515
+ let d = e.createElement(t.tag);
13516
+ for (let [e, n] of Object.entries(t.attrs ?? {})) d.setAttribute(e, n);
13517
+ return t.html === void 0 ? t.text !== void 0 && (d.textContent = t.text) : d.innerHTML = t.html, t.position === "prepend" ? i.prepend(d) : t.position === "append" ? i.appendChild(d) : t.position === "before" ? (i.parentElement ?? i).insertBefore(d, i) : t.position === "after" ? (i.parentElement ?? i).insertBefore(d, i.nextSibling) : i.replaceWith(d), null;
13518
+ }
13519
+ case "remove": {
13520
+ let r = a(e, t.selector, "remove selector");
13521
+ return "err" in r ? r.err : o(r.el) || (r.el.parentElement ? c(r.el.parentElement, n) || (r.el.remove(), null) : "remove: 目标无父容器(根元素不可删)");
13522
+ }
13523
+ case "move": {
13524
+ let r = a(e, t.selector, "move selector");
13525
+ if ("err" in r) return r.err;
13526
+ let i = a(e, t.to, "move to");
13527
+ if ("err" in i) return i.err;
13528
+ let s = o(r.el) ?? o(i.el);
13529
+ if (s) return s;
13530
+ if (r.el.contains(i.el)) return "move: 不能把元素移进它自己的子孙(循环结构)";
13531
+ let l = r.el.parentElement;
13532
+ return l ? c(l, n) || c(t.position === "prepend" || t.position === "append" ? i.el : i.el.parentElement ?? i.el, n) || (t.position === "prepend" ? i.el.prepend(r.el) : t.position === "append" ? i.el.appendChild(r.el) : t.position === "before" ? (i.el.parentElement ?? i.el).insertBefore(r.el, i.el) : (i.el.parentElement ?? i.el).insertBefore(r.el, i.el.nextSibling), null) : "move: 目标无父容器";
13533
+ }
13534
+ }
13535
+ }, u = s(async ({ patches: t, dryRun: r }) => {
13536
+ let s = i();
13537
+ if (!s) return "ERROR: dom_edit 仅在浏览器环境可用(当前运行在 node/服务端,无 DOM)。改数据请用 write 工具。";
13538
+ if (!t?.length) return "ERROR: patches 不能为空。支持 op:set_text/set_html/set_attr/remove_attr/add_class/remove_class/set_style/insert/remove/move/highlight";
13539
+ let c = Xh(t);
13540
+ if (c.length) return `ERROR: 校验失败(整批拒绝,零改动):\n- ${c.join("\n- ")}`;
13541
+ let u = (e, t) => {
13542
+ let n = a(s, e, t);
13543
+ return "err" in n ? n.err : o(n.el);
13544
+ };
13545
+ for (let e = 0; e < t.length; e++) {
13546
+ let n = t[e], r = n.op === "insert" ? u(n.anchor, `patches[${e}](insert) anchor`) : u(n.selector, `patches[${e}](${n.op}) selector`);
13547
+ if (r) return `ERROR: ${r}\n(整批拒绝,零改动)`;
13548
+ if (n.op === "move") {
13549
+ let t = u(n.to, `patches[${e}](move) to`);
13550
+ if (t) return `ERROR: ${t}\n(整批拒绝,零改动)`;
13551
+ }
13552
+ }
13553
+ let d = t.map((e) => e.op === "insert" ? `insert<${e.tag}>` : e.op);
13554
+ if (r) return e.onEdit?.({
13555
+ ops: d,
13556
+ applied: 0,
13557
+ dryRun: !0
13558
+ }), `dryRun 通过:${t.length} 个操作可应用,未落地。\n${d.map((e, t) => `${t + 1}. ${e}`).join("\n")}\n确认后去掉 dryRun 重发。`;
13559
+ let f = [];
13560
+ for (let e = 0; e < t.length; e++) {
13561
+ let n = l(s, t[e], f);
13562
+ if (n) return `ERROR: patches[${e}] 应用失败:${n}\n本条未应用;此前的操作已生效,可用 dom_restore 回滚到本批之前。`;
13563
+ }
13564
+ return f.length && (n.push({
13565
+ snips: f,
13566
+ ops: d
13567
+ }), n.length > Bh && n.shift()), e.onEdit?.({
13568
+ ops: d,
13569
+ applied: t.length,
13570
+ dryRun: !1
13571
+ }), `已应用 ${t.length} 个操作(${d.join(", ")})。页面为临时态(刷新即失);不满意可 dom_restore 回滚到本批之前;视觉验证可 take_screenshot。`;
13572
+ }, {
13573
+ name: "dom_edit",
13574
+ description: "修改宿主页面元素(标注/内容/结构):patches 批量原子操作(任一失败整批拒绝)。op 集:set_text/set_html(内容)、set_attr/remove_attr、add_class/remove_class、set_style(样式)、insert(新建元素,before/after/prepend/append/replace)、remove、move(层级调整)、highlight(高亮+滚动定位)。纪律:selector 必须唯一命中(先 get_dom/dom_search 定位);改前自动快照,dom_restore 回滚;数据驱动页面请改数据而非 DOM。",
13575
+ schema: t.object({
13576
+ patches: t.array(Yh).min(1).max(20).describe("批量操作(原子;顺序应用)"),
13577
+ dryRun: t.boolean().optional().describe("只校验不落地(预检)")
13578
+ })
13579
+ }), d = s(async () => {
13580
+ let e = i();
13581
+ if (!e) return "ERROR: dom_restore 仅在浏览器环境可用。";
13582
+ let t = n.pop();
13583
+ if (!t) return "无可用快照(栈空)。";
13584
+ let r = 0, a = [];
13585
+ for (let n = t.snips.length - 1; n >= 0; n--) {
13586
+ let { id: i, html: o } = t.snips[n], s = e.querySelector(`[${zh}="${i}"]`);
13587
+ if (!s) {
13588
+ a.push(i);
13589
+ continue;
13590
+ }
13591
+ let c = e.createElement("template");
13592
+ c.innerHTML = o;
13593
+ let l = c.content.firstElementChild;
13594
+ if (!l) {
13595
+ a.push(i);
13596
+ continue;
13597
+ }
13598
+ s.replaceWith(l), r++;
13599
+ }
13600
+ return a.length ? `已回滚 ${r}/${t.snips.length} 处;${a.length} 处快照点已被后续结构变更覆盖(元素被整体替换),未能复原 —— 刷新页面可回宿主初始态。` : `已回滚最近一批 ${t.ops.join(", ")}(共 ${r} 处)。`;
13601
+ }, {
13602
+ name: "dom_restore",
13603
+ description: "回滚最近一次 dom_edit 批操作(自动快照;可连续调用逐批回退,栈上限 20 批)。快照点被后续结构变更覆盖时如实报告未复原数。",
13604
+ schema: t.object({}).optional()
13605
+ });
13606
+ return u.writeCapable = !0, d.writeCapable = !0, [u, d];
13607
+ }
13608
+ //#endregion
13310
13609
  //#region src/core/tools/fetchDoc.ts
13311
- var zh = 3e4, Bh = [s(async ({ url: e, as: t }) => {
13312
- let n = new AbortController(), r = setTimeout(() => n.abort(), zh);
13610
+ var Qh = 3e4, $h = [s(async ({ url: e, as: t }) => {
13611
+ let n = new AbortController(), r = setTimeout(() => n.abort(), Qh);
13313
13612
  try {
13314
13613
  let r = await fetch(e, {
13315
13614
  method: "GET",
@@ -13326,7 +13625,7 @@ var zh = 3e4, Bh = [s(async ({ url: e, as: t }) => {
13326
13625
  ].join("\n");
13327
13626
  } catch (t) {
13328
13627
  let r = t?.message || String(t);
13329
- return n.signal.aborted ? `获取失败:请求超时(${zh}ms,${e})。` : /Failed to fetch|NetworkError|CORS|blocked/i.test(r) ? `获取失败:可能是 CORS 跨域拦截或网络错误(${r})。浏览器仅能 GET 同源或服务端已配置 CORS 的资源;跨域抓取需后端代理。` : `获取失败:${r}`;
13628
+ return n.signal.aborted ? `获取失败:请求超时(${Qh}ms,${e})。` : /Failed to fetch|NetworkError|CORS|blocked/i.test(r) ? `获取失败:可能是 CORS 跨域拦截或网络错误(${r})。浏览器仅能 GET 同源或服务端已配置 CORS 的资源;跨域抓取需后端代理。` : `获取失败:${r}`;
13330
13629
  } finally {
13331
13630
  clearTimeout(r);
13332
13631
  }
@@ -13337,7 +13636,7 @@ var zh = 3e4, Bh = [s(async ({ url: e, as: t }) => {
13337
13636
  url: t.string().describe("要抓取的 URL(同源或已配 CORS)"),
13338
13637
  as: t.enum(["text", "markdown"]).optional().describe("返回格式标签,默认 text")
13339
13638
  })
13340
- })], Vh = [
13639
+ })], eg = [
13341
13640
  "id",
13342
13641
  "class",
13343
13642
  "href",
@@ -13349,12 +13648,12 @@ var zh = 3e4, Bh = [s(async ({ url: e, as: t }) => {
13349
13648
  "aria-label",
13350
13649
  "name",
13351
13650
  "type"
13352
- ], Hh = /^(value|srcdoc|formaction|on\w+)$/i, Uh = /token|secret|password|passwd|api[-_]?key|auth|cred|csrf|session/i;
13353
- function Wh(e, t) {
13651
+ ], tg = /^(value|srcdoc|formaction|on\w+)$/i, ng = /token|secret|password|passwd|api[-_]?key|auth|cred|csrf|session/i;
13652
+ function rg(e, t) {
13354
13653
  if (!e) return null;
13355
- let { depth: n, attrs: r, includeText: i = !0 } = t, a = r !== void 0, o = r ?? Vh, s = (e) => {
13654
+ let { depth: n, attrs: r, includeText: i = !0 } = t, a = r !== void 0, o = r ?? eg, s = (e) => {
13356
13655
  let t = {};
13357
- for (let n of Array.from(e.attributes)) (a ? o.includes(n.name) : o.includes(n.name) || n.name.startsWith("data-")) && (Hh.test(n.name) || Uh.test(n.name) || (t[n.name] = n.value));
13656
+ for (let n of Array.from(e.attributes)) (a ? o.includes(n.name) : o.includes(n.name) || n.name.startsWith("data-")) && (tg.test(n.name) || ng.test(n.name) || (t[n.name] = n.value));
13358
13657
  return t;
13359
13658
  }, c = (e, t) => {
13360
13659
  let n = {
@@ -13370,11 +13669,11 @@ function Wh(e, t) {
13370
13669
  };
13371
13670
  return c(e, n);
13372
13671
  }
13373
- var Gh = s(({ selector: e, depth: t, attrs: n, includeText: r }) => {
13672
+ var ig = s(({ selector: e, depth: t, attrs: n, includeText: r }) => {
13374
13673
  if (typeof document > "u") return "ERROR: get_dom 仅在浏览器环境可用(当前运行在 node/服务端,无 DOM)。请改用数据工具(read/schema_data)排查结构。";
13375
13674
  let i = e ? document.querySelector(e) : document.body;
13376
13675
  if (!i) return `未找到匹配元素:selector="${e}"`;
13377
- let a = Wh(i, {
13676
+ let a = rg(i, {
13378
13677
  depth: t ?? 3,
13379
13678
  attrs: n,
13380
13679
  includeText: r ?? !0
@@ -13389,7 +13688,7 @@ var Gh = s(({ selector: e, depth: t, attrs: n, includeText: r }) => {
13389
13688
  attrs: t.array(t.string()).optional().describe("属性白名单(传了 = 严格白名单;不传 = 默认常用 + data-*)"),
13390
13689
  includeText: t.boolean().optional().describe("是否包含直接文本(默认 true)")
13391
13690
  })
13392
- }), Kh = [
13691
+ }), ag = [
13393
13692
  "article",
13394
13693
  "main",
13395
13694
  "[role=\"main\"]",
@@ -13398,7 +13697,7 @@ var Gh = s(({ selector: e, depth: t, attrs: n, includeText: r }) => {
13398
13697
  ".post-content",
13399
13698
  ".markdown-body",
13400
13699
  "#content"
13401
- ], qh = /* @__PURE__ */ new Set([
13700
+ ], og = /* @__PURE__ */ new Set([
13402
13701
  "script",
13403
13702
  "style",
13404
13703
  "noscript",
@@ -13406,15 +13705,15 @@ var Gh = s(({ selector: e, depth: t, attrs: n, includeText: r }) => {
13406
13705
  "svg",
13407
13706
  "iframe",
13408
13707
  "canvas"
13409
- ]), Jh = "script,style,noscript,template,svg,iframe,canvas";
13410
- function Yh(e) {
13411
- for (let t of Kh) try {
13708
+ ]), sg = "script,style,noscript,template,svg,iframe,canvas";
13709
+ function cg(e) {
13710
+ for (let t of ag) try {
13412
13711
  let n = e.querySelector?.(t);
13413
13712
  if (n) return n;
13414
13713
  } catch {}
13415
13714
  return e.body ?? null;
13416
13715
  }
13417
- function Xh(e, t, n) {
13716
+ function lg(e, t, n) {
13418
13717
  if (!e) return "";
13419
13718
  let r = [], i = (e) => {
13420
13719
  let t = (e.innerText ?? e.textContent ?? "").replace(/\r\n/g, "\n").replace(/\n{3,}/g, "\n\n").trim();
@@ -13422,7 +13721,7 @@ function Xh(e, t, n) {
13422
13721
  }, a = (e) => {
13423
13722
  for (let r of Array.from(e.children ?? [])) {
13424
13723
  let e = r, o = String(e.tagName ?? "").toLowerCase();
13425
- if (!(t(e) || qh.has(o))) {
13724
+ if (!(t(e) || og.has(o))) {
13426
13725
  if (!n(e)) {
13427
13726
  i(e);
13428
13727
  continue;
@@ -13433,21 +13732,21 @@ function Xh(e, t, n) {
13433
13732
  };
13434
13733
  return a(e), r.join("\n\n").trim();
13435
13734
  }
13436
- function Zh(e) {
13735
+ function ug(e) {
13437
13736
  try {
13438
- return e.querySelector?.(Jh) != null || e.querySelector?.(".chat-dialog, .chat-mask, .debug-drawer, .skill-mask, .skill-panel, .chat-selection-menu") != null;
13737
+ return e.querySelector?.(sg) != null || e.querySelector?.(".chat-dialog, .chat-mask, .debug-drawer, .skill-mask, .skill-panel, .chat-selection-menu") != null;
13439
13738
  } catch {
13440
13739
  return !0;
13441
13740
  }
13442
13741
  }
13443
- var Qh = [Gh, s(({ selector: e, offset: t, limit: n }) => {
13742
+ var dg = [ig, s(({ selector: e, offset: t, limit: n }) => {
13444
13743
  if (typeof document > "u") return "ERROR: read_page 仅在浏览器环境可用(当前运行在 node/服务端,无 DOM)。请基于用户消息中的引用原文回答。";
13445
13744
  let r, i;
13446
13745
  if (e) {
13447
13746
  if (r = document.querySelector(e), !r) return `未找到匹配元素:selector="${e}"`;
13448
13747
  i = e;
13449
- } else r = Yh(document), i = r ? r.tagName.toLowerCase() : "body";
13450
- let a = Xh(r, ji, Zh), o = t ?? 0, s = n ?? 4e3;
13748
+ } else r = cg(document), i = r ? r.tagName.toLowerCase() : "body";
13749
+ let a = lg(r, ji, ug), o = t ?? 0, s = n ?? 4e3;
13451
13750
  if (o > a.length) return `offset=${o} 超出正文长度 ${a.length}(先从 offset=0 读,按 hasMore 续读)`;
13452
13751
  let c = a.slice(o, o + s);
13453
13752
  return JSON.stringify({
@@ -13466,22 +13765,22 @@ var Qh = [Gh, s(({ selector: e, offset: t, limit: n }) => {
13466
13765
  offset: t.number().int().min(0).optional().describe("起始字符偏移(默认 0;续读传上次 offset + 返回 text 长度)"),
13467
13766
  limit: t.number().int().min(200).max(2e4).optional().describe("本次返回字符上限(默认 4000,上限 20000)")
13468
13767
  })
13469
- })], $h = /* @__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("."), eg = /* @__PURE__ */ new WeakMap(), tg = !1;
13470
- function ng() {
13471
- if (tg) return;
13768
+ })], fg = /* @__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("."), pg = /* @__PURE__ */ new WeakMap(), mg = !1;
13769
+ function hg() {
13770
+ if (mg) return;
13472
13771
  let e = globalThis.EventTarget;
13473
13772
  if (!e?.prototype?.addEventListener) return;
13474
- tg = !0;
13773
+ mg = !0;
13475
13774
  let t = e.prototype.addEventListener, n = e.prototype.removeEventListener;
13476
13775
  e.prototype.addEventListener = function(e, ...n) {
13477
13776
  try {
13478
- let t = eg.get(this);
13479
- t || (t = /* @__PURE__ */ new Map(), eg.set(this, t)), t.set(String(e), (t.get(String(e)) ?? 0) + 1);
13777
+ let t = pg.get(this);
13778
+ t || (t = /* @__PURE__ */ new Map(), pg.set(this, t)), t.set(String(e), (t.get(String(e)) ?? 0) + 1);
13480
13779
  } catch {}
13481
13780
  return t.call(this, e, ...n);
13482
13781
  }, e.prototype.removeEventListener = function(e, ...t) {
13483
13782
  try {
13484
- let t = eg.get(this);
13783
+ let t = pg.get(this);
13485
13784
  if (t) {
13486
13785
  let n = (t.get(String(e)) ?? 1) - 1;
13487
13786
  n <= 0 ? t.delete(String(e)) : t.set(String(e), n);
@@ -13490,10 +13789,10 @@ function ng() {
13490
13789
  return n.call(this, e, ...t);
13491
13790
  };
13492
13791
  }
13493
- function rg(e) {
13494
- return [...eg.get(e)?.entries() ?? []].filter(([, e]) => e > 0).map(([e]) => e);
13792
+ function gg(e) {
13793
+ return [...pg.get(e)?.entries() ?? []].filter(([, e]) => e > 0).map(([e]) => e);
13495
13794
  }
13496
- function ig(e, t = 12) {
13795
+ function _g(e, t = 12) {
13497
13796
  let n = [], r = e, i = 0;
13498
13797
  for (; r && r.tagName && i < t;) {
13499
13798
  let e = r.tagName.toLowerCase(), t = r.id;
@@ -13514,7 +13813,7 @@ function ig(e, t = 12) {
13514
13813
  }
13515
13814
  return n.join(" > ");
13516
13815
  }
13517
- function ag(e, t, n = {}) {
13816
+ function vg(e, t, n = {}) {
13518
13817
  if (!e) return {
13519
13818
  hits: [],
13520
13819
  total: 0,
@@ -13552,7 +13851,7 @@ function ag(e, t, n = {}) {
13552
13851
  n = r.slice(Math.max(0, i - 20), i + t.length + 40);
13553
13852
  }
13554
13853
  return {
13555
- selector: ig(e),
13854
+ selector: _g(e),
13556
13855
  tag: e.tagName.toLowerCase(),
13557
13856
  text: n.slice(0, 120)
13558
13857
  };
@@ -13561,7 +13860,7 @@ function ag(e, t, n = {}) {
13561
13860
  truncated: a.length > o
13562
13861
  };
13563
13862
  }
13564
- var og = [
13863
+ var yg = [
13565
13864
  "content",
13566
13865
  "display",
13567
13866
  "width",
@@ -13569,14 +13868,14 @@ var og = [
13569
13868
  "background-color",
13570
13869
  "position"
13571
13870
  ];
13572
- function sg(e, t = {}) {
13871
+ function bg(e, t = {}) {
13573
13872
  if (!e) return null;
13574
13873
  let n = {
13575
- selector: ig(e),
13874
+ selector: _g(e),
13576
13875
  tag: e.tagName.toLowerCase(),
13577
13876
  attrs: {}
13578
13877
  };
13579
- for (let t of Array.from(e.attributes)) !(Vh.includes(t.name) || t.name.startsWith("data-")) || Hh.test(t.name) || Uh.test(t.name) || (n.attrs[t.name] = t.value);
13878
+ for (let t of Array.from(e.attributes)) !(eg.includes(t.name) || t.name.startsWith("data-")) || tg.test(t.name) || ng.test(t.name) || (n.attrs[t.name] = t.value);
13580
13879
  let r = Array.from(e.childNodes).filter((e) => e.nodeType === 3).map((e) => e.textContent || "").join("").trim();
13581
13880
  r && (n.text = r.slice(0, 400));
13582
13881
  let i = String(e.innerText ?? e.textContent ?? "").trim();
@@ -13598,7 +13897,7 @@ function sg(e, t = {}) {
13598
13897
  if (typeof a != "function") return r;
13599
13898
  try {
13600
13899
  let i = a(e, n ?? null);
13601
- for (let e of n ? og : t.styles ?? $h) {
13900
+ for (let e of n ? yg : t.styles ?? fg) {
13602
13901
  let t = typeof i.getPropertyValue == "function" ? i.getPropertyValue(e) : i[e];
13603
13902
  t && (r[e] = String(t).slice(0, 200));
13604
13903
  }
@@ -13616,16 +13915,16 @@ function sg(e, t = {}) {
13616
13915
  n.events = {
13617
13916
  inline: t,
13618
13917
  vue: r ? Object.keys(r).filter((e) => /^on[A-Z]/.test(e)).map((e) => e.slice(2).toLowerCase()) : [],
13619
- captured: rg(e)
13918
+ captured: gg(e)
13620
13919
  };
13621
13920
  }
13622
13921
  return n;
13623
13922
  }
13624
- var cg = s(({ query: e, mode: t, limit: n, root: r }) => {
13625
- ng();
13923
+ var xg = s(({ query: e, mode: t, limit: n, root: r }) => {
13924
+ hg();
13626
13925
  let i = r ? document.querySelector(r) : document;
13627
13926
  if (r && !i) return `未找到 root 元素:selector="${r}"`;
13628
- let a = ag(i, e, {
13927
+ let a = vg(i, e, {
13629
13928
  mode: t,
13630
13929
  limit: n
13631
13930
  });
@@ -13642,11 +13941,11 @@ var cg = s(({ query: e, mode: t, limit: n, root: r }) => {
13642
13941
  limit: t.number().int().min(1).max(20).optional().describe("返回上限(默认 10)"),
13643
13942
  root: t.string().optional().describe("限定搜索范围的容器选择器(默认整页)")
13644
13943
  })
13645
- }), lg = s(({ selector: e, styles: t, includeHtml: n, htmlLimit: r, includeEvents: i, includeRect: a, pseudo: o }) => {
13646
- ng();
13944
+ }), Sg = s(({ selector: e, styles: t, includeHtml: n, htmlLimit: r, includeEvents: i, includeRect: a, pseudo: o }) => {
13945
+ hg();
13647
13946
  let s = document.querySelector(e);
13648
13947
  if (!s) return `未找到匹配元素:selector="${e}"(可先用 dom_search 定位)`;
13649
- let c = sg(s, {
13948
+ let c = bg(s, {
13650
13949
  styles: t,
13651
13950
  includeHtml: n,
13652
13951
  htmlLimit: r,
@@ -13667,10 +13966,10 @@ var cg = s(({ query: e, mode: t, limit: n, root: r }) => {
13667
13966
  includeRect: t.boolean().optional().describe("是否含几何位置(默认 true)"),
13668
13967
  pseudo: t.boolean().optional().describe("是否含 ::before/::after 伪元素摘要(默认 false)")
13669
13968
  })
13670
- }), ug = "dom-inspect";
13671
- function dg(e = {}) {
13969
+ }), Cg = "dom-inspect";
13970
+ function wg(e = {}) {
13672
13971
  return {
13673
- name: ug,
13972
+ name: Cg,
13674
13973
  description: "页面 DOM 深度检视工具(dom_search 搜索元素 / dom_info 读内容·计算样式·事件绑定·几何)。定位元素、验证样式落地、排查交互绑定时加载",
13675
13974
  getContent: () => [
13676
13975
  "# DOM 检视工具用法",
@@ -13692,17 +13991,23 @@ function dg(e = {}) {
13692
13991
  "- 截图「看」页面:selector 截指定元素区域 / fullPage 截整页 / 都不传截当前视口;截图经压缩投递(多模态直看图,纯文本模型自动走识图转述)",
13693
13992
  "- 布局/样式/渲染效果类问题优先截图(视觉真值),结构/属性类用 dom_info;截图失败(CSP/跨域图)会回灌原因与替代建议"
13694
13993
  ] : [],
13994
+ ...e.withDomEdit ? [
13995
+ "## dom_edit({ patches, dryRun? })—— 修改页面元素(宿主开启才有)",
13996
+ "- patches 批量原子(任一失败整批拒绝):set_text/set_html(内容)、set_attr/remove_attr、add_class/remove_class、set_style、insert(新建元素 anchor+position: before/after/prepend/append/replace)、remove、move(层级调整)、highlight(高亮+滚动)",
13997
+ "- 写纪律:selector 必须唯一命中(多匹配被拒,用 dom_search 拿精确路径);先读后写(get_dom/dom_info 看现状);拿不准先 dryRun 预检",
13998
+ "- 改前自动快照:dom_restore 回滚最近一批(可连续回退);改动为会话临时态(刷新即失);数据驱动页面改数据(write)不要改 DOM"
13999
+ ] : [],
13695
14000
  "## 排障套路",
13696
14001
  ...e.withScreenshot ? ["1. dom_search(mode:\"text\", query:按钮文案) 定位 → 2. 视觉验证 take_screenshot / 结构验证 dom_info(styles) → 3. 不符则改数据(get_dom 看结构对照)"] : ["1. dom_search(mode:\"text\", query:按钮文案) 定位 → 2. dom_info(styles:[\"display\",\"background-color\",\"pointer-events\"]) 验证样式/点击性 → 3. 不符则改数据(get_dom 看结构对照)"]
13697
14002
  ].join("\n"),
13698
- tools: [() => [cg, lg]]
14003
+ tools: [() => [xg, Sg]]
13699
14004
  };
13700
14005
  }
13701
- var fg = "page-analysis";
13702
- function pg(e = {}) {
14006
+ var Tg = "page-analysis";
14007
+ function Eg(e = {}) {
13703
14008
  return {
13704
- name: fg,
13705
- description: "页面内容分析策略:按问题类型选工具(引用原文/整页理解/定位/结构/视觉),含分页探索纪律与基于页面实料的回答纪律。回答用户关于当前页面的问题时加载",
14009
+ name: Tg,
14010
+ description: "页面内容分析策略:按问题类型选工具(引用原文/整页理解/定位/结构/视觉/页面操作),含分页探索纪律与基于页面实料的回答纪律。回答用户关于当前页面的问题时加载",
13706
14011
  getContent: () => [
13707
14012
  "# 页面内容分析策略",
13708
14013
  "## 第一步:问题分型(按类型选主力工具,不要一上来读整页)",
@@ -13711,6 +14016,7 @@ function pg(e = {}) {
13711
14016
  "- **定位类**(「某概念在本页哪里/那个按钮在哪」):dom_search mode:\"text\" 按关键词定位 → 需要细节再 read_page 带 selector 读该区域",
13712
14017
  "- **结构/属性类**(「这个区块是什么组件/有哪些属性」):dom_info(selector) 读单元素;层级关系用 get_dom",
13713
14018
  ...e.withScreenshot ? ["- **视觉类**(「看起来对不对/布局乱不乱/渲染效果」):take_screenshot 截图看视觉真值;selector 截局部、fullPage 截整页;截图是唯一能看到实际渲染效果的手段,结构推断不能代替"] : [],
14019
+ ...e.withDomEdit ? ["- **操作类**(「把这段高亮/隐藏广告/调大字体/把这个块挪过去」):dom_edit patches 批量操作;纪律 = 先 get_dom/dom_search 定位唯一 selector → 拿不准先 dryRun → 改后 dom_info/截图验证 → 不满意 dom_restore 回滚;页面是临时态,持久修改要走宿主自己的机制"] : [],
13714
14020
  "## 探索纪律",
13715
14021
  "1. **先窄后宽**:引用/焦点 → 所在小节 → 整页;每一步只取够回答当前问题的量",
13716
14022
  "2. **翻页不重复**:read_page 续读传 offset = 上次 offset + 返回 text 长度;不要回头重读已读区",
@@ -13723,14 +14029,14 @@ function pg(e = {}) {
13723
14029
  ].join("\n")
13724
14030
  };
13725
14031
  }
13726
- var mg = dg();
14032
+ var Dg = wg();
13727
14033
  //#endregion
13728
14034
  //#region src/core/tools/envTool.ts
13729
- function hg(e) {
14035
+ function Og(e) {
13730
14036
  let t = e;
13731
14037
  return typeof t.tagName == "string" || typeof t.nodeType == "number" && typeof t.nodeName == "string";
13732
14038
  }
13733
- function gg(e, t = 3, n = 2e3, r, i) {
14039
+ function kg(e, t = 3, n = 2e3, r, i) {
13734
14040
  if (e == null) return e;
13735
14041
  if (typeof e == "string") return e.length > n ? e.slice(0, n) + "…(已截断)" : e;
13736
14042
  if (typeof e == "number" || typeof e == "boolean") return e;
@@ -13739,14 +14045,14 @@ function gg(e, t = 3, n = 2e3, r, i) {
13739
14045
  if (typeof e == "bigint") return `${e.toString()}n`;
13740
14046
  if (typeof e != "object") return String(e);
13741
14047
  let a = e;
13742
- if (hg(a)) {
14048
+ if (Og(a)) {
13743
14049
  let e = a;
13744
14050
  return e.tagName ? `[Element: <${e.tagName.toLowerCase()}>]` : `[Node: ${e.nodeName}]`;
13745
14051
  }
13746
14052
  if (r?.has(a)) return "[Circular]";
13747
14053
  let o = r ?? /* @__PURE__ */ new WeakSet();
13748
14054
  if (o.add(a), Array.isArray(e)) {
13749
- let r = e.slice(0, 100).map((e) => gg(e, t - 1, n, o, i));
14055
+ let r = e.slice(0, 100).map((e) => kg(e, t - 1, n, o, i));
13750
14056
  return e.length > 100 && r.push(`…(共 ${e.length} 项,已截断)`), r;
13751
14057
  }
13752
14058
  if (t < 0) return "(对象,已截断)";
@@ -13759,14 +14065,14 @@ function gg(e, t = 3, n = 2e3, r, i) {
13759
14065
  }
13760
14066
  try {
13761
14067
  let e = a[r];
13762
- i?.test(r) ? s[r] = "[REDACTED]" : s[r] = gg(e, t - 1, n, o, i);
14068
+ i?.test(r) ? s[r] = "[REDACTED]" : s[r] = kg(e, t - 1, n, o, i);
13763
14069
  } catch {
13764
14070
  s[r] = "(getter 抛错)";
13765
14071
  }
13766
14072
  }
13767
14073
  return s;
13768
14074
  }
13769
- function _g(e) {
14075
+ function Ag(e) {
13770
14076
  let t = e ?? (typeof window < "u" ? window : {}), n = t.navigator, r = t.location, i = t.document;
13771
14077
  return {
13772
14078
  location: {
@@ -13799,9 +14105,9 @@ function _g(e) {
13799
14105
  } : "(无 document)"
13800
14106
  };
13801
14107
  }
13802
- var vg = /^(localStorage|sessionStorage|cookie|document|frames|frameElement|opener|parent|top|self|window|globalThis|closed|history|navigation|trustedTypes|origin|crossOriginIsolated)$/, yg = /token|secret|password|passwd|api[-_]?key|auth|cred|csrf|session|ticket/i, bg = s(({ key: e }) => {
14108
+ var jg = /^(localStorage|sessionStorage|cookie|document|frames|frameElement|opener|parent|top|self|window|globalThis|closed|history|navigation|trustedTypes|origin|crossOriginIsolated)$/, Mg = /token|secret|password|passwd|api[-_]?key|auth|cred|csrf|session|ticket/i, Ng = s(({ key: e }) => {
13803
14109
  if (e) {
13804
- if (vg.test(e) || yg.test(e)) return JSON.stringify({
14110
+ if (jg.test(e) || Mg.test(e)) return JSON.stringify({
13805
14111
  key: e,
13806
14112
  denied: !0,
13807
14113
  reason: "安全:该 key 在 denylist(localStorage/sessionStorage/cookie/document 或敏感命名 token/secret/key/auth),不读取防泄漏"
@@ -13811,18 +14117,18 @@ var vg = /^(localStorage|sessionStorage|cookie|document|frames|frameElement|open
13811
14117
  key: e,
13812
14118
  exists: t !== void 0,
13813
14119
  type: typeof t,
13814
- value: gg(t, 3, 2e3, void 0, yg)
14120
+ value: kg(t, 3, 2e3, void 0, Mg)
13815
14121
  }, null, 2);
13816
14122
  }
13817
- return JSON.stringify(_g(), null, 2);
14123
+ return JSON.stringify(Ag(), null, 2);
13818
14124
  }, {
13819
14125
  name: "inspect_env",
13820
14126
  description: "读宿主页面环境信息(排查调试)。不传参返回摘要(URL/origin、浏览器/语言、viewport、title/readyState);传 key 读指定 window 属性值(如 key:\"appConfig\")。只读,大结果自动外存 vfs。",
13821
14127
  schema: t.object({ key: t.string().optional().describe("要读取的 window 属性名(如 \"appConfig\"/\"__DEBUG__\");不传 = 返回环境摘要") })
13822
- }), xg = [bg];
14128
+ }), Pg = [Ng];
13823
14129
  //#endregion
13824
14130
  //#region src/core/harness/budget.ts
13825
- function Sg(e, t, n) {
14131
+ function Fg(e, t, n) {
13826
14132
  let i = 0;
13827
14133
  return {
13828
14134
  name: "budget",
@@ -13847,12 +14153,12 @@ function Sg(e, t, n) {
13847
14153
  }
13848
14154
  //#endregion
13849
14155
  //#region src/core/sdk/actions.ts
13850
- var Cg = /^[a-zA-Z][a-zA-Z0-9_]*$/;
13851
- function wg(e) {
14156
+ var Ig = /^[a-zA-Z][a-zA-Z0-9_]*$/;
14157
+ function Lg(e) {
13852
14158
  let n = [];
13853
14159
  for (let [r, i] of Object.entries(e)) {
13854
- if (!Cg.test(r)) {
13855
- console.warn(`[page-agent-sdk][actions] 动作名 "${r}" 非法(须匹配 ${Cg}),已跳过`);
14160
+ if (!Ig.test(r)) {
14161
+ console.warn(`[page-agent-sdk][actions] 动作名 "${r}" 非法(须匹配 ${Ig}),已跳过`);
13856
14162
  continue;
13857
14163
  }
13858
14164
  let e = i.description || `宿主动作 ${r}`;
@@ -13872,9 +14178,9 @@ function wg(e) {
13872
14178
  }
13873
14179
  return n;
13874
14180
  }
13875
- function Tg(e) {
14181
+ function Rg(e) {
13876
14182
  let t = {};
13877
- for (let [n, r] of Object.entries(e)) Cg.test(n) && (t[n] = {
14183
+ for (let [n, r] of Object.entries(e)) Ig.test(n) && (t[n] = {
13878
14184
  description: r.description,
13879
14185
  hasParams: !!r.params
13880
14186
  });
@@ -13882,11 +14188,11 @@ function Tg(e) {
13882
14188
  }
13883
14189
  //#endregion
13884
14190
  //#region src/core/toolsets.ts
13885
- var Eg = Bh, Dg = Qh;
13886
- function Og(e, t) {
14191
+ var zg = $h, Bg = dg;
14192
+ function Vg(e, t) {
13887
14193
  return Yd(e, t);
13888
14194
  }
13889
- function kg(e, t, n, r, i) {
14195
+ function Hg(e, t, n, r, i) {
13890
14196
  let a = tm(e);
13891
14197
  return [
13892
14198
  ...a.dataOps ? t : [],
@@ -13897,15 +14203,15 @@ function kg(e, t, n, r, i) {
13897
14203
  }
13898
14204
  //#endregion
13899
14205
  //#region src/core/harness/usageHints.ts
13900
- var Ag = .7;
13901
- function jg(e, t, n) {
14206
+ var Ug = .7;
14207
+ function Wg(e, t, n) {
13902
14208
  let r = tm(e);
13903
14209
  return {
13904
14210
  name: "usageHints",
13905
14211
  augmentPrompt: (i) => {
13906
14212
  let a = [];
13907
- if (r.planning && (a.push("【自适应规划】按任务复杂度决定是否先规划,不要对简单任务过度编排:"), a.push(" · 简单/明确任务(改单字段、调样式、查值)→ 直接 read/write 执行,不必 write_todos。"), a.push(" · 复杂任务(多步、大改、有歧义、不可逆)→ 先 write_todos 拆解,首个任务标 in_progress,逐项推进。"), a.push(" · 执行中发现步骤要改/补/细分 → 用 update_todo({id, content?, status?}) 按 id 增量改单项,不必重传整个清单。"), a.push(" · update_todo 标 completed 时附 evidence: 本次实际写入的 jsonPath(如 \"components.2\"),供收口对账;工作经委派子 agent 完成等无主写路径时,如实写明完成方式(勿编造路径)。"), e?.humanConfirm ? a.push(" · 规划出多步方案若需用户拍板 → 先 request_human_confirmation 给方案选项,确认后再执行。") : a.push(" · 规划出多步方案若需用户拍板 → 以文字列出方案选项等用户回复,勿自行拍板。"), a.push(" · 计划修订有次数上限(maxPlanRevisions,默认 5,只计 write_todos 调用、调研轮不计):勿反复改计划而不执行,规划充分后即开始 write 落地。")), t && (a.push("改主数据前先 read({jsonPath}) 读其当前真实值(返回末尾 hash=xxx 为乐观锁标识),基于真实值改,不要凭记忆。写入是否被自动校验由集成方 conflictWatchFields 声明决定:若已声明且主数据在你 read 之后被外部改过,会触发冲突——集成方若开启人工介入,工具会挂起等用户决定(保留外部/强制覆盖/回退),你应等待工具返回后按结果继续(保留外部→重新 read 再改;强制覆盖→已写入,继续;回退→已回退到历史快照,基于回退值重写);未开启人工介入时返回 VERSION_CONFLICT 不写入,重新 read 拿最新值再改。"), a.push("读类分流:取值/结构 → read(多路径用 jsonPaths);字段约束 → schema_data;条件筛选定位 → query_data(多条一次用 queries);名字模糊找 → search_data;整体说明 → read 不传路径。"), a.push("修改大对象/数组优先用 write 增量改({patch:{op,jsonPath,value}} 只发改动部分),避免 write({value}) 整体重传被 max_tokens 截断导致 JSON 不完整、校验失败。"), a.push("修改主数据出错时可用 restore_data 回退最近一次。"), a.push("在大数组里按条件筛选元素用 query_data(JSONPath,如 $.components[?(@.type==\"card\" && @.price<100)]),返回匹配元素的 path/index;定位后再 write({patch}) 改。"), a.push("找名字记不清的元素用 search_data(支持 substring/regex/fuzzy 模糊搜索)。"), a.push("需要过滤/映射/聚合/批量重写大数组时用 eval_script(沙箱脚本,入参 data);只读探查用 mode=query,批量重写用 mode=transform(返回值经校验后落地)。"), a.push("读大数组用 read({jsonPath,offset,limit}) 分页(返回 hasMore=true 时 offset+=limit 续读);一次读多个不相关子路径用 read({jsonPaths});复杂改动先 write({...,dryRun:true}) 预检不落盘。"), a.push("【省轮次·批量】≥2 个路径一律 read({jsonPaths:[...]}) 一次取回(路径互不相关也合批,禁止连续单路径 read);多条件筛选用 query_data({queries:[expr1,expr2,…]}) 一次取回(2-10 条);改多处用 write({patches:[{op:\"set\",jsonPath,value},...]}) 一次提交多改动(原子任一失败回滚),勿逐个 write 烧轮次预算。"), a.push("读到 <subtree Nkb keys:[…] #指纹> 或 <code Nkb> 占位 = 该子树键名/体积可见但内容未见:写入前先窄读全文(read({jsonPath:\"该子树路径\"}),结果根豁免返全文)或 set_focus 聚焦该区域;勿凭键名印象猜路径/猜值直写(直接写占位子树会被拦下要求先窄读)。"), a.push("对比当前与历史快照(或一段 JSON against)的差异用 diff_data({snapshotId?,against?})(返回结构化 path→from/to,verify 自纠/操作审计/\"刚才改了啥\");只读查历史快照值用 history_data({id?,jsonPath?})。")), r.subagent && a.push("独立子任务可 spawn_agent 委派(过程隔离,不占主上下文):默认只读,需要子 agent 写数据时传 writablePaths(路径前缀白名单,越界 PATH_OUT_OF_SCOPE)。多个独立子任务可 spawn_agents 并行委派(各子互不通信,结论由你汇总;并行委派不可授写权限,写操作由你收尾执行)。"), r.inspectEnv && a.push("排查页面环境(当前 URL/浏览器/视口/集成方调试变量)用 inspect_env——不传参返回环境摘要(location/navigator/viewport/document),传 key 读特定 window 属性(如 inspect_env({key:\"appConfig\"}) 读 window.appConfig)。改完数据看渲染、定位\"为何没生效\"时用它(只读,不改数据)。"), r.domInspect && a.push("回答用户关于当前页面/文档的问题时优先用 read_page({selector?,offset?,limit?}) 读页面正文纯文本(长文按 hasMore 分页续读;自动排除本对话框自身);需要页面结构(检查渲染是否生效/定位元素/辅助 UI 设计问答)再用 get_dom({selector?,depth?}) 读渲染后 DOM(结构化返回 tag/attrs/text/children,depth 控制深度防爆炸,只读)。配合宿主 actions(save_draft/publish 等)形成\"改数据→截图/get_dom 看渲染→触发动作\"闭环。"), e?.screenshot && a.push("视觉验证(看布局/样式/渲染效果像不像、对不对)用 take_screenshot({selector?, fullPage?}) 截图查看:selector 截指定元素、fullPage 截整页、默认当前视口;截图自动压缩投递(多模态直看图/纯文本模型走识图转述)。优先级:视觉问题先截图,结构/属性问题用 dom_info。"), r.draftWrite && (a.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。"), a.push("⚠️ 大 JSON 分块构建是典型多轮工具调用(draft_write×N + draft_commit + read 确认 + 调研 read/query),默认 maxToolRounds=30(3.43 起;轮次预算吃紧时 system 会注入预算提示段,按提示优先收口);目标组件数很大时集成方仍可在 createChatSdk 显式上调 maxToolRounds(按 N+10 估算)。draft_commit 提交同样走乐观锁(改前 read 拿 hash,bind 被改过会触发冲突介入,不静默覆盖)。")), r.focus && (a.push("【上下文聚焦】判断任务范围,用 set_focus/add_focus/remove_focus/clear_focus 自动收敛工作范围:"), a.push(" · 局部任务(只改某一组件/区域,如「调导航栏」「改 components.3 样式」)→ 先 read 定位 jsonPath,再 set_focus({path:\"该子树路径\"}) 聚焦;聚焦后每轮只看该子树结构,写其他位置会被 PATH_DENIED 拒绝。"), a.push(" · 多个相关组件(如「同时改导航栏和页脚」)→ set_focus 聚焦首个后用 add_focus({path}) 追加其余;聚焦后可写任一焦点子树,越界仍被拒;移除单个用 remove_focus({path})。"), a.push(" · 全局任务(多处/整体结构,如「重排所有组件」「换主题」)→ 不要聚焦,保持全量视野直接写。"), a.push(" · 完成局部精修、要转向其他区域或做整体改动 → 调 clear_focus 退出聚焦(清空全部焦点),恢复全部读写权限。"), a.push(" · set_focus/add_focus 的 path 必须在 schema 内(类型校验);不确定路径先 read 查。")), e?.subagents?.length) {
13908
- let t = e.subagents.filter((e) => (e.temperature ?? 0) >= Ag || /规划|创意|设计|方案|brainstorm|plan/i.test(e.description)), n = e.subagents.filter((e) => (e.temperature ?? 0) < Ag && /反思|审查|挑刺|校验|review|critique|reflect/i.test(e.description));
14213
+ if (r.planning && (a.push("【自适应规划】按任务复杂度决定是否先规划,不要对简单任务过度编排:"), a.push(" · 简单/明确任务(改单字段、调样式、查值)→ 直接 read/write 执行,不必 write_todos。"), a.push(" · 复杂任务(多步、大改、有歧义、不可逆)→ 先 write_todos 拆解,首个任务标 in_progress,逐项推进。"), a.push(" · 执行中发现步骤要改/补/细分 → 用 update_todo({id, content?, status?}) 按 id 增量改单项,不必重传整个清单。"), a.push(" · update_todo 标 completed 时附 evidence: 本次实际写入的 jsonPath(如 \"components.2\"),供收口对账;工作经委派子 agent 完成等无主写路径时,如实写明完成方式(勿编造路径)。"), e?.humanConfirm ? a.push(" · 规划出多步方案若需用户拍板 → 先 request_human_confirmation 给方案选项,确认后再执行。") : a.push(" · 规划出多步方案若需用户拍板 → 以文字列出方案选项等用户回复,勿自行拍板。"), a.push(" · 计划修订有次数上限(maxPlanRevisions,默认 5,只计 write_todos 调用、调研轮不计):勿反复改计划而不执行,规划充分后即开始 write 落地。")), t && (a.push("改主数据前先 read({jsonPath}) 读其当前真实值(返回末尾 hash=xxx 为乐观锁标识),基于真实值改,不要凭记忆。写入是否被自动校验由集成方 conflictWatchFields 声明决定:若已声明且主数据在你 read 之后被外部改过,会触发冲突——集成方若开启人工介入,工具会挂起等用户决定(保留外部/强制覆盖/回退),你应等待工具返回后按结果继续(保留外部→重新 read 再改;强制覆盖→已写入,继续;回退→已回退到历史快照,基于回退值重写);未开启人工介入时返回 VERSION_CONFLICT 不写入,重新 read 拿最新值再改。"), a.push("读类分流:取值/结构 → read(多路径用 jsonPaths);字段约束 → schema_data;条件筛选定位 → query_data(多条一次用 queries);名字模糊找 → search_data;整体说明 → read 不传路径。"), a.push("修改大对象/数组优先用 write 增量改({patch:{op,jsonPath,value}} 只发改动部分),避免 write({value}) 整体重传被 max_tokens 截断导致 JSON 不完整、校验失败。"), a.push("修改主数据出错时可用 restore_data 回退最近一次。"), a.push("在大数组里按条件筛选元素用 query_data(JSONPath,如 $.components[?(@.type==\"card\" && @.price<100)]),返回匹配元素的 path/index;定位后再 write({patch}) 改。"), a.push("找名字记不清的元素用 search_data(支持 substring/regex/fuzzy 模糊搜索)。"), a.push("需要过滤/映射/聚合/批量重写大数组时用 eval_script(沙箱脚本,入参 data);只读探查用 mode=query,批量重写用 mode=transform(返回值经校验后落地)。"), a.push("读大数组用 read({jsonPath,offset,limit}) 分页(返回 hasMore=true 时 offset+=limit 续读);一次读多个不相关子路径用 read({jsonPaths});复杂改动先 write({...,dryRun:true}) 预检不落盘。"), a.push("【省轮次·批量】≥2 个路径一律 read({jsonPaths:[...]}) 一次取回(路径互不相关也合批,禁止连续单路径 read);多条件筛选用 query_data({queries:[expr1,expr2,…]}) 一次取回(2-10 条);改多处用 write({patches:[{op:\"set\",jsonPath,value},...]}) 一次提交多改动(原子任一失败回滚),勿逐个 write 烧轮次预算。"), a.push("读到 <subtree Nkb keys:[…] #指纹> 或 <code Nkb> 占位 = 该子树键名/体积可见但内容未见:写入前先窄读全文(read({jsonPath:\"该子树路径\"}),结果根豁免返全文)或 set_focus 聚焦该区域;勿凭键名印象猜路径/猜值直写(直接写占位子树会被拦下要求先窄读)。"), a.push("对比当前与历史快照(或一段 JSON against)的差异用 diff_data({snapshotId?,against?})(返回结构化 path→from/to,verify 自纠/操作审计/\"刚才改了啥\");只读查历史快照值用 history_data({id?,jsonPath?})。")), r.subagent && a.push("独立子任务可 spawn_agent 委派(过程隔离,不占主上下文):默认只读,需要子 agent 写数据时传 writablePaths(路径前缀白名单,越界 PATH_OUT_OF_SCOPE)。多个独立子任务可 spawn_agents 并行委派(各子互不通信,结论由你汇总;并行委派不可授写权限,写操作由你收尾执行)。"), r.inspectEnv && a.push("排查页面环境(当前 URL/浏览器/视口/集成方调试变量)用 inspect_env——不传参返回环境摘要(location/navigator/viewport/document),传 key 读特定 window 属性(如 inspect_env({key:\"appConfig\"}) 读 window.appConfig)。改完数据看渲染、定位\"为何没生效\"时用它(只读,不改数据)。"), r.domInspect && a.push("回答用户关于当前页面/文档的问题时优先用 read_page({selector?,offset?,limit?}) 读页面正文纯文本(长文按 hasMore 分页续读;自动排除本对话框自身);需要页面结构(检查渲染是否生效/定位元素/辅助 UI 设计问答)再用 get_dom({selector?,depth?}) 读渲染后 DOM(结构化返回 tag/attrs/text/children,depth 控制深度防爆炸,只读)。配合宿主 actions(save_draft/publish 等)形成\"改数据→截图/get_dom 看渲染→触发动作\"闭环。"), e?.screenshot && a.push("视觉验证(看布局/样式/渲染效果像不像、对不对)用 take_screenshot({selector?, fullPage?}) 截图查看:selector 截指定元素、fullPage 截整页、默认当前视口;截图自动压缩投递(多模态直看图/纯文本模型走识图转述)。优先级:视觉问题先截图,结构/属性问题用 dom_info。"), e?.domEdit && a.push("修改宿主页面元素(高亮/改文案/调样式/插删移元素)用 dom_edit({patches:[{op,selector,...}],dryRun?}) 批量原子操作(op:set_text/set_html/set_attr/add_class/remove_class/set_style/insert/remove/move/highlight);selector 必须唯一命中(先 get_dom/dom_search 定位);改前自动快照,dom_restore 回滚最近一批;改动为会话临时态(刷新即失)——数据驱动页面改数据(write)不要改 DOM。"), r.draftWrite && (a.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。"), a.push("⚠️ 大 JSON 分块构建是典型多轮工具调用(draft_write×N + draft_commit + read 确认 + 调研 read/query),默认 maxToolRounds=30(3.43 起;轮次预算吃紧时 system 会注入预算提示段,按提示优先收口);目标组件数很大时集成方仍可在 createChatSdk 显式上调 maxToolRounds(按 N+10 估算)。draft_commit 提交同样走乐观锁(改前 read 拿 hash,bind 被改过会触发冲突介入,不静默覆盖)。")), r.focus && (a.push("【上下文聚焦】判断任务范围,用 set_focus/add_focus/remove_focus/clear_focus 自动收敛工作范围:"), a.push(" · 局部任务(只改某一组件/区域,如「调导航栏」「改 components.3 样式」)→ 先 read 定位 jsonPath,再 set_focus({path:\"该子树路径\"}) 聚焦;聚焦后每轮只看该子树结构,写其他位置会被 PATH_DENIED 拒绝。"), a.push(" · 多个相关组件(如「同时改导航栏和页脚」)→ set_focus 聚焦首个后用 add_focus({path}) 追加其余;聚焦后可写任一焦点子树,越界仍被拒;移除单个用 remove_focus({path})。"), a.push(" · 全局任务(多处/整体结构,如「重排所有组件」「换主题」)→ 不要聚焦,保持全量视野直接写。"), a.push(" · 完成局部精修、要转向其他区域或做整体改动 → 调 clear_focus 退出聚焦(清空全部焦点),恢复全部读写权限。"), a.push(" · set_focus/add_focus 的 path 必须在 schema 内(类型校验);不确定路径先 read 查。")), e?.subagents?.length) {
14214
+ let t = e.subagents.filter((e) => (e.temperature ?? 0) >= Ug || /规划|创意|设计|方案|brainstorm|plan/i.test(e.description)), n = e.subagents.filter((e) => (e.temperature ?? 0) < Ug && /反思|审查|挑刺|校验|review|critique|reflect/i.test(e.description));
13909
14215
  a.push("【规划-反思-执行·路由】按任务性质选模式,不要对简单任务过度编排:"), t.length && (a.push(` · 创作/设计/开放性需求(如"设计主题风格""换个感觉")→ 先调 ${t.map((e) => "use_" + e.id).join("/")} 出 2-3 套方案(高温创意),`), a.push(e?.humanConfirm ? " 不要自己拍板;拿到方案后,若需用户拍板用 request_human_confirmation 弹选项。" : " 不要自己拍板;拿到方案后以文字列出选项等用户回复(humanConfirm 未开,勿调不存在工具)。")), n.length && a.push(` · 严谨/易错/校验类 → 可先调 ${n.map((e) => "use_" + e.id).join("/")} 反思挑刺(低温审查),据反馈修订。`), a.push(" · 方案定稿后,由你(主 agent)用 write 落地成 JSON(低温度执行 + schema 校验 + 写前确认)。"), a.push(" · 简单/明确任务(如\"标题改红色\")直接执行,不必走规划-反思。");
13910
14216
  }
13911
14217
  e?.humanConfirm && (a.push("【人工确认·必读】以下情形必须先调 request_human_confirmation 征询用户、拿到答复后再继续,不要自行拍板:"), a.push(" 1) 用户让你「给方案/列选项/我来选/挑一个」时:把每个方案作为一个 option,调 request_human_confirmation(question=简述, options=[方案A,方案B,...], recommendation=你推荐的)。不要只回文字罗列方案让用户自己回复——要用工具把选项做成可点选按钮。"), a.push(" 2) 需求有歧义/不确定时:调工具问清楚(options 不传则用户答同意或拒绝)。"), a.push(" 3) 即将执行高风险不可逆操作(删除/覆盖/批量改动)前:调工具确认。"), a.push(" 4) 规划出多步方案需用户确认时:把整个方案(或关键分步)作为 option 调 request_human_confirmation,确认后再执行。"), a.push("用户在选项里选了哪个,就按那个方案继续;选「拒绝」则停止并询问如何调整。"));
@@ -13925,7 +14231,7 @@ function jg(e, t, n) {
13925
14231
  }
13926
14232
  //#endregion
13927
14233
  //#region src/core/harness/pageContext.ts
13928
- function Mg(e, t) {
14234
+ function Gg(e, t) {
13929
14235
  let n = [
13930
14236
  "[当前页面] 用户正在浏览:",
13931
14237
  `- 标题:${e.title}`,
@@ -13934,18 +14240,18 @@ function Mg(e, t) {
13934
14240
  ];
13935
14241
  return t && n.push("需要页面正文时用 read_page 读取纯文本(长文按 hasMore 分页续读);读结构用 get_dom。"), n.join("\n");
13936
14242
  }
13937
- function Ng(e) {
14243
+ function Kg(e) {
13938
14244
  return {
13939
14245
  name: "pageContext",
13940
14246
  augmentPrompt: () => {
13941
14247
  let t = e.getPageInfo();
13942
- if (t) return Mg(t, e.canReadPage);
14248
+ if (t) return Gg(t, e.canReadPage);
13943
14249
  }
13944
14250
  };
13945
14251
  }
13946
14252
  //#endregion
13947
14253
  //#region src/core/harness/resourcesPin.ts
13948
- function Pg(e) {
14254
+ function qg(e) {
13949
14255
  return {
13950
14256
  name: "resourcesPin",
13951
14257
  augmentPrompt: () => {
@@ -13959,15 +14265,15 @@ function Pg(e) {
13959
14265
  }
13960
14266
  //#endregion
13961
14267
  //#region src/core/backends/skillStore.ts
13962
- var Fg = "v:1::skill-store", Ig = "chat-sdk";
13963
- function Lg(e, t, n) {
13964
- return `${Fg}::${e}::${t}::${n}`;
14268
+ var Jg = "v:1::skill-store", Yg = "chat-sdk";
14269
+ function Xg(e, t, n) {
14270
+ return `${Jg}::${e}::${t}::${n}`;
13965
14271
  }
13966
- function Rg(e, t) {
13967
- return `${Fg}::${e}::${t}::`;
14272
+ function Zg(e, t) {
14273
+ return `${Jg}::${e}::${t}::`;
13968
14274
  }
13969
- function zg(e = {}) {
13970
- let t = e.dbName ?? Ig, n = e.backend ?? "indexed", r = e.id ?? "", i, a, o = new Promise((e) => {
14275
+ function Qg(e = {}) {
14276
+ let t = e.dbName ?? Yg, n = e.backend ?? "indexed", r = e.id ?? "", i, a, o = new Promise((e) => {
13971
14277
  a = e;
13972
14278
  });
13973
14279
  return (async () => {
@@ -13989,36 +14295,36 @@ function zg(e = {}) {
13989
14295
  ready: o,
13990
14296
  async list() {
13991
14297
  let e = [];
13992
- return await i.scan(Rg(t, r), (t, n) => {
14298
+ return await i.scan(Zg(t, r), (t, n) => {
13993
14299
  e.push(n);
13994
14300
  }), e;
13995
14301
  },
13996
14302
  async get(e) {
13997
- return await i.get(Lg(t, r, e));
14303
+ return await i.get(Xg(t, r, e));
13998
14304
  },
13999
14305
  async put(e) {
14000
14306
  try {
14001
- await i.set(Lg(t, r, e.name), e);
14307
+ await i.set(Xg(t, r, e.name), e);
14002
14308
  } catch (e) {
14003
14309
  Lp(e) && (i = Gp());
14004
14310
  }
14005
14311
  },
14006
14312
  async remove(e) {
14007
- let n = Lg(t, r, e);
14313
+ let n = Xg(t, r, e);
14008
14314
  return await i.get(n) == null ? !1 : (await i.del(n), !0);
14009
14315
  },
14010
14316
  async clear() {
14011
- await i.clearPrefix(Rg(t, r));
14317
+ await i.clearPrefix(Zg(t, r));
14012
14318
  },
14013
14319
  dispose() {}
14014
14320
  };
14015
14321
  }
14016
- var Bg = /large_results\/[^\s"'`),]+\.txt/g;
14017
- function Vg(e) {
14322
+ var $g = /large_results\/[^\s"'`),]+\.txt/g;
14323
+ function e_(e) {
14018
14324
  let t = /* @__PURE__ */ new Set(), n = (e) => {
14019
14325
  if (typeof e != "string" || !e) return;
14020
14326
  let n;
14021
- for (Bg.lastIndex = 0; (n = Bg.exec(e)) !== null;) t.add(n[0]);
14327
+ for ($g.lastIndex = 0; (n = $g.exec(e)) !== null;) t.add(n[0]);
14022
14328
  };
14023
14329
  for (let r of e) {
14024
14330
  if (n(r.content), r.steps) for (let e of r.steps) n(e.result);
@@ -14026,14 +14332,14 @@ function Vg(e) {
14026
14332
  }
14027
14333
  return t;
14028
14334
  }
14029
- function Hg(e, t) {
14335
+ function t_(e, t) {
14030
14336
  let n = [];
14031
14337
  for (let r of Object.keys(e)) r.startsWith("large_results/") && !t.has(r) && n.push(r);
14032
14338
  return n;
14033
14339
  }
14034
14340
  //#endregion
14035
14341
  //#region src/core/utils/serialRunner.ts
14036
- function Ug() {
14342
+ function n_() {
14037
14343
  let e = Promise.resolve();
14038
14344
  return function(t) {
14039
14345
  let n = e.then(t, t);
@@ -14042,24 +14348,24 @@ function Ug() {
14042
14348
  }
14043
14349
  //#endregion
14044
14350
  //#region src/core/sdk/createChatSdk.ts
14045
- var Wg = 30, Gg = /* @__PURE__ */ new Map();
14046
- function Kg(e, t) {
14351
+ var r_ = 30, i_ = /* @__PURE__ */ new Map();
14352
+ function a_(e, t) {
14047
14353
  return e === "restore_data" ? "restore" : e === "write" ? t?.dryRun ? null : t?.del ? "delete" : t?.patch || t?.patches ? "edit" : "set" : e === "eval_script" ? t?.mode === "transform" ? "edit" : null : e === "draft_commit" || e === "resource_update" ? "edit" : null;
14048
14354
  }
14049
- function qg(e) {
14355
+ function o_(e) {
14050
14356
  return e === "spawn_agent" || e === "spawn_agents" || e.startsWith("use_");
14051
14357
  }
14052
- function Jg(e, t, n, r) {
14358
+ function s_(e, t, n, r) {
14053
14359
  let i = 0;
14054
14360
  return {
14055
14361
  name: "sdk-events",
14056
14362
  wrapToolCall: async (t, r) => {
14057
- let i = await r(t), a = Kg(t.name, t.args), o = typeof i.content == "string" && i.content.startsWith("ERROR:");
14363
+ let i = await r(t), a = a_(t.name, t.args), o = typeof i.content == "string" && i.content.startsWith("ERROR:");
14058
14364
  return a && !o ? e({
14059
14365
  type: "data_change",
14060
14366
  operation: a,
14061
14367
  value: n()?.bind
14062
- }) : i.status === "done" && !o && qg(t.name) && e({
14368
+ }) : i.status === "done" && !o && o_(t.name) && e({
14063
14369
  type: "data_change",
14064
14370
  operation: "edit",
14065
14371
  value: n()?.bind
@@ -14087,7 +14393,7 @@ function Jg(e, t, n, r) {
14087
14393
  }
14088
14394
  };
14089
14395
  }
14090
- function Yg(e, t, n, r, i) {
14396
+ function c_(e, t, n, r, i) {
14091
14397
  if (!n) return i && console.warn(`[page-agent-sdk][focus] capabilities.focus 关闭,${t} 忽略`), {
14092
14398
  ok: !1,
14093
14399
  error: "capabilities.focus 关闭"
@@ -14105,7 +14411,7 @@ function Yg(e, t, n, r, i) {
14105
14411
  error: "当前无主数据 schema,无法聚焦"
14106
14412
  });
14107
14413
  }
14108
- function Xg(e, n) {
14414
+ function l_(e, n) {
14109
14415
  let r = {
14110
14416
  prompt_tokens: 0,
14111
14417
  completion_tokens: 0,
@@ -14132,7 +14438,7 @@ function Xg(e, n) {
14132
14438
  e.debug && !u && console.warn("[page-agent-sdk][summarization] 未构造 llmInvoke(apiKey 缺失?),摘要回退零成本索引摘要");
14133
14439
  let C = /* @__PURE__ */ Mt([]), w = nd(e.vfs?.initialFiles, {
14134
14440
  persist: c ? { save: (e) => {
14135
- nn.persistSave({ vfs: e });
14441
+ rn.persistSave({ vfs: e });
14136
14442
  } } : void 0,
14137
14443
  maxBytes: e.vfs?.maxBytes,
14138
14444
  poolBytes: e.vfs?.poolBytes
@@ -14160,7 +14466,7 @@ function Xg(e, n) {
14160
14466
  context: e
14161
14467
  });
14162
14468
  }, ae = au((e) => {
14163
- te.lastPlanConfirmation = e, nn.persistSave({ planConfirmation: e }), X.agent?.debugLogs?.value?.push({
14469
+ te.lastPlanConfirmation = e, rn.persistSave({ planConfirmation: e }), X.agent?.debugLogs?.value?.push({
14164
14470
  timestamp: Date.now(),
14165
14471
  type: "middleware",
14166
14472
  data: {
@@ -14227,7 +14533,7 @@ function Xg(e, n) {
14227
14533
  vfsStore: he || N?.resources?.length ? w : void 0,
14228
14534
  ...de.length ? { pgIdPaths: de } : {},
14229
14535
  ...R.length ? { largeTextPaths: R } : {}
14230
- }) : [], ye = me ? ve : [], U = me && N ? ve.controller ?? null : null, be = me && N ? ve.previewWrite : void 0, xe = me && N?.resources?.length && U?.getResourcesSnapshot ? Pg({ getResourcesSnapshot: () => U?.getResourcesSnapshot?.() ?? [] }) : void 0, W = () => U?.get() ?? N, Se = new Set(ve.map((e) => e.name)), Ce = e.conflictWatchFields ?? [], we = !Ce.includes("*") && Ce.length ? new Set(Ce) : void 0, Te = U ? kf({
14536
+ }) : [], ye = me ? ve : [], U = me && N ? ve.controller ?? null : null, be = me && N ? ve.previewWrite : void 0, xe = me && N?.resources?.length && U?.getResourcesSnapshot ? qg({ getResourcesSnapshot: () => U?.getResourcesSnapshot?.() ?? [] }) : void 0, W = () => U?.get() ?? N, Se = new Set(ve.map((e) => e.name)), Ce = e.conflictWatchFields ?? [], we = !Ce.includes("*") && Ce.length ? new Set(Ce) : void 0, Te = U ? kf({
14231
14537
  getBind: () => W()?.bind,
14232
14538
  recomputeAll: () => U.recomputeAllBaselines?.(),
14233
14539
  hasBaselines: () => U.hasBaselines?.() ?? !1,
@@ -14285,19 +14591,31 @@ function Xg(e, n) {
14285
14591
  }
14286
14592
  return t(e);
14287
14593
  }
14288
- } : null, je = kg(V, ye, Bh, V.domInspect ? [
14289
- ...Qh,
14594
+ } : null, je = V.domEdit ? Zh({ onEdit: (e) => {
14595
+ X.agent?.debugLogs?.value?.push({
14596
+ timestamp: Date.now(),
14597
+ type: "middleware",
14598
+ data: {
14599
+ stage: "dom_edit",
14600
+ ops: e.ops.join(","),
14601
+ applied: e.applied,
14602
+ dryRun: e.dryRun
14603
+ }
14604
+ });
14605
+ } }) : [], Me = Hg(V, ye, $h, V.domInspect ? [
14606
+ ...dg,
14607
+ ...je,
14290
14608
  ...Oe ? [Oe] : [],
14291
- ...V.skills ? [] : [cg, lg]
14292
- ] : [], xg);
14293
- je.forEach((e) => G.set(e.name, "builtin"));
14294
- let Me = [...e.tools || []];
14295
- Me.forEach((e) => G.set(e.name, "user"));
14296
- let Ne = wg(e.actions ?? {});
14297
- Ne.forEach((e) => G.set(e.name, "action"));
14298
- let Pe = [], Fe = !1, Ie = e.humanConfirm !== !1 && (!e.approval || e.approval.humanConfirmTool !== !1), Le = Ie ? iu() : null;
14299
- Le && G.set(nu, "builtin");
14300
- let Re = fe && B ? [s(async () => {
14609
+ ...V.skills ? [] : [xg, Sg]
14610
+ ] : [], Pg);
14611
+ Me.forEach((e) => G.set(e.name, "builtin"));
14612
+ let Ne = [...e.tools || []];
14613
+ Ne.forEach((e) => G.set(e.name, "user"));
14614
+ let Pe = Lg(e.actions ?? {});
14615
+ Pe.forEach((e) => G.set(e.name, "action"));
14616
+ let Fe = [], Ie = !1, Le = e.humanConfirm !== !1 && (!e.approval || e.approval.humanConfirmTool !== !1), Re = Le ? iu() : null;
14617
+ Re && G.set(nu, "builtin");
14618
+ let ze = fe && B ? [s(async () => {
14301
14619
  let e = B.list();
14302
14620
  return e.length ? B.restore() ? `已回退到最近一次正常状态(checkpoint #${e[e.length - 1].id})。对话历史、主数据、vfs、todos 已整体还原。请基于回退后的状态重新判断并继续。` : "回退失败:无可用 checkpoint。" : "无可用 checkpoint,无法回退。";
14303
14621
  }, {
@@ -14312,8 +14630,8 @@ function Xg(e, n) {
14312
14630
  description: "列出可用会话 checkpoint(回退点)。",
14313
14631
  schema: t.object({}).optional()
14314
14632
  })] : [];
14315
- Re.forEach((e) => G.set(e.name, "builtin"));
14316
- let ze = V.focus, Be = s(async ({ path: e, label: t }) => {
14633
+ ze.forEach((e) => G.set(e.name, "builtin"));
14634
+ let K = V.focus, Be = s(async ({ path: e, label: t }) => {
14317
14635
  let n = W()?.schema;
14318
14636
  return n ? _s(n, e) ? (A.setFocus(oe({
14319
14637
  path: e,
@@ -14356,7 +14674,7 @@ function Xg(e, n) {
14356
14674
  name: "remove_focus",
14357
14675
  description: "移除单个聚焦焦点(by path),保留其他焦点。移除最后一个等价退出精修。全部退出用 clear_focus。",
14358
14676
  schema: t.object({ path: t.string().describe("要移除的焦点 jsonPath") })
14359
- }), We = ze ? [
14677
+ }), We = K ? [
14360
14678
  Be,
14361
14679
  Ve,
14362
14680
  He,
@@ -14364,55 +14682,55 @@ function Xg(e, n) {
14364
14682
  ] : [];
14365
14683
  We.forEach((e) => G.set(e.name, "builtin"));
14366
14684
  let Ge = [], Ke = /* @__PURE__ */ new Map(), qe = fm({
14367
- builtinTools: () => je,
14368
- userTools: () => Me,
14369
- actionTools: () => Ne,
14370
- humanConfirmTool: () => Le,
14371
- checkpointTools: () => Re,
14685
+ builtinTools: () => Me,
14686
+ userTools: () => Ne,
14687
+ actionTools: () => Pe,
14688
+ humanConfirmTool: () => Re,
14689
+ checkpointTools: () => ze,
14372
14690
  focusTools: () => We,
14373
- mcpTools: () => Pe,
14691
+ mcpTools: () => Fe,
14374
14692
  loadedSkillTools: () => Ge
14375
- }), K = qe(), Je = V.planning, Ye = V.missionAnchor, Xe = V.workingMemory, Ze = V.skills, q = V.vfs || ue;
14376
- if (q) for (let e of cd) G.set(e, "builtin");
14693
+ }), q = qe(), Je = V.planning, Ye = V.missionAnchor, Xe = V.workingMemory, Ze = V.skills, Qe = V.vfs || ue;
14694
+ if (Qe) for (let e of cd) G.set(e, "builtin");
14377
14695
  if (Je) for (let e of T.tools ?? []) G.set(e.name, "builtin");
14378
- let Qe = V.summarization, $e = V.agentCompression && !!f;
14696
+ let $e = V.summarization, et = V.agentCompression && !!f;
14379
14697
  e.debug && V.agentCompression && !f && console.warn("[page-agent-sdk][agentCompression] agentCompression 开启但 summaryLlm 不可用(或缺 apiKey / 模型不支持工具),压缩决策不启用,回退静态压缩");
14380
- let et = V.memory, tt = V.subagent, nt = tt ? yl() : void 0, rt = e.verify?.maxAttempts ?? 2, it = !!(e.verify?.check || e.verify?.maxAttempts || e.verify?.adversarial), at = e.capabilities?.verify === !1, ot = (V.verify || it && !at) && e.verify?.enabled !== !1 && rt > 0, st = V.contextInspector;
14381
- it && !ot && e.verify?.enabled !== !1 && console.warn("[page-agent-sdk][verify] 检测到 verify 配置(check/maxAttempts/adversarial)但未装载(capabilities.verify:false 显式关闭 或 maxAttempts≤0)");
14382
- let ct = e.subagent, lt = ct?.allowedTools ?? [], ut = e.permissions?.length ? eu(e.permissions) : void 0, dt = e.approval && (e.approval.tools !== void 0 || e.approval.confirm) ? tu({
14698
+ let tt = V.memory, nt = V.subagent, rt = nt ? yl() : void 0, it = e.verify?.maxAttempts ?? 2, at = !!(e.verify?.check || e.verify?.maxAttempts || e.verify?.adversarial), ot = e.capabilities?.verify === !1, st = (V.verify || at && !ot) && e.verify?.enabled !== !1 && it > 0, ct = V.contextInspector;
14699
+ at && !st && e.verify?.enabled !== !1 && console.warn("[page-agent-sdk][verify] 检测到 verify 配置(check/maxAttempts/adversarial)但未装载(capabilities.verify:false 显式关闭 或 maxAttempts≤0)");
14700
+ let lt = e.subagent, ut = lt?.allowedTools ?? [], dt = e.permissions?.length ? eu(e.permissions) : void 0, ft = e.approval && (e.approval.tools !== void 0 || e.approval.confirm) ? tu({
14383
14701
  ...e.approval,
14384
14702
  timeoutMs: e.approval.timeoutMs ?? re,
14385
14703
  onAutoReject: ie,
14386
14704
  previewWrite: e.approval.preview === !0 && be ? (e, t) => e === "write" ? be(t) : null : void 0
14387
- }) : void 0, ft = [
14388
- ...ut ? [ut] : [],
14705
+ }) : void 0, pt = [
14389
14706
  ...dt ? [dt] : [],
14707
+ ...ft ? [ft] : [],
14390
14708
  ...Te ? [Te] : []
14391
- ], pt = !tt || ct?.enabled === !1 ? void 0 : zl({
14392
- llm: ct?.llm ?? e.llm,
14393
- allTools: () => X.agent?.allTools ?? K,
14394
- allowedTools: lt.length ? lt : void 0,
14709
+ ], mt = !nt || lt?.enabled === !1 ? void 0 : zl({
14710
+ llm: lt?.llm ?? e.llm,
14711
+ allTools: () => X.agent?.allTools ?? q,
14712
+ allowedTools: ut.length ? ut : void 0,
14395
14713
  ...e.staleReadInvalidation === void 0 ? {} : { staleReadInvalidation: e.staleReadInvalidation },
14396
- systemPrompt: ct?.systemPrompt,
14397
- temperature: ct?.temperature,
14398
- maxTokens: ct?.maxTokens,
14399
- skills: ct?.skills,
14400
- maxDepth: ct?.maxDepth,
14401
- maxParallel: ct?.maxParallel,
14402
- thinkingMode: ct?.thinkingMode,
14714
+ systemPrompt: lt?.systemPrompt,
14715
+ temperature: lt?.temperature,
14716
+ maxTokens: lt?.maxTokens,
14717
+ skills: lt?.skills,
14718
+ maxDepth: lt?.maxDepth,
14719
+ maxParallel: lt?.maxParallel,
14720
+ thinkingMode: lt?.thinkingMode,
14403
14721
  debug: e.debug,
14404
14722
  getFocuses: () => A.getActiveFocuses(),
14405
14723
  getSchema: () => W()?.schema ?? null,
14406
- tracker: nt,
14407
- guardMiddleware: ft.length ? ft : void 0,
14408
- getVfsFiles: q ? () => w.files : void 0,
14724
+ tracker: rt,
14725
+ guardMiddleware: pt.length ? pt : void 0,
14726
+ getVfsFiles: Qe ? () => w.files : void 0,
14409
14727
  enterDataScope: U?.enterScope ? (e) => U.enterScope(e) : void 0,
14410
14728
  exitDataScope: U?.exitScope ? (e) => U.exitScope(e) : void 0,
14411
14729
  onUsage: (e) => {
14412
14730
  r.prompt_tokens = (r.prompt_tokens ?? 0) + (e.prompt_tokens ?? 0), r.completion_tokens = (r.completion_tokens ?? 0) + (e.completion_tokens ?? 0), r.total_tokens = (r.total_tokens ?? 0) + (e.total_tokens ?? 0), e.reasoning_tokens && (r.reasoning_tokens = (r.reasoning_tokens ?? 0) + e.reasoning_tokens);
14413
14731
  },
14414
- timeoutMs: ct?.timeoutMs
14415
- }), mt = L?.map((e) => {
14732
+ timeoutMs: lt?.timeoutMs
14733
+ }), ht = L?.map((e) => {
14416
14734
  if (!e._codeAsset) return e;
14417
14735
  let t = e._codeAsset, n = mf({
14418
14736
  writablePaths: t.writablePaths,
@@ -14429,74 +14747,75 @@ function Xg(e, n) {
14429
14747
  ...e,
14430
14748
  middleware: r
14431
14749
  };
14432
- }), ht = ue && tt ? hf() : void 0, gt = ht ? Sf({
14750
+ }), gt = ue && nt ? hf() : void 0, _t = gt ? Sf({
14433
14751
  getBind: () => W()?.bind,
14434
14752
  writablePaths: de,
14435
- getLocked: () => ht.locked(),
14436
- tools: K,
14753
+ getLocked: () => gt.locked(),
14754
+ tools: q,
14437
14755
  getCodeFieldPaths: () => bf(W()?.bind, I.map((e) => ({
14438
14756
  writablePaths: e._codeAsset.writablePaths,
14439
14757
  codeField: e._codeAsset.codeField
14440
14758
  })))
14441
- }) : void 0, _t = U?.getSummarizedPaths && U.clearSummarizedPaths ? Tf({
14759
+ }) : void 0, vt = U?.getSummarizedPaths && U.clearSummarizedPaths ? Tf({
14442
14760
  getSummarizedPaths: () => U.getSummarizedPaths(),
14443
14761
  clearSummarizedPaths: () => U.clearSummarizedPaths()
14444
- }) : void 0, vt = tt && mt !== void 0 ? Hl(mt, {
14762
+ }) : void 0, yt = nt && ht !== void 0 ? Hl(ht, {
14445
14763
  llm: e.llm,
14446
14764
  thinkingModeDefault: e.subagent?.thinkingMode,
14447
14765
  staleReadInvalidation: e.staleReadInvalidation,
14448
- allTools: () => X.agent?.allTools ?? K,
14766
+ allTools: () => X.agent?.allTools ?? q,
14449
14767
  debug: e.debug,
14450
14768
  getFocuses: () => A.getActiveFocuses(),
14451
14769
  getSchema: () => W()?.schema ?? null,
14452
14770
  getBind: () => W()?.bind,
14453
- tracker: nt,
14454
- guardMiddleware: ft.length ? ft : void 0,
14455
- getVfsFiles: q ? () => w.files : void 0,
14771
+ tracker: rt,
14772
+ guardMiddleware: pt.length ? pt : void 0,
14773
+ getVfsFiles: Qe ? () => w.files : void 0,
14456
14774
  enterDataScope: U?.enterScope ? (e) => U.enterScope(e) : void 0,
14457
14775
  exitDataScope: U?.exitScope ? (e) => U.exitScope(e) : void 0,
14458
14776
  onUsage: (e) => {
14459
14777
  r.prompt_tokens = (r.prompt_tokens ?? 0) + (e.prompt_tokens ?? 0), r.completion_tokens = (r.completion_tokens ?? 0) + (e.completion_tokens ?? 0), r.total_tokens = (r.total_tokens ?? 0) + (e.total_tokens ?? 0), e.reasoning_tokens && (r.reasoning_tokens = (r.reasoning_tokens ?? 0) + e.reasoning_tokens);
14460
14778
  },
14461
14779
  timeoutMs: e.subagent?.timeoutMs,
14462
- ...ht ? {
14463
- componentLock: ht,
14780
+ ...gt ? {
14781
+ componentLock: gt,
14464
14782
  resolveComponents: (e) => gf(e, uf(W()?.bind, de))
14465
14783
  } : {}
14466
- }) : void 0, yt = vt ? vt.controller : null, bt = (t) => {
14784
+ }) : void 0, bt = yt ? yt.controller : null, xt = (t) => {
14467
14785
  let n = t.thinkingMode ?? e.subagent?.thinkingMode, r = n ? dp(t.llm ?? e.llm) ? "instance-noop" : "applied" : "inherited";
14468
14786
  return {
14469
14787
  ...t,
14470
14788
  ...n ? { thinkingMode: n } : {},
14471
14789
  thinkingApplied: r
14472
14790
  };
14473
- }, xt = ["read", "fetch_document"], St = K.filter((e) => xt.includes(e.name)), Ct = ot ? gu({
14791
+ }, St = ["read", "fetch_document"], Ct = q.filter((e) => St.includes(e.name)), wt = st ? gu({
14474
14792
  check: e.verify.check ?? Su({
14475
14793
  schemas: () => W() ? { "": W().schema } : {},
14476
14794
  root: () => W()?.bind
14477
14795
  }),
14478
14796
  adversarial: e.verify?.adversarial ? {
14479
14797
  llm: e.llm,
14480
- tools: St
14798
+ tools: Ct
14481
14799
  } : void 0
14482
- }) : void 0, wt = st ? Iu({
14800
+ }) : void 0, Tt = ct ? Iu({
14483
14801
  contextWindow: m.contextWindow,
14484
14802
  thresholdRatio: am(e, m.contextWindow).summaryThresholdRatio
14485
- }) : void 0, Tt = jg({
14803
+ }) : void 0, Et = Wg({
14486
14804
  ...V,
14487
- humanConfirm: Ie,
14805
+ humanConfirm: Le,
14488
14806
  screenshot: !!Oe,
14489
- subagents: L?.map(bt)
14490
- }, me && !!N, { promptSoftCap: ml(m.contextWindow, g.promptSoftCapTokens) }), Et = V.pageContext ? Ng({
14807
+ domEdit: V.domEdit,
14808
+ subagents: L?.map(xt)
14809
+ }, me && !!N, { promptSoftCap: ml(m.contextWindow, g.promptSoftCapTokens) }), Dt = V.pageContext ? Kg({
14491
14810
  getPageInfo: () => typeof document < "u" && typeof location < "u" ? {
14492
14811
  title: document.title || "",
14493
14812
  url: location.href
14494
14813
  } : null,
14495
14814
  canReadPage: V.domInspect === !0
14496
- }) : void 0, Dt = N ? {
14815
+ }) : void 0, Ot = N ? {
14497
14816
  name: "dataHint",
14498
14817
  augmentPrompt: () => Zu(W(), e.schemaHint) || void 0
14499
- } : null, Ot = e.augmentSystem ? {
14818
+ } : null, kt = e.augmentSystem ? {
14500
14819
  name: "augmentSystem",
14501
14820
  augmentPrompt: (t) => {
14502
14821
  try {
@@ -14509,125 +14828,131 @@ function Xg(e, n) {
14509
14828
  return;
14510
14829
  }
14511
14830
  }
14512
- } : null, kt = nm(e.onEvent), J = kt.emit, At, jt = [], Nt = (e) => ({
14831
+ } : null, At = nm(e.onEvent), J = At.emit, jt, Nt = [], Pt = (e) => ({
14513
14832
  name: e.name,
14514
14833
  description: e.description,
14515
14834
  content: typeof e.getContent == "function" ? e.getContent() : ""
14516
- }), Pt = (e) => ({
14835
+ }), Ft = (e) => ({
14517
14836
  name: e.name,
14518
14837
  description: e.description,
14519
14838
  getContent: () => e.content
14520
- }), Ft = e.skillStorage === !1 ? null : zg({
14839
+ }), It = e.skillStorage === !1 ? null : Qg({
14521
14840
  ...typeof e.skillStorage == "object" ? e.skillStorage : {},
14522
14841
  id: e.skillStorage && typeof e.skillStorage == "object" && e.skillStorage.id ? e.skillStorage.id : `agent::${n}`
14523
- }), It = () => {
14524
- let t = At ? At.controller : null;
14842
+ }), Lt = () => {
14843
+ let t = jt ? jt.controller : null;
14525
14844
  if (t) {
14526
- let n = (e.skills || []).filter((e) => !jt.some((t) => t.name === e.name));
14527
- t.set([...n, ...jt]);
14845
+ let n = (e.skills || []).filter((e) => !Nt.some((t) => t.name === e.name));
14846
+ t.set([...n, ...Nt]);
14528
14847
  }
14529
14848
  X.infoTick.value++;
14530
- }, Lt = async () => {
14531
- if (Ft) try {
14532
- let t = await Ft.list();
14849
+ }, Rt = async () => {
14850
+ if (It) try {
14851
+ let t = await It.list();
14533
14852
  if (t.length) {
14534
- jt = t.map(Pt);
14535
- let n = At ? At.controller : null;
14853
+ Nt = t.map(Ft);
14854
+ let n = jt ? jt.controller : null;
14536
14855
  if (n) {
14537
- let t = (e.skills || []).filter((e) => !jt.some((t) => t.name === e.name));
14538
- n.set([...t, ...jt]);
14856
+ let t = (e.skills || []).filter((e) => !Nt.some((t) => t.name === e.name));
14857
+ n.set([...t, ...Nt]);
14539
14858
  }
14540
14859
  X.infoTick.value++;
14541
14860
  }
14542
14861
  } catch {}
14543
- }, Rt = Qe ? vl({
14862
+ }, zt = $e ? vl({
14544
14863
  ...g,
14545
14864
  llmInvoke: u,
14546
14865
  getRegisteredData: () => W() ? [{ description: W().description ?? "主数据对象" }] : [],
14547
14866
  preserveLastToolResults: b,
14548
- ...$e ? {
14867
+ ...et ? {
14549
14868
  decideInvoke: f,
14550
- getSnapshot: () => wt?.getSnapshot()
14869
+ getSnapshot: () => Tt?.getSnapshot()
14551
14870
  } : {}
14552
- }) : void 0, zt = Ze ? qc([
14553
- ...V.domInspect && !(e.skills || []).some((e) => e.name === "dom-inspect") ? [dg({ withScreenshot: !!Oe })] : [],
14554
- ...V.domInspect && !(e.skills || []).some((e) => e.name === "page-analysis") ? [pg({ withScreenshot: !!Oe })] : [],
14871
+ }) : void 0, Y = Ze ? qc([
14872
+ ...V.domInspect && !(e.skills || []).some((e) => e.name === "dom-inspect") ? [wg({
14873
+ withScreenshot: !!Oe,
14874
+ withDomEdit: V.domEdit
14875
+ })] : [],
14876
+ ...V.domInspect && !(e.skills || []).some((e) => e.name === "page-analysis") ? [Eg({
14877
+ withScreenshot: !!Oe,
14878
+ withDomEdit: V.domEdit
14879
+ })] : [],
14555
14880
  ...e.skills || []
14556
14881
  ], {
14557
- readVfs: q ? (e) => w.files[e]?.content : void 0,
14882
+ readVfs: Qe ? (e) => w.files[e]?.content : void 0,
14558
14883
  onToolsReady: (e, t) => {
14559
14884
  for (let n of t) {
14560
14885
  let t = Ge.findIndex((e) => e.name === n.name);
14561
14886
  t >= 0 && Ge.splice(t, 1), Ge.push(n), Ke.set(n.name, e), G.set(n.name, `skill:${e}`);
14562
14887
  }
14563
- K = qe(), X.agent && X.agent.setTools(K), X.infoTick.value++;
14888
+ q = qe(), X.agent && X.agent.setTools(q), X.infoTick.value++;
14564
14889
  }
14565
14890
  }) : void 0;
14566
- At = zt;
14567
- let Y = sm([
14891
+ jt = Y;
14892
+ let Bt = sm([
14893
+ ...Ot ? [Ot] : [],
14894
+ Et,
14568
14895
  ...Dt ? [Dt] : [],
14569
- Tt,
14570
- ...Et ? [Et] : [],
14571
14896
  ...Ye ? [D] : [],
14572
14897
  O,
14573
14898
  ee,
14574
14899
  ...Je ? [T] : [],
14900
+ ...Y ? [Y] : [],
14901
+ ...Qe ? [ud(w)] : [],
14575
14902
  ...zt ? [zt] : [],
14576
- ...q ? [ud(w)] : [],
14577
- ...Rt ? [Rt] : [],
14578
14903
  ...Xe ? [j] : [],
14579
- ...ze ? [A] : [],
14904
+ ...K ? [A] : [],
14580
14905
  ...xe ? [xe] : [],
14581
- ...et ? [se] : [],
14582
- ...ut ? [ut] : [],
14583
- ...fe && pe && B ? [mu(B)] : [],
14584
- ...Ie ? [ae] : [],
14906
+ ...tt ? [se] : [],
14585
14907
  ...dt ? [dt] : [],
14908
+ ...fe && pe && B ? [mu(B)] : [],
14909
+ ...Le ? [ae] : [],
14910
+ ...ft ? [ft] : [],
14586
14911
  ...Te ? [Te] : [],
14587
- ...Ct ? [Ct] : [],
14588
- ...pt ? [pt] : [],
14589
- ...vt ? [vt] : [],
14590
- ...gt ? [gt] : [],
14912
+ ...wt ? [wt] : [],
14913
+ ...mt ? [mt] : [],
14914
+ ...yt ? [yt] : [],
14591
14915
  ..._t ? [_t] : [],
14592
- ...U && tt ? [Of({
14916
+ ...vt ? [vt] : [],
14917
+ ...U && nt ? [Of({
14593
14918
  getBind: () => W()?.bind,
14594
- getTools: () => X.agent?.allTools ?? K
14919
+ getTools: () => X.agent?.allTools ?? q
14595
14920
  })] : [],
14596
- ...Ot ? [Ot] : [],
14597
- ...wt ? [wt] : [],
14921
+ ...kt ? [kt] : [],
14922
+ ...Tt ? [Tt] : [],
14598
14923
  ...Ae ? [Ae] : [],
14599
14924
  ...e.middleware || [],
14600
- ...H ? [Sg(r, {
14925
+ ...H ? [Fg(r, {
14601
14926
  tokenBudget: e.tokenBudget,
14602
14927
  timeBudgetMs: e.timeBudgetMs
14603
14928
  }, J)] : [],
14604
- Jg(J, C, W, r)
14605
- ]), Bt = e.maxMemoryRounds ?? Wg;
14606
- function Vt(e) {
14929
+ s_(J, C, W, r)
14930
+ ]), Vt = e.maxMemoryRounds ?? r_;
14931
+ function Ht(e) {
14607
14932
  return (e) => {
14608
14933
  e.type !== "approval_request" && J(De(e));
14609
14934
  };
14610
14935
  }
14611
- let Ht = /* @__PURE__ */ Wt([]), Ut = Ug(), Gt = /* @__PURE__ */ new Set();
14612
- function Kt(e) {
14936
+ let Ut = /* @__PURE__ */ Wt([]), Gt = n_(), Kt = /* @__PURE__ */ new Set();
14937
+ function qt(e) {
14613
14938
  let t = new AbortController(), n = () => t.abort();
14614
- return e && (e.aborted ? t.abort() : e.addEventListener("abort", n, { once: !0 })), Gt.add(t), {
14939
+ return e && (e.aborted ? t.abort() : e.addEventListener("abort", n, { once: !0 })), Kt.add(t), {
14615
14940
  controller: t,
14616
14941
  untrack: () => {
14617
- Gt.delete(t), e?.removeEventListener("abort", n);
14942
+ Kt.delete(t), e?.removeEventListener("abort", n);
14618
14943
  }
14619
14944
  };
14620
14945
  }
14621
- function qt() {
14622
- for (let e of Gt) e.abort();
14623
- Gt.clear();
14946
+ function Yt() {
14947
+ for (let e of Kt) e.abort();
14948
+ Kt.clear();
14624
14949
  }
14625
- let Yt = /* @__PURE__ */ Wt(null), X = {
14950
+ let Xt = /* @__PURE__ */ Wt(null), X = {
14626
14951
  agentId: n,
14627
14952
  store: c,
14628
14953
  messages: C,
14629
14954
  vfsStore: w,
14630
- listeners: kt.listeners,
14955
+ listeners: At.listeners,
14631
14956
  todosMw: T,
14632
14957
  memoryMw: se,
14633
14958
  missionMw: D,
@@ -14642,18 +14967,18 @@ function Xg(e, n) {
14642
14967
  mcpFailed: [],
14643
14968
  checkpoint: B,
14644
14969
  dataOpsController: U,
14645
- skillsController: At ? At.controller : null,
14970
+ skillsController: jt ? jt.controller : null,
14646
14971
  infoTick: o,
14647
14972
  pendingConflict: a.pendingConflict,
14648
- pendingQuote: Yt,
14649
- sessions: Ht,
14650
- refreshSessions: () => nn.refreshSessions(),
14973
+ pendingQuote: Xt,
14974
+ sessions: Ut,
14975
+ refreshSessions: () => rn.refreshSessions(),
14651
14976
  liveData: W,
14652
14977
  usage: r,
14653
14978
  emit: J,
14654
- runSerial: Ut,
14655
- trackActive: Kt,
14656
- abortAllActive: qt,
14979
+ runSerial: Gt,
14980
+ trackActive: qt,
14981
+ abortAllActive: Yt,
14657
14982
  unloadSkillTools(e) {
14658
14983
  if (e) {
14659
14984
  let t = Ge.length;
@@ -14663,10 +14988,10 @@ function Xg(e, n) {
14663
14988
  for (let e of Ge) G.delete(e.name), Ke.delete(e.name);
14664
14989
  Ge = [];
14665
14990
  }
14666
- K = qe(), X.agent && X.agent.setTools(K);
14991
+ q = qe(), X.agent && X.agent.setTools(q);
14667
14992
  },
14668
14993
  applySnapshot(t) {
14669
- if (t.vfs && w.hydrate && w.hydrate(t.vfs), t.messages?.length && (C.push(...Ci(t.messages, (e) => (e ? X.vfsStore?.files?.[e]?.content : void 0) || void 0)), ee.markResumed()), t.todos?.length && T.reset(t.todos), t.memory && !e.memory && se.reset(t.memory), t.checkpoints?.length && B && B.importStack(t.checkpoints), t.usage && Object.assign(r, t.usage), t.mission && Ye && D.setMission(t.mission), t.workingMemory && Xe && j.restore(t.workingMemory), t.planConfirmation && (te.lastPlanConfirmation = t.planConfirmation), ze) {
14994
+ if (t.vfs && w.hydrate && w.hydrate(t.vfs), t.messages?.length && (C.push(...Ci(t.messages, (e) => (e ? X.vfsStore?.files?.[e]?.content : void 0) || void 0)), ee.markResumed()), t.todos?.length && T.reset(t.todos), t.memory && !e.memory && se.reset(t.memory), t.checkpoints?.length && B && B.importStack(t.checkpoints), t.usage && Object.assign(r, t.usage), t.mission && Ye && D.setMission(t.mission), t.workingMemory && Xe && j.restore(t.workingMemory), t.planConfirmation && (te.lastPlanConfirmation = t.planConfirmation), K) {
14670
14995
  let n = t.focus, r = n ? Array.isArray(n) ? n : [n] : [];
14671
14996
  if (r.length) {
14672
14997
  let t = W()?.schema, n = t ? r.filter((e) => _s(t, e.path)) : [];
@@ -14676,21 +15001,21 @@ function Xg(e, n) {
14676
15001
  }
14677
15002
  }
14678
15003
  }
14679
- $t();
15004
+ en();
14680
15005
  },
14681
15006
  addSkill(e) {
14682
- let t = jt.findIndex((t) => t.name === e.name);
14683
- t >= 0 ? jt[t] = e : jt.push(e), It(), Ft && Ft.put(Nt(e));
15007
+ let t = Nt.findIndex((t) => t.name === e.name);
15008
+ t >= 0 ? Nt[t] = e : Nt.push(e), Lt(), It && It.put(Pt(e));
14684
15009
  },
14685
15010
  removeSkill(e) {
14686
- let t = jt.findIndex((t) => t.name === e);
14687
- return t < 0 ? !1 : (jt.splice(t, 1), It(), Ft && Ft.remove(e), !0);
15011
+ let t = Nt.findIndex((t) => t.name === e);
15012
+ return t < 0 ? !1 : (Nt.splice(t, 1), Lt(), It && It.remove(e), !0);
14688
15013
  },
14689
15014
  listUserSkills() {
14690
- return jt.map((e) => e.name);
15015
+ return Nt.map((e) => e.name);
14691
15016
  },
14692
15017
  getUserSkill(e) {
14693
- let t = jt.find((t) => t.name === e);
15018
+ let t = Nt.find((t) => t.name === e);
14694
15019
  if (t) return {
14695
15020
  name: t.name,
14696
15021
  description: t.description,
@@ -14698,7 +15023,7 @@ function Xg(e, n) {
14698
15023
  };
14699
15024
  },
14700
15025
  afterRound() {
14701
- en(), nn.persistRuntime();
15026
+ tn(), rn.persistRuntime();
14702
15027
  },
14703
15028
  clearCodeReuse() {
14704
15029
  let e = w;
@@ -14709,7 +15034,7 @@ function Xg(e, n) {
14709
15034
  t ??= {}, t?.mission && Ye && D.setMission(t.mission);
14710
15035
  let n = e, r = (t.images ?? []).filter((e) => e && (e.dataUri || e.vfsRef || e.url));
14711
15036
  if (r.length > 4) throw Error(`[page-agent-sdk] 单轮最多 4 张图片(收到 ${r.length})`);
14712
- if (r.length && (await tn.stowImages(r), await tn.describeIfNeeded(r, n)), r.length && !m.vision && !r.every((e) => e.description)) {
15037
+ if (r.length && (await nn.stowImages(r), await nn.describeIfNeeded(r, n)), r.length && !m.vision && !r.every((e) => e.description)) {
14713
15038
  let e = "当前主模型不支持图片输入(modelCaps.vision=false)。请换多模态模型(gpt-4o/claude/qwen-vl)或 LLMConfig 声明 vision:true;或配置 images.describe 绑定识图转述(集成方识图子 agent / 自有 vision API)";
14714
15039
  throw J({
14715
15040
  type: "error",
@@ -14718,8 +15043,8 @@ function Xg(e, n) {
14718
15043
  code: "IMAGE_UNSUPPORTED_MODEL"
14719
15044
  }), Error(`[page-agent-sdk] ${e}`);
14720
15045
  }
14721
- w?.setProtectedRefs?.(Vg(C));
14722
- let i = H ? t.maxAutoRetries ?? 1 : 0, o = 0, s = !1, l = Vt(t.signal);
15046
+ w?.setProtectedRefs?.(e_(C));
15047
+ let i = H ? t.maxAutoRetries ?? 1 : 0, o = 0, s = !1, l = Ht(t.signal);
14723
15048
  if (t.signal) {
14724
15049
  let e = () => a.resolve("keep_external");
14725
15050
  t.signal.aborted ? e() : t.signal.addEventListener("abort", e, { once: !0 });
@@ -14730,14 +15055,14 @@ function Xg(e, n) {
14730
15055
  let e = t.quote && t.quote.text ? {
14731
15056
  text: Ni(t.quote.text),
14732
15057
  ...t.quote.source ? { source: t.quote.source } : {}
14733
- } : void 0, i = e ?? Yt.value ?? void 0;
15058
+ } : void 0, i = e ?? Xt.value ?? void 0;
14734
15059
  C.push({
14735
15060
  role: "user",
14736
15061
  content: n,
14737
15062
  timestamp: Date.now(),
14738
15063
  ...r.length ? { images: r } : {},
14739
15064
  ...i ? { quote: i } : {}
14740
- }), s = !0, !e && Yt.value && (Yt.value = null);
15065
+ }), s = !0, !e && Xt.value && (Xt.value = null);
14741
15066
  }
14742
15067
  try {
14743
15068
  let e = await X.agent.invoke(C, t.signal, l);
@@ -14799,8 +15124,8 @@ function Xg(e, n) {
14799
15124
  async batch(e, t, n) {
14800
15125
  if (await X.initDone, !e.length) return [];
14801
15126
  if (X.refCount <= 0) throw Error("page-agent-sdk: agent 已释放(unmount),拒绝排队中的 batch");
14802
- let r = [], i = Vt(n);
14803
- if (w?.setProtectedRefs?.(Vg(C)), n) {
15127
+ let r = [], i = Ht(n);
15128
+ if (w?.setProtectedRefs?.(e_(C)), n) {
14804
15129
  let e = () => a.resolve("keep_external");
14805
15130
  n.aborted ? e() : n.addEventListener("abort", e, { once: !0 });
14806
15131
  }
@@ -14891,14 +15216,14 @@ function Xg(e, n) {
14891
15216
  }
14892
15217
  return r;
14893
15218
  },
14894
- switchSession: (e) => nn.switchSession(e),
14895
- exportSession: (e) => nn.exportSession(e),
14896
- importSession: (e) => nn.importSession(e),
14897
- resetSession: () => nn.resetSession(),
15219
+ switchSession: (e) => rn.switchSession(e),
15220
+ exportSession: (e) => rn.exportSession(e),
15221
+ importSession: (e) => rn.importSession(e),
15222
+ resetSession: () => rn.resetSession(),
14898
15223
  stream: async (e, t, n) => {
14899
15224
  if (!X.agent) throw Error("page-agent-sdk: agent 尚未初始化完成,请先 await mount()");
14900
15225
  let r = [...e].reverse().find((e) => e.role === "user" && e.images?.length);
14901
- if (r?.images?.length && (await tn.stowImages(r.images), await tn.describeIfNeeded(r.images, r.content), !m.vision && !r.images.every((e) => e.description))) {
15226
+ if (r?.images?.length && (await nn.stowImages(r.images), await nn.describeIfNeeded(r.images, r.content), !m.vision && !r.images.every((e) => e.description))) {
14902
15227
  let e = "当前主模型不支持图片输入(modelCaps.vision=false)。请换多模态模型(gpt-4o/claude/qwen-vl)或 LLMConfig 声明 vision:true;或配置 images.describe 绑定识图转述";
14903
15228
  throw J({
14904
15229
  type: "error",
@@ -14907,7 +15232,7 @@ function Xg(e, n) {
14907
15232
  code: "IMAGE_UNSUPPORTED_MODEL"
14908
15233
  }), Error(`[page-agent-sdk] ${e}`);
14909
15234
  }
14910
- w?.setProtectedRefs?.(Vg(e));
15235
+ w?.setProtectedRefs?.(e_(e));
14911
15236
  let i = (e) => {
14912
15237
  t?.(De(e)), J(De(e)), e.type === "subagent" && (e.kind === "tool_call" || e.kind === "tool_result") && X.infoTick.value++;
14913
15238
  };
@@ -14915,30 +15240,30 @@ function Xg(e, n) {
14915
15240
  let e = () => a.resolve("keep_external");
14916
15241
  n.aborted ? e() : n.addEventListener("abort", e, { once: !0 });
14917
15242
  }
14918
- let { controller: o, untrack: s } = Kt(n);
15243
+ let { controller: o, untrack: s } = qt(n);
14919
15244
  return X.agent.stream(e, i, o.signal).finally(s);
14920
15245
  },
14921
15246
  release() {
14922
15247
  if (X.refCount--, X.refCount <= 0) {
14923
- qt(), Fe = !0, c && (w.flush?.(), c.flush(), c.dispose()), Ft && Ft.dispose();
15248
+ Yt(), Ie = !0, c && (w.flush?.(), c.flush(), c.dispose()), It && It.dispose();
14924
15249
  let e = X.mcpClosers.splice(0);
14925
- e.length && Promise.allSettled(e.map((e) => e())), Gg.delete(n);
15250
+ e.length && Promise.allSettled(e.map((e) => e())), i_.delete(n);
14926
15251
  }
14927
15252
  },
14928
15253
  resolveConflict: a.resolve,
14929
15254
  setTools(e) {
14930
- Me.length = 0, e.forEach((e) => {
14931
- Me.push(e), G.set(e.name, "user");
14932
- }), K = qe(), X.agent && X.agent.setTools(K), X.infoTick.value++;
15255
+ Ne.length = 0, e.forEach((e) => {
15256
+ Ne.push(e), G.set(e.name, "user");
15257
+ }), q = qe(), X.agent && X.agent.setTools(q), X.infoTick.value++;
14933
15258
  },
14934
15259
  addTool(e) {
14935
- K.some((t) => t.name === e.name) && console.warn(`[page-agent-sdk] 工具 "${e.name}" 已存在,新工具覆盖(后注册覆盖先注册)`);
14936
- for (let t = Me.length - 1; t >= 0; t--) Me[t].name === e.name && Me.splice(t, 1);
14937
- Me.push(e), G.set(e.name, "user"), K = qe(), X.agent && X.agent.setTools(K), X.infoTick.value++;
15260
+ q.some((t) => t.name === e.name) && console.warn(`[page-agent-sdk] 工具 "${e.name}" 已存在,新工具覆盖(后注册覆盖先注册)`);
15261
+ for (let t = Ne.length - 1; t >= 0; t--) Ne[t].name === e.name && Ne.splice(t, 1);
15262
+ Ne.push(e), G.set(e.name, "user"), q = qe(), X.agent && X.agent.setTools(q), X.infoTick.value++;
14938
15263
  },
14939
15264
  removeTool(e) {
14940
- let t = Me.findIndex((t) => t.name === e);
14941
- return t < 0 ? !1 : (Me.splice(t, 1), G.delete(e), K = qe(), X.agent && X.agent.setTools(K), X.infoTick.value++, !0);
15265
+ let t = Ne.findIndex((t) => t.name === e);
15266
+ return t < 0 ? !1 : (Ne.splice(t, 1), G.delete(e), q = qe(), X.agent && X.agent.setTools(q), X.infoTick.value++, !0);
14942
15267
  },
14943
15268
  setLlm(t) {
14944
15269
  let n;
@@ -14956,7 +15281,7 @@ function Xg(e, n) {
14956
15281
  maxOutputTokens: e.maxOutputTokens ?? r?.maxOutputTokens,
14957
15282
  vision: r?.vision ?? t.vision
14958
15283
  }), m.contextWindow < 2e5) throw Error(`[page-agent-sdk][setLlm] 新模型上下文窗口 ${m.contextWindow} 小于最小支持 ${p}(需 ≥200K 窗口模型)`);
14959
- X.agent && (X.agent.setLlm(n), X.agent.setModelCaps?.(m)), Rt?.setContextWindow?.(m.contextWindow), wt?.setContextWindow?.(m.contextWindow), X.infoTick.value++, e.debug && console.log("[page-agent-sdk][setLlm] 重解析 modelCaps + 回灌:", m);
15284
+ X.agent && (X.agent.setLlm(n), X.agent.setModelCaps?.(m)), zt?.setContextWindow?.(m.contextWindow), Tt?.setContextWindow?.(m.contextWindow), X.infoTick.value++, e.debug && console.log("[page-agent-sdk][setLlm] 重解析 modelCaps + 回灌:", m);
14960
15285
  },
14961
15286
  setMemory(e) {
14962
15287
  se.reset(e), typeof e == "function" && se.refresh(), X.infoTick.value++;
@@ -14965,29 +15290,29 @@ function Xg(e, n) {
14965
15290
  return se.refresh();
14966
15291
  },
14967
15292
  setSubagents(t) {
14968
- if (!yt) {
15293
+ if (!bt) {
14969
15294
  e.debug && console.warn("[page-agent-sdk][setSubagents] 未配 subagents:[] 或 capabilities.subagent 关闭,忽略");
14970
15295
  return;
14971
15296
  }
14972
- yt.set(t), X.infoTick.value++;
15297
+ bt.set(t), X.infoTick.value++;
14973
15298
  },
14974
15299
  addSubagent(t) {
14975
- if (!yt) {
15300
+ if (!bt) {
14976
15301
  e.debug && console.warn("[page-agent-sdk][addSubagent] 未配 subagents:[] 或 capabilities.subagent 关闭,忽略");
14977
15302
  return;
14978
15303
  }
14979
- yt.add(t), X.infoTick.value++;
15304
+ bt.add(t), X.infoTick.value++;
14980
15305
  },
14981
15306
  removeSubagent(t) {
14982
- if (!yt) return e.debug && console.warn("[page-agent-sdk][removeSubagent] 未配 subagents:[] 或 capabilities.subagent 关闭,忽略"), !1;
14983
- let n = yt.remove(t);
15307
+ if (!bt) return e.debug && console.warn("[page-agent-sdk][removeSubagent] 未配 subagents:[] 或 capabilities.subagent 关闭,忽略"), !1;
15308
+ let n = bt.remove(t);
14984
15309
  return n && X.infoTick.value++, n;
14985
15310
  },
14986
15311
  getActiveSubagents() {
14987
- return nt?.getActive() ?? [];
15312
+ return rt?.getActive() ?? [];
14988
15313
  },
14989
15314
  get subagentHistory() {
14990
- return nt?.getHistory() ?? [];
15315
+ return rt?.getHistory() ?? [];
14991
15316
  },
14992
15317
  getInfo() {
14993
15318
  return {
@@ -14995,13 +15320,13 @@ function Xg(e, n) {
14995
15320
  sessionId: X.sessionId,
14996
15321
  model: dp(S) ? S.model ?? S.modelName : S.model,
14997
15322
  systemPrompt: X.agent?.getEffectiveSystemPrompt?.() ?? _e + Zu(W(), e.schemaHint),
14998
- tools: (X.agent?.allTools ?? K).map((e) => ({
15323
+ tools: (X.agent?.allTools ?? q).map((e) => ({
14999
15324
  name: e.name,
15000
15325
  description: e.description,
15001
15326
  schema: e.schema,
15002
15327
  source: G.get(e.name) || "user"
15003
15328
  })),
15004
- skills: (At ? At.controller.get() : e.skills ?? []).map((e) => ({
15329
+ skills: (jt ? jt.controller.get() : e.skills ?? []).map((e) => ({
15005
15330
  name: e.name,
15006
15331
  description: e.description
15007
15332
  })),
@@ -15019,7 +15344,7 @@ function Xg(e, n) {
15019
15344
  staleReadsInvalidated: X.agent?.getStaleReadsInvalidated?.() ?? 0,
15020
15345
  llmRetries: X.agent?.getLlmRetries?.() ?? 0,
15021
15346
  llmCallFailures: X.agent?.getLlmCallFailures?.() ?? 0,
15022
- middleware: Y.map((e) => e.name),
15347
+ middleware: Bt.map((e) => e.name),
15023
15348
  todos: (X.agent?.getState?.()?.todos ?? []).map((e) => ({
15024
15349
  id: e.id,
15025
15350
  content: e.content,
@@ -15033,27 +15358,27 @@ function Xg(e, n) {
15033
15358
  mission: Ye ? D.getMission() : void 0,
15034
15359
  planConfirmation: te.lastPlanConfirmation,
15035
15360
  workingMemory: Xe ? j.getWorkingMemory() : void 0,
15036
- focus: ze ? A.getFocus() : void 0,
15037
- focuses: ze ? A.getFocuses() : [],
15038
- actions: Tg(e.actions ?? {}),
15361
+ focus: K ? A.getFocus() : void 0,
15362
+ focuses: K ? A.getFocuses() : [],
15363
+ actions: Rg(e.actions ?? {}),
15039
15364
  subagent: {
15040
- enabled: !!pt,
15365
+ enabled: !!mt,
15041
15366
  maxDepth: e.subagent?.maxDepth ?? 1,
15042
15367
  maxParallel: e.subagent?.maxParallel ?? 4,
15043
15368
  timeoutMs: e.subagent?.timeoutMs === void 0 ? 18e5 : e.subagent.timeoutMs > 0 ? e.subagent.timeoutMs : 0,
15044
15369
  allowedTools: e.subagent?.allowedTools ?? [],
15045
- subagents: (yt?.get() ?? []).map(bt),
15046
- active: nt?.getActive() ?? [],
15047
- history: nt?.getHistory() ?? [],
15048
- lockedComponents: ht?.locked() ?? {}
15370
+ subagents: (bt?.get() ?? []).map(xt),
15371
+ active: rt?.getActive() ?? [],
15372
+ history: rt?.getHistory() ?? [],
15373
+ lockedComponents: gt?.locked() ?? {}
15049
15374
  },
15050
15375
  verify: {
15051
- enabled: !!Ct,
15052
- maxAttempts: ot ? rt : 0,
15053
- adversarial: ot && !!e.verify?.adversarial
15376
+ enabled: !!wt,
15377
+ maxAttempts: st ? it : 0,
15378
+ adversarial: st && !!e.verify?.adversarial
15054
15379
  },
15055
15380
  context: (() => {
15056
- let e = wt?.getSnapshot();
15381
+ let e = Tt?.getSnapshot();
15057
15382
  if (e) {
15058
15383
  let t = X.agent?.getState?.()?.lastCompression;
15059
15384
  t && (e.compression = t);
@@ -15116,40 +15441,40 @@ function Xg(e, n) {
15116
15441
  D.setMission(t), X.infoTick.value++;
15117
15442
  },
15118
15443
  getFocus() {
15119
- return ze ? A.getFocus() : void 0;
15444
+ return K ? A.getFocus() : void 0;
15120
15445
  },
15121
15446
  getFocuses() {
15122
- return ze ? A.getFocuses() : [];
15447
+ return K ? A.getFocuses() : [];
15123
15448
  },
15124
15449
  setFocus(t) {
15125
- let n = Yg(t, "setFocus", ze, () => W()?.schema, e.debug);
15450
+ let n = c_(t, "setFocus", K, () => W()?.schema, e.debug);
15126
15451
  return n.ok ? (A.setFocus(oe(t)), e.debug && A.isInvokeActive() && console.info("[page-agent-sdk][focus] 在途流程进行中,聚焦将在下一次输入生效(当前流程不受影响)"), X.infoTick.value++, { ok: !0 }) : n;
15127
15452
  },
15128
15453
  addFocus(t) {
15129
- let n = Yg(t, "addFocus", ze, () => W()?.schema, e.debug);
15454
+ let n = c_(t, "addFocus", K, () => W()?.schema, e.debug);
15130
15455
  return n.ok ? A.getFocuses().length >= 8 ? (e.debug && console.warn("[page-agent-sdk][focus] addFocus 拒绝:焦点数已达上限 8(augmentPrompt 注入每焦点子树 schema,过多致 system prompt 超预算)"), {
15131
15456
  ok: !1,
15132
15457
  error: "焦点数上限 8(避免 system prompt 撑爆)"
15133
15458
  }) : (A.addFocus(oe(t)), e.debug && A.isInvokeActive() && console.info("[page-agent-sdk][focus] 在途流程进行中,聚焦将在下一次输入生效(当前流程不受影响)"), X.infoTick.value++, { ok: !0 }) : n;
15134
15459
  },
15135
15460
  removeFocus(e) {
15136
- ze && (A.removeFocus(e), X.infoTick.value++);
15461
+ K && (A.removeFocus(e), X.infoTick.value++);
15137
15462
  },
15138
15463
  clearFocus() {
15139
- ze && (A.clearFocus(), X.infoTick.value++);
15464
+ K && (A.clearFocus(), X.infoTick.value++);
15140
15465
  },
15141
15466
  setQuote(e, t) {
15142
15467
  let n = Ni(e ?? "");
15143
- Yt.value = n ? {
15468
+ Xt.value = n ? {
15144
15469
  text: n,
15145
15470
  ...t ? { source: t } : {}
15146
15471
  } : null;
15147
15472
  },
15148
15473
  clearQuote() {
15149
- Yt.value = null;
15474
+ Xt.value = null;
15150
15475
  }
15151
15476
  };
15152
- async function Xt() {
15477
+ async function Zt() {
15153
15478
  if (!c) return;
15154
15479
  let t = async (e) => {
15155
15480
  try {
@@ -15203,25 +15528,25 @@ function Xg(e, n) {
15203
15528
  }), e.debug && console.log("[page-agent-sdk][restore] 恢复会话", X.sessionId, `${n.messages?.length ?? 0} msgs`)) : e.debug && console.log("[page-agent-sdk][restore] 会话 meta 存在但快照为空", X.sessionId);
15204
15529
  } else X.sessionId = await c.createSession(n, a.title), e.debug && console.log("[page-agent-sdk][restore] 新建会话(无历史)", X.sessionId);
15205
15530
  } else X.sessionId = await c.createSession(n, a.title);
15206
- e.memory && nn.persistSave({ memory: se.get() || (typeof e.memory == "string" ? e.memory : "") }), nn.refreshSessions();
15531
+ e.memory && rn.persistSave({ memory: se.get() || (typeof e.memory == "string" ? e.memory : "") }), rn.refreshSessions();
15207
15532
  }
15208
- async function Zt() {
15209
- await Lt();
15533
+ async function Qt() {
15534
+ await Rt();
15210
15535
  }
15211
- function Qt(e) {
15536
+ function $t(e) {
15212
15537
  let t = {};
15213
- for (let n of Vg(e)) {
15538
+ for (let n of e_(e)) {
15214
15539
  let e = w.files[n];
15215
15540
  e && (t[n] = e.content);
15216
15541
  }
15217
15542
  return t;
15218
15543
  }
15219
- function $t() {
15220
- let e = Hg(w.files, Vg(C));
15544
+ function en() {
15545
+ let e = t_(w.files, e_(C));
15221
15546
  for (let t of e) delete w.files[t];
15222
15547
  }
15223
- function en() {
15224
- let e = nl(C, Bt);
15548
+ function tn() {
15549
+ let e = nl(C, Vt);
15225
15550
  if (!e.trimmed) return;
15226
15551
  let { older: t, summary: n } = e;
15227
15552
  if (J({
@@ -15232,33 +15557,33 @@ function Xg(e, n) {
15232
15557
  assistant: e.assistantMsgs.map((e) => e.content),
15233
15558
  steps: e.assistantMsgs.flatMap((e) => e.steps ?? [])
15234
15559
  })),
15235
- vfsResults: Qt(t.flatMap((e) => [e.userMsg, ...e.assistantMsgs])),
15560
+ vfsResults: $t(t.flatMap((e) => [e.userMsg, ...e.assistantMsgs])),
15236
15561
  summary: n.content,
15237
15562
  reason: "max_memory_rounds"
15238
- }), C.splice(e.deleteFrom, e.deleteCount, n), $t(), y && u) {
15563
+ }), C.splice(e.deleteFrom, e.deleteCount, n), en(), y && u) {
15239
15564
  let n = e.summary, { prevSeg: r } = e;
15240
15565
  (async () => {
15241
15566
  try {
15242
15567
  let e = await u(ll(t, x)), i = C.indexOf(n);
15243
15568
  if (i < 0) return;
15244
- C[i].content = tl(t, r, e), nn.persistRuntime();
15569
+ C[i].content = tl(t, r, e), rn.persistRuntime();
15245
15570
  } catch {}
15246
15571
  })();
15247
15572
  }
15248
15573
  }
15249
- let tn = ki({
15574
+ let nn = ki({
15250
15575
  getConfig: () => e.images,
15251
15576
  getVision: () => m.vision === !0,
15252
15577
  emit: J,
15253
15578
  getVfsStore: () => X.vfsStore,
15254
- noteFailure: (e, t) => nn.notePersistFailure(e, t)
15255
- }), nn = um({
15579
+ noteFailure: (e, t) => rn.notePersistFailure(e, t)
15580
+ }), rn = um({
15256
15581
  agentId: n,
15257
15582
  options: e,
15258
15583
  emit: J,
15259
15584
  getStore: () => c,
15260
15585
  core: X,
15261
- sessionsRef: Ht,
15586
+ sessionsRef: Ut,
15262
15587
  sessionVars: te,
15263
15588
  messages: C,
15264
15589
  getUsage: () => r,
@@ -15268,24 +15593,24 @@ function Xg(e, n) {
15268
15593
  missionMw: D,
15269
15594
  workingMemoryMw: j,
15270
15595
  focusMw: A,
15271
- summarizationMw: Rt,
15596
+ summarizationMw: zt,
15272
15597
  resumeNoticeMw: ee,
15273
15598
  useMission: Ye,
15274
15599
  useWorkingMemory: Xe,
15275
- useFocus: ze,
15600
+ useFocus: K,
15276
15601
  useAutomation: H
15277
15602
  },
15278
15603
  vfsStore: w,
15279
15604
  checkpointMgr: B,
15280
15605
  conflictResolve: (e) => a.resolve(e),
15281
- abortAllActive: qt,
15606
+ abortAllActive: Yt,
15282
15607
  titleLlmInvoke: d
15283
15608
  });
15284
15609
  return X.initDone = (async () => {
15285
- await Xt(), await Zt(), e.mcp?.length && Hu({
15610
+ await Zt(), await Qt(), e.mcp?.length && Hu({
15286
15611
  servers: e.mcp,
15287
15612
  emit: J,
15288
- isReleased: () => Fe,
15613
+ isReleased: () => Ie,
15289
15614
  core: {
15290
15615
  mcpClosers: X.mcpClosers,
15291
15616
  mcpServers: X.mcpServers,
@@ -15294,15 +15619,15 @@ function Xg(e, n) {
15294
15619
  },
15295
15620
  reservedNames: () => {
15296
15621
  let e = /* @__PURE__ */ new Set();
15297
- for (let t of K) {
15622
+ for (let t of q) {
15298
15623
  let n = G.get(t.name);
15299
15624
  n && !n.startsWith("mcp:") && e.add(t.name);
15300
15625
  }
15301
15626
  return e;
15302
15627
  },
15303
- pushTool: (e, t) => (G.set(e.name, `mcp:${t}`), Pe.push(e), !0),
15628
+ pushTool: (e, t) => (G.set(e.name, `mcp:${t}`), Fe.push(e), !0),
15304
15629
  rebind: () => {
15305
- K = qe(), X.agent && X.agent.setTools(K), X.infoTick.value++;
15630
+ q = qe(), X.agent && X.agent.setTools(q), X.infoTick.value++;
15306
15631
  },
15307
15632
  debug: e.debug
15308
15633
  });
@@ -15310,10 +15635,10 @@ function Xg(e, n) {
15310
15635
  pp(t, { emit: J }), X.agent = ps({
15311
15636
  llm: t,
15312
15637
  systemPrompt: _e,
15313
- tools: K,
15314
- middleware: Y,
15638
+ tools: q,
15639
+ middleware: Bt,
15315
15640
  maxToolRounds: e.maxToolRounds,
15316
- hasSubagent: tt,
15641
+ hasSubagent: nt,
15317
15642
  maxRetries: e.maxRetries,
15318
15643
  stallMs: e.streamStallMs ?? 9e4,
15319
15644
  streamMaxMs: e.streamMaxDurationMs ?? 18e5,
@@ -15323,23 +15648,23 @@ function Xg(e, n) {
15323
15648
  maxOutputTokens: m.maxOutputTokens,
15324
15649
  vision: m.vision,
15325
15650
  imageContentFormat: ke,
15326
- maxVerifyAttempts: ot ? rt : 0,
15651
+ maxVerifyAttempts: st ? it : 0,
15327
15652
  roundTokenBudget: e.roundTokenBudget ?? 0,
15328
15653
  staleReadInvalidation: e.staleReadInvalidation,
15329
15654
  onLlmChange: (e) => {
15330
15655
  S = e;
15331
15656
  },
15332
15657
  debug: e.debug
15333
- }), M.current = X.agent, vt && vt.setReconfigureHook(() => {
15658
+ }), M.current = X.agent, yt && yt.setReconfigureHook(() => {
15334
15659
  X.agent && X.agent.setTools(qe());
15335
15660
  });
15336
15661
  })(), X;
15337
15662
  }
15338
- function Zg(e, t) {
15663
+ function u_(e, t) {
15339
15664
  let n = e.id ?? wp();
15340
15665
  e.id || console.warn(`[page-agent-sdk] 未传 options.id,已生成随机 id "${n}"。刷新后持久化数据无法恢复,请传稳定 id。`);
15341
- let r = e.streaming ?? !0, i = e.ui ?? "default", a, o = e.shareContext ? Gg.get(n) : void 0;
15342
- o ? a = o : (a = Xg(e, n), e.shareContext && Gg.set(n, a)), a.refCount++;
15666
+ let r = e.streaming ?? !0, i = e.ui ?? "default", a, o = e.shareContext ? i_.get(n) : void 0;
15667
+ o ? a = o : (a = l_(e, n), e.shareContext && i_.set(n, a)), a.refCount++;
15343
15668
  let s = null, c = $p(e), l = null, u = null;
15344
15669
  async function d(n) {
15345
15670
  if (await a.initDone, s) {
@@ -15571,7 +15896,7 @@ function Zg(e, t) {
15571
15896
  }
15572
15897
  //#endregion
15573
15898
  //#region src/core/sdk/ragSubagent.ts
15574
- function Qg(e, t, n, r, i) {
15899
+ function d_(e, t, n, r, i) {
15575
15900
  let a = [];
15576
15901
  e && a.push("vfs_grep + vfs_read(搜预注入文档)"), t && a.push(`${r}(语义检索)`), n && a.push(`${i}(按 source 加载)`), a.push("fetch_document(公网 URL)");
15577
15902
  let o = [];
@@ -15586,7 +15911,7 @@ function Qg(e, t, n, r, i) {
15586
15911
 
15587
15912
  你是只读检索角色,不要尝试修改任何数据。不要尝试上面未列出的工具。`;
15588
15913
  }
15589
- function $g(e, t, n, r, i) {
15914
+ function f_(e, t, n, r, i) {
15590
15915
  let a = [], o = [];
15591
15916
  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)
15592
15917
 
@@ -15603,12 +15928,12 @@ ${a.join("\n")}
15603
15928
  ## 何时用何源
15604
15929
  ${o.join("\n")}`;
15605
15930
  }
15606
- var e_ = {
15931
+ var p_ = {
15607
15932
  name: "rag-search",
15608
15933
  description: "多源知识检索策略:vfs 预注入文档 → 语义检索 → 指定文档加载 → 公网;综合结构化结论 + 溯源",
15609
- getContent: () => $g(!0, !0, !0, "search_docs", "load_doc")
15934
+ getContent: () => f_(!0, !0, !0, "search_docs", "load_doc")
15610
15935
  };
15611
- function t_(e, n, r) {
15936
+ function m_(e, n, r) {
15612
15937
  let i = s(async ({ query: e, topK: t }) => {
15613
15938
  try {
15614
15939
  let i = await n(e, { topK: t ?? r });
@@ -15626,7 +15951,7 @@ function t_(e, n, r) {
15626
15951
  });
15627
15952
  return qi([i]), i;
15628
15953
  }
15629
- function n_(e, n) {
15954
+ function h_(e, n) {
15630
15955
  let r = s(async ({ source: e }) => {
15631
15956
  try {
15632
15957
  let t = await n(e), r = Array.isArray(t) ? t : [t];
@@ -15641,19 +15966,19 @@ function n_(e, n) {
15641
15966
  });
15642
15967
  return qi([r]), r;
15643
15968
  }
15644
- function r_(e) {
15969
+ function g_(e) {
15645
15970
  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;
15646
15971
  if (!t && !n && r === !1) throw Error("[page-agent-sdk][createRagSubagent] 至少配一种知识源:retriever / loader / useVfs(true)");
15647
15972
  let p = [];
15648
- t && p.push(t_(s, t, o)), n && p.push(n_(c, n)), f && p.push(...f);
15973
+ t && p.push(m_(s, t, o)), n && p.push(h_(c, n)), f && p.push(...f);
15649
15974
  let m = r ? [
15650
15975
  "vfs_grep",
15651
15976
  "vfs_read",
15652
15977
  "vfs_json_read"
15653
- ] : void 0, h = Qg(r, !!t, !!n, s, c), g = {
15978
+ ] : void 0, h = d_(r, !!t, !!n, s, c), g = {
15654
15979
  name: "rag-search",
15655
- description: e_.description,
15656
- getContent: () => $g(r, !!t, !!n, s, c)
15980
+ description: p_.description,
15981
+ getContent: () => f_(r, !!t, !!n, s, c)
15657
15982
  };
15658
15983
  return {
15659
15984
  id: i,
@@ -15668,7 +15993,7 @@ function r_(e) {
15668
15993
  }
15669
15994
  //#endregion
15670
15995
  //#region src/core/sdk/evalToolkit.ts
15671
- function i_(e = {}) {
15996
+ function __(e = {}) {
15672
15997
  let t = e.quietMs ?? 9e4, n = e.confirmSamples ?? 3, r = e.baselineMessageCount ?? 0, i = 0;
15673
15998
  return {
15674
15999
  push(e) {
@@ -15679,12 +16004,12 @@ function i_(e = {}) {
15679
16004
  }
15680
16005
  };
15681
16006
  }
15682
- var a_ = /* @__PURE__ */ new Set(["elapsedSec"]);
15683
- function o_(e, t, n = {}) {
16007
+ var v_ = /* @__PURE__ */ new Set(["elapsedSec"]);
16008
+ function y_(e, t, n = {}) {
15684
16009
  let r = n.tokenAbs ?? 2e3, i = n.tokenPct ?? 15, a = n.toolCountAbs ?? 3, o = [], s = 0, c = 0, l = 0, u = /* @__PURE__ */ new Set([...Object.keys(e ?? {}), ...Object.keys(t ?? {})]);
15685
16010
  for (let n of u) {
15686
16011
  let u = Number(e?.[n] ?? 0), d = Number(t?.[n] ?? 0), f = u - d, p = d > 0 ? Math.round(f / d * 100) : 0, m = "";
15687
- a_.has(n) || (n === "toolCount" ? Math.abs(f) > a : Math.abs(f) > r && Math.abs(p) >= i) && (m = f > 0 ? "up" : "down", m === "up" ? (s++, c++) : l++), o.push({
16012
+ v_.has(n) || (n === "toolCount" ? Math.abs(f) > a : Math.abs(f) > r && Math.abs(p) >= i) && (m = f > 0 ? "up" : "down", m === "up" ? (s++, c++) : l++), o.push({
15688
16013
  key: n,
15689
16014
  prev: d,
15690
16015
  cur: u,
@@ -15699,7 +16024,7 @@ function o_(e, t, n = {}) {
15699
16024
  fields: o
15700
16025
  };
15701
16026
  }
15702
- function s_(e) {
16027
+ function b_(e) {
15703
16028
  let { sdk: t } = e, n = () => {
15704
16029
  let e = t.debugLogs.value ?? [], n = e.length ? e[e.length - 1].timestamp : 0;
15705
16030
  return {
@@ -15712,7 +16037,7 @@ function s_(e) {
15712
16037
  };
15713
16038
  return {
15714
16039
  async waitForIdle(e = {}) {
15715
- let { timeoutMs: r = 6e5, sampleMs: i = 2500, onSample: a, ...o } = e, s = i_(o), c = Date.now();
16040
+ let { timeoutMs: r = 6e5, sampleMs: i = 2500, onSample: a, ...o } = e, s = __(o), c = Date.now();
15716
16041
  for (;;) {
15717
16042
  let e = n(), o = s.push(e);
15718
16043
  if (a?.(e), o === "done") return e;
@@ -15742,7 +16067,7 @@ function s_(e) {
15742
16067
  }
15743
16068
  //#endregion
15744
16069
  //#region src/core/utils/clipboard.ts
15745
- async function c_(e) {
16070
+ async function x_(e) {
15746
16071
  try {
15747
16072
  let t = globalThis.navigator?.clipboard;
15748
16073
  if (t && typeof t.writeText == "function") return await t.writeText(e), !0;
@@ -15760,8 +16085,8 @@ async function c_(e) {
15760
16085
  }
15761
16086
  //#endregion
15762
16087
  //#region src/core/composables/useChat.ts
15763
- var l_ = 4e3;
15764
- function u_(e = {}) {
16088
+ var S_ = 4e3;
16089
+ function C_(e = {}) {
15765
16090
  let { fetchResponse: t, fetchStream: n, onPersist: r, onClear: i, onQueuedCleared: a, onBeforeRegenerate: o } = e, s = /* @__PURE__ */ Mt({
15766
16091
  messages: e.messages ?? [],
15767
16092
  loading: !1,
@@ -15842,7 +16167,7 @@ function u_(e = {}) {
15842
16167
  let t = e.delta || "";
15843
16168
  n.subReasonFull = (n.subReasonFull || "") + t;
15844
16169
  let r = (n.subReason || "") + t;
15845
- n.subReason = r.length > l_ ? r.slice(-4e3) : r;
16170
+ n.subReason = r.length > S_ ? r.slice(-4e3) : r;
15846
16171
  break;
15847
16172
  }
15848
16173
  n.children ||= [];
@@ -15973,7 +16298,7 @@ function u_(e = {}) {
15973
16298
  }
15974
16299
  //#endregion
15975
16300
  //#region src/core/components/icons.ts
15976
- var d_ = {
16301
+ var w_ = {
15977
16302
  header: "🤖",
15978
16303
  subagent: "🤖",
15979
16304
  subagentProgress: "🧬",
@@ -15984,10 +16309,10 @@ var d_ = {
15984
16309
  recommend: "💡",
15985
16310
  conflict: "⚠️"
15986
16311
  };
15987
- function f_(e) {
15988
- let t = { ...d_ };
16312
+ function T_(e) {
16313
+ let t = { ...w_ };
15989
16314
  if (!e) return t;
15990
- let n = Object.keys(d_);
16315
+ let n = Object.keys(w_);
15991
16316
  for (let r of n) {
15992
16317
  let n = e[r];
15993
16318
  typeof n == "string" && (t[r] = n);
@@ -15996,7 +16321,7 @@ function f_(e) {
15996
16321
  }
15997
16322
  //#endregion
15998
16323
  //#region src/core/components/messages.ts
15999
- var p_ = {
16324
+ var E_ = {
16000
16325
  defaultTitle: "AI 助手",
16001
16326
  inputPlaceholder: "输入消息,Enter 发送...",
16002
16327
  newSession: "新建会话",
@@ -16228,8 +16553,8 @@ var p_ = {
16228
16553
  codeDemoText: "这是一段示例文字,用于展示 CSS 效果。",
16229
16554
  codeDemoButton: "按钮",
16230
16555
  codeDemoInput: "输入框"
16231
- }, m_ = {
16232
- "zh-CN": p_,
16556
+ }, D_ = {
16557
+ "zh-CN": E_,
16233
16558
  "en-US": {
16234
16559
  defaultTitle: "AI Assistant",
16235
16560
  inputPlaceholder: "Type a message, Enter to send...",
@@ -16464,10 +16789,10 @@ var p_ = {
16464
16789
  codeDemoInput: "Input"
16465
16790
  }
16466
16791
  };
16467
- function h_(e = "zh-CN", t) {
16792
+ function O_(e = "zh-CN", t) {
16468
16793
  let n = {
16469
- ...p_,
16470
- ...m_[e]
16794
+ ...E_,
16795
+ ...D_[e]
16471
16796
  };
16472
16797
  if (!t) return n;
16473
16798
  let r = { ...n };
@@ -16479,9 +16804,9 @@ function h_(e = "zh-CN", t) {
16479
16804
  }
16480
16805
  //#endregion
16481
16806
  //#region src/core/composables/chatContext.ts
16482
- var g_ = Symbol("chatContext");
16483
- function __(e = {}) {
16484
- let t = u_({
16807
+ var k_ = Symbol("chatContext");
16808
+ function A_(e = {}) {
16809
+ let t = C_({
16485
16810
  fetchResponse: e.fetchResponse,
16486
16811
  fetchStream: e.fetchStream,
16487
16812
  messages: e.messages,
@@ -16503,7 +16828,7 @@ function __(e = {}) {
16503
16828
  }, h = /* @__PURE__ */ Wt({}), g = (e) => h.value[e] === !0, _ = (e) => {
16504
16829
  h.value[e] = !g(e);
16505
16830
  }, v = /* @__PURE__ */ Wt(!1), y = (e) => {
16506
- c_(e).then((e) => {
16831
+ x_(e).then((e) => {
16507
16832
  e && (v.value = !0, setTimeout(() => {
16508
16833
  v.value = !1;
16509
16834
  }, 1500));
@@ -16569,7 +16894,7 @@ function __(e = {}) {
16569
16894
  e.onClearFocus?.();
16570
16895
  }, P = (t) => {
16571
16896
  e.onFocusChipClick?.(t);
16572
- }, F = f_(e.icons), le = e.locale ?? "zh-CN", I = h_(le, e.dialogMessages);
16897
+ }, F = T_(e.icons), le = e.locale ?? "zh-CN", I = O_(le, e.dialogMessages);
16573
16898
  return {
16574
16899
  chat: t,
16575
16900
  inputText: o,
@@ -16614,15 +16939,15 @@ function __(e = {}) {
16614
16939
  toolStepView: e.toolStepView
16615
16940
  };
16616
16941
  }
16617
- function v_() {
16618
- let e = Zn(g_);
16942
+ function j_() {
16943
+ let e = Zn(k_);
16619
16944
  if (!e) throw Error("useChatContext 必须在 provide(chatContextKey) 的组件子树内调用");
16620
16945
  return e;
16621
16946
  }
16622
16947
  //#endregion
16623
16948
  //#region src/core/index.headless.ts
16624
- function y_(e) {
16625
- return Zg(e);
16949
+ function M_(e) {
16950
+ return u_(e);
16626
16951
  }
16627
16952
  //#endregion
16628
- export { em as CAPABILITIES, rm as CONTEXT_PRESETS, cp as CompressDecisionSchema, $h as DEFAULT_COMPUTED_STYLES, fl as DEFAULT_PROMPT_SOFT_CAP, Uu as DEFAULT_SYSTEM_PROMPT, Wu as DEFAULT_SYSTEM_PROMPT_EN, Xd as HTML_VOID_TAGS, nu as HUMAN_CONFIRM_TOOL_NAME, hi as ImageInputError, g as LOW_CAPS_HINT_BASELINE, p as MIN_CONTEXT_WINDOW, ua as MODEL_UNAVAILABLE_GUIDANCE, dl as SOFT_CAP_MIN_WINDOW, rl as STOP_WORDS, ic as UNSAFE_KEYS, Tg as actionsToInspectInfo, wg as actionsToTools, di as agentError, Fu as analyzeContext, _c as applyPatchToClone, bc as applyPatchToLive, Rd as applyPatchesToBind, Cs as arrayMinLength, ui as asAgentError, Hf as buildCollectorJs, ig as buildCssPath, Zu as buildDataPrompt, Pf as buildDiagnosticsReport, Qf as buildHtmlFragmentSkill, Uf as buildSandboxSrcdoc, Qu as buildSystemPrompt, Bi as captureSelectionQuote, g_ as chatContextKey, Ld as commitSetToBind, Yf as composeStructureThenRender, Ei as compressImage, Vu as connectMcp, k as constructLlmFromConfig, E as constructOpenLlmSync, c_ as copyText, ps as createAgent, tu as createApprovalMiddleware, __ as createChatContext, y_ as createChatSdk, pu as createCheckpointManager, mu as createCheckpointMiddleware, Cp as createConflictManager, Iu as createContextInspectorMiddleware, np as createCraftNoteCheck, Yd as createDataOps, s_ as createEvalHarness, ep as createHtmlFormatCheck, Jf as createHtmlRenderCheck, ip as createHtmlSubagent, au as createHumanConfirmMiddleware, iu as createHumanConfirmTool, i_ as createIdleDetector, Gp as createMemoryBackend, Jl as createMemoryMiddleware, u as createProxyLlm, r_ as createRagSubagent, ga as createSandboxRunner, nm as createSdkEvents, Ug as createSerialRunner, Yp as createSessionStore, Xp as createSessionStoreWithBackend, zg as createSkillStore, zl as createSubagentMiddleware, yl as createSubagentTracker, Hl as createSubagentsMiddleware, jg as createUsageHintsMiddleware, gu as createVerifyMiddleware, nd as createVfs, qp as createWebStorageBackend, Su as createWriteBackCheck, da as decorateModelUnavailable, lc as deepClone, Og as defineDataToolset, Nc as defineSkill, ap as defineTool, cc as deleteByPath, lp as deriveTitle, Ls as describeSchemaNode, Xo as detectGarbledToolCall, mo as detectTransitionalReply, wc as diffObjects, o_ as diffReport, lg as domInfoTool, mg as domInspectSkill, cg as domSearchTool, Wh as domToStructure, Qh as domTools, Dg as domToolsStatic, ws as elementSchemaCandidates, ng as ensureDomListenerRecorder, al as estimateMessageTokens, cl as estimateRoundTokens, y as estimateTokens, te as extractReasoningDelta, Xs as extractSchemaHint, Lu as extractText, ee as extractTextDelta, ne as extractUsage, Bh as fetchDocTools, Eg as fetchTools, Cc as findStrippedKeys, Rs as formatConstraints, oi as formatZodIssues, Q as getByPath, Gh as getDomTool, sg as getElementInfo, _g as getEnvSummary, rg as getRecordedListeners, Kf as getSandboxLifecycle, _s as getSchemaAtPath, ms as getSchemaTopKeys, hc as hashValue, $f as htmlFragmentSkill, Gs as htmlOrchestratorPrompt, ll as indexSummarize, bg as inspectEnvTool, xg as inspectTools, dp as isChatModel, ca as isContextLengthError, la as isModelUnavailableError, hs as isPathAllowed, Lp as isQuotaError, ac as isUnsafePath, Ea as jpEval, ci as jsonParseError, pc as limitDepth, _ as lowCapsHint, Mf as maskUrlCredentials, dc as maybeParseValue, Ef as measureWriteScale, yc as moveByPath, T as normalizeBaseUrl, Vf as normalizeRenderResult, ie as normalizeUsage, x as offloadPassThroughChars, b as offloadThresholdChars, Ws as presets, js as projectBySchema, As as projectBySchemaDeep, fc as projectFields, ul as recallRounds, qf as renderInSandbox, zs as renderSchemaHint, Bs as renderSchemaOverview, Us as renderSchemaShallow, tm as resolveCapabilities, am as resolveContextOptions, $p as resolveDialogConfig, Sp as resolveLlm, v as resolveModelCaps, ml as resolvePromptSoftCap, bs as resolveSchemaPath, Qp as resolveStorage, Sc as restoreInPlace, xc as restoreLive, li as routeError, Aa as runSandboxedScript, oc as safeMerge, gg as safeSerialize, $ as safeStringify, Zo as sanitizeGarbledContent, Ss as schemaHasRefinement, ag as searchDom, Oa as searchJson, kg as selectBuiltinTools, sc as setByPath, hl as shouldTriggerCompression, Ff as stringifyDiagnosticsReport, w as stripStainlessFetch, Ks as systemPromptHelpers, h as tableMaxOutputTokens, il as tokenize, Z as toolError, gs as unwrapSchema, u_ as useChat, v_ as useChatContext, xs as validateAtPath, Qd as validateHtmlFormat, Fd as validateRootValueLocally, Id as validateWriteLocally, gc as watchFieldsHash, e as z, si as zodError };
16953
+ export { em as CAPABILITIES, rm as CONTEXT_PRESETS, cp as CompressDecisionSchema, fg as DEFAULT_COMPUTED_STYLES, fl as DEFAULT_PROMPT_SOFT_CAP, Uu as DEFAULT_SYSTEM_PROMPT, Wu as DEFAULT_SYSTEM_PROMPT_EN, Xd as HTML_VOID_TAGS, nu as HUMAN_CONFIRM_TOOL_NAME, hi as ImageInputError, g as LOW_CAPS_HINT_BASELINE, p as MIN_CONTEXT_WINDOW, ua as MODEL_UNAVAILABLE_GUIDANCE, dl as SOFT_CAP_MIN_WINDOW, rl as STOP_WORDS, ic as UNSAFE_KEYS, Rg as actionsToInspectInfo, Lg as actionsToTools, di as agentError, Fu as analyzeContext, _c as applyPatchToClone, bc as applyPatchToLive, Rd as applyPatchesToBind, Cs as arrayMinLength, ui as asAgentError, Hf as buildCollectorJs, _g as buildCssPath, Zu as buildDataPrompt, Pf as buildDiagnosticsReport, Qf as buildHtmlFragmentSkill, Uf as buildSandboxSrcdoc, Qu as buildSystemPrompt, Bi as captureSelectionQuote, k_ as chatContextKey, Ld as commitSetToBind, Yf as composeStructureThenRender, Ei as compressImage, Vu as connectMcp, k as constructLlmFromConfig, E as constructOpenLlmSync, x_ as copyText, ps as createAgent, tu as createApprovalMiddleware, A_ as createChatContext, M_ as createChatSdk, pu as createCheckpointManager, mu as createCheckpointMiddleware, Cp as createConflictManager, Iu as createContextInspectorMiddleware, np as createCraftNoteCheck, Yd as createDataOps, b_ as createEvalHarness, ep as createHtmlFormatCheck, Jf as createHtmlRenderCheck, ip as createHtmlSubagent, au as createHumanConfirmMiddleware, iu as createHumanConfirmTool, __ as createIdleDetector, Gp as createMemoryBackend, Jl as createMemoryMiddleware, u as createProxyLlm, g_ as createRagSubagent, ga as createSandboxRunner, nm as createSdkEvents, n_ as createSerialRunner, Yp as createSessionStore, Xp as createSessionStoreWithBackend, Qg as createSkillStore, zl as createSubagentMiddleware, yl as createSubagentTracker, Hl as createSubagentsMiddleware, Wg as createUsageHintsMiddleware, gu as createVerifyMiddleware, nd as createVfs, qp as createWebStorageBackend, Su as createWriteBackCheck, da as decorateModelUnavailable, lc as deepClone, Vg as defineDataToolset, Nc as defineSkill, ap as defineTool, cc as deleteByPath, lp as deriveTitle, Ls as describeSchemaNode, Xo as detectGarbledToolCall, mo as detectTransitionalReply, wc as diffObjects, y_ as diffReport, Sg as domInfoTool, Dg as domInspectSkill, xg as domSearchTool, rg as domToStructure, dg as domTools, Bg as domToolsStatic, ws as elementSchemaCandidates, hg as ensureDomListenerRecorder, al as estimateMessageTokens, cl as estimateRoundTokens, y as estimateTokens, te as extractReasoningDelta, Xs as extractSchemaHint, Lu as extractText, ee as extractTextDelta, ne as extractUsage, $h as fetchDocTools, zg as fetchTools, Cc as findStrippedKeys, Rs as formatConstraints, oi as formatZodIssues, Q as getByPath, ig as getDomTool, bg as getElementInfo, Ag as getEnvSummary, gg as getRecordedListeners, Kf as getSandboxLifecycle, _s as getSchemaAtPath, ms as getSchemaTopKeys, hc as hashValue, $f as htmlFragmentSkill, Gs as htmlOrchestratorPrompt, ll as indexSummarize, Ng as inspectEnvTool, Pg as inspectTools, dp as isChatModel, ca as isContextLengthError, la as isModelUnavailableError, hs as isPathAllowed, Lp as isQuotaError, ac as isUnsafePath, Ea as jpEval, ci as jsonParseError, pc as limitDepth, _ as lowCapsHint, Mf as maskUrlCredentials, dc as maybeParseValue, Ef as measureWriteScale, yc as moveByPath, T as normalizeBaseUrl, Vf as normalizeRenderResult, ie as normalizeUsage, x as offloadPassThroughChars, b as offloadThresholdChars, Ws as presets, js as projectBySchema, As as projectBySchemaDeep, fc as projectFields, ul as recallRounds, qf as renderInSandbox, zs as renderSchemaHint, Bs as renderSchemaOverview, Us as renderSchemaShallow, tm as resolveCapabilities, am as resolveContextOptions, $p as resolveDialogConfig, Sp as resolveLlm, v as resolveModelCaps, ml as resolvePromptSoftCap, bs as resolveSchemaPath, Qp as resolveStorage, Sc as restoreInPlace, xc as restoreLive, li as routeError, Aa as runSandboxedScript, oc as safeMerge, kg as safeSerialize, $ as safeStringify, Zo as sanitizeGarbledContent, Ss as schemaHasRefinement, vg as searchDom, Oa as searchJson, Hg as selectBuiltinTools, sc as setByPath, hl as shouldTriggerCompression, Ff as stringifyDiagnosticsReport, w as stripStainlessFetch, Ks as systemPromptHelpers, h as tableMaxOutputTokens, il as tokenize, Z as toolError, gs as unwrapSchema, C_ as useChat, j_ as useChatContext, xs as validateAtPath, Qd as validateHtmlFormat, Fd as validateRootValueLocally, Id as validateWriteLocally, gc as watchFieldsHash, e as z, si as zodError };