openfox 2.0.121 → 2.0.123
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 +23 -0
- package/dist/CHANGELOG.md +23 -0
- package/dist/{auto-config-YXNCBYEY.js → auto-config-4BFGLPCP.js} +86 -19
- package/dist/{chat-handler-A5ORR5BB.js → chat-handler-UWZYFGRY.js} +29 -28
- package/dist/{chunk-DIALH34K.js → chunk-3B232XG4.js} +2 -2
- package/dist/{chunk-RMOKNQAS.js → chunk-3NMLSANH.js} +2 -2
- package/dist/{chunk-TR4DQZIG.js → chunk-4L7UMEHD.js} +70 -57
- package/dist/{chunk-EZ67GBEO.js → chunk-66MG44TF.js} +2 -2
- package/dist/{chunk-YBOU4ZFD.js → chunk-7YP4O4XE.js} +3 -3
- package/dist/{chunk-SLW3KKPP.js → chunk-AQBRI7TM.js} +21 -8
- package/dist/{chunk-OXANSWVZ.js → chunk-EHFIUXWZ.js} +2 -2
- package/dist/{chunk-KD7JTG42.js → chunk-FFEZJBQO.js} +278 -142
- package/dist/{chunk-Y7FGHKBW.js → chunk-GIJUWPRQ.js} +2 -2
- package/dist/{chunk-UJRWYZHM.js → chunk-H4JRR5KV.js} +59 -23
- package/dist/{chunk-5A4YN6I7.js → chunk-INOO465O.js} +5 -5
- package/dist/{chunk-6A2VIV36.js → chunk-JEZN37KV.js} +3 -3
- package/dist/{chunk-2N7KFNMY.js → chunk-KBESUA3W.js} +3 -3
- package/dist/chunk-LXCDR3H5.js +7 -0
- package/dist/{chunk-FGVMRFDW.js → chunk-N2Q3KYWM.js} +2 -2
- package/dist/{chunk-NYQKSKDB.js → chunk-OYBUJIC3.js} +9 -1
- package/dist/{chunk-5QTERLHH.js → chunk-PZUKG3OZ.js} +6 -6
- package/dist/{chunk-I22B6KWV.js → chunk-RV5G7QQU.js} +3 -3
- package/dist/{chunk-O63CDVNI.js → chunk-SS6KV6DI.js} +8 -7
- package/dist/{chunk-J77SLE3M.js → chunk-SYTEO5LA.js} +3 -2
- package/dist/chunk-TPDBUOPN.js +82 -0
- package/dist/{chunk-VUANU5A5.js → chunk-V2UJP5CX.js} +22 -18
- package/dist/{chunk-POTCPZJF.js → chunk-VPRB5FNR.js} +2 -2
- package/dist/{chunk-YDDBPKVP.js → chunk-W4SM4FFZ.js} +15 -15
- package/dist/{chunk-ZELEYSTY.js → chunk-YGOF4QDW.js} +50 -37
- package/dist/{chunk-J3IJJ55E.js → chunk-YJD5A375.js} +7 -7
- package/dist/{chunk-F2IM5J4I.js → chunk-YU5QPXSU.js} +4 -4
- package/dist/{chunk-LSEHJ2WI.js → chunk-ZIL6VKLU.js} +3 -3
- package/dist/{chunk-LWXLNE6M.js → chunk-ZIYETXOW.js} +2 -2
- package/dist/{chunk-W3WZ54KP.js → chunk-ZKMZI4ZG.js} +15 -15
- package/dist/cli/dev.js +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/{client-JKPDMJ7S.js → client-XHJHOFMU.js} +5 -5
- package/dist/{compactor-MKD3CAFM.js → compactor-VTATJTPN.js} +12 -12
- package/dist/{dynamic-context-KPZECHZH.js → dynamic-context-5TPG2AJL.js} +9 -9
- package/dist/{events-6P4TDTSD.js → events-GMHRX4LF.js} +8 -8
- package/dist/{folding-3LA2WX2B.js → folding-7K2GRPF4.js} +6 -6
- package/dist/http-client-N4ASJEKJ.js +11 -0
- package/dist/{inspect-proxy-IDLUAQH5.js → inspect-proxy-UKPU3Z64.js} +4 -4
- package/dist/launch-5PJLLVXV.js +53 -0
- package/dist/{manager-NFKTUR64.js → manager-NOKJQTTF.js} +5 -5
- package/dist/model-catalog-T2GQFJI4.js +14 -0
- package/dist/{orchestrator-SM3IHZFP.js → orchestrator-2Q3R5KKR.js} +31 -30
- package/dist/package.json +1 -1
- package/dist/{path-security-JUF56IB6.js → path-security-NRO37OAP.js} +10 -10
- package/dist/{platform-FM57ZJHA.js → platform-EMKWQTZX.js} +4 -4
- package/dist/{processor-EUJRA5GW.js → processor-N2XW2KJV.js} +39 -35
- package/dist/{project-creator-J4ITWDZI.js → project-creator-JF3YVQAH.js} +3 -3
- package/dist/{projects-FHRTSV6N.js → projects-TPSLCJP2.js} +3 -3
- package/dist/{protocol-BLin669D.d.ts → protocol-DCMH9Ufp.d.ts} +1 -1
- package/dist/provider/index.d.ts +4 -4
- package/dist/{provider-TAFJCWVP.js → provider-EBL6Z7TV.js} +7 -6
- package/dist/{provider-manager-EDJN6ARI.js → provider-manager-MKF27CTA.js} +7 -6
- package/dist/{registry-37GL3DAP.js → registry-Z4GVYFTV.js} +5 -5
- package/dist/{serve-DEY45HQS.js → serve-TARX23JF.js} +34 -33
- package/dist/server/index.d.ts +27 -6
- package/dist/server/index.js +31 -30
- package/dist/server-FKVRW7RV.js +56 -0
- package/dist/{service-HX5NFX2D.js → service-SY6Y4BIM.js} +10 -9
- package/dist/{session-overrides-EOKSZO2X.js → session-overrides-4WAD3X5Q.js} +7 -7
- package/dist/{sessions-XFNU4DZ6.js → sessions-D7VRCHQY.js} +8 -6
- package/dist/{settings-SYYDPV43.js → settings-VOWWO4VG.js} +3 -3
- package/dist/shared/index.d.ts +3 -3
- package/dist/{tasks-A25JQ4TV.js → tasks-IDIKTBOR.js} +11 -10
- package/dist/{tools-YGJXEEBI.js → tools-YPVZ5QM2.js} +24 -23
- package/dist/{types-B5_9KtfJ.d.ts → types-Cr4EgGwK.d.ts} +1 -1
- package/dist/{types-DeQIEC1U.d.ts → types-PAKlAzp9.d.ts} +16 -0
- package/dist/{update-CE3XSZXE.js → update-VSSOHC47.js} +2 -2
- package/dist/web/assets/index-C10YdCOU.js +324 -0
- package/dist/web/assets/{index-D9sfxcRH.css → index-DFMllFkv.css} +1 -1
- package/dist/web/index.html +2 -2
- package/dist/web/sw.js +1 -1
- package/dist/{workspace-ZNZFEONU.js → workspace-J3JEGF6U.js} +4 -4
- package/package.json +1 -1
- package/dist/chunk-OBB3JYMK.js +0 -7
- package/dist/http-client-IKOARXI7.js +0 -11
- package/dist/launch-YWXQQWZN.js +0 -52
- package/dist/server-EIRLWSBZ.js +0 -55
- package/dist/web/assets/index-oiZlWLY7.js +0 -324
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.0.123 - 2026-08-18
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- **Reasoning effort is now a first-class citizen** — switch it per model from the model selector, with curated presets you can customize or override raw; pin it in agent overrides; see it as model:effort in message headers, turn stats and the selector; and have your picks stick as the model's default for future sessions
|
|
8
|
+
- **Switching reasoning effort mid-run may invalidate your cache!** — the model selector asks first, so you can keep the current effort or apply the new one
|
|
9
|
+
|
|
10
|
+
### Enhancements
|
|
11
|
+
|
|
12
|
+
- **Task prompt auto-resizes** — save with Ctrl/Cmd+Enter, newlines via Enter/Shift+Enter, spellcheck off
|
|
13
|
+
|
|
14
|
+
## 2.0.122 - 2026-08-16
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
|
|
18
|
+
- **Live "time since your last prompt" counter** — the status bar ticks every second while the agent works
|
|
19
|
+
- **Right-click a message for its timestamp** — sent/received time in 24h format (2026/08/16 14:44)
|
|
20
|
+
|
|
21
|
+
### Enhancements
|
|
22
|
+
|
|
23
|
+
- **Task moves and gate fills need your approval** — the agent no longer advances the board on its own
|
|
24
|
+
- **Status label is cleaner** — dropped the redundant phase suffix (it was always "Plan" outside workflows)
|
|
25
|
+
|
|
3
26
|
## 2.0.121 - 2026-08-16
|
|
4
27
|
|
|
5
28
|
### Features
|
package/dist/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.0.123 - 2026-08-18
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- **Reasoning effort is now a first-class citizen** — switch it per model from the model selector, with curated presets you can customize or override raw; pin it in agent overrides; see it as model:effort in message headers, turn stats and the selector; and have your picks stick as the model's default for future sessions
|
|
8
|
+
- **Switching reasoning effort mid-run may invalidate your cache!** — the model selector asks first, so you can keep the current effort or apply the new one
|
|
9
|
+
|
|
10
|
+
### Enhancements
|
|
11
|
+
|
|
12
|
+
- **Task prompt auto-resizes** — save with Ctrl/Cmd+Enter, newlines via Enter/Shift+Enter, spellcheck off
|
|
13
|
+
|
|
14
|
+
## 2.0.122 - 2026-08-16
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
|
|
18
|
+
- **Live "time since your last prompt" counter** — the status bar ticks every second while the agent works
|
|
19
|
+
- **Right-click a message for its timestamp** — sent/received time in 24h format (2026/08/16 14:44)
|
|
20
|
+
|
|
21
|
+
### Enhancements
|
|
22
|
+
|
|
23
|
+
- **Task moves and gate fills need your approval** — the agent no longer advances the board on its own
|
|
24
|
+
- **Status label is cleaner** — dropped the redundant phase suffix (it was always "Plan" outside workflows)
|
|
25
|
+
|
|
3
26
|
## 2.0.121 - 2026-08-16
|
|
4
27
|
|
|
5
28
|
### Features
|
|
@@ -4,12 +4,20 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
ensureVersionPrefix
|
|
6
6
|
} from "./chunk-HNCM3D7Y.js";
|
|
7
|
+
import {
|
|
8
|
+
getCatalogEntry
|
|
9
|
+
} from "./chunk-TPDBUOPN.js";
|
|
7
10
|
import {
|
|
8
11
|
logger
|
|
9
12
|
} from "./chunk-K44MW7JJ.js";
|
|
10
13
|
import "./chunk-YLJ4XMA6.js";
|
|
11
14
|
|
|
12
15
|
// src/server/providers/auto-config.ts
|
|
16
|
+
function buildAuthHeaders(apiKey) {
|
|
17
|
+
const headers = { "Content-Type": "application/json" };
|
|
18
|
+
if (apiKey) headers["Authorization"] = `Bearer ${apiKey}`;
|
|
19
|
+
return headers;
|
|
20
|
+
}
|
|
13
21
|
var NON_THINKING_COMBOS = [
|
|
14
22
|
{},
|
|
15
23
|
{ reasoning_effort: "none" },
|
|
@@ -56,9 +64,10 @@ async function detectModelInfo(baseUrl, apiKey, backend, modelId) {
|
|
|
56
64
|
}
|
|
57
65
|
}
|
|
58
66
|
async function detectVllmInfo(baseUrl, apiKey, modelId) {
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
67
|
+
const response = await fetch(`${ensureVersionPrefix(baseUrl)}/models`, {
|
|
68
|
+
headers: buildAuthHeaders(apiKey),
|
|
69
|
+
signal: AbortSignal.timeout(5e3)
|
|
70
|
+
});
|
|
62
71
|
if (!response.ok) throw new Error(`HTTP ${response.status}`);
|
|
63
72
|
const data = await response.json();
|
|
64
73
|
const model = data.data?.find((m) => m.id === modelId);
|
|
@@ -109,8 +118,6 @@ async function detectLmstudioInfo(baseUrl, modelId) {
|
|
|
109
118
|
throw new Error("No context_length in LM Studio response");
|
|
110
119
|
}
|
|
111
120
|
async function probeCombo(baseUrl, apiKey, model, combo, signal) {
|
|
112
|
-
const headers = { "Content-Type": "application/json" };
|
|
113
|
-
if (apiKey) headers["Authorization"] = `Bearer ${apiKey}`;
|
|
114
121
|
const body = {
|
|
115
122
|
model,
|
|
116
123
|
messages: [{ role: "user", content: "say hi in one word" }],
|
|
@@ -121,7 +128,7 @@ async function probeCombo(baseUrl, apiKey, model, combo, signal) {
|
|
|
121
128
|
try {
|
|
122
129
|
const response = await fetch(`${ensureVersionPrefix(baseUrl)}/chat/completions`, {
|
|
123
130
|
method: "POST",
|
|
124
|
-
headers,
|
|
131
|
+
headers: buildAuthHeaders(apiKey),
|
|
125
132
|
body: JSON.stringify(body),
|
|
126
133
|
signal
|
|
127
134
|
});
|
|
@@ -157,12 +164,10 @@ async function probeCombos(baseUrl, apiKey, model, combos) {
|
|
|
157
164
|
return null;
|
|
158
165
|
}
|
|
159
166
|
async function probeReasoningInMessages(baseUrl, apiKey, model) {
|
|
160
|
-
const headers = { "Content-Type": "application/json" };
|
|
161
|
-
if (apiKey) headers["Authorization"] = `Bearer ${apiKey}`;
|
|
162
167
|
try {
|
|
163
168
|
const response = await fetch(`${ensureVersionPrefix(baseUrl)}/chat/completions`, {
|
|
164
169
|
method: "POST",
|
|
165
|
-
headers,
|
|
170
|
+
headers: buildAuthHeaders(apiKey),
|
|
166
171
|
body: JSON.stringify({
|
|
167
172
|
model,
|
|
168
173
|
messages: [
|
|
@@ -179,6 +184,64 @@ async function probeReasoningInMessages(baseUrl, apiKey, model) {
|
|
|
179
184
|
return void 0;
|
|
180
185
|
}
|
|
181
186
|
}
|
|
187
|
+
var REASONING_EFFORT_CANDIDATES = ["low", "medium", "high", "xhigh", "max"];
|
|
188
|
+
async function probeReasoningEffort(baseUrl, apiKey, model, effort, signal) {
|
|
189
|
+
const body = {
|
|
190
|
+
model,
|
|
191
|
+
messages: [{ role: "user", content: "say hi in one word" }],
|
|
192
|
+
max_tokens: 0,
|
|
193
|
+
...effort ? { reasoning_effort: effort } : {}
|
|
194
|
+
};
|
|
195
|
+
try {
|
|
196
|
+
const response = await fetch(`${ensureVersionPrefix(baseUrl)}/chat/completions`, {
|
|
197
|
+
method: "POST",
|
|
198
|
+
headers: buildAuthHeaders(apiKey),
|
|
199
|
+
body: JSON.stringify(body),
|
|
200
|
+
signal
|
|
201
|
+
});
|
|
202
|
+
if (!response.ok) {
|
|
203
|
+
return { effort: effort ?? "baseline", ok: false, promptTokens: 0 };
|
|
204
|
+
}
|
|
205
|
+
const data = await response.json();
|
|
206
|
+
return {
|
|
207
|
+
effort: effort ?? "baseline",
|
|
208
|
+
ok: true,
|
|
209
|
+
promptTokens: data.usage?.prompt_tokens ?? 0
|
|
210
|
+
};
|
|
211
|
+
} catch {
|
|
212
|
+
return { effort: effort ?? "baseline", ok: false, promptTokens: 0 };
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
async function probeReasoningEfforts(baseUrl, apiKey, model) {
|
|
216
|
+
const timeout = AbortSignal.timeout(15e3);
|
|
217
|
+
const baseline = await probeReasoningEffort(baseUrl, apiKey, model, void 0, timeout);
|
|
218
|
+
if (!baseline.ok) {
|
|
219
|
+
return void 0;
|
|
220
|
+
}
|
|
221
|
+
const results = await Promise.all(
|
|
222
|
+
REASONING_EFFORT_CANDIDATES.map(
|
|
223
|
+
(effort) => probeReasoningEffort(baseUrl, apiKey, model, effort, timeout).then((r) => ({ ...r, effort }))
|
|
224
|
+
)
|
|
225
|
+
);
|
|
226
|
+
const accepted = results.filter((r) => r.ok);
|
|
227
|
+
if (accepted.length === 0) {
|
|
228
|
+
return void 0;
|
|
229
|
+
}
|
|
230
|
+
const impactful = accepted.filter((r) => r.promptTokens !== baseline.promptTokens);
|
|
231
|
+
const pool = impactful.length > 0 ? impactful : accepted;
|
|
232
|
+
const distinctTokens = new Set(pool.map((r) => r.promptTokens));
|
|
233
|
+
if (distinctTokens.size <= 1) {
|
|
234
|
+
return pool.map((r) => r.effort);
|
|
235
|
+
}
|
|
236
|
+
const seen = /* @__PURE__ */ new Set();
|
|
237
|
+
const distinct = [];
|
|
238
|
+
for (const r of pool) {
|
|
239
|
+
if (seen.has(r.promptTokens)) continue;
|
|
240
|
+
seen.add(r.promptTokens);
|
|
241
|
+
distinct.push(r.effort);
|
|
242
|
+
}
|
|
243
|
+
return distinct;
|
|
244
|
+
}
|
|
182
245
|
var STANDARD_PARAMS = ["temperature", "top_p", "max_tokens", "top_k", "reasoning_effort"];
|
|
183
246
|
var PARAM_VALUES = {
|
|
184
247
|
temperature: 0.7,
|
|
@@ -206,7 +269,7 @@ var DUMMY_TOOL = {
|
|
|
206
269
|
parameters: { type: "object", properties: {}, required: [] }
|
|
207
270
|
}
|
|
208
271
|
};
|
|
209
|
-
async function probeChatCompletions(baseUrl,
|
|
272
|
+
async function probeChatCompletions(baseUrl, apiKey, model, samplingParams) {
|
|
210
273
|
const body = {
|
|
211
274
|
model,
|
|
212
275
|
messages: [{ role: "user", content: "say hi in one word" }],
|
|
@@ -219,7 +282,7 @@ async function probeChatCompletions(baseUrl, headers, model, samplingParams) {
|
|
|
219
282
|
try {
|
|
220
283
|
const response = await fetch(`${ensureVersionPrefix(baseUrl)}/chat/completions`, {
|
|
221
284
|
method: "POST",
|
|
222
|
-
headers,
|
|
285
|
+
headers: buildAuthHeaders(apiKey),
|
|
223
286
|
body: JSON.stringify(body),
|
|
224
287
|
signal: AbortSignal.timeout(15e3)
|
|
225
288
|
});
|
|
@@ -230,14 +293,12 @@ async function probeChatCompletions(baseUrl, headers, model, samplingParams) {
|
|
|
230
293
|
}
|
|
231
294
|
}
|
|
232
295
|
async function probeRejectedParams(baseUrl, apiKey, model, backend) {
|
|
233
|
-
const headers = { "Content-Type": "application/json" };
|
|
234
|
-
if (apiKey) headers["Authorization"] = `Bearer ${apiKey}`;
|
|
235
296
|
const candidates = [...STANDARD_PARAMS];
|
|
236
297
|
if (["openai", "anthropic", "ollama"].includes(backend)) {
|
|
237
298
|
const idx = candidates.indexOf("top_k");
|
|
238
299
|
if (idx !== -1) candidates.splice(idx, 1);
|
|
239
300
|
}
|
|
240
|
-
const control = await probeChatCompletions(baseUrl,
|
|
301
|
+
const control = await probeChatCompletions(baseUrl, apiKey, model, []);
|
|
241
302
|
if (!control.ok) {
|
|
242
303
|
logger.debug("Auto-config: rejection-probe control failed, skipping param detection", {
|
|
243
304
|
model,
|
|
@@ -248,7 +309,7 @@ async function probeRejectedParams(baseUrl, apiKey, model, backend) {
|
|
|
248
309
|
const rejected = [];
|
|
249
310
|
const remaining = [...candidates];
|
|
250
311
|
while (remaining.length > 0) {
|
|
251
|
-
const probe = await probeChatCompletions(baseUrl,
|
|
312
|
+
const probe = await probeChatCompletions(baseUrl, apiKey, model, remaining);
|
|
252
313
|
if (probe.ok) break;
|
|
253
314
|
if (probe.status === 400) {
|
|
254
315
|
const rejectedParam = extractRejectedParam(probe.errorText);
|
|
@@ -278,12 +339,16 @@ async function autoConfig(input) {
|
|
|
278
339
|
source: contextSource,
|
|
279
340
|
supportsVision
|
|
280
341
|
} = await detectModelInfo(baseUrl, apiKey, backend, model.id);
|
|
281
|
-
const
|
|
342
|
+
const catalog = getCatalogEntry(model.id);
|
|
343
|
+
const shouldProbeEfforts = backend !== "unknown" || !catalog;
|
|
344
|
+
const [thinkingConfig, nonThinkingConfig, rejectedParams, reasoningEfforts] = await Promise.all([
|
|
282
345
|
probeCombos(baseUrl, apiKey, model.id, THINKING_COMBOS),
|
|
283
346
|
probeCombos(baseUrl, apiKey, model.id, NON_THINKING_COMBOS),
|
|
284
|
-
probeRejectedParams(baseUrl, apiKey, model.id, backend)
|
|
347
|
+
probeRejectedParams(baseUrl, apiKey, model.id, backend),
|
|
348
|
+
shouldProbeEfforts ? probeReasoningEfforts(baseUrl, apiKey, model.id) : Promise.resolve(void 0)
|
|
285
349
|
]);
|
|
286
350
|
const sendReasoningInMessages = thinkingConfig ? await probeReasoningInMessages(baseUrl, apiKey, model.id) : void 0;
|
|
351
|
+
const effectiveReasoningEfforts = reasoningEfforts ?? catalog?.reasoningEfforts;
|
|
287
352
|
results.push({
|
|
288
353
|
id: model.id,
|
|
289
354
|
contextWindow,
|
|
@@ -292,7 +357,9 @@ async function autoConfig(input) {
|
|
|
292
357
|
thinkingConfig,
|
|
293
358
|
nonThinkingConfig,
|
|
294
359
|
...sendReasoningInMessages !== void 0 ? { sendReasoningInMessages } : {},
|
|
295
|
-
...rejectedParams.length > 0 ? { rejectedParams } : {}
|
|
360
|
+
...rejectedParams.length > 0 ? { rejectedParams } : {},
|
|
361
|
+
...effectiveReasoningEfforts ? { reasoningEfforts: effectiveReasoningEfforts } : {},
|
|
362
|
+
...catalog?.defaultReasoningEffort ? { defaultReasoningEffort: catalog.defaultReasoningEffort } : {}
|
|
296
363
|
});
|
|
297
364
|
}
|
|
298
365
|
return { models: results };
|
|
@@ -300,4 +367,4 @@ async function autoConfig(input) {
|
|
|
300
367
|
export {
|
|
301
368
|
autoConfig
|
|
302
369
|
};
|
|
303
|
-
//# sourceMappingURL=auto-config-
|
|
370
|
+
//# sourceMappingURL=auto-config-4BFGLPCP.js.map
|
|
@@ -2,52 +2,53 @@ import {
|
|
|
2
2
|
buildRunChatTurnParams,
|
|
3
3
|
finalizeTurnCompletion,
|
|
4
4
|
generateSessionNameForSession
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-W4SM4FFZ.js";
|
|
6
6
|
import {
|
|
7
7
|
runChatTurn
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-V2UJP5CX.js";
|
|
9
|
+
import "./chunk-4L7UMEHD.js";
|
|
10
|
+
import "./chunk-PZUKG3OZ.js";
|
|
11
|
+
import "./chunk-ZIL6VKLU.js";
|
|
12
|
+
import "./chunk-62GUO2EG.js";
|
|
13
|
+
import "./chunk-GIJUWPRQ.js";
|
|
14
|
+
import "./chunk-EHFIUXWZ.js";
|
|
15
|
+
import "./chunk-RV5G7QQU.js";
|
|
14
16
|
import "./chunk-I72ACQ6R.js";
|
|
15
17
|
import "./chunk-JE7LW7Y6.js";
|
|
16
18
|
import "./chunk-OAN4BXEW.js";
|
|
17
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-3NMLSANH.js";
|
|
18
20
|
import "./chunk-J7GAZGZT.js";
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-SS6KV6DI.js";
|
|
22
|
+
import "./chunk-7YP4O4XE.js";
|
|
23
|
+
import "./chunk-INOO465O.js";
|
|
24
|
+
import {
|
|
25
|
+
getEventStore
|
|
26
|
+
} from "./chunk-YJD5A375.js";
|
|
27
|
+
import "./chunk-ZIYETXOW.js";
|
|
28
|
+
import "./chunk-AQBRI7TM.js";
|
|
22
29
|
import {
|
|
23
30
|
createChatMessageMessage,
|
|
24
31
|
createPhaseChangedMessage,
|
|
25
32
|
createSessionRunningMessage
|
|
26
33
|
} from "./chunk-XAAEP5XM.js";
|
|
34
|
+
import "./chunk-66MG44TF.js";
|
|
27
35
|
import "./chunk-JURM3RPZ.js";
|
|
28
|
-
import "./chunk-62GUO2EG.js";
|
|
29
|
-
import "./chunk-Y7FGHKBW.js";
|
|
30
|
-
import {
|
|
31
|
-
getEventStore
|
|
32
|
-
} from "./chunk-J3IJJ55E.js";
|
|
33
|
-
import "./chunk-SLW3KKPP.js";
|
|
34
|
-
import "./chunk-EZ67GBEO.js";
|
|
35
|
-
import "./chunk-LWXLNE6M.js";
|
|
36
36
|
import "./chunk-LCLH6ZUL.js";
|
|
37
|
-
import "./chunk-
|
|
38
|
-
import "./chunk-OSXPQSLW.js";
|
|
39
|
-
import "./chunk-DIALH34K.js";
|
|
40
|
-
import "./chunk-UJRWYZHM.js";
|
|
37
|
+
import "./chunk-H4JRR5KV.js";
|
|
41
38
|
import "./chunk-K2QKX4ZJ.js";
|
|
42
39
|
import "./chunk-J2GP3J3X.js";
|
|
43
|
-
import "./chunk-
|
|
40
|
+
import "./chunk-KBESUA3W.js";
|
|
41
|
+
import "./chunk-OSXPQSLW.js";
|
|
42
|
+
import "./chunk-3B232XG4.js";
|
|
43
|
+
import "./chunk-SYTEO5LA.js";
|
|
44
44
|
import "./chunk-GJL3QSMP.js";
|
|
45
45
|
import "./chunk-AZHWLLPP.js";
|
|
46
46
|
import "./chunk-HNCM3D7Y.js";
|
|
47
47
|
import "./chunk-MIPQOHWS.js";
|
|
48
|
-
import "./chunk-
|
|
49
|
-
import "./chunk-
|
|
50
|
-
import "./chunk-
|
|
48
|
+
import "./chunk-VPRB5FNR.js";
|
|
49
|
+
import "./chunk-N2Q3KYWM.js";
|
|
50
|
+
import "./chunk-OYBUJIC3.js";
|
|
51
|
+
import "./chunk-TPDBUOPN.js";
|
|
51
52
|
import "./chunk-K44MW7JJ.js";
|
|
52
53
|
import "./chunk-KSDWQ6IZ.js";
|
|
53
54
|
import "./chunk-KSXCOHHW.js";
|
|
@@ -173,4 +174,4 @@ export {
|
|
|
173
174
|
startChatSession,
|
|
174
175
|
stopSessionExecution
|
|
175
176
|
};
|
|
176
|
-
//# sourceMappingURL=chat-handler-
|
|
177
|
+
//# sourceMappingURL=chat-handler-UWZYFGRY.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getDatabase
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-OYBUJIC3.js";
|
|
4
4
|
|
|
5
5
|
// src/server/db/projects.ts
|
|
6
6
|
function createProject(name, workdir) {
|
|
@@ -144,4 +144,4 @@ export {
|
|
|
144
144
|
toggleStar,
|
|
145
145
|
getProjectDefaultAgent
|
|
146
146
|
};
|
|
147
|
-
//# sourceMappingURL=chunk-
|
|
147
|
+
//# sourceMappingURL=chunk-3B232XG4.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
getProjectByWorkdir,
|
|
6
6
|
updateProject
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-3B232XG4.js";
|
|
8
8
|
import {
|
|
9
9
|
logger
|
|
10
10
|
} from "./chunk-K44MW7JJ.js";
|
|
@@ -333,4 +333,4 @@ export {
|
|
|
333
333
|
deleteWorkspace,
|
|
334
334
|
isGitRepository
|
|
335
335
|
};
|
|
336
|
-
//# sourceMappingURL=chunk-
|
|
336
|
+
//# sourceMappingURL=chunk-3NMLSANH.js.map
|
|
@@ -4,10 +4,29 @@ import {
|
|
|
4
4
|
getEnabledSkillMetadata,
|
|
5
5
|
isSkillEnabled,
|
|
6
6
|
loadAllSkills
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-ZIL6VKLU.js";
|
|
8
|
+
import {
|
|
9
|
+
TurnMetrics,
|
|
10
|
+
clearLLMFailure,
|
|
11
|
+
consumeStreamGenerator,
|
|
12
|
+
createChatDoneEvent,
|
|
13
|
+
createMessageDoneEvent,
|
|
14
|
+
createMessageStartEvent,
|
|
15
|
+
createToolCallEvent,
|
|
16
|
+
createToolResultEvent,
|
|
17
|
+
evaluateLLMRetry,
|
|
18
|
+
recordLLMFailure,
|
|
19
|
+
sleepThroughRetryBackoff,
|
|
20
|
+
streamLLMPure
|
|
21
|
+
} from "./chunk-62GUO2EG.js";
|
|
22
|
+
import {
|
|
23
|
+
COMPACTION_PROMPT,
|
|
24
|
+
buildBasePrompt,
|
|
25
|
+
computeEffectiveTools
|
|
26
|
+
} from "./chunk-GIJUWPRQ.js";
|
|
8
27
|
import {
|
|
9
28
|
startInspectProxy
|
|
10
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-EHFIUXWZ.js";
|
|
11
30
|
import {
|
|
12
31
|
checkAborted,
|
|
13
32
|
createProcess,
|
|
@@ -21,7 +40,7 @@ import {
|
|
|
21
40
|
spawnShellProcess,
|
|
22
41
|
startProcessCommand,
|
|
23
42
|
stopProcess
|
|
24
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-RV5G7QQU.js";
|
|
25
44
|
import {
|
|
26
45
|
getMaxPerSession,
|
|
27
46
|
getSessionProcessCount,
|
|
@@ -37,59 +56,27 @@ import {
|
|
|
37
56
|
getGitBranch,
|
|
38
57
|
isGitRepository,
|
|
39
58
|
listWorkspaces
|
|
40
|
-
} from "./chunk-
|
|
59
|
+
} from "./chunk-3NMLSANH.js";
|
|
41
60
|
import {
|
|
42
61
|
getGateConfig,
|
|
43
62
|
isTaskConflictError,
|
|
44
63
|
isTaskGateError
|
|
45
|
-
} from "./chunk-
|
|
64
|
+
} from "./chunk-SS6KV6DI.js";
|
|
46
65
|
import {
|
|
47
66
|
getSessionDisabledServers
|
|
48
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-7YP4O4XE.js";
|
|
49
68
|
import {
|
|
50
69
|
PathAccessDeniedError,
|
|
51
70
|
extractAbsolutePathsFromCommand,
|
|
52
71
|
extractSensitivePathsFromCommand,
|
|
53
72
|
registerPathConfirmation,
|
|
54
73
|
requestPathAccess
|
|
55
|
-
} from "./chunk-
|
|
56
|
-
import {
|
|
57
|
-
createChatDoneMessage,
|
|
58
|
-
createChatLLMRetryFailedMessage,
|
|
59
|
-
createChatLLMRetryMessage,
|
|
60
|
-
createChatMessageMessage,
|
|
61
|
-
createChatMessageUpdatedMessage,
|
|
62
|
-
createChatPathConfirmationMessage,
|
|
63
|
-
createQueueStateMessage
|
|
64
|
-
} from "./chunk-XAAEP5XM.js";
|
|
65
|
-
import {
|
|
66
|
-
AskUserInterrupt,
|
|
67
|
-
askUserTool
|
|
68
|
-
} from "./chunk-JURM3RPZ.js";
|
|
69
|
-
import {
|
|
70
|
-
TurnMetrics,
|
|
71
|
-
clearLLMFailure,
|
|
72
|
-
consumeStreamGenerator,
|
|
73
|
-
createChatDoneEvent,
|
|
74
|
-
createMessageDoneEvent,
|
|
75
|
-
createMessageStartEvent,
|
|
76
|
-
createToolCallEvent,
|
|
77
|
-
createToolResultEvent,
|
|
78
|
-
evaluateLLMRetry,
|
|
79
|
-
recordLLMFailure,
|
|
80
|
-
sleepThroughRetryBackoff,
|
|
81
|
-
streamLLMPure
|
|
82
|
-
} from "./chunk-62GUO2EG.js";
|
|
83
|
-
import {
|
|
84
|
-
COMPACTION_PROMPT,
|
|
85
|
-
buildBasePrompt,
|
|
86
|
-
computeEffectiveTools
|
|
87
|
-
} from "./chunk-Y7FGHKBW.js";
|
|
74
|
+
} from "./chunk-INOO465O.js";
|
|
88
75
|
import {
|
|
89
76
|
getCurrentContextWindowId,
|
|
90
77
|
getCurrentWindowMessageOptions,
|
|
91
78
|
getEventStore
|
|
92
|
-
} from "./chunk-
|
|
79
|
+
} from "./chunk-YJD5A375.js";
|
|
93
80
|
import {
|
|
94
81
|
buildContextMessagesFromEventHistory,
|
|
95
82
|
foldContextState,
|
|
@@ -99,13 +86,26 @@ import {
|
|
|
99
86
|
handleToolResult,
|
|
100
87
|
reorderToolMessages,
|
|
101
88
|
stripOrphanedToolCalls
|
|
102
|
-
} from "./chunk-
|
|
89
|
+
} from "./chunk-ZIYETXOW.js";
|
|
90
|
+
import {
|
|
91
|
+
createChatDoneMessage,
|
|
92
|
+
createChatLLMRetryFailedMessage,
|
|
93
|
+
createChatLLMRetryMessage,
|
|
94
|
+
createChatMessageMessage,
|
|
95
|
+
createChatMessageUpdatedMessage,
|
|
96
|
+
createChatPathConfirmationMessage,
|
|
97
|
+
createQueueStateMessage
|
|
98
|
+
} from "./chunk-XAAEP5XM.js";
|
|
99
|
+
import {
|
|
100
|
+
AskUserInterrupt,
|
|
101
|
+
askUserTool
|
|
102
|
+
} from "./chunk-JURM3RPZ.js";
|
|
103
103
|
import {
|
|
104
104
|
findAgentById,
|
|
105
105
|
getRuntimeConfig,
|
|
106
106
|
getSubAgents,
|
|
107
107
|
loadAllAgentsDefault
|
|
108
|
-
} from "./chunk-
|
|
108
|
+
} from "./chunk-KBESUA3W.js";
|
|
109
109
|
import {
|
|
110
110
|
modelSupportsVision
|
|
111
111
|
} from "./chunk-GJL3QSMP.js";
|
|
@@ -124,7 +124,7 @@ import {
|
|
|
124
124
|
SETTINGS_KEYS,
|
|
125
125
|
getSetting,
|
|
126
126
|
setSetting
|
|
127
|
-
} from "./chunk-
|
|
127
|
+
} from "./chunk-N2Q3KYWM.js";
|
|
128
128
|
import {
|
|
129
129
|
logger
|
|
130
130
|
} from "./chunk-K44MW7JJ.js";
|
|
@@ -148,7 +148,7 @@ async function requestUserConfirmation(context, toolLabel, desc) {
|
|
|
148
148
|
if (context.dangerLevel === "dangerous") return Promise.resolve(true);
|
|
149
149
|
if (toolLabel === "workspace" || toolLabel === "command") {
|
|
150
150
|
try {
|
|
151
|
-
const { getSetting: getSetting2, SETTINGS_KEYS: SETTINGS_KEYS2 } = await import("./settings-
|
|
151
|
+
const { getSetting: getSetting2, SETTINGS_KEYS: SETTINGS_KEYS2 } = await import("./settings-VOWWO4VG.js");
|
|
152
152
|
if (getSetting2(SETTINGS_KEYS2.CONFIRM_ON_WORKSPACE_ACTIONS) !== "true") {
|
|
153
153
|
return Promise.resolve(true);
|
|
154
154
|
}
|
|
@@ -1531,7 +1531,8 @@ import { z } from "zod";
|
|
|
1531
1531
|
var AGENT_MODEL_OVERRIDES_KEY = SETTINGS_KEYS.AGENT_MODEL_OVERRIDES;
|
|
1532
1532
|
var overrideSchema = z.object({
|
|
1533
1533
|
providerId: z.string().min(1),
|
|
1534
|
-
model: z.string().min(1)
|
|
1534
|
+
model: z.string().min(1),
|
|
1535
|
+
reasoningEffort: z.string().min(1).optional()
|
|
1535
1536
|
});
|
|
1536
1537
|
function parseAgentModelOverrides(raw) {
|
|
1537
1538
|
if (!raw) return {};
|
|
@@ -1566,12 +1567,13 @@ function setAgentModelOverride(agentId, override) {
|
|
|
1566
1567
|
}
|
|
1567
1568
|
setSetting(AGENT_MODEL_OVERRIDES_KEY, JSON.stringify(overrides));
|
|
1568
1569
|
}
|
|
1569
|
-
function resolveLLMClientForAgent(agentId, fallbackClient, providerManager) {
|
|
1570
|
+
function resolveLLMClientForAgent(agentId, fallbackClient, providerManager, pinnedEffort) {
|
|
1570
1571
|
const override = getAgentModelOverride(agentId);
|
|
1571
1572
|
if (!override) {
|
|
1572
1573
|
return { client: fallbackClient, usedOverride: false };
|
|
1573
1574
|
}
|
|
1574
|
-
const
|
|
1575
|
+
const effectiveEffort = pinnedEffort ?? override.reasoningEffort;
|
|
1576
|
+
const client = providerManager.createClient(override.providerId, override.model, effectiveEffort);
|
|
1575
1577
|
if (!client) {
|
|
1576
1578
|
return {
|
|
1577
1579
|
client: fallbackClient,
|
|
@@ -1580,7 +1582,11 @@ function resolveLLMClientForAgent(agentId, fallbackClient, providerManager) {
|
|
|
1580
1582
|
warning: `Agent '${agentId}' is configured to use model '${override.model}' from provider '${override.providerId}', but it is no longer available. Falling back to the session model.`
|
|
1581
1583
|
};
|
|
1582
1584
|
}
|
|
1583
|
-
return {
|
|
1585
|
+
return {
|
|
1586
|
+
client,
|
|
1587
|
+
usedOverride: true,
|
|
1588
|
+
override: effectiveEffort ? { ...override, reasoningEffort: effectiveEffort } : override
|
|
1589
|
+
};
|
|
1584
1590
|
}
|
|
1585
1591
|
|
|
1586
1592
|
// src/server/chat/tool-streaming.ts
|
|
@@ -2095,7 +2101,7 @@ ${CONTINUE_PROMPT}` : CONTINUE_PROMPT;
|
|
|
2095
2101
|
);
|
|
2096
2102
|
if (!compacting) {
|
|
2097
2103
|
const contextState = sessionManager.getContextState(sessionId);
|
|
2098
|
-
const { shouldCompact, appendCompactionPrompt } = await import("./compactor-
|
|
2104
|
+
const { shouldCompact, appendCompactionPrompt } = await import("./compactor-VTATJTPN.js");
|
|
2099
2105
|
if (shouldCompact(
|
|
2100
2106
|
contextState.currentTokens,
|
|
2101
2107
|
contextState.maxTokens,
|
|
@@ -2880,7 +2886,8 @@ async function executeSubAgent(options) {
|
|
|
2880
2886
|
let hasOverride = false;
|
|
2881
2887
|
let overrideModelSettings;
|
|
2882
2888
|
if (providerManager) {
|
|
2883
|
-
const
|
|
2889
|
+
const pinnedEffort = session.providerPinnedEffort ?? void 0;
|
|
2890
|
+
const resolved = resolveLLMClientForAgent(subAgentType, parentLlmClient, providerManager, pinnedEffort);
|
|
2884
2891
|
if (resolved.usedOverride && resolved.override) {
|
|
2885
2892
|
hasOverride = true;
|
|
2886
2893
|
llmClient = resolved.client;
|
|
@@ -2889,7 +2896,8 @@ async function executeSubAgent(options) {
|
|
|
2889
2896
|
providerId: resolved.override.providerId,
|
|
2890
2897
|
providerName: provider?.name ?? resolved.override.providerId,
|
|
2891
2898
|
backend: provider?.backend ?? resolved.client.getBackend(),
|
|
2892
|
-
model: resolved.override.model
|
|
2899
|
+
model: resolved.override.model,
|
|
2900
|
+
...resolved.override.reasoningEffort ? { reasoningEffort: resolved.override.reasoningEffort } : {}
|
|
2893
2901
|
};
|
|
2894
2902
|
overrideModelSettings = providerManager.getModelSettings(resolved.override.providerId, resolved.override.model);
|
|
2895
2903
|
logger.info("Sub-agent using model override", { subAgentType, ...resolved.override });
|
|
@@ -2922,7 +2930,11 @@ async function executeSubAgent(options) {
|
|
|
2922
2930
|
} else {
|
|
2923
2931
|
const effective = sessionManager.resolveEffectiveProviderModel(sessionId, subAgentType);
|
|
2924
2932
|
if (effective.providerId && effective.model) {
|
|
2925
|
-
const effectiveClient = providerManager.createClient(
|
|
2933
|
+
const effectiveClient = providerManager.createClient(
|
|
2934
|
+
effective.providerId,
|
|
2935
|
+
effective.model,
|
|
2936
|
+
effective.reasoningEffort
|
|
2937
|
+
);
|
|
2926
2938
|
if (effectiveClient) {
|
|
2927
2939
|
llmClient = effectiveClient;
|
|
2928
2940
|
const provider = providerManager.getProviders().find((p) => p.id === effective.providerId);
|
|
@@ -2930,7 +2942,8 @@ async function executeSubAgent(options) {
|
|
|
2930
2942
|
providerId: effective.providerId,
|
|
2931
2943
|
providerName: provider?.name ?? effective.providerId,
|
|
2932
2944
|
backend: provider?.backend ?? effectiveClient.getBackend(),
|
|
2933
|
-
model: effective.model
|
|
2945
|
+
model: effective.model,
|
|
2946
|
+
...effective.reasoningEffort ? { reasoningEffort: effective.reasoningEffort } : {}
|
|
2934
2947
|
};
|
|
2935
2948
|
}
|
|
2936
2949
|
}
|
|
@@ -3103,7 +3116,7 @@ var callSubAgentTool = {
|
|
|
3103
3116
|
};
|
|
3104
3117
|
}
|
|
3105
3118
|
try {
|
|
3106
|
-
const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-
|
|
3119
|
+
const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-YPVZ5QM2.js");
|
|
3107
3120
|
const toolRegistry = getToolRegistryForAgent2(agentDef);
|
|
3108
3121
|
const turnMetrics = new TurnMetrics();
|
|
3109
3122
|
const result = await executeSubAgent({
|
|
@@ -4125,7 +4138,7 @@ var mcpConfigTool = createTool(
|
|
|
4125
4138
|
mcpNotifyChanged?.(sessionId);
|
|
4126
4139
|
}
|
|
4127
4140
|
async function rebuildTools() {
|
|
4128
|
-
const { setMcpTools: setMcpTools2 } = await import("./tools-
|
|
4141
|
+
const { setMcpTools: setMcpTools2 } = await import("./tools-YPVZ5QM2.js");
|
|
4129
4142
|
const mcpTools = createMcpTools(mcpManagerForTools);
|
|
4130
4143
|
setMcpTools2(mcpTools);
|
|
4131
4144
|
}
|
|
@@ -4558,7 +4571,7 @@ var projectTasksTool = createTool(
|
|
|
4558
4571
|
type: "function",
|
|
4559
4572
|
function: {
|
|
4560
4573
|
name: "project_tasks",
|
|
4561
|
-
description: "Kanban task board for this project. Core loop: list \u2192 move \u2192 set_gate_value.\n\nRules:\n- Moving to in_progress binds the task to YOUR current session.\n- Moving to done is blocked by unmet gates: the error names the missing fields \u2014 fill them
|
|
4574
|
+
description: "Kanban task board for this project. Core loop: list \u2192 move \u2192 set_gate_value.\n\nRules:\n- Moving to in_progress binds the task to YOUR current session.\n- Do not move tasks or fill gate values without explicit user approval or a system instruction \u2014 complete the work, then let the user review before the task advances.\n- Moving to done is blocked by unmet gates: the error names the missing fields \u2014 fill them only with user approval, then retry the move.\n- Stale writes fail with CONFLICT \u2014 re-list and retry.\n\nActions:\n- list: tasks (status, gate values, queue position, bound session, audit trail); defaults to open tasks, filter via status (todo | in_progress | done | all)\n- create: add a task to To Do (prompt required)\n- edit: update prompt/attachments/agent/model (taskId + fields)\n- move: change column (to: todo | in_progress | done; optional reason)\n- set_gate_value: fill a gate field (taskId, gateId, value)\n- delete: remove a task (taskId)",
|
|
4562
4575
|
parameters: {
|
|
4563
4576
|
type: "object",
|
|
4564
4577
|
properties: {
|
|
@@ -5013,4 +5026,4 @@ export {
|
|
|
5013
5026
|
getToolRegistryForAgent,
|
|
5014
5027
|
createToolRegistry
|
|
5015
5028
|
};
|
|
5016
|
-
//# sourceMappingURL=chunk-
|
|
5029
|
+
//# sourceMappingURL=chunk-4L7UMEHD.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SETTINGS_KEYS,
|
|
3
3
|
getSetting
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-N2Q3KYWM.js";
|
|
5
5
|
|
|
6
6
|
// src/server/utils/platform.ts
|
|
7
7
|
import os from "os";
|
|
@@ -63,4 +63,4 @@ export {
|
|
|
63
63
|
isWindowsPath,
|
|
64
64
|
isAbsolutePath
|
|
65
65
|
};
|
|
66
|
-
//# sourceMappingURL=chunk-
|
|
66
|
+
//# sourceMappingURL=chunk-66MG44TF.js.map
|