@eddyskywalker/dsh-chatgpt-subscription 0.48.0 → 0.48.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/lib/client.js.map +1 -1
- package/lib/index.js +450 -64
- package/lib/types/compat.d.ts +1 -1
- package/lib/types/host/compaction-policy-guard.d.ts.map +1 -1
- package/lib/types/host/plan-mode-cache-guard.d.ts.map +1 -1
- package/lib/types/host/ptc-sdk-cache-guard.d.ts.map +1 -1
- package/lib/types/host/tool-result-pruner-guard.d.ts.map +1 -1
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -145,7 +145,7 @@ const ROUTE_PREFIX$5 = "/api/dsh-chatgpt-subscription";
|
|
|
145
145
|
* `test/responses-client.test.ts` asserts the two agree, so a release that
|
|
146
146
|
* forgets this constant fails the suite instead of shipping quietly.
|
|
147
147
|
*/
|
|
148
|
-
const PLUGIN_VERSION = "0.48.
|
|
148
|
+
const PLUGIN_VERSION = "0.48.1";
|
|
149
149
|
const CODEX_CHATGPT_PROVIDER_ID = "codex-chatgpt";
|
|
150
150
|
const CODEX_API_BASE = "https://chatgpt.com/backend-api/codex";
|
|
151
151
|
const CODEX_RESPONSES_URL = `${CODEX_API_BASE}/responses`;
|
|
@@ -80869,6 +80869,8 @@ function installToolResultPrunerGuard(ctx, options = {}) {
|
|
|
80869
80869
|
const skipSet = resolveSkipProviders(options.skipProviders ?? DEFAULT_SKIP_PROVIDERS);
|
|
80870
80870
|
/** 已包装过的实例(幂等标记)。 */
|
|
80871
80871
|
const alreadyWrapped = /* @__PURE__ */ new WeakSet();
|
|
80872
|
+
/** 已包装过的「方法宿主 + 方法名」:同一个原型不叠第二层包装。 */
|
|
80873
|
+
const patchedMethods = /* @__PURE__ */ new WeakMap();
|
|
80872
80874
|
/** 已包装的方法,销毁时逐条还原。 */
|
|
80873
80875
|
const restores = [];
|
|
80874
80876
|
/** 事件监听的 disposer。 */
|
|
@@ -80883,22 +80885,25 @@ function installToolResultPrunerGuard(ctx, options = {}) {
|
|
|
80883
80885
|
const wrapPruner = (pruner) => {
|
|
80884
80886
|
if (disposed || !isRecord$8(pruner)) return false;
|
|
80885
80887
|
if (alreadyWrapped.has(pruner)) return false;
|
|
80886
|
-
const target = pruner;
|
|
80887
|
-
|
|
80888
|
-
if (
|
|
80889
|
-
|
|
80888
|
+
const target = resolveMethodTarget$3(pruner, "pruneSession");
|
|
80889
|
+
if (target === void 0) return false;
|
|
80890
|
+
if (alreadyPatched$3(patchedMethods, target.holder, target.name)) {
|
|
80891
|
+
alreadyWrapped.add(pruner);
|
|
80892
|
+
return false;
|
|
80893
|
+
}
|
|
80894
|
+
const original = target.original;
|
|
80890
80895
|
const replacement = function(session) {
|
|
80891
80896
|
if (shouldSkipPruningForSession(session, skipSet)) return {
|
|
80892
80897
|
pruned: [],
|
|
80893
80898
|
charsRemoved: 0
|
|
80894
80899
|
};
|
|
80895
|
-
return original.call(this, session);
|
|
80900
|
+
return original.call(this ?? pruner, session);
|
|
80896
80901
|
};
|
|
80897
|
-
target
|
|
80902
|
+
if (!installMethod$3(target, replacement)) return false;
|
|
80903
|
+
markPatched$3(patchedMethods, target.holder, target.name);
|
|
80898
80904
|
alreadyWrapped.add(pruner);
|
|
80899
|
-
restores.push({
|
|
80900
|
-
target
|
|
80901
|
-
original
|
|
80905
|
+
restores.push(() => {
|
|
80906
|
+
restoreMethod$3(target);
|
|
80902
80907
|
});
|
|
80903
80908
|
return true;
|
|
80904
80909
|
};
|
|
@@ -80989,7 +80994,9 @@ function installToolResultPrunerGuard(ctx, options = {}) {
|
|
|
80989
80994
|
for (const disposer of disposers.splice(0)) try {
|
|
80990
80995
|
disposer();
|
|
80991
80996
|
} catch {}
|
|
80992
|
-
for (const
|
|
80997
|
+
for (const restore of restores.splice(0)) try {
|
|
80998
|
+
restore();
|
|
80999
|
+
} catch {}
|
|
80993
81000
|
}
|
|
80994
81001
|
};
|
|
80995
81002
|
}
|
|
@@ -81082,6 +81089,103 @@ function readContext$1(value) {
|
|
|
81082
81089
|
function isRecord$8(value) {
|
|
81083
81090
|
return typeof value === "object" && value !== null;
|
|
81084
81091
|
}
|
|
81092
|
+
/**
|
|
81093
|
+
* 定位一个待包装的方法。
|
|
81094
|
+
*
|
|
81095
|
+
* Cordis 的 `Service` 代理在读属性时会把方法**绑定到读取它的那一层作用域**
|
|
81096
|
+
* (`Reflect.get(target, prop, receiver).bind(receiver)`)。于是
|
|
81097
|
+
* `const original = tools.register` 拿到的是一份**已经绑到根作用域**的函数;再
|
|
81098
|
+
* `original.call(tools, …)` 就把根作用域硬塞回每一个 preset 的注册里,全局层
|
|
81099
|
+
* 于是撞上 "already registered"。
|
|
81100
|
+
*
|
|
81101
|
+
* 真正要的是**原型上那份未绑定的方法**:包装器用 `original.call(this, …)` 把
|
|
81102
|
+
* 调用方自己的 receiver 传下去,服务里的 `this.ctx` 才留在调用方那一层作用域
|
|
81103
|
+
* (child ctx)里。方法挂在原型上时(真实 Cordis `Service`),包装也写在原型上;
|
|
81104
|
+
* 只有普通假对象(单测)才把方法作为自有属性挂在实例上。
|
|
81105
|
+
*
|
|
81106
|
+
* @param service - 服务实例(可以是 Cordis 的跟踪代理)。
|
|
81107
|
+
* @param name - 方法名。
|
|
81108
|
+
* @returns 目标;方法不存在时为 `undefined`。
|
|
81109
|
+
*/
|
|
81110
|
+
function resolveMethodTarget$3(service, name) {
|
|
81111
|
+
if (typeof service !== "object" || service === null) return void 0;
|
|
81112
|
+
const own = service;
|
|
81113
|
+
if (Object.prototype.hasOwnProperty.call(own, name)) {
|
|
81114
|
+
const original = own[name];
|
|
81115
|
+
if (typeof original !== "function") return void 0;
|
|
81116
|
+
return {
|
|
81117
|
+
holder: own,
|
|
81118
|
+
name,
|
|
81119
|
+
original,
|
|
81120
|
+
descriptor: Object.getOwnPropertyDescriptor(own, name)
|
|
81121
|
+
};
|
|
81122
|
+
}
|
|
81123
|
+
const proto = Object.getPrototypeOf(service);
|
|
81124
|
+
if (proto === null) return void 0;
|
|
81125
|
+
if (proto === Object.prototype || proto === Function.prototype) return void 0;
|
|
81126
|
+
const original = proto[name];
|
|
81127
|
+
if (typeof original !== "function") return void 0;
|
|
81128
|
+
return {
|
|
81129
|
+
holder: proto,
|
|
81130
|
+
name,
|
|
81131
|
+
original,
|
|
81132
|
+
descriptor: Object.getOwnPropertyDescriptor(proto, name)
|
|
81133
|
+
};
|
|
81134
|
+
}
|
|
81135
|
+
/**
|
|
81136
|
+
* 把一个包装写到方法所在的位置上。
|
|
81137
|
+
*
|
|
81138
|
+
* @param target - 目标。
|
|
81139
|
+
* @param replacement - 包装实现。
|
|
81140
|
+
* @returns 是否装上了。
|
|
81141
|
+
*/
|
|
81142
|
+
function installMethod$3(target, replacement) {
|
|
81143
|
+
try {
|
|
81144
|
+
Object.defineProperty(target.holder, target.name, {
|
|
81145
|
+
value: replacement,
|
|
81146
|
+
configurable: true,
|
|
81147
|
+
writable: true,
|
|
81148
|
+
enumerable: target.descriptor?.enumerable ?? false
|
|
81149
|
+
});
|
|
81150
|
+
return true;
|
|
81151
|
+
} catch {
|
|
81152
|
+
return false;
|
|
81153
|
+
}
|
|
81154
|
+
}
|
|
81155
|
+
/**
|
|
81156
|
+
* 还原方法所在位置上原来的实现。
|
|
81157
|
+
*
|
|
81158
|
+
* @param target - 目标。
|
|
81159
|
+
*/
|
|
81160
|
+
function restoreMethod$3(target) {
|
|
81161
|
+
try {
|
|
81162
|
+
if (target.descriptor === void 0) Reflect.deleteProperty(target.holder, target.name);
|
|
81163
|
+
else Object.defineProperty(target.holder, target.name, target.descriptor);
|
|
81164
|
+
} catch {}
|
|
81165
|
+
}
|
|
81166
|
+
/**
|
|
81167
|
+
* 判断某个「方法宿主 + 方法名」是不是已经被本守卫包过。
|
|
81168
|
+
*
|
|
81169
|
+
* @param patched - 已包装记录。
|
|
81170
|
+
* @param holder - 方法宿主。
|
|
81171
|
+
* @param name - 方法名。
|
|
81172
|
+
* @returns 是否已经包过。
|
|
81173
|
+
*/
|
|
81174
|
+
function alreadyPatched$3(patched, holder, name) {
|
|
81175
|
+
return patched.get(holder)?.has(name) === true;
|
|
81176
|
+
}
|
|
81177
|
+
/**
|
|
81178
|
+
* 记下某个「方法宿主 + 方法名」已经被本守卫包过。
|
|
81179
|
+
*
|
|
81180
|
+
* @param patched - 已包装记录。
|
|
81181
|
+
* @param holder - 方法宿主。
|
|
81182
|
+
* @param name - 方法名。
|
|
81183
|
+
*/
|
|
81184
|
+
function markPatched$3(patched, holder, name) {
|
|
81185
|
+
const names = patched.get(holder);
|
|
81186
|
+
if (names === void 0) patched.set(holder, /* @__PURE__ */ new Set([name]));
|
|
81187
|
+
else names.add(name);
|
|
81188
|
+
}
|
|
81085
81189
|
//#endregion
|
|
81086
81190
|
//#region src/host/plan-mode-cache-guard.ts
|
|
81087
81191
|
/** 没有 scope 的装配(会话标题之类)用的桶键。 */
|
|
@@ -81136,6 +81240,8 @@ function subscribe$2(ctx, event, listener) {
|
|
|
81136
81240
|
function installPlanModeCacheGuard(ctx) {
|
|
81137
81241
|
const states = /* @__PURE__ */ new WeakMap();
|
|
81138
81242
|
const restores = [];
|
|
81243
|
+
/** 已包装过的「方法宿主 + 方法名」:同一个原型不叠第二层包装。 */
|
|
81244
|
+
const patchedMethods = /* @__PURE__ */ new WeakMap();
|
|
81139
81245
|
let closed = false;
|
|
81140
81246
|
/**
|
|
81141
81247
|
* 取(或建)一个桶的状态。
|
|
@@ -81210,22 +81316,25 @@ function installPlanModeCacheGuard(ctx) {
|
|
|
81210
81316
|
offPreStep();
|
|
81211
81317
|
});
|
|
81212
81318
|
const wrap = (tools) => {
|
|
81213
|
-
if (tools === void 0
|
|
81214
|
-
const
|
|
81215
|
-
|
|
81319
|
+
if (tools === void 0) return;
|
|
81320
|
+
const target = resolveMethodTarget$2(tools, "register");
|
|
81321
|
+
if (target === void 0) return;
|
|
81322
|
+
if (alreadyPatched$2(patchedMethods, target.holder, target.name)) return;
|
|
81323
|
+
const original = target.original;
|
|
81324
|
+
const wrapped = function(...args) {
|
|
81325
|
+
const receiver = this ?? tools;
|
|
81326
|
+
const definition = args[0];
|
|
81327
|
+
const options = args[1];
|
|
81216
81328
|
if (definition?.name === "exit_plan_mode" && options !== void 0 && options !== null && "when" in options) {
|
|
81217
81329
|
const { when: _dropped, ...rest } = options;
|
|
81218
|
-
return original.call(
|
|
81330
|
+
return original.call(receiver, definition, rest);
|
|
81219
81331
|
}
|
|
81220
|
-
return original.call(
|
|
81332
|
+
return original.call(receiver, definition, options);
|
|
81221
81333
|
};
|
|
81222
|
-
|
|
81223
|
-
|
|
81224
|
-
} catch {
|
|
81225
|
-
return;
|
|
81226
|
-
}
|
|
81334
|
+
if (!installMethod$2(target, wrapped)) return;
|
|
81335
|
+
markPatched$2(patchedMethods, target.holder, target.name);
|
|
81227
81336
|
restores.push(() => {
|
|
81228
|
-
|
|
81337
|
+
restoreMethod$2(target);
|
|
81229
81338
|
});
|
|
81230
81339
|
if (typeof tools.get === "function") try {
|
|
81231
81340
|
if (tools.get("exit_plan_mode") !== void 0) logWarn(ctx, "[dsh-chatgpt-subscription] plan-mode cache guard was installed after exit_plan_mode was already registered; this session keeps the conditional admission");
|
|
@@ -81281,6 +81390,103 @@ function logWarn(ctx, message) {
|
|
|
81281
81390
|
logger?.warn(message);
|
|
81282
81391
|
} catch {}
|
|
81283
81392
|
}
|
|
81393
|
+
/**
|
|
81394
|
+
* 定位一个待包装的方法。
|
|
81395
|
+
*
|
|
81396
|
+
* Cordis 的 `Service` 代理在读属性时会把方法**绑定到读取它的那一层作用域**
|
|
81397
|
+
* (`Reflect.get(target, prop, receiver).bind(receiver)`)。于是
|
|
81398
|
+
* `const original = tools.register` 拿到的是一份**已经绑到根作用域**的函数;再
|
|
81399
|
+
* `original.call(tools, …)` 就把根作用域硬塞回每一个 preset 的注册里,全局层
|
|
81400
|
+
* 于是撞上 "already registered"。
|
|
81401
|
+
*
|
|
81402
|
+
* 真正要的是**原型上那份未绑定的方法**:包装器用 `original.call(this, …)` 把
|
|
81403
|
+
* 调用方自己的 receiver 传下去,服务里的 `this.ctx` 才留在调用方那一层作用域
|
|
81404
|
+
* (child ctx)里。方法挂在原型上时(真实 Cordis `Service`),包装也写在原型上;
|
|
81405
|
+
* 只有普通假对象(单测)才把方法作为自有属性挂在实例上。
|
|
81406
|
+
*
|
|
81407
|
+
* @param service - 服务实例(可以是 Cordis 的跟踪代理)。
|
|
81408
|
+
* @param name - 方法名。
|
|
81409
|
+
* @returns 目标;方法不存在时为 `undefined`。
|
|
81410
|
+
*/
|
|
81411
|
+
function resolveMethodTarget$2(service, name) {
|
|
81412
|
+
if (typeof service !== "object" || service === null) return void 0;
|
|
81413
|
+
const own = service;
|
|
81414
|
+
if (Object.prototype.hasOwnProperty.call(own, name)) {
|
|
81415
|
+
const original = own[name];
|
|
81416
|
+
if (typeof original !== "function") return void 0;
|
|
81417
|
+
return {
|
|
81418
|
+
holder: own,
|
|
81419
|
+
name,
|
|
81420
|
+
original,
|
|
81421
|
+
descriptor: Object.getOwnPropertyDescriptor(own, name)
|
|
81422
|
+
};
|
|
81423
|
+
}
|
|
81424
|
+
const proto = Object.getPrototypeOf(service);
|
|
81425
|
+
if (proto === null) return void 0;
|
|
81426
|
+
if (proto === Object.prototype || proto === Function.prototype) return void 0;
|
|
81427
|
+
const original = proto[name];
|
|
81428
|
+
if (typeof original !== "function") return void 0;
|
|
81429
|
+
return {
|
|
81430
|
+
holder: proto,
|
|
81431
|
+
name,
|
|
81432
|
+
original,
|
|
81433
|
+
descriptor: Object.getOwnPropertyDescriptor(proto, name)
|
|
81434
|
+
};
|
|
81435
|
+
}
|
|
81436
|
+
/**
|
|
81437
|
+
* 把一个包装写到方法所在的位置上。
|
|
81438
|
+
*
|
|
81439
|
+
* @param target - 目标。
|
|
81440
|
+
* @param replacement - 包装实现。
|
|
81441
|
+
* @returns 是否装上了。
|
|
81442
|
+
*/
|
|
81443
|
+
function installMethod$2(target, replacement) {
|
|
81444
|
+
try {
|
|
81445
|
+
Object.defineProperty(target.holder, target.name, {
|
|
81446
|
+
value: replacement,
|
|
81447
|
+
configurable: true,
|
|
81448
|
+
writable: true,
|
|
81449
|
+
enumerable: target.descriptor?.enumerable ?? false
|
|
81450
|
+
});
|
|
81451
|
+
return true;
|
|
81452
|
+
} catch {
|
|
81453
|
+
return false;
|
|
81454
|
+
}
|
|
81455
|
+
}
|
|
81456
|
+
/**
|
|
81457
|
+
* 还原方法所在位置上原来的实现。
|
|
81458
|
+
*
|
|
81459
|
+
* @param target - 目标。
|
|
81460
|
+
*/
|
|
81461
|
+
function restoreMethod$2(target) {
|
|
81462
|
+
try {
|
|
81463
|
+
if (target.descriptor === void 0) Reflect.deleteProperty(target.holder, target.name);
|
|
81464
|
+
else Object.defineProperty(target.holder, target.name, target.descriptor);
|
|
81465
|
+
} catch {}
|
|
81466
|
+
}
|
|
81467
|
+
/**
|
|
81468
|
+
* 判断某个「方法宿主 + 方法名」是不是已经被本守卫包过。
|
|
81469
|
+
*
|
|
81470
|
+
* @param patched - 已包装记录。
|
|
81471
|
+
* @param holder - 方法宿主。
|
|
81472
|
+
* @param name - 方法名。
|
|
81473
|
+
* @returns 是否已经包过。
|
|
81474
|
+
*/
|
|
81475
|
+
function alreadyPatched$2(patched, holder, name) {
|
|
81476
|
+
return patched.get(holder)?.has(name) === true;
|
|
81477
|
+
}
|
|
81478
|
+
/**
|
|
81479
|
+
* 记下某个「方法宿主 + 方法名」已经被本守卫包过。
|
|
81480
|
+
*
|
|
81481
|
+
* @param patched - 已包装记录。
|
|
81482
|
+
* @param holder - 方法宿主。
|
|
81483
|
+
* @param name - 方法名。
|
|
81484
|
+
*/
|
|
81485
|
+
function markPatched$2(patched, holder, name) {
|
|
81486
|
+
const names = patched.get(holder);
|
|
81487
|
+
if (names === void 0) patched.set(holder, /* @__PURE__ */ new Set([name]));
|
|
81488
|
+
else names.add(name);
|
|
81489
|
+
}
|
|
81284
81490
|
/** PTC 生成的 SDK 段名。 */
|
|
81285
81491
|
const PTC_SDK_SECTION_NAME = "tools:sdk";
|
|
81286
81492
|
/** 没有 scope 的装配(会话标题之类)用的桶键。 */
|
|
@@ -81337,6 +81543,8 @@ function installPtcSdkCacheGuard(ctx, options = {}) {
|
|
|
81337
81543
|
const providers = new Set(options.providers ?? ["kimi-code"]);
|
|
81338
81544
|
/** 已包装过的实例(幂等标记)。 */
|
|
81339
81545
|
const alreadyWrapped = /* @__PURE__ */ new WeakSet();
|
|
81546
|
+
/** 已包装过的「方法宿主 + 方法名」:同一个原型不叠第二层包装。 */
|
|
81547
|
+
const patchedMethods = /* @__PURE__ */ new WeakMap();
|
|
81340
81548
|
/** 每个 scope 的 SDK 段缓存。 */
|
|
81341
81549
|
const cache = /* @__PURE__ */ new WeakMap();
|
|
81342
81550
|
/** 事件监听的 disposer。 */
|
|
@@ -81363,11 +81571,11 @@ function installPtcSdkCacheGuard(ctx, options = {}) {
|
|
|
81363
81571
|
*/
|
|
81364
81572
|
const toolFingerprint = (tools, scope) => {
|
|
81365
81573
|
if (!isRecord$7(tools)) return "";
|
|
81366
|
-
const
|
|
81367
|
-
if (
|
|
81574
|
+
const target = resolveMethodTarget$1(tools, "definitions");
|
|
81575
|
+
if (target === void 0) return "";
|
|
81368
81576
|
let list;
|
|
81369
81577
|
try {
|
|
81370
|
-
list =
|
|
81578
|
+
list = target.original.call(tools, scope, void 0);
|
|
81371
81579
|
} catch {
|
|
81372
81580
|
return "";
|
|
81373
81581
|
}
|
|
@@ -81383,33 +81591,26 @@ function installPtcSdkCacheGuard(ctx, options = {}) {
|
|
|
81383
81591
|
const wrapToolsService = (tools) => {
|
|
81384
81592
|
if (disposed || !isRecord$7(tools)) return false;
|
|
81385
81593
|
if (alreadyWrapped.has(tools)) return false;
|
|
81386
|
-
const
|
|
81387
|
-
if (
|
|
81388
|
-
|
|
81594
|
+
const target = resolveMethodTarget$1(tools, "definitions");
|
|
81595
|
+
if (target === void 0) return false;
|
|
81596
|
+
if (alreadyPatched$1(patchedMethods, target.holder, target.name)) {
|
|
81597
|
+
alreadyWrapped.add(tools);
|
|
81598
|
+
return false;
|
|
81599
|
+
}
|
|
81600
|
+
const original = target.original;
|
|
81389
81601
|
const replacement = function(scope, toolSet) {
|
|
81602
|
+
const receiver = this ?? tools;
|
|
81390
81603
|
if (toolSet !== void 0) {
|
|
81391
81604
|
const provider = readScopeProvider(scope);
|
|
81392
|
-
if (provider !== void 0 && providers.has(provider)) return original.call(
|
|
81605
|
+
if (provider !== void 0 && providers.has(provider)) return original.call(receiver, scope, void 0);
|
|
81393
81606
|
}
|
|
81394
|
-
return original.call(
|
|
81607
|
+
return original.call(receiver, scope, toolSet);
|
|
81395
81608
|
};
|
|
81396
|
-
|
|
81397
|
-
|
|
81398
|
-
Object.defineProperty(tools, "definitions", {
|
|
81399
|
-
value: replacement,
|
|
81400
|
-
configurable: true,
|
|
81401
|
-
writable: true,
|
|
81402
|
-
enumerable: descriptor?.enumerable ?? false
|
|
81403
|
-
});
|
|
81404
|
-
} catch {
|
|
81405
|
-
return false;
|
|
81406
|
-
}
|
|
81609
|
+
if (!installMethod$1(target, replacement)) return false;
|
|
81610
|
+
markPatched$1(patchedMethods, target.holder, target.name);
|
|
81407
81611
|
alreadyWrapped.add(tools);
|
|
81408
81612
|
restores.push(() => {
|
|
81409
|
-
|
|
81410
|
-
if (descriptor === void 0) delete tools["definitions"];
|
|
81411
|
-
else Object.defineProperty(tools, "definitions", descriptor);
|
|
81412
|
-
} catch {}
|
|
81613
|
+
restoreMethod$1(target);
|
|
81413
81614
|
});
|
|
81414
81615
|
return true;
|
|
81415
81616
|
};
|
|
@@ -81537,6 +81738,103 @@ function subscribe$1(host, event, listener) {
|
|
|
81537
81738
|
function isRecord$7(value) {
|
|
81538
81739
|
return typeof value === "object" && value !== null;
|
|
81539
81740
|
}
|
|
81741
|
+
/**
|
|
81742
|
+
* 定位一个待包装的方法。
|
|
81743
|
+
*
|
|
81744
|
+
* Cordis 的 `Service` 代理在读属性时会把方法**绑定到读取它的那一层作用域**
|
|
81745
|
+
* (`Reflect.get(target, prop, receiver).bind(receiver)`)。于是
|
|
81746
|
+
* `const original = tools.register` 拿到的是一份**已经绑到根作用域**的函数;再
|
|
81747
|
+
* `original.call(tools, …)` 就把根作用域硬塞回每一个 preset 的注册里,全局层
|
|
81748
|
+
* 于是撞上 "already registered"。
|
|
81749
|
+
*
|
|
81750
|
+
* 真正要的是**原型上那份未绑定的方法**:包装器用 `original.call(this, …)` 把
|
|
81751
|
+
* 调用方自己的 receiver 传下去,服务里的 `this.ctx` 才留在调用方那一层作用域
|
|
81752
|
+
* (child ctx)里。方法挂在原型上时(真实 Cordis `Service`),包装也写在原型上;
|
|
81753
|
+
* 只有普通假对象(单测)才把方法作为自有属性挂在实例上。
|
|
81754
|
+
*
|
|
81755
|
+
* @param service - 服务实例(可以是 Cordis 的跟踪代理)。
|
|
81756
|
+
* @param name - 方法名。
|
|
81757
|
+
* @returns 目标;方法不存在时为 `undefined`。
|
|
81758
|
+
*/
|
|
81759
|
+
function resolveMethodTarget$1(service, name) {
|
|
81760
|
+
if (typeof service !== "object" || service === null) return void 0;
|
|
81761
|
+
const own = service;
|
|
81762
|
+
if (Object.prototype.hasOwnProperty.call(own, name)) {
|
|
81763
|
+
const original = own[name];
|
|
81764
|
+
if (typeof original !== "function") return void 0;
|
|
81765
|
+
return {
|
|
81766
|
+
holder: own,
|
|
81767
|
+
name,
|
|
81768
|
+
original,
|
|
81769
|
+
descriptor: Object.getOwnPropertyDescriptor(own, name)
|
|
81770
|
+
};
|
|
81771
|
+
}
|
|
81772
|
+
const proto = Object.getPrototypeOf(service);
|
|
81773
|
+
if (proto === null) return void 0;
|
|
81774
|
+
if (proto === Object.prototype || proto === Function.prototype) return void 0;
|
|
81775
|
+
const original = proto[name];
|
|
81776
|
+
if (typeof original !== "function") return void 0;
|
|
81777
|
+
return {
|
|
81778
|
+
holder: proto,
|
|
81779
|
+
name,
|
|
81780
|
+
original,
|
|
81781
|
+
descriptor: Object.getOwnPropertyDescriptor(proto, name)
|
|
81782
|
+
};
|
|
81783
|
+
}
|
|
81784
|
+
/**
|
|
81785
|
+
* 把一个包装写到方法所在的位置上。
|
|
81786
|
+
*
|
|
81787
|
+
* @param target - 目标。
|
|
81788
|
+
* @param replacement - 包装实现。
|
|
81789
|
+
* @returns 是否装上了。
|
|
81790
|
+
*/
|
|
81791
|
+
function installMethod$1(target, replacement) {
|
|
81792
|
+
try {
|
|
81793
|
+
Object.defineProperty(target.holder, target.name, {
|
|
81794
|
+
value: replacement,
|
|
81795
|
+
configurable: true,
|
|
81796
|
+
writable: true,
|
|
81797
|
+
enumerable: target.descriptor?.enumerable ?? false
|
|
81798
|
+
});
|
|
81799
|
+
return true;
|
|
81800
|
+
} catch {
|
|
81801
|
+
return false;
|
|
81802
|
+
}
|
|
81803
|
+
}
|
|
81804
|
+
/**
|
|
81805
|
+
* 还原方法所在位置上原来的实现。
|
|
81806
|
+
*
|
|
81807
|
+
* @param target - 目标。
|
|
81808
|
+
*/
|
|
81809
|
+
function restoreMethod$1(target) {
|
|
81810
|
+
try {
|
|
81811
|
+
if (target.descriptor === void 0) Reflect.deleteProperty(target.holder, target.name);
|
|
81812
|
+
else Object.defineProperty(target.holder, target.name, target.descriptor);
|
|
81813
|
+
} catch {}
|
|
81814
|
+
}
|
|
81815
|
+
/**
|
|
81816
|
+
* 判断某个「方法宿主 + 方法名」是不是已经被本守卫包过。
|
|
81817
|
+
*
|
|
81818
|
+
* @param patched - 已包装记录。
|
|
81819
|
+
* @param holder - 方法宿主。
|
|
81820
|
+
* @param name - 方法名。
|
|
81821
|
+
* @returns 是否已经包过。
|
|
81822
|
+
*/
|
|
81823
|
+
function alreadyPatched$1(patched, holder, name) {
|
|
81824
|
+
return patched.get(holder)?.has(name) === true;
|
|
81825
|
+
}
|
|
81826
|
+
/**
|
|
81827
|
+
* 记下某个「方法宿主 + 方法名」已经被本守卫包过。
|
|
81828
|
+
*
|
|
81829
|
+
* @param patched - 已包装记录。
|
|
81830
|
+
* @param holder - 方法宿主。
|
|
81831
|
+
* @param name - 方法名。
|
|
81832
|
+
*/
|
|
81833
|
+
function markPatched$1(patched, holder, name) {
|
|
81834
|
+
const names = patched.get(holder);
|
|
81835
|
+
if (names === void 0) patched.set(holder, /* @__PURE__ */ new Set([name]));
|
|
81836
|
+
else names.add(name);
|
|
81837
|
+
}
|
|
81540
81838
|
//#endregion
|
|
81541
81839
|
//#region src/host/compaction-policy-guard.ts
|
|
81542
81840
|
/**
|
|
@@ -81655,6 +81953,8 @@ function installCompactionPolicyGuard(ctx, options = {}) {
|
|
|
81655
81953
|
const observed = /* @__PURE__ */ new Map();
|
|
81656
81954
|
/** 已改写的引擎(幂等标记)与还原动作。 */
|
|
81657
81955
|
const patched = /* @__PURE__ */ new WeakMap();
|
|
81956
|
+
/** 已包装过的「方法宿主 + 方法名」:同一个原型不叠第二层包装。 */
|
|
81957
|
+
const patchedMethods = /* @__PURE__ */ new WeakMap();
|
|
81658
81958
|
const restores = [];
|
|
81659
81959
|
/** 事件监听的 disposer。 */
|
|
81660
81960
|
const disposers = [];
|
|
@@ -81825,10 +82125,10 @@ function installCompactionPolicyGuard(ctx, options = {}) {
|
|
|
81825
82125
|
"compact",
|
|
81826
82126
|
"summarize"
|
|
81827
82127
|
]) {
|
|
81828
|
-
const
|
|
81829
|
-
if (
|
|
81830
|
-
|
|
81831
|
-
const
|
|
82128
|
+
const target = resolveMethodTarget(engine, name);
|
|
82129
|
+
if (target === void 0) continue;
|
|
82130
|
+
if (alreadyPatched(patchedMethods, target.holder, target.name)) continue;
|
|
82131
|
+
const original = target.original;
|
|
81832
82132
|
const replacement = function(...args) {
|
|
81833
82133
|
observeFrom(args[0]);
|
|
81834
82134
|
observeFrom(args[1]);
|
|
@@ -81846,23 +82146,12 @@ function installCompactionPolicyGuard(ctx, options = {}) {
|
|
|
81846
82146
|
}
|
|
81847
82147
|
}
|
|
81848
82148
|
}
|
|
81849
|
-
return original.apply(this, nextArgs);
|
|
82149
|
+
return original.apply(this ?? engine, nextArgs);
|
|
81850
82150
|
};
|
|
81851
|
-
|
|
81852
|
-
|
|
81853
|
-
value: replacement,
|
|
81854
|
-
configurable: true,
|
|
81855
|
-
writable: true,
|
|
81856
|
-
enumerable: Object.getOwnPropertyDescriptor(engine, name)?.enumerable ?? false
|
|
81857
|
-
});
|
|
81858
|
-
} catch {
|
|
81859
|
-
continue;
|
|
81860
|
-
}
|
|
82151
|
+
if (!installMethod(target, replacement)) continue;
|
|
82152
|
+
markPatched(patchedMethods, target.holder, target.name);
|
|
81861
82153
|
restoresForEngine.push(() => {
|
|
81862
|
-
|
|
81863
|
-
if (methodDescriptor === void 0) delete engine[name];
|
|
81864
|
-
else Object.defineProperty(engine, name, methodDescriptor);
|
|
81865
|
-
} catch {}
|
|
82154
|
+
restoreMethod(target);
|
|
81866
82155
|
});
|
|
81867
82156
|
}
|
|
81868
82157
|
const restore = () => {
|
|
@@ -82062,6 +82351,103 @@ function subscribe(host, event, listener) {
|
|
|
82062
82351
|
function isRecord$6(value) {
|
|
82063
82352
|
return typeof value === "object" && value !== null;
|
|
82064
82353
|
}
|
|
82354
|
+
/**
|
|
82355
|
+
* 定位一个待包装的方法。
|
|
82356
|
+
*
|
|
82357
|
+
* Cordis 的 `Service` 代理在读属性时会把方法**绑定到读取它的那一层作用域**
|
|
82358
|
+
* (`Reflect.get(target, prop, receiver).bind(receiver)`)。于是
|
|
82359
|
+
* `const original = tools.register` 拿到的是一份**已经绑到根作用域**的函数;再
|
|
82360
|
+
* `original.call(tools, …)` 就把根作用域硬塞回每一个 preset 的注册里,全局层
|
|
82361
|
+
* 于是撞上 "already registered"。
|
|
82362
|
+
*
|
|
82363
|
+
* 真正要的是**原型上那份未绑定的方法**:包装器用 `original.call(this, …)` 把
|
|
82364
|
+
* 调用方自己的 receiver 传下去,服务里的 `this.ctx` 才留在调用方那一层作用域
|
|
82365
|
+
* (child ctx)里。方法挂在原型上时(真实 Cordis `Service`),包装也写在原型上;
|
|
82366
|
+
* 只有普通假对象(单测)才把方法作为自有属性挂在实例上。
|
|
82367
|
+
*
|
|
82368
|
+
* @param service - 服务实例(可以是 Cordis 的跟踪代理)。
|
|
82369
|
+
* @param name - 方法名。
|
|
82370
|
+
* @returns 目标;方法不存在时为 `undefined`。
|
|
82371
|
+
*/
|
|
82372
|
+
function resolveMethodTarget(service, name) {
|
|
82373
|
+
if (typeof service !== "object" || service === null) return void 0;
|
|
82374
|
+
const own = service;
|
|
82375
|
+
if (Object.prototype.hasOwnProperty.call(own, name)) {
|
|
82376
|
+
const original = own[name];
|
|
82377
|
+
if (typeof original !== "function") return void 0;
|
|
82378
|
+
return {
|
|
82379
|
+
holder: own,
|
|
82380
|
+
name,
|
|
82381
|
+
original,
|
|
82382
|
+
descriptor: Object.getOwnPropertyDescriptor(own, name)
|
|
82383
|
+
};
|
|
82384
|
+
}
|
|
82385
|
+
const proto = Object.getPrototypeOf(service);
|
|
82386
|
+
if (proto === null) return void 0;
|
|
82387
|
+
if (proto === Object.prototype || proto === Function.prototype) return void 0;
|
|
82388
|
+
const original = proto[name];
|
|
82389
|
+
if (typeof original !== "function") return void 0;
|
|
82390
|
+
return {
|
|
82391
|
+
holder: proto,
|
|
82392
|
+
name,
|
|
82393
|
+
original,
|
|
82394
|
+
descriptor: Object.getOwnPropertyDescriptor(proto, name)
|
|
82395
|
+
};
|
|
82396
|
+
}
|
|
82397
|
+
/**
|
|
82398
|
+
* 把一个包装写到方法所在的位置上。
|
|
82399
|
+
*
|
|
82400
|
+
* @param target - 目标。
|
|
82401
|
+
* @param replacement - 包装实现。
|
|
82402
|
+
* @returns 是否装上了。
|
|
82403
|
+
*/
|
|
82404
|
+
function installMethod(target, replacement) {
|
|
82405
|
+
try {
|
|
82406
|
+
Object.defineProperty(target.holder, target.name, {
|
|
82407
|
+
value: replacement,
|
|
82408
|
+
configurable: true,
|
|
82409
|
+
writable: true,
|
|
82410
|
+
enumerable: target.descriptor?.enumerable ?? false
|
|
82411
|
+
});
|
|
82412
|
+
return true;
|
|
82413
|
+
} catch {
|
|
82414
|
+
return false;
|
|
82415
|
+
}
|
|
82416
|
+
}
|
|
82417
|
+
/**
|
|
82418
|
+
* 还原方法所在位置上原来的实现。
|
|
82419
|
+
*
|
|
82420
|
+
* @param target - 目标。
|
|
82421
|
+
*/
|
|
82422
|
+
function restoreMethod(target) {
|
|
82423
|
+
try {
|
|
82424
|
+
if (target.descriptor === void 0) Reflect.deleteProperty(target.holder, target.name);
|
|
82425
|
+
else Object.defineProperty(target.holder, target.name, target.descriptor);
|
|
82426
|
+
} catch {}
|
|
82427
|
+
}
|
|
82428
|
+
/**
|
|
82429
|
+
* 判断某个「方法宿主 + 方法名」是不是已经被本守卫包过。
|
|
82430
|
+
*
|
|
82431
|
+
* @param patched - 已包装记录。
|
|
82432
|
+
* @param holder - 方法宿主。
|
|
82433
|
+
* @param name - 方法名。
|
|
82434
|
+
* @returns 是否已经包过。
|
|
82435
|
+
*/
|
|
82436
|
+
function alreadyPatched(patched, holder, name) {
|
|
82437
|
+
return patched.get(holder)?.has(name) === true;
|
|
82438
|
+
}
|
|
82439
|
+
/**
|
|
82440
|
+
* 记下某个「方法宿主 + 方法名」已经被本守卫包过。
|
|
82441
|
+
*
|
|
82442
|
+
* @param patched - 已包装记录。
|
|
82443
|
+
* @param holder - 方法宿主。
|
|
82444
|
+
* @param name - 方法名。
|
|
82445
|
+
*/
|
|
82446
|
+
function markPatched(patched, holder, name) {
|
|
82447
|
+
const names = patched.get(holder);
|
|
82448
|
+
if (names === void 0) patched.set(holder, /* @__PURE__ */ new Set([name]));
|
|
82449
|
+
else names.add(name);
|
|
82450
|
+
}
|
|
82065
82451
|
//#endregion
|
|
82066
82452
|
//#region src/host/preset-sync.ts
|
|
82067
82453
|
/**
|
package/lib/types/compat.d.ts
CHANGED
|
@@ -71,7 +71,7 @@ export declare const ROUTE_PREFIX: "/api/dsh-chatgpt-subscription";
|
|
|
71
71
|
* `test/responses-client.test.ts` asserts the two agree, so a release that
|
|
72
72
|
* forgets this constant fails the suite instead of shipping quietly.
|
|
73
73
|
*/
|
|
74
|
-
export declare const PLUGIN_VERSION: "0.48.
|
|
74
|
+
export declare const PLUGIN_VERSION: "0.48.1";
|
|
75
75
|
export declare const CODEX_CHATGPT_PROVIDER_ID: "codex-chatgpt";
|
|
76
76
|
export { MINIMAX_CODE_PROVIDER_ID, MINIMAX_CODE_ROUTE_PREFIX } from './shared/minimax-code-contracts.ts';
|
|
77
77
|
export declare const CODEX_API_BASE: "https://chatgpt.com/backend-api/codex";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compaction-policy-guard.d.ts","sourceRoot":"","sources":["../../../src/host/compaction-policy-guard.ts"],"names":[],"mappings":"AA4DA,oDAAoD;AACpD,eAAO,MAAM,uBAAuB,eAAe,CAAA;AAEnD,uBAAuB;AACvB,eAAO,MAAM,wBAAwB,cAAc,CAAA;AAEnD;;;;;;;;GAQG;AACH,eAAO,MAAM,+BAA+B;;;;;;;EAO1C,CAAA;AAEF,2BAA2B;AAC3B,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAO5C,CAAA;AAEF,YAAY;AACZ,MAAM,WAAW,4BAA4B;IAC3C,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,mBAAmB;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,yBAAyB;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,YAAY;AACZ,MAAM,WAAW,qBAAqB;IACpC,+BAA+B;IAC/B,OAAO,IAAI,IAAI,CAAA;IACf;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAA;CACtC;AAiCD;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,OAAO,EACZ,OAAO,GAAE,4BAAiC,GACzC,qBAAqB,
|
|
1
|
+
{"version":3,"file":"compaction-policy-guard.d.ts","sourceRoot":"","sources":["../../../src/host/compaction-policy-guard.ts"],"names":[],"mappings":"AA4DA,oDAAoD;AACpD,eAAO,MAAM,uBAAuB,eAAe,CAAA;AAEnD,uBAAuB;AACvB,eAAO,MAAM,wBAAwB,cAAc,CAAA;AAEnD;;;;;;;;GAQG;AACH,eAAO,MAAM,+BAA+B;;;;;;;EAO1C,CAAA;AAEF,2BAA2B;AAC3B,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAO5C,CAAA;AAEF,YAAY;AACZ,MAAM,WAAW,4BAA4B;IAC3C,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,mBAAmB;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,yBAAyB;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,YAAY;AACZ,MAAM,WAAW,qBAAqB;IACpC,+BAA+B;IAC/B,OAAO,IAAI,IAAI,CAAA;IACf;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAA;CACtC;AAiCD;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,OAAO,EACZ,OAAO,GAAE,4BAAiC,GACzC,qBAAqB,CA4YvB;AAgOD,eAAe,4BAA4B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-mode-cache-guard.d.ts","sourceRoot":"","sources":["../../../src/host/plan-mode-cache-guard.ts"],"names":[],"mappings":"AA0CA,eAAe;AACf,MAAM,WAAW,kBAAkB;IACjC,wBAAwB;IACxB,OAAO,IAAI,IAAI,CAAA;CAChB;AAqID;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,kBAAkB,
|
|
1
|
+
{"version":3,"file":"plan-mode-cache-guard.d.ts","sourceRoot":"","sources":["../../../src/host/plan-mode-cache-guard.ts"],"names":[],"mappings":"AA0CA,eAAe;AACf,MAAM,WAAW,kBAAkB;IACjC,wBAAwB;IACxB,OAAO,IAAI,IAAI,CAAA;CAChB;AAqID;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,kBAAkB,CAqK1E;AAgKD,eAAe,yBAAyB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ptc-sdk-cache-guard.d.ts","sourceRoot":"","sources":["../../../src/host/ptc-sdk-cache-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,uCAAuC;AACvC,eAAO,MAAM,kBAAkB,cAAc,CAAA;AAE7C,sBAAsB;AACtB,eAAO,MAAM,oBAAoB,cAAc,CAAA;AAE/C,YAAY;AACZ,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC9B;AAED,YAAY;AACZ,MAAM,WAAW,gBAAgB;IAC/B,gDAAgD;IAChD,OAAO,IAAI,IAAI,CAAA;IACf;;;;;OAKG;IACH,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAA;CAC1C;AAkDD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CA6BpE;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,OAAO,EACZ,OAAO,GAAE,uBAA4B,GACpC,gBAAgB,
|
|
1
|
+
{"version":3,"file":"ptc-sdk-cache-guard.d.ts","sourceRoot":"","sources":["../../../src/host/ptc-sdk-cache-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,uCAAuC;AACvC,eAAO,MAAM,kBAAkB,cAAc,CAAA;AAE7C,sBAAsB;AACtB,eAAO,MAAM,oBAAoB,cAAc,CAAA;AAE/C,YAAY;AACZ,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC9B;AAED,YAAY;AACZ,MAAM,WAAW,gBAAgB;IAC/B,gDAAgD;IAChD,OAAO,IAAI,IAAI,CAAA;IACf;;;;;OAKG;IACH,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAA;CAC1C;AAkDD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CA6BpE;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,OAAO,EACZ,OAAO,GAAE,uBAA4B,GACpC,gBAAgB,CA4LlB;AAmMD,eAAe,uBAAuB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-result-pruner-guard.d.ts","sourceRoot":"","sources":["../../../src/host/tool-result-pruner-guard.ts"],"names":[],"mappings":"AAsCA,aAAa;AACb,MAAM,WAAW,4BAA4B;IAC3C;;;;OAIG;IACH,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAClC;AAED,YAAY;AACZ,MAAM,WAAW,qBAAqB;IACpC,2CAA2C;IAC3C,OAAO,IAAI,IAAI,CAAA;IACf;;;;;OAKG;IACH,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAA;CACrC;AAoCD;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,OAAO,EACZ,OAAO,GAAE,4BAAiC,GACzC,qBAAqB,CA+
|
|
1
|
+
{"version":3,"file":"tool-result-pruner-guard.d.ts","sourceRoot":"","sources":["../../../src/host/tool-result-pruner-guard.ts"],"names":[],"mappings":"AAsCA,aAAa;AACb,MAAM,WAAW,4BAA4B;IAC3C;;;;OAIG;IACH,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAClC;AAED,YAAY;AACZ,MAAM,WAAW,qBAAqB;IACpC,2CAA2C;IAC3C,OAAO,IAAI,IAAI,CAAA;IACf;;;;;OAKG;IACH,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAA;CACrC;AAoCD;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,OAAO,EACZ,OAAO,GAAE,4BAAiC,GACzC,qBAAqB,CA+JvB;AAuOD,eAAe,4BAA4B,CAAA"}
|