@qwen-code/qwen-code 0.16.0-preview.0 → 0.16.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/bundled/qc-helper/docs/configuration/settings.md +39 -37
- package/bundled/qc-helper/docs/features/_meta.ts +2 -0
- package/bundled/qc-helper/docs/features/approval-mode.md +119 -2
- package/bundled/qc-helper/docs/features/auto-mode.md +263 -0
- package/bundled/qc-helper/docs/features/commands.md +11 -10
- package/bundled/qc-helper/docs/features/skills.md +3 -0
- package/bundled/qc-helper/docs/features/structured-output.md +309 -0
- package/bundled/qc-helper/docs/features/sub-agents.md +47 -5
- package/bundled/qc-helper/docs/qwen-serve.md +119 -14
- package/bundled/review/SKILL.md +12 -3
- package/chunks/{agent-ZNQPH67I.js → agent-2JCG7FDJ.js} +9 -11
- package/chunks/{anthropicContentGenerator-ICBDZ6R2.js → anthropicContentGenerator-RQJNXJIY.js} +6 -3
- package/chunks/{askUserQuestion-WQILGUSQ.js → askUserQuestion-PQPMPNM3.js} +1 -1
- package/chunks/{ca-S3XJMT6P.js → ca-UZ7BANMN.js} +3 -3
- package/chunks/{chunk-XVHR7ATJ.js → chunk-4AOCVI6J.js} +1 -0
- package/chunks/chunk-7LMPOVYW.js +956 -0
- package/chunks/{chunk-MNPZ2WO6.js → chunk-BAZDG3QU.js} +9104 -3955
- package/chunks/{chunk-AEJ2DKLP.js → chunk-C6WMLUNB.js} +1 -1
- package/chunks/{chunk-PPHYLJSS.js → chunk-CAVZVZX6.js} +2 -2
- package/chunks/{chunk-VTPOO6GV.js → chunk-CSWBPY3P.js} +1 -1
- package/chunks/chunk-D6LBYOCX.js +19126 -0
- package/chunks/{chunk-NAID3ZWF.js → chunk-DMIMF3CG.js} +1 -1
- package/chunks/{chunk-2B7UBDY5.js → chunk-GGNTZ2NH.js} +90 -19
- package/chunks/chunk-HW5S7L73.js +379 -0
- package/chunks/{chunk-C3LHPHN2.js → chunk-JCR2WRXZ.js} +1227 -657
- package/chunks/{chunk-EDYSNFEM.js → chunk-L5E26RN6.js} +2 -2
- package/chunks/{chunk-CW44BRRA.js → chunk-MAY32HXD.js} +375 -0
- package/chunks/{chunk-7QXHXMC6.js → chunk-N6GSJHZ4.js} +96 -20
- package/chunks/{chunk-FZIUV27X.js → chunk-PVVL5Q3W.js} +31 -0
- package/chunks/{chunk-YHEAJFCI.js → chunk-USE2VQ5P.js} +3 -0
- package/chunks/{chunk-JYQUJ5DS.js → chunk-YJLGXDQJ.js} +1 -1
- package/chunks/{contextCommand-IGBCEXI4.js → contextCommand-XVRGKS3Q.js} +11 -13
- package/chunks/{cron-create-AVI3Q267.js → cron-create-IGYXQVG4.js} +27 -1
- package/chunks/{cron-delete-ZCEGDXXV.js → cron-delete-ETKIZCWT.js} +1 -1
- package/chunks/{cron-list-VN653OK5.js → cron-list-BVCUSWRU.js} +1 -1
- package/chunks/{de-MNR4SMAI.js → de-V4IE2OOZ.js} +3 -3
- package/chunks/{dist-RRYNPBOE.js → dist-4L54HRX2.js} +2 -2
- package/chunks/{dist-WP4AH3VK.js → dist-BXDUQ2QY.js} +1 -1
- package/chunks/{dist-M6GFCZ7S.js → dist-MN2PDDPR.js} +1 -1
- package/chunks/{edit-74Q4AFHQ.js → edit-3MLXHQPW.js} +22 -12
- package/chunks/{en-FIUWJSZR.js → en-HGJ2SPLM.js} +4 -3
- package/chunks/{enter-worktree-H72HXC7D.js → enter-worktree-OCA4SG6D.js} +35 -11
- package/chunks/{exit-worktree-FGIQO3S3.js → exit-worktree-6EDLXVEV.js} +35 -11
- package/chunks/{exitPlanMode-NBR2PK2D.js → exitPlanMode-H75KHRX4.js} +9 -11
- package/chunks/{fr-OFJFHLCR.js → fr-CJULI7ZX.js} +3 -3
- package/chunks/{geminiContentGenerator-33RP4WKD.js → geminiContentGenerator-E7Y6TCPU.js} +1 -1
- package/chunks/{glob-WEE3CJL6.js → glob-JFFSKARO.js} +9 -11
- package/chunks/{grep-DZKSBFZK.js → grep-7TAFR7MX.js} +9 -11
- package/chunks/{ja-V6OQ6VL7.js → ja-L7CHRQEW.js} +3 -3
- package/chunks/{ls-6F3VSP6S.js → ls-7HD6XG3V.js} +1 -1
- package/chunks/{lsp-67Y7DJN5.js → lsp-ZZSFCIWD.js} +1 -1
- package/chunks/{monitor-EDZWEZVS.js → monitor-YX2ABLXH.js} +21 -11
- package/chunks/notebook-edit-EEJEGFZR.js +756 -0
- package/chunks/{openaiContentGenerator-5NQG3W64.js → openaiContentGenerator-BSAWHGQJ.js} +9 -8
- package/chunks/{pt-ZLE6SA4A.js → pt-M6JULLEQ.js} +3 -3
- package/chunks/{qwenContentGenerator-4DPUUS6R.js → qwenContentGenerator-47XRHQXM.js} +11 -13
- package/chunks/{qwenOAuth2-JE7H47TE.js → qwenOAuth2-EEJGROP7.js} +7 -1
- package/chunks/{read-file-CQOF7BQ2.js → read-file-O53WD46Y.js} +4 -5
- package/chunks/{ripGrep-KR5LKGTI.js → ripGrep-OXNZ5Z3T.js} +9 -11
- package/chunks/{ru-A4OHIUNN.js → ru-QILM4HBC.js} +3 -3
- package/chunks/{send-message-GB4AQZNC.js → send-message-ULK4MQXJ.js} +22 -1
- package/chunks/{serve-GAD2PEST.js → serve-H2REZAYD.js} +13728 -3026
- package/chunks/{shell-E2HMCBGR.js → shell-DET66JID.js} +9 -11
- package/chunks/{skill-KDZH6UZ6.js → skill-ZIXPX3L3.js} +19 -6
- package/chunks/{src-LY4RU5AI.js → src-PN3XGQYP.js} +205 -13
- package/chunks/{syntheticOutput-HFL3DE7R.js → syntheticOutput-IS2X5OZ2.js} +2 -2
- package/chunks/{task-stop-ZQF26RXS.js → task-stop-7QSJGSSP.js} +1 -1
- package/chunks/{todoWrite-U4SC643O.js → todoWrite-7CVACFUX.js} +2 -2
- package/chunks/{tool-search-U4XQVLFU.js → tool-search-GTYLSGZ3.js} +4 -5
- package/chunks/{web-fetch-BRWZ4WSE.js → web-fetch-ENQ2I5JA.js} +5 -2
- package/chunks/{write-file-NBLRMNGB.js → write-file-NILNEZCR.js} +19 -12
- package/chunks/{zh-V32QONGV.js → zh-PWL2NKY3.js} +4 -3
- package/chunks/{zh-TW-552S24LR.js → zh-TW-S3YGWICZ.js} +4 -3
- package/cli.js +14832 -49049
- package/locales/ca.js +4 -5
- package/locales/de.js +4 -5
- package/locales/en.js +6 -5
- package/locales/fr.js +4 -5
- package/locales/ja.js +4 -5
- package/locales/pt.js +4 -5
- package/locales/ru.js +4 -5
- package/locales/zh-TW.js +5 -4
- package/locales/zh.js +5 -4
- package/package.json +2 -2
- package/chunks/chunk-3MBY4GKN.js +0 -350
- package/chunks/chunk-5P5XGNYH.js +0 -93
- package/chunks/chunk-JHMX4QTD.js +0 -2306
- package/chunks/chunk-SYCJMSIJ.js +0 -82
- package/chunks/chunk-Y6Z2O3WR.js +0 -33
|
@@ -0,0 +1,956 @@
|
|
|
1
|
+
// Force strict mode and setup for ESM
|
|
2
|
+
"use strict";
|
|
3
|
+
import {
|
|
4
|
+
t
|
|
5
|
+
} from "./chunk-HW5S7L73.js";
|
|
6
|
+
import {
|
|
7
|
+
getCoreSystemPrompt
|
|
8
|
+
} from "./chunk-BAZDG3QU.js";
|
|
9
|
+
import {
|
|
10
|
+
buildSkillLlmContent
|
|
11
|
+
} from "./chunk-G7YTSRES.js";
|
|
12
|
+
import {
|
|
13
|
+
DiscoveredMCPTool,
|
|
14
|
+
uiTelemetryService
|
|
15
|
+
} from "./chunk-JCR2WRXZ.js";
|
|
16
|
+
import {
|
|
17
|
+
DEFAULT_TOKEN_LIMIT
|
|
18
|
+
} from "./chunk-MAY32HXD.js";
|
|
19
|
+
import {
|
|
20
|
+
ToolNames
|
|
21
|
+
} from "./chunk-PVVL5Q3W.js";
|
|
22
|
+
import {
|
|
23
|
+
init_esbuild_shims
|
|
24
|
+
} from "./chunk-A4BMJM77.js";
|
|
25
|
+
import {
|
|
26
|
+
__commonJS,
|
|
27
|
+
__name,
|
|
28
|
+
__toESM
|
|
29
|
+
} from "./chunk-J2S4EL5Y.js";
|
|
30
|
+
|
|
31
|
+
// node_modules/react/cjs/react.production.js
|
|
32
|
+
var require_react_production = __commonJS({
|
|
33
|
+
"node_modules/react/cjs/react.production.js"(exports) {
|
|
34
|
+
"use strict";
|
|
35
|
+
init_esbuild_shims();
|
|
36
|
+
var REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element");
|
|
37
|
+
var REACT_PORTAL_TYPE = Symbol.for("react.portal");
|
|
38
|
+
var REACT_FRAGMENT_TYPE = Symbol.for("react.fragment");
|
|
39
|
+
var REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode");
|
|
40
|
+
var REACT_PROFILER_TYPE = Symbol.for("react.profiler");
|
|
41
|
+
var REACT_CONSUMER_TYPE = Symbol.for("react.consumer");
|
|
42
|
+
var REACT_CONTEXT_TYPE = Symbol.for("react.context");
|
|
43
|
+
var REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref");
|
|
44
|
+
var REACT_SUSPENSE_TYPE = Symbol.for("react.suspense");
|
|
45
|
+
var REACT_MEMO_TYPE = Symbol.for("react.memo");
|
|
46
|
+
var REACT_LAZY_TYPE = Symbol.for("react.lazy");
|
|
47
|
+
var REACT_ACTIVITY_TYPE = Symbol.for("react.activity");
|
|
48
|
+
var MAYBE_ITERATOR_SYMBOL = Symbol.iterator;
|
|
49
|
+
function getIteratorFn(maybeIterable) {
|
|
50
|
+
if (null === maybeIterable || "object" !== typeof maybeIterable) return null;
|
|
51
|
+
maybeIterable = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable["@@iterator"];
|
|
52
|
+
return "function" === typeof maybeIterable ? maybeIterable : null;
|
|
53
|
+
}
|
|
54
|
+
__name(getIteratorFn, "getIteratorFn");
|
|
55
|
+
var ReactNoopUpdateQueue = {
|
|
56
|
+
isMounted: /* @__PURE__ */ __name(function() {
|
|
57
|
+
return false;
|
|
58
|
+
}, "isMounted"),
|
|
59
|
+
enqueueForceUpdate: /* @__PURE__ */ __name(function() {
|
|
60
|
+
}, "enqueueForceUpdate"),
|
|
61
|
+
enqueueReplaceState: /* @__PURE__ */ __name(function() {
|
|
62
|
+
}, "enqueueReplaceState"),
|
|
63
|
+
enqueueSetState: /* @__PURE__ */ __name(function() {
|
|
64
|
+
}, "enqueueSetState")
|
|
65
|
+
};
|
|
66
|
+
var assign = Object.assign;
|
|
67
|
+
var emptyObject = {};
|
|
68
|
+
function Component(props, context, updater) {
|
|
69
|
+
this.props = props;
|
|
70
|
+
this.context = context;
|
|
71
|
+
this.refs = emptyObject;
|
|
72
|
+
this.updater = updater || ReactNoopUpdateQueue;
|
|
73
|
+
}
|
|
74
|
+
__name(Component, "Component");
|
|
75
|
+
Component.prototype.isReactComponent = {};
|
|
76
|
+
Component.prototype.setState = function(partialState, callback) {
|
|
77
|
+
if ("object" !== typeof partialState && "function" !== typeof partialState && null != partialState)
|
|
78
|
+
throw Error(
|
|
79
|
+
"takes an object of state variables to update or a function which returns an object of state variables."
|
|
80
|
+
);
|
|
81
|
+
this.updater.enqueueSetState(this, partialState, callback, "setState");
|
|
82
|
+
};
|
|
83
|
+
Component.prototype.forceUpdate = function(callback) {
|
|
84
|
+
this.updater.enqueueForceUpdate(this, callback, "forceUpdate");
|
|
85
|
+
};
|
|
86
|
+
function ComponentDummy() {
|
|
87
|
+
}
|
|
88
|
+
__name(ComponentDummy, "ComponentDummy");
|
|
89
|
+
ComponentDummy.prototype = Component.prototype;
|
|
90
|
+
function PureComponent(props, context, updater) {
|
|
91
|
+
this.props = props;
|
|
92
|
+
this.context = context;
|
|
93
|
+
this.refs = emptyObject;
|
|
94
|
+
this.updater = updater || ReactNoopUpdateQueue;
|
|
95
|
+
}
|
|
96
|
+
__name(PureComponent, "PureComponent");
|
|
97
|
+
var pureComponentPrototype = PureComponent.prototype = new ComponentDummy();
|
|
98
|
+
pureComponentPrototype.constructor = PureComponent;
|
|
99
|
+
assign(pureComponentPrototype, Component.prototype);
|
|
100
|
+
pureComponentPrototype.isPureReactComponent = true;
|
|
101
|
+
var isArrayImpl = Array.isArray;
|
|
102
|
+
function noop() {
|
|
103
|
+
}
|
|
104
|
+
__name(noop, "noop");
|
|
105
|
+
var ReactSharedInternals = { H: null, A: null, T: null, S: null };
|
|
106
|
+
var hasOwnProperty = Object.prototype.hasOwnProperty;
|
|
107
|
+
function ReactElement(type, key, props) {
|
|
108
|
+
var refProp = props.ref;
|
|
109
|
+
return {
|
|
110
|
+
$$typeof: REACT_ELEMENT_TYPE,
|
|
111
|
+
type,
|
|
112
|
+
key,
|
|
113
|
+
ref: void 0 !== refProp ? refProp : null,
|
|
114
|
+
props
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
__name(ReactElement, "ReactElement");
|
|
118
|
+
function cloneAndReplaceKey(oldElement, newKey) {
|
|
119
|
+
return ReactElement(oldElement.type, newKey, oldElement.props);
|
|
120
|
+
}
|
|
121
|
+
__name(cloneAndReplaceKey, "cloneAndReplaceKey");
|
|
122
|
+
function isValidElement(object) {
|
|
123
|
+
return "object" === typeof object && null !== object && object.$$typeof === REACT_ELEMENT_TYPE;
|
|
124
|
+
}
|
|
125
|
+
__name(isValidElement, "isValidElement");
|
|
126
|
+
function escape(key) {
|
|
127
|
+
var escaperLookup = { "=": "=0", ":": "=2" };
|
|
128
|
+
return "$" + key.replace(/[=:]/g, function(match) {
|
|
129
|
+
return escaperLookup[match];
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
__name(escape, "escape");
|
|
133
|
+
var userProvidedKeyEscapeRegex = /\/+/g;
|
|
134
|
+
function getElementKey(element, index) {
|
|
135
|
+
return "object" === typeof element && null !== element && null != element.key ? escape("" + element.key) : index.toString(36);
|
|
136
|
+
}
|
|
137
|
+
__name(getElementKey, "getElementKey");
|
|
138
|
+
function resolveThenable(thenable) {
|
|
139
|
+
switch (thenable.status) {
|
|
140
|
+
case "fulfilled":
|
|
141
|
+
return thenable.value;
|
|
142
|
+
case "rejected":
|
|
143
|
+
throw thenable.reason;
|
|
144
|
+
default:
|
|
145
|
+
switch ("string" === typeof thenable.status ? thenable.then(noop, noop) : (thenable.status = "pending", thenable.then(
|
|
146
|
+
function(fulfilledValue) {
|
|
147
|
+
"pending" === thenable.status && (thenable.status = "fulfilled", thenable.value = fulfilledValue);
|
|
148
|
+
},
|
|
149
|
+
function(error) {
|
|
150
|
+
"pending" === thenable.status && (thenable.status = "rejected", thenable.reason = error);
|
|
151
|
+
}
|
|
152
|
+
)), thenable.status) {
|
|
153
|
+
case "fulfilled":
|
|
154
|
+
return thenable.value;
|
|
155
|
+
case "rejected":
|
|
156
|
+
throw thenable.reason;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
throw thenable;
|
|
160
|
+
}
|
|
161
|
+
__name(resolveThenable, "resolveThenable");
|
|
162
|
+
function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {
|
|
163
|
+
var type = typeof children;
|
|
164
|
+
if ("undefined" === type || "boolean" === type) children = null;
|
|
165
|
+
var invokeCallback = false;
|
|
166
|
+
if (null === children) invokeCallback = true;
|
|
167
|
+
else
|
|
168
|
+
switch (type) {
|
|
169
|
+
case "bigint":
|
|
170
|
+
case "string":
|
|
171
|
+
case "number":
|
|
172
|
+
invokeCallback = true;
|
|
173
|
+
break;
|
|
174
|
+
case "object":
|
|
175
|
+
switch (children.$$typeof) {
|
|
176
|
+
case REACT_ELEMENT_TYPE:
|
|
177
|
+
case REACT_PORTAL_TYPE:
|
|
178
|
+
invokeCallback = true;
|
|
179
|
+
break;
|
|
180
|
+
case REACT_LAZY_TYPE:
|
|
181
|
+
return invokeCallback = children._init, mapIntoArray(
|
|
182
|
+
invokeCallback(children._payload),
|
|
183
|
+
array,
|
|
184
|
+
escapedPrefix,
|
|
185
|
+
nameSoFar,
|
|
186
|
+
callback
|
|
187
|
+
);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
if (invokeCallback)
|
|
191
|
+
return callback = callback(children), invokeCallback = "" === nameSoFar ? "." + getElementKey(children, 0) : nameSoFar, isArrayImpl(callback) ? (escapedPrefix = "", null != invokeCallback && (escapedPrefix = invokeCallback.replace(userProvidedKeyEscapeRegex, "$&/") + "/"), mapIntoArray(callback, array, escapedPrefix, "", function(c) {
|
|
192
|
+
return c;
|
|
193
|
+
})) : null != callback && (isValidElement(callback) && (callback = cloneAndReplaceKey(
|
|
194
|
+
callback,
|
|
195
|
+
escapedPrefix + (null == callback.key || children && children.key === callback.key ? "" : ("" + callback.key).replace(
|
|
196
|
+
userProvidedKeyEscapeRegex,
|
|
197
|
+
"$&/"
|
|
198
|
+
) + "/") + invokeCallback
|
|
199
|
+
)), array.push(callback)), 1;
|
|
200
|
+
invokeCallback = 0;
|
|
201
|
+
var nextNamePrefix = "" === nameSoFar ? "." : nameSoFar + ":";
|
|
202
|
+
if (isArrayImpl(children))
|
|
203
|
+
for (var i = 0; i < children.length; i++)
|
|
204
|
+
nameSoFar = children[i], type = nextNamePrefix + getElementKey(nameSoFar, i), invokeCallback += mapIntoArray(
|
|
205
|
+
nameSoFar,
|
|
206
|
+
array,
|
|
207
|
+
escapedPrefix,
|
|
208
|
+
type,
|
|
209
|
+
callback
|
|
210
|
+
);
|
|
211
|
+
else if (i = getIteratorFn(children), "function" === typeof i)
|
|
212
|
+
for (children = i.call(children), i = 0; !(nameSoFar = children.next()).done; )
|
|
213
|
+
nameSoFar = nameSoFar.value, type = nextNamePrefix + getElementKey(nameSoFar, i++), invokeCallback += mapIntoArray(
|
|
214
|
+
nameSoFar,
|
|
215
|
+
array,
|
|
216
|
+
escapedPrefix,
|
|
217
|
+
type,
|
|
218
|
+
callback
|
|
219
|
+
);
|
|
220
|
+
else if ("object" === type) {
|
|
221
|
+
if ("function" === typeof children.then)
|
|
222
|
+
return mapIntoArray(
|
|
223
|
+
resolveThenable(children),
|
|
224
|
+
array,
|
|
225
|
+
escapedPrefix,
|
|
226
|
+
nameSoFar,
|
|
227
|
+
callback
|
|
228
|
+
);
|
|
229
|
+
array = String(children);
|
|
230
|
+
throw Error(
|
|
231
|
+
"Objects are not valid as a React child (found: " + ("[object Object]" === array ? "object with keys {" + Object.keys(children).join(", ") + "}" : array) + "). If you meant to render a collection of children, use an array instead."
|
|
232
|
+
);
|
|
233
|
+
}
|
|
234
|
+
return invokeCallback;
|
|
235
|
+
}
|
|
236
|
+
__name(mapIntoArray, "mapIntoArray");
|
|
237
|
+
function mapChildren(children, func, context) {
|
|
238
|
+
if (null == children) return children;
|
|
239
|
+
var result = [], count = 0;
|
|
240
|
+
mapIntoArray(children, result, "", "", function(child) {
|
|
241
|
+
return func.call(context, child, count++);
|
|
242
|
+
});
|
|
243
|
+
return result;
|
|
244
|
+
}
|
|
245
|
+
__name(mapChildren, "mapChildren");
|
|
246
|
+
function lazyInitializer(payload) {
|
|
247
|
+
if (-1 === payload._status) {
|
|
248
|
+
var ctor = payload._result;
|
|
249
|
+
ctor = ctor();
|
|
250
|
+
ctor.then(
|
|
251
|
+
function(moduleObject) {
|
|
252
|
+
if (0 === payload._status || -1 === payload._status)
|
|
253
|
+
payload._status = 1, payload._result = moduleObject;
|
|
254
|
+
},
|
|
255
|
+
function(error) {
|
|
256
|
+
if (0 === payload._status || -1 === payload._status)
|
|
257
|
+
payload._status = 2, payload._result = error;
|
|
258
|
+
}
|
|
259
|
+
);
|
|
260
|
+
-1 === payload._status && (payload._status = 0, payload._result = ctor);
|
|
261
|
+
}
|
|
262
|
+
if (1 === payload._status) return payload._result.default;
|
|
263
|
+
throw payload._result;
|
|
264
|
+
}
|
|
265
|
+
__name(lazyInitializer, "lazyInitializer");
|
|
266
|
+
var reportGlobalError = "function" === typeof reportError ? reportError : function(error) {
|
|
267
|
+
if ("object" === typeof window && "function" === typeof window.ErrorEvent) {
|
|
268
|
+
var event = new window.ErrorEvent("error", {
|
|
269
|
+
bubbles: true,
|
|
270
|
+
cancelable: true,
|
|
271
|
+
message: "object" === typeof error && null !== error && "string" === typeof error.message ? String(error.message) : String(error),
|
|
272
|
+
error
|
|
273
|
+
});
|
|
274
|
+
if (!window.dispatchEvent(event)) return;
|
|
275
|
+
} else if ("object" === typeof process && "function" === typeof process.emit) {
|
|
276
|
+
process.emit("uncaughtException", error);
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
console.error(error);
|
|
280
|
+
};
|
|
281
|
+
var Children = {
|
|
282
|
+
map: mapChildren,
|
|
283
|
+
forEach: /* @__PURE__ */ __name(function(children, forEachFunc, forEachContext) {
|
|
284
|
+
mapChildren(
|
|
285
|
+
children,
|
|
286
|
+
function() {
|
|
287
|
+
forEachFunc.apply(this, arguments);
|
|
288
|
+
},
|
|
289
|
+
forEachContext
|
|
290
|
+
);
|
|
291
|
+
}, "forEach"),
|
|
292
|
+
count: /* @__PURE__ */ __name(function(children) {
|
|
293
|
+
var n = 0;
|
|
294
|
+
mapChildren(children, function() {
|
|
295
|
+
n++;
|
|
296
|
+
});
|
|
297
|
+
return n;
|
|
298
|
+
}, "count"),
|
|
299
|
+
toArray: /* @__PURE__ */ __name(function(children) {
|
|
300
|
+
return mapChildren(children, function(child) {
|
|
301
|
+
return child;
|
|
302
|
+
}) || [];
|
|
303
|
+
}, "toArray"),
|
|
304
|
+
only: /* @__PURE__ */ __name(function(children) {
|
|
305
|
+
if (!isValidElement(children))
|
|
306
|
+
throw Error(
|
|
307
|
+
"React.Children.only expected to receive a single React element child."
|
|
308
|
+
);
|
|
309
|
+
return children;
|
|
310
|
+
}, "only")
|
|
311
|
+
};
|
|
312
|
+
exports.Activity = REACT_ACTIVITY_TYPE;
|
|
313
|
+
exports.Children = Children;
|
|
314
|
+
exports.Component = Component;
|
|
315
|
+
exports.Fragment = REACT_FRAGMENT_TYPE;
|
|
316
|
+
exports.Profiler = REACT_PROFILER_TYPE;
|
|
317
|
+
exports.PureComponent = PureComponent;
|
|
318
|
+
exports.StrictMode = REACT_STRICT_MODE_TYPE;
|
|
319
|
+
exports.Suspense = REACT_SUSPENSE_TYPE;
|
|
320
|
+
exports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = ReactSharedInternals;
|
|
321
|
+
exports.__COMPILER_RUNTIME = {
|
|
322
|
+
__proto__: null,
|
|
323
|
+
c: /* @__PURE__ */ __name(function(size) {
|
|
324
|
+
return ReactSharedInternals.H.useMemoCache(size);
|
|
325
|
+
}, "c")
|
|
326
|
+
};
|
|
327
|
+
exports.cache = function(fn) {
|
|
328
|
+
return function() {
|
|
329
|
+
return fn.apply(null, arguments);
|
|
330
|
+
};
|
|
331
|
+
};
|
|
332
|
+
exports.cacheSignal = function() {
|
|
333
|
+
return null;
|
|
334
|
+
};
|
|
335
|
+
exports.cloneElement = function(element, config, children) {
|
|
336
|
+
if (null === element || void 0 === element)
|
|
337
|
+
throw Error(
|
|
338
|
+
"The argument must be a React element, but you passed " + element + "."
|
|
339
|
+
);
|
|
340
|
+
var props = assign({}, element.props), key = element.key;
|
|
341
|
+
if (null != config)
|
|
342
|
+
for (propName in void 0 !== config.key && (key = "" + config.key), config)
|
|
343
|
+
!hasOwnProperty.call(config, propName) || "key" === propName || "__self" === propName || "__source" === propName || "ref" === propName && void 0 === config.ref || (props[propName] = config[propName]);
|
|
344
|
+
var propName = arguments.length - 2;
|
|
345
|
+
if (1 === propName) props.children = children;
|
|
346
|
+
else if (1 < propName) {
|
|
347
|
+
for (var childArray = Array(propName), i = 0; i < propName; i++)
|
|
348
|
+
childArray[i] = arguments[i + 2];
|
|
349
|
+
props.children = childArray;
|
|
350
|
+
}
|
|
351
|
+
return ReactElement(element.type, key, props);
|
|
352
|
+
};
|
|
353
|
+
exports.createContext = function(defaultValue) {
|
|
354
|
+
defaultValue = {
|
|
355
|
+
$$typeof: REACT_CONTEXT_TYPE,
|
|
356
|
+
_currentValue: defaultValue,
|
|
357
|
+
_currentValue2: defaultValue,
|
|
358
|
+
_threadCount: 0,
|
|
359
|
+
Provider: null,
|
|
360
|
+
Consumer: null
|
|
361
|
+
};
|
|
362
|
+
defaultValue.Provider = defaultValue;
|
|
363
|
+
defaultValue.Consumer = {
|
|
364
|
+
$$typeof: REACT_CONSUMER_TYPE,
|
|
365
|
+
_context: defaultValue
|
|
366
|
+
};
|
|
367
|
+
return defaultValue;
|
|
368
|
+
};
|
|
369
|
+
exports.createElement = function(type, config, children) {
|
|
370
|
+
var propName, props = {}, key = null;
|
|
371
|
+
if (null != config)
|
|
372
|
+
for (propName in void 0 !== config.key && (key = "" + config.key), config)
|
|
373
|
+
hasOwnProperty.call(config, propName) && "key" !== propName && "__self" !== propName && "__source" !== propName && (props[propName] = config[propName]);
|
|
374
|
+
var childrenLength = arguments.length - 2;
|
|
375
|
+
if (1 === childrenLength) props.children = children;
|
|
376
|
+
else if (1 < childrenLength) {
|
|
377
|
+
for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)
|
|
378
|
+
childArray[i] = arguments[i + 2];
|
|
379
|
+
props.children = childArray;
|
|
380
|
+
}
|
|
381
|
+
if (type && type.defaultProps)
|
|
382
|
+
for (propName in childrenLength = type.defaultProps, childrenLength)
|
|
383
|
+
void 0 === props[propName] && (props[propName] = childrenLength[propName]);
|
|
384
|
+
return ReactElement(type, key, props);
|
|
385
|
+
};
|
|
386
|
+
exports.createRef = function() {
|
|
387
|
+
return { current: null };
|
|
388
|
+
};
|
|
389
|
+
exports.forwardRef = function(render) {
|
|
390
|
+
return { $$typeof: REACT_FORWARD_REF_TYPE, render };
|
|
391
|
+
};
|
|
392
|
+
exports.isValidElement = isValidElement;
|
|
393
|
+
exports.lazy = function(ctor) {
|
|
394
|
+
return {
|
|
395
|
+
$$typeof: REACT_LAZY_TYPE,
|
|
396
|
+
_payload: { _status: -1, _result: ctor },
|
|
397
|
+
_init: lazyInitializer
|
|
398
|
+
};
|
|
399
|
+
};
|
|
400
|
+
exports.memo = function(type, compare) {
|
|
401
|
+
return {
|
|
402
|
+
$$typeof: REACT_MEMO_TYPE,
|
|
403
|
+
type,
|
|
404
|
+
compare: void 0 === compare ? null : compare
|
|
405
|
+
};
|
|
406
|
+
};
|
|
407
|
+
exports.startTransition = function(scope) {
|
|
408
|
+
var prevTransition = ReactSharedInternals.T, currentTransition = {};
|
|
409
|
+
ReactSharedInternals.T = currentTransition;
|
|
410
|
+
try {
|
|
411
|
+
var returnValue = scope(), onStartTransitionFinish = ReactSharedInternals.S;
|
|
412
|
+
null !== onStartTransitionFinish && onStartTransitionFinish(currentTransition, returnValue);
|
|
413
|
+
"object" === typeof returnValue && null !== returnValue && "function" === typeof returnValue.then && returnValue.then(noop, reportGlobalError);
|
|
414
|
+
} catch (error) {
|
|
415
|
+
reportGlobalError(error);
|
|
416
|
+
} finally {
|
|
417
|
+
null !== prevTransition && null !== currentTransition.types && (prevTransition.types = currentTransition.types), ReactSharedInternals.T = prevTransition;
|
|
418
|
+
}
|
|
419
|
+
};
|
|
420
|
+
exports.unstable_useCacheRefresh = function() {
|
|
421
|
+
return ReactSharedInternals.H.useCacheRefresh();
|
|
422
|
+
};
|
|
423
|
+
exports.use = function(usable) {
|
|
424
|
+
return ReactSharedInternals.H.use(usable);
|
|
425
|
+
};
|
|
426
|
+
exports.useActionState = function(action, initialState, permalink) {
|
|
427
|
+
return ReactSharedInternals.H.useActionState(action, initialState, permalink);
|
|
428
|
+
};
|
|
429
|
+
exports.useCallback = function(callback, deps) {
|
|
430
|
+
return ReactSharedInternals.H.useCallback(callback, deps);
|
|
431
|
+
};
|
|
432
|
+
exports.useContext = function(Context) {
|
|
433
|
+
return ReactSharedInternals.H.useContext(Context);
|
|
434
|
+
};
|
|
435
|
+
exports.useDebugValue = function() {
|
|
436
|
+
};
|
|
437
|
+
exports.useDeferredValue = function(value, initialValue) {
|
|
438
|
+
return ReactSharedInternals.H.useDeferredValue(value, initialValue);
|
|
439
|
+
};
|
|
440
|
+
exports.useEffect = function(create, deps) {
|
|
441
|
+
return ReactSharedInternals.H.useEffect(create, deps);
|
|
442
|
+
};
|
|
443
|
+
exports.useEffectEvent = function(callback) {
|
|
444
|
+
return ReactSharedInternals.H.useEffectEvent(callback);
|
|
445
|
+
};
|
|
446
|
+
exports.useId = function() {
|
|
447
|
+
return ReactSharedInternals.H.useId();
|
|
448
|
+
};
|
|
449
|
+
exports.useImperativeHandle = function(ref, create, deps) {
|
|
450
|
+
return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);
|
|
451
|
+
};
|
|
452
|
+
exports.useInsertionEffect = function(create, deps) {
|
|
453
|
+
return ReactSharedInternals.H.useInsertionEffect(create, deps);
|
|
454
|
+
};
|
|
455
|
+
exports.useLayoutEffect = function(create, deps) {
|
|
456
|
+
return ReactSharedInternals.H.useLayoutEffect(create, deps);
|
|
457
|
+
};
|
|
458
|
+
exports.useMemo = function(create, deps) {
|
|
459
|
+
return ReactSharedInternals.H.useMemo(create, deps);
|
|
460
|
+
};
|
|
461
|
+
exports.useOptimistic = function(passthrough, reducer) {
|
|
462
|
+
return ReactSharedInternals.H.useOptimistic(passthrough, reducer);
|
|
463
|
+
};
|
|
464
|
+
exports.useReducer = function(reducer, initialArg, init) {
|
|
465
|
+
return ReactSharedInternals.H.useReducer(reducer, initialArg, init);
|
|
466
|
+
};
|
|
467
|
+
exports.useRef = function(initialValue) {
|
|
468
|
+
return ReactSharedInternals.H.useRef(initialValue);
|
|
469
|
+
};
|
|
470
|
+
exports.useState = function(initialState) {
|
|
471
|
+
return ReactSharedInternals.H.useState(initialState);
|
|
472
|
+
};
|
|
473
|
+
exports.useSyncExternalStore = function(subscribe, getSnapshot, getServerSnapshot) {
|
|
474
|
+
return ReactSharedInternals.H.useSyncExternalStore(
|
|
475
|
+
subscribe,
|
|
476
|
+
getSnapshot,
|
|
477
|
+
getServerSnapshot
|
|
478
|
+
);
|
|
479
|
+
};
|
|
480
|
+
exports.useTransition = function() {
|
|
481
|
+
return ReactSharedInternals.H.useTransition();
|
|
482
|
+
};
|
|
483
|
+
exports.version = "19.2.4";
|
|
484
|
+
}
|
|
485
|
+
});
|
|
486
|
+
|
|
487
|
+
// node_modules/react/index.js
|
|
488
|
+
var require_react = __commonJS({
|
|
489
|
+
"node_modules/react/index.js"(exports, module) {
|
|
490
|
+
"use strict";
|
|
491
|
+
init_esbuild_shims();
|
|
492
|
+
if (true) {
|
|
493
|
+
module.exports = require_react_production();
|
|
494
|
+
} else {
|
|
495
|
+
module.exports = null;
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
});
|
|
499
|
+
|
|
500
|
+
// packages/cli/src/ui/commands/contextCommand.ts
|
|
501
|
+
init_esbuild_shims();
|
|
502
|
+
|
|
503
|
+
// packages/cli/src/ui/commands/types.ts
|
|
504
|
+
init_esbuild_shims();
|
|
505
|
+
|
|
506
|
+
// packages/cli/src/ui/types.ts
|
|
507
|
+
init_esbuild_shims();
|
|
508
|
+
var import_react = __toESM(require_react(), 1);
|
|
509
|
+
var TERMINAL_GOAL_STATUS_KINDS = [
|
|
510
|
+
"achieved",
|
|
511
|
+
"aborted",
|
|
512
|
+
"failed"
|
|
513
|
+
];
|
|
514
|
+
function isTerminalGoalStatusKind(kind) {
|
|
515
|
+
return TERMINAL_GOAL_STATUS_KINDS.includes(
|
|
516
|
+
kind
|
|
517
|
+
);
|
|
518
|
+
}
|
|
519
|
+
__name(isTerminalGoalStatusKind, "isTerminalGoalStatusKind");
|
|
520
|
+
|
|
521
|
+
// packages/cli/src/ui/commands/contextCommand.ts
|
|
522
|
+
var DEFAULT_COMPRESSION_THRESHOLD = 0.7;
|
|
523
|
+
function estimateTokens(text) {
|
|
524
|
+
if (!text || text.length === 0) return 0;
|
|
525
|
+
let asciiChars = 0;
|
|
526
|
+
let nonAsciiChars = 0;
|
|
527
|
+
for (let i = 0; i < text.length; i++) {
|
|
528
|
+
const charCode = text.charCodeAt(i);
|
|
529
|
+
if (charCode < 128) {
|
|
530
|
+
asciiChars++;
|
|
531
|
+
} else {
|
|
532
|
+
nonAsciiChars++;
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
return Math.ceil(asciiChars / 4 + nonAsciiChars * 1.5);
|
|
536
|
+
}
|
|
537
|
+
__name(estimateTokens, "estimateTokens");
|
|
538
|
+
function parseMemoryFiles(memoryContent) {
|
|
539
|
+
if (!memoryContent || memoryContent.trim().length === 0) return [];
|
|
540
|
+
const results = [];
|
|
541
|
+
const regex = /--- Context from: (.+?) ---\n([\s\S]*?)--- End of Context from: \1 ---/g;
|
|
542
|
+
let match;
|
|
543
|
+
while ((match = regex.exec(memoryContent)) !== null) {
|
|
544
|
+
const filePath = match[1];
|
|
545
|
+
const content = match[2];
|
|
546
|
+
results.push({
|
|
547
|
+
path: filePath,
|
|
548
|
+
tokens: estimateTokens(content)
|
|
549
|
+
});
|
|
550
|
+
}
|
|
551
|
+
if (results.length === 0 && memoryContent.trim().length > 0) {
|
|
552
|
+
results.push({
|
|
553
|
+
path: t("memory"),
|
|
554
|
+
tokens: estimateTokens(memoryContent)
|
|
555
|
+
});
|
|
556
|
+
}
|
|
557
|
+
return results;
|
|
558
|
+
}
|
|
559
|
+
__name(parseMemoryFiles, "parseMemoryFiles");
|
|
560
|
+
async function collectContextData(config, showDetails) {
|
|
561
|
+
const modelName = config.getModel() || "unknown";
|
|
562
|
+
const contentGeneratorConfig = config.getContentGeneratorConfig();
|
|
563
|
+
const contextWindowSize = contentGeneratorConfig.contextWindowSize ?? DEFAULT_TOKEN_LIMIT;
|
|
564
|
+
const apiTotalTokens = uiTelemetryService.getLastPromptTokenCount();
|
|
565
|
+
const apiCachedTokens = uiTelemetryService.getLastCachedContentTokenCount();
|
|
566
|
+
const systemPromptText = getCoreSystemPrompt(void 0, modelName);
|
|
567
|
+
const systemPromptTokens = estimateTokens(systemPromptText);
|
|
568
|
+
const toolRegistry = config.getToolRegistry();
|
|
569
|
+
const allTools = toolRegistry ? toolRegistry.getAllTools() : [];
|
|
570
|
+
const toolDeclarations = toolRegistry ? toolRegistry.getFunctionDeclarations({ includeDeferred: true }) : [];
|
|
571
|
+
const toolsJsonStr = JSON.stringify(toolDeclarations);
|
|
572
|
+
const allToolsTokens = estimateTokens(toolsJsonStr);
|
|
573
|
+
const builtinTools = [];
|
|
574
|
+
const mcpTools = [];
|
|
575
|
+
for (const tool of allTools) {
|
|
576
|
+
const toolJsonStr = JSON.stringify(tool.schema);
|
|
577
|
+
const tokens = estimateTokens(toolJsonStr);
|
|
578
|
+
if (tool instanceof DiscoveredMCPTool) {
|
|
579
|
+
mcpTools.push({
|
|
580
|
+
name: `${tool.serverName}__${tool.serverToolName || tool.name}`,
|
|
581
|
+
tokens
|
|
582
|
+
});
|
|
583
|
+
} else if (tool.name !== ToolNames.SKILL) {
|
|
584
|
+
builtinTools.push({
|
|
585
|
+
name: tool.name,
|
|
586
|
+
tokens
|
|
587
|
+
});
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
const memoryContent = config.getUserMemory();
|
|
591
|
+
const memoryFiles = parseMemoryFiles(memoryContent);
|
|
592
|
+
const memoryFilesTokens = memoryFiles.reduce((sum, f) => sum + f.tokens, 0);
|
|
593
|
+
const skillTool = allTools.find((tool) => tool.name === ToolNames.SKILL);
|
|
594
|
+
const skillToolDefinitionTokens = skillTool ? estimateTokens(JSON.stringify(skillTool.schema)) : 0;
|
|
595
|
+
const loadedSkillNames = skillTool && "getLoadedSkillNames" in skillTool ? skillTool.getLoadedSkillNames() : /* @__PURE__ */ new Set();
|
|
596
|
+
const skillManager = config.getSkillManager();
|
|
597
|
+
const skillConfigs = skillManager ? await skillManager.listSkills() : [];
|
|
598
|
+
let loadedBodiesTokens = 0;
|
|
599
|
+
const skills = skillConfigs.map((skill) => {
|
|
600
|
+
const listingTokens = estimateTokens(
|
|
601
|
+
`<skill>
|
|
602
|
+
<name>
|
|
603
|
+
${skill.name}
|
|
604
|
+
</name>
|
|
605
|
+
<description>
|
|
606
|
+
${skill.description} (${skill.level})
|
|
607
|
+
</description>
|
|
608
|
+
<location>
|
|
609
|
+
${skill.level}
|
|
610
|
+
</location>
|
|
611
|
+
</skill>`
|
|
612
|
+
);
|
|
613
|
+
const isLoaded = loadedSkillNames.has(skill.name);
|
|
614
|
+
let bodyTokens;
|
|
615
|
+
if (isLoaded && skill.body) {
|
|
616
|
+
const baseDir = skill.filePath ? skill.filePath.replace(/\/[^/]+$/, "") : "";
|
|
617
|
+
bodyTokens = estimateTokens(buildSkillLlmContent(baseDir, skill.body));
|
|
618
|
+
loadedBodiesTokens += bodyTokens;
|
|
619
|
+
}
|
|
620
|
+
return {
|
|
621
|
+
name: skill.name,
|
|
622
|
+
tokens: listingTokens,
|
|
623
|
+
loaded: isLoaded,
|
|
624
|
+
bodyTokens
|
|
625
|
+
};
|
|
626
|
+
});
|
|
627
|
+
const skillsTokens = skillToolDefinitionTokens + loadedBodiesTokens;
|
|
628
|
+
const compressionThreshold = config.getChatCompression()?.contextPercentageThreshold ?? DEFAULT_COMPRESSION_THRESHOLD;
|
|
629
|
+
const autocompactBuffer = compressionThreshold > 0 ? Math.round((1 - compressionThreshold) * contextWindowSize) : 0;
|
|
630
|
+
const rawOverhead = systemPromptTokens + allToolsTokens + memoryFilesTokens + loadedBodiesTokens;
|
|
631
|
+
const isEstimated = apiTotalTokens === 0;
|
|
632
|
+
const mcpToolsTotalTokens = mcpTools.reduce(
|
|
633
|
+
(sum, tool) => sum + tool.tokens,
|
|
634
|
+
0
|
|
635
|
+
);
|
|
636
|
+
let totalTokens;
|
|
637
|
+
let displaySystemPrompt;
|
|
638
|
+
let displayBuiltinTools;
|
|
639
|
+
let displayMcpTools;
|
|
640
|
+
let displayMemoryFiles;
|
|
641
|
+
let displaySkills;
|
|
642
|
+
let messagesTokens;
|
|
643
|
+
let freeSpace;
|
|
644
|
+
let detailBuiltinTools;
|
|
645
|
+
let detailMcpTools;
|
|
646
|
+
let detailMemoryFiles;
|
|
647
|
+
let detailSkills;
|
|
648
|
+
if (isEstimated) {
|
|
649
|
+
totalTokens = 0;
|
|
650
|
+
displaySystemPrompt = systemPromptTokens;
|
|
651
|
+
displaySkills = skillsTokens;
|
|
652
|
+
displayBuiltinTools = Math.max(
|
|
653
|
+
0,
|
|
654
|
+
allToolsTokens - skillToolDefinitionTokens - mcpToolsTotalTokens
|
|
655
|
+
);
|
|
656
|
+
displayMcpTools = mcpToolsTotalTokens;
|
|
657
|
+
displayMemoryFiles = memoryFilesTokens;
|
|
658
|
+
messagesTokens = 0;
|
|
659
|
+
freeSpace = Math.max(
|
|
660
|
+
0,
|
|
661
|
+
contextWindowSize - rawOverhead - autocompactBuffer
|
|
662
|
+
);
|
|
663
|
+
detailBuiltinTools = builtinTools;
|
|
664
|
+
detailMcpTools = mcpTools;
|
|
665
|
+
detailMemoryFiles = memoryFiles;
|
|
666
|
+
detailSkills = skills;
|
|
667
|
+
} else {
|
|
668
|
+
totalTokens = apiTotalTokens;
|
|
669
|
+
const overheadScale = rawOverhead > totalTokens ? totalTokens / rawOverhead : 1;
|
|
670
|
+
displaySystemPrompt = Math.round(systemPromptTokens * overheadScale);
|
|
671
|
+
const scaledAllTools = Math.round(allToolsTokens * overheadScale);
|
|
672
|
+
displayMemoryFiles = Math.round(memoryFilesTokens * overheadScale);
|
|
673
|
+
displaySkills = Math.round(skillsTokens * overheadScale);
|
|
674
|
+
const scaledMcpTotal = Math.round(mcpToolsTotalTokens * overheadScale);
|
|
675
|
+
displayMcpTools = scaledMcpTotal;
|
|
676
|
+
const scaledSkillDefinition = Math.round(
|
|
677
|
+
skillToolDefinitionTokens * overheadScale
|
|
678
|
+
);
|
|
679
|
+
displayBuiltinTools = Math.max(
|
|
680
|
+
0,
|
|
681
|
+
scaledAllTools - scaledSkillDefinition - scaledMcpTotal
|
|
682
|
+
);
|
|
683
|
+
const scaledOverhead = displaySystemPrompt + scaledAllTools + displayMemoryFiles + Math.round(loadedBodiesTokens * overheadScale);
|
|
684
|
+
if (apiCachedTokens > 0) {
|
|
685
|
+
messagesTokens = Math.max(0, totalTokens - apiCachedTokens);
|
|
686
|
+
} else {
|
|
687
|
+
messagesTokens = Math.max(0, totalTokens - scaledOverhead);
|
|
688
|
+
}
|
|
689
|
+
freeSpace = Math.max(
|
|
690
|
+
0,
|
|
691
|
+
contextWindowSize - totalTokens - autocompactBuffer
|
|
692
|
+
);
|
|
693
|
+
const scaleDetail = /* @__PURE__ */ __name((items) => overheadScale < 1 ? items.map((item) => ({
|
|
694
|
+
...item,
|
|
695
|
+
tokens: Math.round(item.tokens * overheadScale)
|
|
696
|
+
})) : items, "scaleDetail");
|
|
697
|
+
detailBuiltinTools = scaleDetail(builtinTools);
|
|
698
|
+
detailMcpTools = scaleDetail(mcpTools);
|
|
699
|
+
detailMemoryFiles = scaleDetail(memoryFiles);
|
|
700
|
+
detailSkills = overheadScale < 1 ? skills.map((item) => ({
|
|
701
|
+
...item,
|
|
702
|
+
tokens: Math.round(item.tokens * overheadScale),
|
|
703
|
+
bodyTokens: item.bodyTokens ? Math.round(item.bodyTokens * overheadScale) : void 0
|
|
704
|
+
})) : skills;
|
|
705
|
+
}
|
|
706
|
+
const breakdown = {
|
|
707
|
+
systemPrompt: displaySystemPrompt,
|
|
708
|
+
builtinTools: displayBuiltinTools,
|
|
709
|
+
mcpTools: displayMcpTools,
|
|
710
|
+
memoryFiles: displayMemoryFiles,
|
|
711
|
+
skills: displaySkills,
|
|
712
|
+
messages: messagesTokens,
|
|
713
|
+
freeSpace,
|
|
714
|
+
autocompactBuffer
|
|
715
|
+
};
|
|
716
|
+
return {
|
|
717
|
+
type: "context_usage" /* CONTEXT_USAGE */,
|
|
718
|
+
modelName,
|
|
719
|
+
totalTokens,
|
|
720
|
+
contextWindowSize,
|
|
721
|
+
breakdown,
|
|
722
|
+
builtinTools: showDetails ? detailBuiltinTools : [],
|
|
723
|
+
mcpTools: showDetails ? detailMcpTools : [],
|
|
724
|
+
memoryFiles: showDetails ? detailMemoryFiles : [],
|
|
725
|
+
skills: showDetails ? detailSkills : [],
|
|
726
|
+
isEstimated,
|
|
727
|
+
showDetails
|
|
728
|
+
};
|
|
729
|
+
}
|
|
730
|
+
__name(collectContextData, "collectContextData");
|
|
731
|
+
function fmtTokens(tokens) {
|
|
732
|
+
if (tokens >= 1e3) {
|
|
733
|
+
return `${(tokens / 1e3).toFixed(1)}k`;
|
|
734
|
+
}
|
|
735
|
+
return `${tokens}`;
|
|
736
|
+
}
|
|
737
|
+
__name(fmtTokens, "fmtTokens");
|
|
738
|
+
function fmtCategoryRow(label, tokens, contextWindowSize, indent = " ") {
|
|
739
|
+
const percentage = (tokens / contextWindowSize * 100).toFixed(1);
|
|
740
|
+
const right = `${fmtTokens(tokens)} tokens (${percentage}%)`;
|
|
741
|
+
const leftPart = `${indent}${label}`;
|
|
742
|
+
const totalWidth = 56;
|
|
743
|
+
const dots = Math.max(1, totalWidth - leftPart.length - right.length);
|
|
744
|
+
return `${leftPart}${" ".repeat(dots)}${right}`;
|
|
745
|
+
}
|
|
746
|
+
__name(fmtCategoryRow, "fmtCategoryRow");
|
|
747
|
+
function formatContextUsageText(data) {
|
|
748
|
+
const {
|
|
749
|
+
modelName,
|
|
750
|
+
totalTokens,
|
|
751
|
+
contextWindowSize,
|
|
752
|
+
breakdown,
|
|
753
|
+
builtinTools,
|
|
754
|
+
mcpTools,
|
|
755
|
+
memoryFiles,
|
|
756
|
+
skills,
|
|
757
|
+
isEstimated,
|
|
758
|
+
showDetails
|
|
759
|
+
} = data;
|
|
760
|
+
const lines = [];
|
|
761
|
+
lines.push("## Context Usage");
|
|
762
|
+
lines.push("");
|
|
763
|
+
if (isEstimated) {
|
|
764
|
+
lines.push("*No API response yet. Send a message to see actual usage.*");
|
|
765
|
+
lines.push("");
|
|
766
|
+
lines.push("**Estimated pre-conversation overhead**");
|
|
767
|
+
lines.push(
|
|
768
|
+
`Model: ${modelName} Context window: ${fmtTokens(contextWindowSize)} tokens`
|
|
769
|
+
);
|
|
770
|
+
lines.push("");
|
|
771
|
+
} else {
|
|
772
|
+
lines.push(
|
|
773
|
+
`Model: ${modelName} Context window: ${fmtTokens(contextWindowSize)} tokens`
|
|
774
|
+
);
|
|
775
|
+
lines.push("");
|
|
776
|
+
lines.push(fmtCategoryRow("Used", totalTokens, contextWindowSize));
|
|
777
|
+
lines.push(fmtCategoryRow("Free", breakdown.freeSpace, contextWindowSize));
|
|
778
|
+
lines.push(
|
|
779
|
+
fmtCategoryRow(
|
|
780
|
+
"Autocompact buffer",
|
|
781
|
+
breakdown.autocompactBuffer,
|
|
782
|
+
contextWindowSize
|
|
783
|
+
)
|
|
784
|
+
);
|
|
785
|
+
lines.push("");
|
|
786
|
+
lines.push("**Usage by category**");
|
|
787
|
+
}
|
|
788
|
+
lines.push(
|
|
789
|
+
fmtCategoryRow("System prompt", breakdown.systemPrompt, contextWindowSize)
|
|
790
|
+
);
|
|
791
|
+
lines.push(
|
|
792
|
+
fmtCategoryRow("Built-in tools", breakdown.builtinTools, contextWindowSize)
|
|
793
|
+
);
|
|
794
|
+
if (breakdown.mcpTools > 0) {
|
|
795
|
+
lines.push(
|
|
796
|
+
fmtCategoryRow("MCP tools", breakdown.mcpTools, contextWindowSize)
|
|
797
|
+
);
|
|
798
|
+
}
|
|
799
|
+
lines.push(
|
|
800
|
+
fmtCategoryRow("Memory files", breakdown.memoryFiles, contextWindowSize)
|
|
801
|
+
);
|
|
802
|
+
lines.push(fmtCategoryRow("Skills", breakdown.skills, contextWindowSize));
|
|
803
|
+
if (!isEstimated) {
|
|
804
|
+
lines.push(
|
|
805
|
+
fmtCategoryRow("Messages", breakdown.messages, contextWindowSize)
|
|
806
|
+
);
|
|
807
|
+
}
|
|
808
|
+
if (showDetails) {
|
|
809
|
+
const sortedBuiltin = [...builtinTools].sort((a, b) => b.tokens - a.tokens);
|
|
810
|
+
const sortedMcp = [...mcpTools].sort((a, b) => b.tokens - a.tokens);
|
|
811
|
+
const sortedMemory = [...memoryFiles].sort((a, b) => b.tokens - a.tokens);
|
|
812
|
+
const sortedSkills = [...skills].sort((a, b) => {
|
|
813
|
+
if (a.loaded !== b.loaded) return a.loaded ? -1 : 1;
|
|
814
|
+
return b.tokens + (b.bodyTokens ?? 0) - (a.tokens + (a.bodyTokens ?? 0));
|
|
815
|
+
});
|
|
816
|
+
if (sortedBuiltin.length > 0) {
|
|
817
|
+
lines.push("");
|
|
818
|
+
lines.push("**Built-in tools**");
|
|
819
|
+
for (const tool of sortedBuiltin) {
|
|
820
|
+
lines.push(
|
|
821
|
+
fmtCategoryRow(tool.name, tool.tokens, contextWindowSize, " \u2514 ")
|
|
822
|
+
);
|
|
823
|
+
}
|
|
824
|
+
}
|
|
825
|
+
if (sortedMcp.length > 0) {
|
|
826
|
+
lines.push("");
|
|
827
|
+
lines.push("**MCP tools**");
|
|
828
|
+
for (const tool of sortedMcp) {
|
|
829
|
+
lines.push(
|
|
830
|
+
fmtCategoryRow(tool.name, tool.tokens, contextWindowSize, " \u2514 ")
|
|
831
|
+
);
|
|
832
|
+
}
|
|
833
|
+
}
|
|
834
|
+
if (sortedMemory.length > 0) {
|
|
835
|
+
lines.push("");
|
|
836
|
+
lines.push("**Memory files**");
|
|
837
|
+
for (const file of sortedMemory) {
|
|
838
|
+
lines.push(
|
|
839
|
+
fmtCategoryRow(file.path, file.tokens, contextWindowSize, " \u2514 ")
|
|
840
|
+
);
|
|
841
|
+
}
|
|
842
|
+
}
|
|
843
|
+
if (sortedSkills.length > 0) {
|
|
844
|
+
lines.push("");
|
|
845
|
+
lines.push("**Skills**");
|
|
846
|
+
for (const skill of sortedSkills) {
|
|
847
|
+
const label = skill.loaded ? `${skill.name} (active)` : skill.name;
|
|
848
|
+
lines.push(
|
|
849
|
+
fmtCategoryRow(label, skill.tokens, contextWindowSize, " \u2514 ")
|
|
850
|
+
);
|
|
851
|
+
if (skill.loaded && skill.bodyTokens && skill.bodyTokens > 0) {
|
|
852
|
+
lines.push(
|
|
853
|
+
fmtCategoryRow(
|
|
854
|
+
"body loaded",
|
|
855
|
+
skill.bodyTokens,
|
|
856
|
+
contextWindowSize,
|
|
857
|
+
" \u2514 "
|
|
858
|
+
)
|
|
859
|
+
);
|
|
860
|
+
}
|
|
861
|
+
}
|
|
862
|
+
}
|
|
863
|
+
} else {
|
|
864
|
+
lines.push("");
|
|
865
|
+
lines.push("*Run /context detail for per-item breakdown.*");
|
|
866
|
+
}
|
|
867
|
+
return lines.join("\n");
|
|
868
|
+
}
|
|
869
|
+
__name(formatContextUsageText, "formatContextUsageText");
|
|
870
|
+
var contextCommand = {
|
|
871
|
+
name: "context",
|
|
872
|
+
get description() {
|
|
873
|
+
return t(
|
|
874
|
+
'Show context window usage breakdown. Use "/context detail" for per-item breakdown.'
|
|
875
|
+
);
|
|
876
|
+
},
|
|
877
|
+
kind: "built-in" /* BUILT_IN */,
|
|
878
|
+
supportedModes: ["interactive", "non_interactive", "acp"],
|
|
879
|
+
action: /* @__PURE__ */ __name(async (context, args) => {
|
|
880
|
+
const showDetails = args?.trim().toLowerCase() === "detail" || args?.trim().toLowerCase() === "-d";
|
|
881
|
+
const executionMode = context.executionMode ?? "interactive";
|
|
882
|
+
const { config } = context.services;
|
|
883
|
+
if (!config) {
|
|
884
|
+
if (executionMode === "interactive") {
|
|
885
|
+
context.ui.addItem(
|
|
886
|
+
{
|
|
887
|
+
type: "error" /* ERROR */,
|
|
888
|
+
text: t("Config not loaded.")
|
|
889
|
+
},
|
|
890
|
+
Date.now()
|
|
891
|
+
);
|
|
892
|
+
return;
|
|
893
|
+
}
|
|
894
|
+
return {
|
|
895
|
+
type: "message",
|
|
896
|
+
messageType: "error",
|
|
897
|
+
content: t("Config not loaded.")
|
|
898
|
+
};
|
|
899
|
+
}
|
|
900
|
+
const contextUsageItem = await collectContextData(config, showDetails);
|
|
901
|
+
if (executionMode === "interactive") {
|
|
902
|
+
context.ui.addItem(contextUsageItem, Date.now());
|
|
903
|
+
return;
|
|
904
|
+
} else {
|
|
905
|
+
return {
|
|
906
|
+
type: "message",
|
|
907
|
+
messageType: "info",
|
|
908
|
+
content: formatContextUsageText(contextUsageItem)
|
|
909
|
+
};
|
|
910
|
+
}
|
|
911
|
+
}, "action"),
|
|
912
|
+
subCommands: [
|
|
913
|
+
{
|
|
914
|
+
name: "detail",
|
|
915
|
+
get description() {
|
|
916
|
+
return t("Show per-item context usage breakdown.");
|
|
917
|
+
},
|
|
918
|
+
kind: "built-in" /* BUILT_IN */,
|
|
919
|
+
supportedModes: ["interactive", "non_interactive", "acp"],
|
|
920
|
+
action: /* @__PURE__ */ __name(async (context) => {
|
|
921
|
+
await contextCommand.action(context, "detail");
|
|
922
|
+
}, "action")
|
|
923
|
+
}
|
|
924
|
+
]
|
|
925
|
+
};
|
|
926
|
+
|
|
927
|
+
export {
|
|
928
|
+
require_react,
|
|
929
|
+
isTerminalGoalStatusKind,
|
|
930
|
+
collectContextData,
|
|
931
|
+
formatContextUsageText,
|
|
932
|
+
contextCommand
|
|
933
|
+
};
|
|
934
|
+
/**
|
|
935
|
+
* @license
|
|
936
|
+
* Copyright 2025 Google LLC
|
|
937
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
938
|
+
*/
|
|
939
|
+
/**
|
|
940
|
+
* @license
|
|
941
|
+
* Copyright 2025 Qwen
|
|
942
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
943
|
+
*/
|
|
944
|
+
/*! Bundled license information:
|
|
945
|
+
|
|
946
|
+
react/cjs/react.production.js:
|
|
947
|
+
(**
|
|
948
|
+
* @license React
|
|
949
|
+
* react.production.js
|
|
950
|
+
*
|
|
951
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
952
|
+
*
|
|
953
|
+
* This source code is licensed under the MIT license found in the
|
|
954
|
+
* LICENSE file in the root directory of this source tree.
|
|
955
|
+
*)
|
|
956
|
+
*/
|