openfox 1.6.21 → 1.6.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -13
- package/dist/{auto-compaction-U75EINMB.js → auto-compaction-7LK3QGPI.js} +4 -3
- package/dist/{chat-handler-JEMPI5UF.js → chat-handler-ZU74RXED.js} +6 -5
- package/dist/{chunk-HZP2V5Z6.js → chunk-4O3C2JMB.js} +5 -9
- package/dist/{chunk-AU33PQAB.js → chunk-BOEXJCOD.js} +2 -2
- package/dist/{chunk-6NPMZFMP.js → chunk-CJNQGEYG.js} +2 -2
- package/dist/{chunk-XYD5JXRM.js → chunk-D4ZLSV6P.js} +292 -1
- package/dist/{chunk-HWOYZ245.js → chunk-FTJPNCAV.js} +6 -6
- package/dist/{chunk-FX4SUY2S.js → chunk-KSASIV4B.js} +10 -287
- package/dist/{chunk-XRGMFOVG.js → chunk-P6GUT2QQ.js} +3 -3
- package/dist/{chunk-WINI5HX7.js → chunk-PYBB34ZK.js} +3 -3
- package/dist/{chunk-SJVEX2NR.js → chunk-YCQSAFAQ.js} +19 -19
- package/dist/cli/dev.js +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/{config-SWDAJMQ3.js → config-ACVEHBKG.js} +5 -5
- package/dist/{orchestrator-T2IPRZ7B.js → orchestrator-OE7WFEW6.js} +5 -4
- package/dist/package.json +3 -3
- package/dist/{processor-VKFEOK46.js → processor-GAOK7TPI.js} +2 -2
- package/dist/{provider-CDM4LQAC.js → provider-RLQMVV2Z.js} +7 -7
- package/dist/{serve-X3PKC27B.js → serve-IBJ3SN3Q.js} +9 -9
- package/dist/server/index.js +7 -7
- package/dist/{tools-4ODVFMW7.js → tools-CSV7G554.js} +4 -3
- package/dist/{vision-fallback-VXGCQKLA.js → vision-fallback-QJ26DCEF.js} +2 -2
- package/dist/web/assets/{index-DHP3d5Cl.js → index-BrZqZwpA.js} +56 -54
- package/dist/web/assets/{index-B9-lT3Kc.css → index-DF26vcqg.css} +1 -1
- package/dist/web/index.html +2 -2
- package/dist/web/sw.js +1 -1
- package/package.json +3 -3
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
|
+
buildNonStreamingCreateParams,
|
|
3
|
+
buildStreamingCreateParams,
|
|
4
|
+
extractThinking,
|
|
2
5
|
getBackendCapabilities,
|
|
3
|
-
getModelProfile
|
|
4
|
-
|
|
6
|
+
getModelProfile,
|
|
7
|
+
mapFinishReason
|
|
8
|
+
} from "./chunk-D4ZLSV6P.js";
|
|
5
9
|
import {
|
|
6
|
-
describeImageFromDataUrl,
|
|
7
10
|
ensureVisionFallbackConfigLoaded
|
|
8
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-CJNQGEYG.js";
|
|
9
12
|
import {
|
|
10
13
|
logger
|
|
11
14
|
} from "./chunk-PNBH3RAX.js";
|
|
@@ -138,286 +141,6 @@ var LLMError = class extends OpenFoxError {
|
|
|
138
141
|
}
|
|
139
142
|
};
|
|
140
143
|
|
|
141
|
-
// src/server/llm/client-pure.ts
|
|
142
|
-
function buildAttachmentContent(msgContent, attachments, modelSupportsVision) {
|
|
143
|
-
const content = [];
|
|
144
|
-
if (msgContent?.trim()) {
|
|
145
|
-
content.push({ type: "text", text: msgContent });
|
|
146
|
-
}
|
|
147
|
-
for (const attachment of attachments) {
|
|
148
|
-
content.push(convertAttachmentSync(attachment, modelSupportsVision));
|
|
149
|
-
}
|
|
150
|
-
return content;
|
|
151
|
-
}
|
|
152
|
-
async function convertMessagesWithOptions(messages, profile, visionFallbackEnabled, signal, onVisionFallbackStart, onVisionFallbackDone) {
|
|
153
|
-
const modelSupportsVision = profile.supportsVision ?? false;
|
|
154
|
-
const options = {
|
|
155
|
-
modelSupportsVision,
|
|
156
|
-
visionFallbackEnabled,
|
|
157
|
-
signal,
|
|
158
|
-
onVisionFallbackStart,
|
|
159
|
-
onVisionFallbackDone
|
|
160
|
-
};
|
|
161
|
-
return needsVisionFallback(messages, modelSupportsVision, visionFallbackEnabled) ? await convertMessagesWithFallback(messages, options) : convertMessages(messages, { modelSupportsVision, visionFallbackEnabled: false });
|
|
162
|
-
}
|
|
163
|
-
function convertToolCalls(toolCalls) {
|
|
164
|
-
return toolCalls.map((toolCall) => ({
|
|
165
|
-
id: toolCall.id,
|
|
166
|
-
type: "function",
|
|
167
|
-
function: {
|
|
168
|
-
name: toolCall.name,
|
|
169
|
-
arguments: JSON.stringify(toolCall.arguments)
|
|
170
|
-
}
|
|
171
|
-
}));
|
|
172
|
-
}
|
|
173
|
-
function convertAttachmentSync(attachment, modelSupportsVision) {
|
|
174
|
-
if (modelSupportsVision) {
|
|
175
|
-
return {
|
|
176
|
-
type: "image_url",
|
|
177
|
-
image_url: { url: attachment.data }
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
return {
|
|
181
|
-
type: "text",
|
|
182
|
-
text: `[Image: ${attachment.filename || "image"}] (vision not supported, cannot describe)`
|
|
183
|
-
};
|
|
184
|
-
}
|
|
185
|
-
function createAttachmentForConversion(data, filename, id) {
|
|
186
|
-
return {
|
|
187
|
-
data,
|
|
188
|
-
...filename !== void 0 && { filename },
|
|
189
|
-
...id !== void 0 && { id }
|
|
190
|
-
};
|
|
191
|
-
}
|
|
192
|
-
async function convertAttachmentWithFallback(attachment, options) {
|
|
193
|
-
logger.debug("[VisionFallback] convertAttachmentWithFallback called", { filename: attachment.filename, id: attachment.id, hasCallbacks: !!options.onVisionFallbackStart });
|
|
194
|
-
if (options.modelSupportsVision) {
|
|
195
|
-
logger.debug("[VisionFallback] Model supports vision - passing image directly");
|
|
196
|
-
return {
|
|
197
|
-
type: "image_url",
|
|
198
|
-
image_url: { url: attachment.data }
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
if (!options.visionFallbackEnabled) {
|
|
202
|
-
logger.debug("[VisionFallback] Fallback disabled - returning placeholder");
|
|
203
|
-
return {
|
|
204
|
-
type: "text",
|
|
205
|
-
text: `[Image: ${attachment.filename || "image"}] (vision not supported)`
|
|
206
|
-
};
|
|
207
|
-
}
|
|
208
|
-
const attachmentId = attachment.id ?? crypto.randomUUID();
|
|
209
|
-
const filename = attachment.filename;
|
|
210
|
-
logger.debug("[VisionFallback] Starting delegation for:", { attachmentId, filename });
|
|
211
|
-
options.onVisionFallbackStart?.(attachmentId, filename);
|
|
212
|
-
const context = filename ? `File: ${filename}` : void 0;
|
|
213
|
-
const description = await describeImageFromDataUrl(attachment.data, { context, signal: options.signal });
|
|
214
|
-
logger.debug("[VisionFallback] Delegation complete:", { attachmentId, descriptionLength: description.length });
|
|
215
|
-
options.onVisionFallbackDone?.(attachmentId, description);
|
|
216
|
-
return {
|
|
217
|
-
type: "text",
|
|
218
|
-
text: `[Image: ${attachment.filename || "image"}] ${description}`
|
|
219
|
-
};
|
|
220
|
-
}
|
|
221
|
-
async function buildAttachmentContentWithFallback(msgContent, attachments, options) {
|
|
222
|
-
const content = [];
|
|
223
|
-
if (msgContent?.trim()) {
|
|
224
|
-
content.push({ type: "text", text: msgContent });
|
|
225
|
-
}
|
|
226
|
-
for (const attachment of attachments) {
|
|
227
|
-
const convertedContent = await convertAttachmentWithFallback(
|
|
228
|
-
createAttachmentForConversion(attachment.data, attachment.filename, attachment.id),
|
|
229
|
-
options
|
|
230
|
-
);
|
|
231
|
-
content.push(convertedContent);
|
|
232
|
-
}
|
|
233
|
-
return content;
|
|
234
|
-
}
|
|
235
|
-
function convertMessages(messages, options) {
|
|
236
|
-
const filtered = messages.filter((msg) => {
|
|
237
|
-
return !(msg.role === "assistant" && !msg.content?.trim() && (!msg.toolCalls || msg.toolCalls.length === 0));
|
|
238
|
-
});
|
|
239
|
-
return filtered.map((msg) => {
|
|
240
|
-
if (msg.role === "tool") {
|
|
241
|
-
if (msg.attachments && msg.attachments.length > 0) {
|
|
242
|
-
const content = buildAttachmentContent(msg.content, msg.attachments, options.modelSupportsVision);
|
|
243
|
-
return {
|
|
244
|
-
role: "tool",
|
|
245
|
-
content,
|
|
246
|
-
tool_call_id: msg.toolCallId
|
|
247
|
-
};
|
|
248
|
-
}
|
|
249
|
-
return {
|
|
250
|
-
role: "tool",
|
|
251
|
-
content: msg.content,
|
|
252
|
-
tool_call_id: msg.toolCallId
|
|
253
|
-
};
|
|
254
|
-
}
|
|
255
|
-
if (msg.role === "assistant" && msg.toolCalls?.length) {
|
|
256
|
-
return {
|
|
257
|
-
role: "assistant",
|
|
258
|
-
content: msg.content || null,
|
|
259
|
-
tool_calls: convertToolCalls(msg.toolCalls)
|
|
260
|
-
};
|
|
261
|
-
}
|
|
262
|
-
if (msg.role === "user" && msg.attachments && msg.attachments.length > 0) {
|
|
263
|
-
const content = buildAttachmentContent(msg.content, msg.attachments, options.modelSupportsVision);
|
|
264
|
-
return {
|
|
265
|
-
role: "user",
|
|
266
|
-
content
|
|
267
|
-
};
|
|
268
|
-
}
|
|
269
|
-
return {
|
|
270
|
-
role: msg.role,
|
|
271
|
-
content: msg.content
|
|
272
|
-
};
|
|
273
|
-
});
|
|
274
|
-
}
|
|
275
|
-
async function convertMessagesWithFallback(messages, options) {
|
|
276
|
-
logger.debug("[VisionFallback] convertMessagesWithFallback called", { messageCount: messages.length });
|
|
277
|
-
const filtered = messages.filter((msg) => {
|
|
278
|
-
return !(msg.role === "assistant" && !msg.content?.trim() && (!msg.toolCalls || msg.toolCalls.length === 0));
|
|
279
|
-
});
|
|
280
|
-
const converted = [];
|
|
281
|
-
for (const msg of filtered) {
|
|
282
|
-
if (msg.role === "tool") {
|
|
283
|
-
if (msg.attachments && msg.attachments.length > 0) {
|
|
284
|
-
const content = await buildAttachmentContentWithFallback(msg.content, msg.attachments, options);
|
|
285
|
-
converted.push({
|
|
286
|
-
role: "tool",
|
|
287
|
-
content,
|
|
288
|
-
tool_call_id: msg.toolCallId
|
|
289
|
-
});
|
|
290
|
-
} else {
|
|
291
|
-
converted.push({
|
|
292
|
-
role: "tool",
|
|
293
|
-
content: msg.content,
|
|
294
|
-
tool_call_id: msg.toolCallId
|
|
295
|
-
});
|
|
296
|
-
}
|
|
297
|
-
continue;
|
|
298
|
-
}
|
|
299
|
-
if (msg.role === "assistant" && msg.toolCalls?.length) {
|
|
300
|
-
converted.push({
|
|
301
|
-
role: "assistant",
|
|
302
|
-
content: msg.content || null,
|
|
303
|
-
tool_calls: convertToolCalls(msg.toolCalls)
|
|
304
|
-
});
|
|
305
|
-
continue;
|
|
306
|
-
}
|
|
307
|
-
if (msg.role === "user" && msg.attachments && msg.attachments.length > 0) {
|
|
308
|
-
const content = await buildAttachmentContentWithFallback(msg.content, msg.attachments, options);
|
|
309
|
-
converted.push({
|
|
310
|
-
role: "user",
|
|
311
|
-
content
|
|
312
|
-
});
|
|
313
|
-
continue;
|
|
314
|
-
}
|
|
315
|
-
converted.push({
|
|
316
|
-
role: msg.role,
|
|
317
|
-
content: msg.content
|
|
318
|
-
});
|
|
319
|
-
}
|
|
320
|
-
return converted;
|
|
321
|
-
}
|
|
322
|
-
function convertTools(tools) {
|
|
323
|
-
return tools.map((tool) => ({
|
|
324
|
-
type: "function",
|
|
325
|
-
function: {
|
|
326
|
-
name: tool.function.name,
|
|
327
|
-
description: tool.function.description,
|
|
328
|
-
parameters: tool.function.parameters
|
|
329
|
-
}
|
|
330
|
-
}));
|
|
331
|
-
}
|
|
332
|
-
function needsVisionFallback(messages, modelSupportsVision, visionFallbackEnabled) {
|
|
333
|
-
const hasAttachments = messages.some(
|
|
334
|
-
(msg) => msg.attachments && msg.attachments.length > 0 || msg.role === "tool" && msg.attachments && msg.attachments.length > 0
|
|
335
|
-
);
|
|
336
|
-
const result = hasAttachments && !modelSupportsVision && visionFallbackEnabled;
|
|
337
|
-
logger.debug("[VisionFallback] needsVisionFallback check", {
|
|
338
|
-
hasAttachments,
|
|
339
|
-
modelSupportsVision,
|
|
340
|
-
visionFallbackEnabled,
|
|
341
|
-
result
|
|
342
|
-
});
|
|
343
|
-
return result;
|
|
344
|
-
}
|
|
345
|
-
async function buildChatCompletionCreateParams(model, request, profile, capabilities, disableThinking, visionFallbackEnabled, isStreaming, onVisionFallbackStart, onVisionFallbackDone) {
|
|
346
|
-
const convertedMessages = await convertMessagesWithOptions(
|
|
347
|
-
request.messages,
|
|
348
|
-
profile,
|
|
349
|
-
visionFallbackEnabled,
|
|
350
|
-
request.signal,
|
|
351
|
-
onVisionFallbackStart,
|
|
352
|
-
onVisionFallbackDone
|
|
353
|
-
);
|
|
354
|
-
const temperature = request.temperature ?? profile.temperature;
|
|
355
|
-
const maxTokens = request.maxTokens ?? profile.defaultMaxTokens;
|
|
356
|
-
const topP = profile.topP;
|
|
357
|
-
const topK = capabilities.supportsTopK ? profile.topK : void 0;
|
|
358
|
-
const params = {
|
|
359
|
-
model,
|
|
360
|
-
messages: convertedMessages,
|
|
361
|
-
...request.tools ? { tools: convertTools(request.tools) } : {},
|
|
362
|
-
...request.toolChoice ? { tool_choice: request.toolChoice } : {},
|
|
363
|
-
temperature,
|
|
364
|
-
max_tokens: maxTokens,
|
|
365
|
-
top_p: topP,
|
|
366
|
-
stream: isStreaming,
|
|
367
|
-
...isStreaming ? { stream_options: { include_usage: true } } : {}
|
|
368
|
-
};
|
|
369
|
-
if (topK !== void 0) {
|
|
370
|
-
;
|
|
371
|
-
params["top_k"] = topK;
|
|
372
|
-
}
|
|
373
|
-
const shouldDisableThinking = isStreaming ? disableThinking || request.disableThinking : disableThinking;
|
|
374
|
-
if (capabilities.supportsChatTemplateKwargs && profile.supportsReasoning && shouldDisableThinking) {
|
|
375
|
-
;
|
|
376
|
-
params["chat_template_kwargs"] = { enable_thinking: false };
|
|
377
|
-
}
|
|
378
|
-
const modelParams = {
|
|
379
|
-
...temperature !== void 0 && { temperature },
|
|
380
|
-
...topP !== void 0 && { topP },
|
|
381
|
-
...topK !== void 0 && { topK },
|
|
382
|
-
...maxTokens !== void 0 && { maxTokens }
|
|
383
|
-
};
|
|
384
|
-
return { params, modelParams };
|
|
385
|
-
}
|
|
386
|
-
async function buildCreateParamsFromInput(input, isStreaming) {
|
|
387
|
-
const { model, request, profile, capabilities, disableThinking, visionFallbackEnabled = false, onVisionFallbackStart, onVisionFallbackDone } = input;
|
|
388
|
-
return buildChatCompletionCreateParams(model, request, profile, capabilities, !!disableThinking, visionFallbackEnabled, isStreaming, onVisionFallbackStart, onVisionFallbackDone);
|
|
389
|
-
}
|
|
390
|
-
var buildNonStreamingCreateParams = (input) => buildCreateParamsFromInput(input, false);
|
|
391
|
-
var buildStreamingCreateParams = (input) => buildCreateParamsFromInput(input, true);
|
|
392
|
-
function mapFinishReason(reason) {
|
|
393
|
-
switch (reason) {
|
|
394
|
-
case "stop":
|
|
395
|
-
return "stop";
|
|
396
|
-
case "tool_calls":
|
|
397
|
-
return "tool_calls";
|
|
398
|
-
case "length":
|
|
399
|
-
return "length";
|
|
400
|
-
case "content_filter":
|
|
401
|
-
return "content_filter";
|
|
402
|
-
default:
|
|
403
|
-
return "stop";
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
function extractThinking(content) {
|
|
407
|
-
const thinkRegex = /<think>([\s\S]*?)<\/think>/g;
|
|
408
|
-
let thinkingContent = "";
|
|
409
|
-
let cleanContent = content;
|
|
410
|
-
let match;
|
|
411
|
-
while ((match = thinkRegex.exec(content)) !== null) {
|
|
412
|
-
thinkingContent += match[1];
|
|
413
|
-
cleanContent = cleanContent.replace(match[0], "");
|
|
414
|
-
}
|
|
415
|
-
return {
|
|
416
|
-
content: cleanContent.trim(),
|
|
417
|
-
thinkingContent: thinkingContent.trim() || null
|
|
418
|
-
};
|
|
419
|
-
}
|
|
420
|
-
|
|
421
144
|
// src/server/llm/client.ts
|
|
422
145
|
function createLLMClient(config, initialBackend = "unknown") {
|
|
423
146
|
const baseURL = config.llm.baseUrl.includes("/v1") ? config.llm.baseUrl : `${config.llm.baseUrl}/v1`;
|
|
@@ -468,7 +191,7 @@ function createLLMClient(config, initialBackend = "unknown") {
|
|
|
468
191
|
try {
|
|
469
192
|
const shouldDisableThinking = disableThinking || request.disableThinking === true;
|
|
470
193
|
await ensureVisionFallbackConfigLoaded();
|
|
471
|
-
const { isVisionFallbackEnabled } = await import("./vision-fallback-
|
|
194
|
+
const { isVisionFallbackEnabled } = await import("./vision-fallback-QJ26DCEF.js");
|
|
472
195
|
const paramsOptions = {
|
|
473
196
|
model,
|
|
474
197
|
request,
|
|
@@ -546,7 +269,7 @@ function createLLMClient(config, initialBackend = "unknown") {
|
|
|
546
269
|
});
|
|
547
270
|
try {
|
|
548
271
|
await ensureVisionFallbackConfigLoaded();
|
|
549
|
-
const { isVisionFallbackEnabled } = await import("./vision-fallback-
|
|
272
|
+
const { isVisionFallbackEnabled } = await import("./vision-fallback-QJ26DCEF.js");
|
|
550
273
|
const shouldDisableThinking = disableThinking || request.disableThinking === true;
|
|
551
274
|
const createParams = await buildStreamingCreateParams({
|
|
552
275
|
model,
|
|
@@ -760,4 +483,4 @@ export {
|
|
|
760
483
|
setLlmStatus,
|
|
761
484
|
clearModelCache
|
|
762
485
|
};
|
|
763
|
-
//# sourceMappingURL=chunk-
|
|
486
|
+
//# sourceMappingURL=chunk-KSASIV4B.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
detectModel
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-KSASIV4B.js";
|
|
4
4
|
import {
|
|
5
5
|
detectBackend
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-D4ZLSV6P.js";
|
|
7
7
|
import {
|
|
8
8
|
getGlobalConfigPath
|
|
9
9
|
} from "./chunk-R4HADRYO.js";
|
|
@@ -386,4 +386,4 @@ export {
|
|
|
386
386
|
activateProvider,
|
|
387
387
|
mergeConfigs
|
|
388
388
|
};
|
|
389
|
-
//# sourceMappingURL=chunk-
|
|
389
|
+
//# sourceMappingURL=chunk-P6GUT2QQ.js.map
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
createLLMClient,
|
|
4
4
|
detectModel,
|
|
5
5
|
setLlmStatus
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-KSASIV4B.js";
|
|
7
7
|
import {
|
|
8
8
|
detectBackend
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-D4ZLSV6P.js";
|
|
10
10
|
import {
|
|
11
11
|
logger
|
|
12
12
|
} from "./chunk-PNBH3RAX.js";
|
|
@@ -457,4 +457,4 @@ export {
|
|
|
457
457
|
parseDefaultModelSelection,
|
|
458
458
|
createProviderManager
|
|
459
459
|
};
|
|
460
|
-
//# sourceMappingURL=chunk-
|
|
460
|
+
//# sourceMappingURL=chunk-PYBB34ZK.js.map
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
createVerifierNudgeConfig,
|
|
7
7
|
runBuilderTurn,
|
|
8
8
|
runChatTurn
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-BOEXJCOD.js";
|
|
10
10
|
import {
|
|
11
11
|
TurnMetrics,
|
|
12
12
|
agentExists,
|
|
@@ -47,7 +47,7 @@ import {
|
|
|
47
47
|
setSkillEnabled,
|
|
48
48
|
skillExists,
|
|
49
49
|
spawnShellProcess
|
|
50
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-4O3C2JMB.js";
|
|
51
51
|
import {
|
|
52
52
|
getPathSeparator,
|
|
53
53
|
getPlatformShell,
|
|
@@ -57,18 +57,18 @@ import {
|
|
|
57
57
|
import {
|
|
58
58
|
createProviderManager,
|
|
59
59
|
parseDefaultModelSelection
|
|
60
|
-
} from "./chunk-
|
|
60
|
+
} from "./chunk-PYBB34ZK.js";
|
|
61
61
|
import {
|
|
62
62
|
SessionNotFoundError,
|
|
63
63
|
createLLMClient,
|
|
64
64
|
detectModel,
|
|
65
65
|
getLlmStatus
|
|
66
|
-
} from "./chunk-
|
|
66
|
+
} from "./chunk-KSASIV4B.js";
|
|
67
67
|
import {
|
|
68
68
|
detectBackend,
|
|
69
69
|
getBackendDisplayName,
|
|
70
70
|
getModelProfile
|
|
71
|
-
} from "./chunk-
|
|
71
|
+
} from "./chunk-D4ZLSV6P.js";
|
|
72
72
|
import {
|
|
73
73
|
createSession,
|
|
74
74
|
deleteSession,
|
|
@@ -5479,7 +5479,7 @@ function createTerminalRoutes() {
|
|
|
5479
5479
|
}
|
|
5480
5480
|
|
|
5481
5481
|
// src/constants.ts
|
|
5482
|
-
var VERSION = "1.6.
|
|
5482
|
+
var VERSION = "1.6.23";
|
|
5483
5483
|
|
|
5484
5484
|
// src/server/index.ts
|
|
5485
5485
|
var __dirname2 = dirname5(fileURLToPath4(import.meta.url));
|
|
@@ -5716,7 +5716,7 @@ async function createServerHandle(config) {
|
|
|
5716
5716
|
return res.status(400).json({ error: "providerId is required" });
|
|
5717
5717
|
}
|
|
5718
5718
|
sessionManager.setSessionProvider(sessionId, providerId, model ?? "auto");
|
|
5719
|
-
const { loadGlobalConfig, saveGlobalConfig, setDefaultModelSelection } = await import("./config-
|
|
5719
|
+
const { loadGlobalConfig, saveGlobalConfig, setDefaultModelSelection } = await import("./config-ACVEHBKG.js");
|
|
5720
5720
|
const globalConfig = await loadGlobalConfig(config.mode ?? "production");
|
|
5721
5721
|
const updatedConfig = setDefaultModelSelection(globalConfig, providerId, model ?? "auto");
|
|
5722
5722
|
await saveGlobalConfig(config.mode ?? "production", updatedConfig);
|
|
@@ -5781,7 +5781,7 @@ async function createServerHandle(config) {
|
|
|
5781
5781
|
if (!callId || approved === void 0) {
|
|
5782
5782
|
return res.status(400).json({ error: "callId and approved are required" });
|
|
5783
5783
|
}
|
|
5784
|
-
const { providePathConfirmation: providePathConfirmation2 } = await import("./tools-
|
|
5784
|
+
const { providePathConfirmation: providePathConfirmation2 } = await import("./tools-CSV7G554.js");
|
|
5785
5785
|
const result = providePathConfirmation2(callId, approved, alwaysAllow);
|
|
5786
5786
|
if (!result.found) {
|
|
5787
5787
|
return res.status(404).json({ error: "No pending path confirmation with that ID" });
|
|
@@ -5806,7 +5806,7 @@ async function createServerHandle(config) {
|
|
|
5806
5806
|
if (!callId || !answer) {
|
|
5807
5807
|
return res.status(400).json({ error: "callId and answer are required" });
|
|
5808
5808
|
}
|
|
5809
|
-
const { provideAnswer: provideAnswer2 } = await import("./tools-
|
|
5809
|
+
const { provideAnswer: provideAnswer2 } = await import("./tools-CSV7G554.js");
|
|
5810
5810
|
const found = provideAnswer2(callId, answer);
|
|
5811
5811
|
if (!found) {
|
|
5812
5812
|
return res.status(404).json({ error: "No pending question with that ID" });
|
|
@@ -5842,8 +5842,8 @@ async function createServerHandle(config) {
|
|
|
5842
5842
|
if (!session) {
|
|
5843
5843
|
return res.status(404).json({ error: "Session not found" });
|
|
5844
5844
|
}
|
|
5845
|
-
const { stopSessionExecution } = await import("./chat-handler-
|
|
5846
|
-
const { cancelQuestionsForSession: cancelQuestionsForSession2, cancelPathConfirmationsForSession: cancelPathConfirmationsForSession2 } = await import("./tools-
|
|
5845
|
+
const { stopSessionExecution } = await import("./chat-handler-ZU74RXED.js");
|
|
5846
|
+
const { cancelQuestionsForSession: cancelQuestionsForSession2, cancelPathConfirmationsForSession: cancelPathConfirmationsForSession2 } = await import("./tools-CSV7G554.js");
|
|
5847
5847
|
stopSessionExecution(sessionId, sessionManager);
|
|
5848
5848
|
abortSession(sessionId);
|
|
5849
5849
|
cancelQuestionsForSession2(sessionId, "Session stopped by user");
|
|
@@ -5901,7 +5901,7 @@ async function createServerHandle(config) {
|
|
|
5901
5901
|
let visionFallback;
|
|
5902
5902
|
let globalWorkdir;
|
|
5903
5903
|
try {
|
|
5904
|
-
const { loadGlobalConfig, getVisionFallback } = await import("./config-
|
|
5904
|
+
const { loadGlobalConfig, getVisionFallback } = await import("./config-ACVEHBKG.js");
|
|
5905
5905
|
const globalConfig = await loadGlobalConfig(config.mode ?? "production");
|
|
5906
5906
|
const fallback = getVisionFallback(globalConfig);
|
|
5907
5907
|
if (fallback) {
|
|
@@ -5980,7 +5980,7 @@ async function createServerHandle(config) {
|
|
|
5980
5980
|
return res.status(400).json({ error: "name, url, and backend are required" });
|
|
5981
5981
|
}
|
|
5982
5982
|
try {
|
|
5983
|
-
const { loadGlobalConfig, saveGlobalConfig, addProvider, setDefaultModelSelection } = await import("./config-
|
|
5983
|
+
const { loadGlobalConfig, saveGlobalConfig, addProvider, setDefaultModelSelection } = await import("./config-ACVEHBKG.js");
|
|
5984
5984
|
const globalConfig = await loadGlobalConfig(config.mode ?? "production");
|
|
5985
5985
|
const providerBackend = backend;
|
|
5986
5986
|
const configWithProvider = addProvider(globalConfig, {
|
|
@@ -6013,7 +6013,7 @@ async function createServerHandle(config) {
|
|
|
6013
6013
|
app.post("/api/init/config", async (req, res) => {
|
|
6014
6014
|
const { workdir, visionFallback } = req.body;
|
|
6015
6015
|
try {
|
|
6016
|
-
const { loadGlobalConfig, saveGlobalConfig } = await import("./config-
|
|
6016
|
+
const { loadGlobalConfig, saveGlobalConfig } = await import("./config-ACVEHBKG.js");
|
|
6017
6017
|
const globalConfig = await loadGlobalConfig(config.mode ?? "production");
|
|
6018
6018
|
const updatedConfig = {
|
|
6019
6019
|
...globalConfig,
|
|
@@ -6041,7 +6041,7 @@ async function createServerHandle(config) {
|
|
|
6041
6041
|
});
|
|
6042
6042
|
app.delete("/api/providers/:id", async (req, res) => {
|
|
6043
6043
|
const { id } = req.params;
|
|
6044
|
-
const { loadGlobalConfig, saveGlobalConfig, removeProvider } = await import("./config-
|
|
6044
|
+
const { loadGlobalConfig, saveGlobalConfig, removeProvider } = await import("./config-ACVEHBKG.js");
|
|
6045
6045
|
const globalConfig = await loadGlobalConfig(config.mode ?? "production");
|
|
6046
6046
|
const updatedConfig = removeProvider(globalConfig, id);
|
|
6047
6047
|
await saveGlobalConfig(config.mode ?? "production", updatedConfig);
|
|
@@ -6061,7 +6061,7 @@ async function createServerHandle(config) {
|
|
|
6061
6061
|
return res.status(400).json({ error: result.error });
|
|
6062
6062
|
}
|
|
6063
6063
|
const llmClient = getLLMClient();
|
|
6064
|
-
const { loadGlobalConfig, saveGlobalConfig, setDefaultModelSelection } = await import("./config-
|
|
6064
|
+
const { loadGlobalConfig, saveGlobalConfig, setDefaultModelSelection } = await import("./config-ACVEHBKG.js");
|
|
6065
6065
|
const globalConfig = await loadGlobalConfig(config.mode ?? "production");
|
|
6066
6066
|
const updatedConfig = setDefaultModelSelection(globalConfig, id, llmClient.getModel());
|
|
6067
6067
|
await saveGlobalConfig(config.mode ?? "production", updatedConfig);
|
|
@@ -6092,7 +6092,7 @@ async function createServerHandle(config) {
|
|
|
6092
6092
|
if (!result.success) {
|
|
6093
6093
|
return res.status(400).json({ error: result.error });
|
|
6094
6094
|
}
|
|
6095
|
-
const { loadGlobalConfig, saveGlobalConfig } = await import("./config-
|
|
6095
|
+
const { loadGlobalConfig, saveGlobalConfig } = await import("./config-ACVEHBKG.js");
|
|
6096
6096
|
const globalConfig = await loadGlobalConfig(config.mode ?? "production");
|
|
6097
6097
|
const updatedProviders = providerManager.getProviders();
|
|
6098
6098
|
const updatedConfig = {
|
|
@@ -6302,7 +6302,7 @@ async function createServerHandle(config) {
|
|
|
6302
6302
|
providerManager
|
|
6303
6303
|
);
|
|
6304
6304
|
const wss = wssExports.wss;
|
|
6305
|
-
const { QueueProcessor } = await import("./processor-
|
|
6305
|
+
const { QueueProcessor } = await import("./processor-GAOK7TPI.js");
|
|
6306
6306
|
const queueProcessor = new QueueProcessor({
|
|
6307
6307
|
sessionManager,
|
|
6308
6308
|
providerManager,
|
|
@@ -6375,4 +6375,4 @@ export {
|
|
|
6375
6375
|
createServerHandle,
|
|
6376
6376
|
createServer
|
|
6377
6377
|
};
|
|
6378
|
-
//# sourceMappingURL=chunk-
|
|
6378
|
+
//# sourceMappingURL=chunk-YCQSAFAQ.js.map
|
package/dist/cli/dev.js
CHANGED
package/dist/cli/index.js
CHANGED
|
@@ -13,11 +13,11 @@ import {
|
|
|
13
13
|
saveGlobalConfig,
|
|
14
14
|
setDefaultModelSelection,
|
|
15
15
|
trySmartDefaults
|
|
16
|
-
} from "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
16
|
+
} from "./chunk-P6GUT2QQ.js";
|
|
17
|
+
import "./chunk-KSASIV4B.js";
|
|
18
|
+
import "./chunk-D4ZLSV6P.js";
|
|
19
19
|
import "./chunk-R4HADRYO.js";
|
|
20
|
-
import "./chunk-
|
|
20
|
+
import "./chunk-CJNQGEYG.js";
|
|
21
21
|
import "./chunk-PNBH3RAX.js";
|
|
22
22
|
export {
|
|
23
23
|
activateProvider,
|
|
@@ -35,4 +35,4 @@ export {
|
|
|
35
35
|
setDefaultModelSelection,
|
|
36
36
|
trySmartDefaults
|
|
37
37
|
};
|
|
38
|
-
//# sourceMappingURL=config-
|
|
38
|
+
//# sourceMappingURL=config-ACVEHBKG.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
runBuilderTurn,
|
|
4
4
|
runChatTurn,
|
|
5
5
|
runVerifierTurn
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-BOEXJCOD.js";
|
|
7
7
|
import {
|
|
8
8
|
TurnMetrics,
|
|
9
9
|
createChatDoneEvent,
|
|
@@ -11,10 +11,10 @@ import {
|
|
|
11
11
|
createMessageStartEvent,
|
|
12
12
|
createToolCallEvent,
|
|
13
13
|
createToolResultEvent
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-4O3C2JMB.js";
|
|
15
15
|
import "./chunk-NBU6KIOD.js";
|
|
16
16
|
import "./chunk-574HZVLE.js";
|
|
17
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-D4ZLSV6P.js";
|
|
18
18
|
import "./chunk-PMDJEJYY.js";
|
|
19
19
|
import "./chunk-EEPU4INU.js";
|
|
20
20
|
import "./chunk-DZHZ3UUR.js";
|
|
@@ -25,6 +25,7 @@ import "./chunk-3EHGGBWE.js";
|
|
|
25
25
|
import "./chunk-Y6HBEACI.js";
|
|
26
26
|
import "./chunk-R4HADRYO.js";
|
|
27
27
|
import "./chunk-TVQOONDR.js";
|
|
28
|
+
import "./chunk-CJNQGEYG.js";
|
|
28
29
|
import "./chunk-PNBH3RAX.js";
|
|
29
30
|
export {
|
|
30
31
|
TurnMetrics,
|
|
@@ -38,4 +39,4 @@ export {
|
|
|
38
39
|
runChatTurn,
|
|
39
40
|
runVerifierTurn
|
|
40
41
|
};
|
|
41
|
-
//# sourceMappingURL=orchestrator-
|
|
42
|
+
//# sourceMappingURL=orchestrator-OE7WFEW6.js.map
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openfox",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.23",
|
|
4
4
|
"description": "Local-LLM-first agentic coding assistant",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -47,8 +47,8 @@
|
|
|
47
47
|
"lint:fix": "eslint src/ --fix",
|
|
48
48
|
"format": "prettier --check 'src/**/*.ts'",
|
|
49
49
|
"format:fix": "prettier --write 'src/**/*.ts'",
|
|
50
|
-
"duplicate:server": "jscpd src/server/ --ignore '**/*.test.ts'",
|
|
51
|
-
"duplicate:web": "jscpd web/src/ --config .jscpd-web.json",
|
|
50
|
+
"duplicate:server": "jscpd src/server/ --ignore '**/*.test.ts' --threshold 0",
|
|
51
|
+
"duplicate:web": "jscpd web/src/ --config .jscpd-web.json --threshold 0",
|
|
52
52
|
"duplicate": "npm run duplicate:server && npm run duplicate:web",
|
|
53
53
|
"check": "npm run typecheck && npm run duplicate",
|
|
54
54
|
"clean": "rm -rf dist",
|
|
@@ -175,7 +175,7 @@ var QueueProcessor = class {
|
|
|
175
175
|
backend: provider?.backend ?? llmClient.getBackend(),
|
|
176
176
|
model: llmClient.getModel()
|
|
177
177
|
};
|
|
178
|
-
const { runChatTurn } = await import("./orchestrator-
|
|
178
|
+
const { runChatTurn } = await import("./orchestrator-OE7WFEW6.js");
|
|
179
179
|
const runChatTurnParams = buildRunChatTurnParams({
|
|
180
180
|
sessionManager,
|
|
181
181
|
sessionId,
|
|
@@ -208,4 +208,4 @@ var QueueProcessor = class {
|
|
|
208
208
|
export {
|
|
209
209
|
QueueProcessor
|
|
210
210
|
};
|
|
211
|
-
//# sourceMappingURL=processor-
|
|
211
|
+
//# sourceMappingURL=processor-GAOK7TPI.js.map
|
|
@@ -5,18 +5,18 @@ import {
|
|
|
5
5
|
loadGlobalConfig,
|
|
6
6
|
removeProvider,
|
|
7
7
|
saveGlobalConfig
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-P6GUT2QQ.js";
|
|
9
9
|
import {
|
|
10
10
|
fetchAvailableModelsFromBackend
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-PYBB34ZK.js";
|
|
12
12
|
import {
|
|
13
13
|
detectModel
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-KSASIV4B.js";
|
|
15
15
|
import {
|
|
16
16
|
detectBackend
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-D4ZLSV6P.js";
|
|
18
18
|
import "./chunk-R4HADRYO.js";
|
|
19
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-CJNQGEYG.js";
|
|
20
20
|
import "./chunk-PNBH3RAX.js";
|
|
21
21
|
|
|
22
22
|
// src/cli/provider.ts
|
|
@@ -249,7 +249,7 @@ async function runProviderAdd(mode) {
|
|
|
249
249
|
isActive: makeActive
|
|
250
250
|
});
|
|
251
251
|
if (makeActive) {
|
|
252
|
-
const { setDefaultModelSelection } = await import("./config-
|
|
252
|
+
const { setDefaultModelSelection } = await import("./config-ACVEHBKG.js");
|
|
253
253
|
newConfig = setDefaultModelSelection(newConfig, newConfig.providers[newConfig.providers.length - 1].id, selectedModel);
|
|
254
254
|
}
|
|
255
255
|
await saveGlobalConfig(mode, newConfig);
|
|
@@ -373,4 +373,4 @@ export {
|
|
|
373
373
|
runProviderRemove,
|
|
374
374
|
runProviderUse
|
|
375
375
|
};
|
|
376
|
-
//# sourceMappingURL=provider-
|
|
376
|
+
//# sourceMappingURL=provider-RLQMVV2Z.js.map
|