openfox 1.6.96 → 1.6.97
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/dist/{auto-compaction-M2LTRUXL.js → auto-compaction-2I3XUF5P.js} +3 -3
- package/dist/{chat-handler-WEG7W3OY.js → chat-handler-42XM6GZI.js} +5 -5
- package/dist/{chunk-BK7QEUQF.js → chunk-47FAM55V.js} +3 -3
- package/dist/{chunk-EXRMBJME.js → chunk-B7UUSHT7.js} +95 -88
- package/dist/{chunk-2BEPXMWB.js → chunk-FBKS6IPU.js} +2 -2
- package/dist/{chunk-OBJE2622.js → chunk-K7IJKGYL.js} +2 -2
- package/dist/{chunk-QWGO6DE3.js → chunk-ROWFVGB6.js} +5 -1
- package/dist/cli/dev.js +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/{orchestrator-JNDOPIVQ.js → orchestrator-I3YQFBTP.js} +4 -4
- package/dist/package.json +1 -1
- package/dist/{processor-GISJIZH7.js → processor-F3GKMYJT.js} +2 -2
- package/dist/{serve-O5JK3PNM.js → serve-QRK2E7HR.js} +5 -5
- package/dist/server/index.js +4 -4
- package/dist/{settings-RMRS6GEW.js → settings-TTYCUHWU.js} +2 -2
- package/dist/{tools-UFAPVX45.js → tools-SIVCXYHR.js} +3 -3
- package/dist/web/assets/{index-FSFABXQ1.css → index-J5S6MyAu.css} +1 -1
- package/dist/web/assets/{index-C2E3ZO-C.js → index-QfmLKYGt.js} +69 -69
- package/dist/web/index.html +2 -2
- package/dist/web/sw.js +1 -1
- package/package.json +1 -1
|
@@ -2,8 +2,8 @@ import {
|
|
|
2
2
|
maybeAutoCompactContext,
|
|
3
3
|
performManualContextCompaction,
|
|
4
4
|
resolveCompactionStatsIdentity
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-47FAM55V.js";
|
|
6
|
+
import "./chunk-ROWFVGB6.js";
|
|
7
7
|
import "./chunk-ZHBL5G5X.js";
|
|
8
8
|
import "./chunk-DL6ZILAF.js";
|
|
9
9
|
import "./chunk-PBGOZMVY.js";
|
|
@@ -24,4 +24,4 @@ export {
|
|
|
24
24
|
performManualContextCompaction,
|
|
25
25
|
resolveCompactionStatsIdentity
|
|
26
26
|
};
|
|
27
|
-
//# sourceMappingURL=auto-compaction-
|
|
27
|
+
//# sourceMappingURL=auto-compaction-2I3XUF5P.js.map
|
|
@@ -8,9 +8,9 @@ import {
|
|
|
8
8
|
} from "./chunk-QAN42RJQ.js";
|
|
9
9
|
import {
|
|
10
10
|
runChatTurn
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-K7IJKGYL.js";
|
|
12
|
+
import "./chunk-47FAM55V.js";
|
|
13
|
+
import "./chunk-ROWFVGB6.js";
|
|
14
14
|
import "./chunk-ZHBL5G5X.js";
|
|
15
15
|
import "./chunk-DL6ZILAF.js";
|
|
16
16
|
import "./chunk-PBGOZMVY.js";
|
|
@@ -61,7 +61,7 @@ async function startChatSession(sessionId, content, deps, options) {
|
|
|
61
61
|
sessionManager.setRunning(sessionId, true);
|
|
62
62
|
broadcastForSession(sessionId, createSessionRunningMessage(true));
|
|
63
63
|
try {
|
|
64
|
-
const { maybeAutoCompactContext } = await import("./auto-compaction-
|
|
64
|
+
const { maybeAutoCompactContext } = await import("./auto-compaction-2I3XUF5P.js");
|
|
65
65
|
await maybeAutoCompactContext({
|
|
66
66
|
sessionManager,
|
|
67
67
|
sessionId,
|
|
@@ -175,4 +175,4 @@ export {
|
|
|
175
175
|
startChatSession,
|
|
176
176
|
stopSessionExecution
|
|
177
177
|
};
|
|
178
|
-
//# sourceMappingURL=chat-handler-
|
|
178
|
+
//# sourceMappingURL=chat-handler-42XM6GZI.js.map
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
SETTINGS_KEYS,
|
|
3
3
|
deleteSetting,
|
|
4
4
|
getSetting
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-ROWFVGB6.js";
|
|
6
6
|
import {
|
|
7
7
|
getProject
|
|
8
8
|
} from "./chunk-ZHBL5G5X.js";
|
|
@@ -3880,7 +3880,7 @@ var callSubAgentTool = {
|
|
|
3880
3880
|
};
|
|
3881
3881
|
}
|
|
3882
3882
|
try {
|
|
3883
|
-
const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-
|
|
3883
|
+
const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-SIVCXYHR.js");
|
|
3884
3884
|
const toolRegistry = getToolRegistryForAgent2(agentDef);
|
|
3885
3885
|
const turnMetrics = new TurnMetrics();
|
|
3886
3886
|
const result = await executeSubAgent({
|
|
@@ -5078,4 +5078,4 @@ export {
|
|
|
5078
5078
|
getToolRegistryForAgent,
|
|
5079
5079
|
createToolRegistry
|
|
5080
5080
|
};
|
|
5081
|
-
//# sourceMappingURL=chunk-
|
|
5081
|
+
//# sourceMappingURL=chunk-47FAM55V.js.map
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
createVerifierNudgeConfig,
|
|
3
3
|
runBuilderTurn,
|
|
4
4
|
runChatTurn
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-K7IJKGYL.js";
|
|
6
6
|
import {
|
|
7
7
|
TurnMetrics,
|
|
8
8
|
agentExists,
|
|
@@ -46,7 +46,7 @@ import {
|
|
|
46
46
|
saveSkillToProject,
|
|
47
47
|
skillExists,
|
|
48
48
|
spawnShellProcess
|
|
49
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-47FAM55V.js";
|
|
50
50
|
import {
|
|
51
51
|
getProject
|
|
52
52
|
} from "./chunk-ZHBL5G5X.js";
|
|
@@ -146,7 +146,7 @@ import express from "express";
|
|
|
146
146
|
import cors from "cors";
|
|
147
147
|
import { createServer as createHttpServer } from "http";
|
|
148
148
|
import { fileURLToPath as fileURLToPath4 } from "url";
|
|
149
|
-
import { dirname as
|
|
149
|
+
import { dirname as dirname6, resolve as resolve2, join as join7 } from "path";
|
|
150
150
|
import { readFile as readFile3 } from "fs/promises";
|
|
151
151
|
import { createServer as createViteServer } from "vite";
|
|
152
152
|
|
|
@@ -1670,7 +1670,7 @@ var TERMINAL_BLOCKED = "$blocked";
|
|
|
1670
1670
|
|
|
1671
1671
|
// src/server/workflows/shell.ts
|
|
1672
1672
|
function executeShellCommand(command, cwd, timeout, signal) {
|
|
1673
|
-
return new Promise((
|
|
1673
|
+
return new Promise((resolve3, reject) => {
|
|
1674
1674
|
if (checkAborted(signal)) {
|
|
1675
1675
|
reject(new Error("Aborted"));
|
|
1676
1676
|
return;
|
|
@@ -1682,7 +1682,7 @@ function executeShellCommand(command, cwd, timeout, signal) {
|
|
|
1682
1682
|
const timer = setTimeout(() => {
|
|
1683
1683
|
killed = true;
|
|
1684
1684
|
proc.kill("SIGTERM");
|
|
1685
|
-
|
|
1685
|
+
resolve3({ exitCode: 1, stdout, stderr: stderr + "\nCommand timed out", success: false });
|
|
1686
1686
|
}, timeout);
|
|
1687
1687
|
const onAbort = () => {
|
|
1688
1688
|
if (!killed) {
|
|
@@ -1704,13 +1704,13 @@ function executeShellCommand(command, cwd, timeout, signal) {
|
|
|
1704
1704
|
signal?.removeEventListener("abort", onAbort);
|
|
1705
1705
|
if (killed) return;
|
|
1706
1706
|
const exitCode = code ?? 1;
|
|
1707
|
-
|
|
1707
|
+
resolve3({ exitCode, stdout, stderr, success: exitCode === 0 });
|
|
1708
1708
|
});
|
|
1709
1709
|
proc.on("error", (err) => {
|
|
1710
1710
|
clearTimeout(timer);
|
|
1711
1711
|
signal?.removeEventListener("abort", onAbort);
|
|
1712
1712
|
if (killed) return;
|
|
1713
|
-
|
|
1713
|
+
resolve3({ exitCode: 1, stdout, stderr: err.message, success: false });
|
|
1714
1714
|
});
|
|
1715
1715
|
});
|
|
1716
1716
|
}
|
|
@@ -2304,7 +2304,7 @@ async function isValidToken(token) {
|
|
|
2304
2304
|
|
|
2305
2305
|
// src/server/ws/server.ts
|
|
2306
2306
|
function moduleGitBranch(cwd) {
|
|
2307
|
-
return new Promise((
|
|
2307
|
+
return new Promise((resolve3) => {
|
|
2308
2308
|
const proc = spawn2("git", ["rev-parse", "--abbrev-ref", "HEAD"], {
|
|
2309
2309
|
cwd,
|
|
2310
2310
|
stdio: ["ignore", "pipe", "ignore"]
|
|
@@ -2315,16 +2315,16 @@ function moduleGitBranch(cwd) {
|
|
|
2315
2315
|
});
|
|
2316
2316
|
proc.on("close", (code) => {
|
|
2317
2317
|
if (code === 0 && stdout.trim()) {
|
|
2318
|
-
|
|
2318
|
+
resolve3(stdout.trim());
|
|
2319
2319
|
} else {
|
|
2320
|
-
|
|
2320
|
+
resolve3(null);
|
|
2321
2321
|
}
|
|
2322
2322
|
});
|
|
2323
|
-
proc.on("error", () =>
|
|
2323
|
+
proc.on("error", () => resolve3(null));
|
|
2324
2324
|
});
|
|
2325
2325
|
}
|
|
2326
2326
|
function moduleGitDiff(cwd) {
|
|
2327
|
-
return new Promise((
|
|
2327
|
+
return new Promise((resolve3) => {
|
|
2328
2328
|
const proc = spawn2("git", ["diff", "--stat", "--numstat", "--format=", "HEAD"], {
|
|
2329
2329
|
cwd,
|
|
2330
2330
|
stdio: ["ignore", "pipe", "pipe"]
|
|
@@ -2347,7 +2347,7 @@ function moduleGitDiff(cwd) {
|
|
|
2347
2347
|
let statusCode = null;
|
|
2348
2348
|
const processResults = () => {
|
|
2349
2349
|
if (diffCode !== 0 || statusCode !== 0) {
|
|
2350
|
-
|
|
2350
|
+
resolve3({ hash: "", files: [] });
|
|
2351
2351
|
return;
|
|
2352
2352
|
}
|
|
2353
2353
|
const hashProc = spawn2("git", ["rev-parse", "HEAD"], { cwd, stdio: ["ignore", "pipe", "ignore"] });
|
|
@@ -2387,7 +2387,7 @@ function moduleGitDiff(cwd) {
|
|
|
2387
2387
|
deletions: 0
|
|
2388
2388
|
});
|
|
2389
2389
|
}
|
|
2390
|
-
|
|
2390
|
+
resolve3({ hash: hash.trim(), files });
|
|
2391
2391
|
};
|
|
2392
2392
|
proc.on("close", (code) => {
|
|
2393
2393
|
procExited = true;
|
|
@@ -2399,10 +2399,10 @@ function moduleGitDiff(cwd) {
|
|
|
2399
2399
|
statusCode = code;
|
|
2400
2400
|
if (procExited) processResults();
|
|
2401
2401
|
});
|
|
2402
|
-
proc.on("error", () =>
|
|
2402
|
+
proc.on("error", () => resolve3({ hash: "", files: [] }));
|
|
2403
2403
|
statusProc.on("error", () => {
|
|
2404
2404
|
if (!procExited) {
|
|
2405
|
-
|
|
2405
|
+
resolve3({ hash: "", files: [] });
|
|
2406
2406
|
}
|
|
2407
2407
|
});
|
|
2408
2408
|
});
|
|
@@ -3360,19 +3360,19 @@ var LspServer = class {
|
|
|
3360
3360
|
*/
|
|
3361
3361
|
async getDiagnosticsWithWait(path, timeoutMs = DIAGNOSTIC_WAIT_MS) {
|
|
3362
3362
|
if (this.openDocuments.has(path)) {
|
|
3363
|
-
return new Promise((
|
|
3363
|
+
return new Promise((resolve3) => {
|
|
3364
3364
|
const existing = this.diagnostics.get(path);
|
|
3365
3365
|
if (existing !== void 0) {
|
|
3366
3366
|
setTimeout(() => {
|
|
3367
|
-
|
|
3367
|
+
resolve3(this.diagnostics.get(path) ?? []);
|
|
3368
3368
|
}, 100);
|
|
3369
3369
|
return;
|
|
3370
3370
|
}
|
|
3371
3371
|
const timeout = setTimeout(() => {
|
|
3372
3372
|
this.pendingDiagnostics.delete(path);
|
|
3373
|
-
|
|
3373
|
+
resolve3(this.diagnostics.get(path) ?? []);
|
|
3374
3374
|
}, timeoutMs);
|
|
3375
|
-
this.pendingDiagnostics.set(path, { resolve:
|
|
3375
|
+
this.pendingDiagnostics.set(path, { resolve: resolve3, timeout });
|
|
3376
3376
|
});
|
|
3377
3377
|
}
|
|
3378
3378
|
return this.diagnostics.get(path) ?? [];
|
|
@@ -5342,17 +5342,54 @@ function createTerminalRoutes() {
|
|
|
5342
5342
|
return router;
|
|
5343
5343
|
}
|
|
5344
5344
|
|
|
5345
|
-
// src/server/routes/
|
|
5345
|
+
// src/server/routes/directories.ts
|
|
5346
5346
|
import { Router as Router5 } from "express";
|
|
5347
|
+
import { readdir as readdir2 } from "fs/promises";
|
|
5348
|
+
import { resolve, join as join6, dirname as dirname5, basename as basename2 } from "path";
|
|
5349
|
+
function createDirectoryRoutes() {
|
|
5350
|
+
const router = Router5();
|
|
5351
|
+
const DEFAULT_BASE_PATH = process.cwd();
|
|
5352
|
+
router.get("/", async (req, res) => {
|
|
5353
|
+
const path = req.query["path"] || DEFAULT_BASE_PATH;
|
|
5354
|
+
try {
|
|
5355
|
+
const resolvedPath = resolve(path);
|
|
5356
|
+
const entries = await readdir2(resolvedPath, { withFileTypes: true });
|
|
5357
|
+
const directories = entries.filter((entry) => entry.isDirectory()).map((entry) => ({
|
|
5358
|
+
name: entry.name,
|
|
5359
|
+
path: join6(resolvedPath, entry.name)
|
|
5360
|
+
})).sort((a, b) => a.name.localeCompare(b.name));
|
|
5361
|
+
const parent = dirname5(resolvedPath);
|
|
5362
|
+
const hasParent = parent !== resolvedPath;
|
|
5363
|
+
res.json({
|
|
5364
|
+
current: resolvedPath,
|
|
5365
|
+
parent: hasParent ? parent : null,
|
|
5366
|
+
directories,
|
|
5367
|
+
basename: basename2(resolvedPath)
|
|
5368
|
+
});
|
|
5369
|
+
} catch {
|
|
5370
|
+
res.status(400).json({
|
|
5371
|
+
error: "Cannot read directory",
|
|
5372
|
+
current: DEFAULT_BASE_PATH,
|
|
5373
|
+
parent: null,
|
|
5374
|
+
directories: [],
|
|
5375
|
+
basename: basename2(DEFAULT_BASE_PATH)
|
|
5376
|
+
});
|
|
5377
|
+
}
|
|
5378
|
+
});
|
|
5379
|
+
return router;
|
|
5380
|
+
}
|
|
5381
|
+
|
|
5382
|
+
// src/server/routes/auto-update.ts
|
|
5383
|
+
import { Router as Router6 } from "express";
|
|
5347
5384
|
import { spawn as spawn4 } from "child_process";
|
|
5348
5385
|
|
|
5349
5386
|
// src/constants.ts
|
|
5350
|
-
var VERSION = "1.6.
|
|
5387
|
+
var VERSION = "1.6.97";
|
|
5351
5388
|
|
|
5352
5389
|
// src/server/routes/auto-update.ts
|
|
5353
5390
|
var updateInProgress = false;
|
|
5354
5391
|
function createAutoUpdateRoutes(options = {}) {
|
|
5355
|
-
const router =
|
|
5392
|
+
const router = Router6();
|
|
5356
5393
|
router.get("/check", async (req, res) => {
|
|
5357
5394
|
const isTest = req.query["test"] === "1";
|
|
5358
5395
|
const current = VERSION;
|
|
@@ -5361,7 +5398,7 @@ function createAutoUpdateRoutes(options = {}) {
|
|
|
5361
5398
|
return;
|
|
5362
5399
|
}
|
|
5363
5400
|
try {
|
|
5364
|
-
const latest = await new Promise((
|
|
5401
|
+
const latest = await new Promise((resolve3, reject) => {
|
|
5365
5402
|
const child = spawn4("npm", ["view", "openfox", "version"], {
|
|
5366
5403
|
stdio: ["ignore", "pipe", "pipe"]
|
|
5367
5404
|
});
|
|
@@ -5371,7 +5408,7 @@ function createAutoUpdateRoutes(options = {}) {
|
|
|
5371
5408
|
});
|
|
5372
5409
|
child.on("close", (code) => {
|
|
5373
5410
|
if (code === 0) {
|
|
5374
|
-
|
|
5411
|
+
resolve3(stdout.trim());
|
|
5375
5412
|
} else {
|
|
5376
5413
|
reject(new Error(`npm view exited with code ${code}`));
|
|
5377
5414
|
}
|
|
@@ -5432,7 +5469,7 @@ function createAutoUpdateRoutes(options = {}) {
|
|
|
5432
5469
|
}
|
|
5433
5470
|
|
|
5434
5471
|
// src/server/index.ts
|
|
5435
|
-
var __dirname2 =
|
|
5472
|
+
var __dirname2 = dirname6(fileURLToPath4(import.meta.url));
|
|
5436
5473
|
async function createServerHandle(config4) {
|
|
5437
5474
|
setRuntimeConfig(config4);
|
|
5438
5475
|
setLogLevel(config4.logging?.level ?? void 0, config4.mode);
|
|
@@ -5803,7 +5840,7 @@ async function createServerHandle(config4) {
|
|
|
5803
5840
|
if (!callId || approved === void 0) {
|
|
5804
5841
|
return res.status(400).json({ error: "callId and approved are required" });
|
|
5805
5842
|
}
|
|
5806
|
-
const { providePathConfirmation } = await import("./tools-
|
|
5843
|
+
const { providePathConfirmation } = await import("./tools-SIVCXYHR.js");
|
|
5807
5844
|
const result = providePathConfirmation(callId, approved, alwaysAllow);
|
|
5808
5845
|
if (!result.found) {
|
|
5809
5846
|
return res.status(404).json({ error: "No pending path confirmation with that ID" });
|
|
@@ -5827,7 +5864,7 @@ async function createServerHandle(config4) {
|
|
|
5827
5864
|
if (!callId || !answer) {
|
|
5828
5865
|
return res.status(400).json({ error: "callId and answer are required" });
|
|
5829
5866
|
}
|
|
5830
|
-
const { provideAnswer: provideAnswer2 } = await import("./tools-
|
|
5867
|
+
const { provideAnswer: provideAnswer2 } = await import("./tools-SIVCXYHR.js");
|
|
5831
5868
|
const found = provideAnswer2(callId, answer);
|
|
5832
5869
|
if (!found) {
|
|
5833
5870
|
return res.status(404).json({ error: "No pending question with that ID" });
|
|
@@ -5863,8 +5900,8 @@ async function createServerHandle(config4) {
|
|
|
5863
5900
|
if (!session) {
|
|
5864
5901
|
return res.status(404).json({ error: "Session not found" });
|
|
5865
5902
|
}
|
|
5866
|
-
const { stopSessionExecution } = await import("./chat-handler-
|
|
5867
|
-
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-
|
|
5903
|
+
const { stopSessionExecution } = await import("./chat-handler-42XM6GZI.js");
|
|
5904
|
+
const { cancelQuestionsForSession, cancelPathConfirmationsForSession } = await import("./tools-SIVCXYHR.js");
|
|
5868
5905
|
stopSessionExecution(sessionId, sessionManager);
|
|
5869
5906
|
abortSession(sessionId);
|
|
5870
5907
|
cancelQuestionsForSession(sessionId, "Session stopped by user");
|
|
@@ -5915,7 +5952,7 @@ async function createServerHandle(config4) {
|
|
|
5915
5952
|
res.json({ accepted: true });
|
|
5916
5953
|
});
|
|
5917
5954
|
app.get("/api/settings", async (req, res) => {
|
|
5918
|
-
const { getSetting, SETTINGS_DEFAULTS } = await import("./settings-
|
|
5955
|
+
const { getSetting, SETTINGS_DEFAULTS } = await import("./settings-TTYCUHWU.js");
|
|
5919
5956
|
const keysParam = req.query["keys"];
|
|
5920
5957
|
if (!keysParam) {
|
|
5921
5958
|
return res.status(400).json({ error: "keys query parameter is required" });
|
|
@@ -5928,19 +5965,19 @@ async function createServerHandle(config4) {
|
|
|
5928
5965
|
res.json(result);
|
|
5929
5966
|
});
|
|
5930
5967
|
app.get("/api/settings/:key", async (req, res) => {
|
|
5931
|
-
const { getSetting, SETTINGS_DEFAULTS } = await import("./settings-
|
|
5968
|
+
const { getSetting, SETTINGS_DEFAULTS } = await import("./settings-TTYCUHWU.js");
|
|
5932
5969
|
const key = req.params.key;
|
|
5933
5970
|
const value = getSetting(key) ?? SETTINGS_DEFAULTS[key] ?? null;
|
|
5934
5971
|
res.json({ key, value });
|
|
5935
5972
|
});
|
|
5936
5973
|
app.get("/api/settings/:key", async (req, res) => {
|
|
5937
|
-
const { getSetting, SETTINGS_DEFAULTS } = await import("./settings-
|
|
5974
|
+
const { getSetting, SETTINGS_DEFAULTS } = await import("./settings-TTYCUHWU.js");
|
|
5938
5975
|
const key = req.params.key;
|
|
5939
5976
|
const value = getSetting(key) ?? SETTINGS_DEFAULTS[key] ?? null;
|
|
5940
5977
|
res.json({ key, value });
|
|
5941
5978
|
});
|
|
5942
5979
|
app.put("/api/settings/:key", async (req, res) => {
|
|
5943
|
-
const { setSetting } = await import("./settings-
|
|
5980
|
+
const { setSetting } = await import("./settings-TTYCUHWU.js");
|
|
5944
5981
|
const key = req.params.key;
|
|
5945
5982
|
const { value } = req.body;
|
|
5946
5983
|
if (value === void 0) {
|
|
@@ -6236,42 +6273,15 @@ async function createServerHandle(config4) {
|
|
|
6236
6273
|
app.get("/api/branch", async (req, res) => {
|
|
6237
6274
|
await getCurrentBranch(req, res);
|
|
6238
6275
|
});
|
|
6239
|
-
|
|
6240
|
-
|
|
6241
|
-
const path = req.query["path"] || DEFAULT_BASE_PATH;
|
|
6242
|
-
try {
|
|
6243
|
-
const resolvedPath = resolve(path);
|
|
6244
|
-
const entries = await import("fs/promises").then((m) => m.readdir(resolvedPath, { withFileTypes: true }));
|
|
6245
|
-
const directories = entries.filter((entry) => entry.isDirectory() && !entry.name.startsWith(".")).map((entry) => ({
|
|
6246
|
-
name: entry.name,
|
|
6247
|
-
path: join6(resolvedPath, entry.name)
|
|
6248
|
-
})).sort((a, b) => a.name.localeCompare(b.name));
|
|
6249
|
-
const parent = dirname5(resolvedPath);
|
|
6250
|
-
const hasParent = parent !== resolvedPath;
|
|
6251
|
-
res.json({
|
|
6252
|
-
current: resolvedPath,
|
|
6253
|
-
parent: hasParent ? parent : null,
|
|
6254
|
-
directories,
|
|
6255
|
-
basename: basename2(resolvedPath)
|
|
6256
|
-
});
|
|
6257
|
-
} catch {
|
|
6258
|
-
res.status(400).json({
|
|
6259
|
-
error: "Cannot read directory",
|
|
6260
|
-
current: DEFAULT_BASE_PATH,
|
|
6261
|
-
parent: null,
|
|
6262
|
-
directories: [],
|
|
6263
|
-
basename: basename2(DEFAULT_BASE_PATH)
|
|
6264
|
-
});
|
|
6265
|
-
}
|
|
6266
|
-
});
|
|
6267
|
-
const webDir = resolve(__dirname2, "../../web");
|
|
6276
|
+
app.use("/api/directories", createDirectoryRoutes());
|
|
6277
|
+
const webDir = resolve2(__dirname2, "../../web");
|
|
6268
6278
|
const isDev = config4.mode === "development";
|
|
6269
6279
|
let viteServer;
|
|
6270
6280
|
if (isDev) {
|
|
6271
6281
|
logger.info("Dev mode: using Vite middleware");
|
|
6272
6282
|
viteServer = await createViteServer({
|
|
6273
6283
|
root: webDir,
|
|
6274
|
-
configFile:
|
|
6284
|
+
configFile: resolve2(__dirname2, "../../web/vite.config.ts"),
|
|
6275
6285
|
server: { middlewareMode: true },
|
|
6276
6286
|
appType: "spa",
|
|
6277
6287
|
logLevel: "warn"
|
|
@@ -6291,7 +6301,7 @@ async function createServerHandle(config4) {
|
|
|
6291
6301
|
}
|
|
6292
6302
|
});
|
|
6293
6303
|
app.get("/fox.svg", (_req, res) => {
|
|
6294
|
-
readFile3(
|
|
6304
|
+
readFile3(join7(webDir, "fox.svg")).then((content) => {
|
|
6295
6305
|
res.set("Content-Type", "image/svg+xml");
|
|
6296
6306
|
res.send(content);
|
|
6297
6307
|
}).catch(() => {
|
|
@@ -6300,7 +6310,7 @@ async function createServerHandle(config4) {
|
|
|
6300
6310
|
});
|
|
6301
6311
|
app.use(
|
|
6302
6312
|
"/sounds",
|
|
6303
|
-
express.static(
|
|
6313
|
+
express.static(join7(webDir, "public", "sounds"), {
|
|
6304
6314
|
setHeaders: (res) => {
|
|
6305
6315
|
res.set("Content-Type", "audio/mpeg");
|
|
6306
6316
|
}
|
|
@@ -6309,13 +6319,13 @@ async function createServerHandle(config4) {
|
|
|
6309
6319
|
app.use("/__inspect__.js", (_req, res) => {
|
|
6310
6320
|
res.set("Access-Control-Allow-Origin", "*");
|
|
6311
6321
|
res.set("Content-Type", "application/javascript");
|
|
6312
|
-
readFile3(
|
|
6322
|
+
readFile3(join7(webDir, "public", "__inspect__.js")).then((content) => res.send(content)).catch(() => res.status(404).send("Not found"));
|
|
6313
6323
|
});
|
|
6314
6324
|
app.get("/*path", (req, res) => {
|
|
6315
6325
|
if (req.path.startsWith("/api/")) {
|
|
6316
6326
|
return;
|
|
6317
6327
|
}
|
|
6318
|
-
readFile3(
|
|
6328
|
+
readFile3(join7(webDir, "index.html"), "utf-8").then((indexHtml) => viteServer.transformIndexHtml(req.originalUrl, indexHtml)).then((transformed) => res.send(transformed)).catch((err) => {
|
|
6319
6329
|
logger.error("Error serving index.html", { error: err });
|
|
6320
6330
|
res.status(500).send("Server error");
|
|
6321
6331
|
});
|
|
@@ -6323,10 +6333,10 @@ async function createServerHandle(config4) {
|
|
|
6323
6333
|
logger.info("Vite middleware ready", { port: config4.server.port });
|
|
6324
6334
|
}
|
|
6325
6335
|
if (!isDev) {
|
|
6326
|
-
const distWebDir =
|
|
6336
|
+
const distWebDir = resolve2(__dirname2, "web");
|
|
6327
6337
|
app.use(
|
|
6328
6338
|
"/assets",
|
|
6329
|
-
express.static(
|
|
6339
|
+
express.static(join7(distWebDir, "assets"), {
|
|
6330
6340
|
setHeaders: (res, filepath) => {
|
|
6331
6341
|
if (filepath.endsWith(".css")) {
|
|
6332
6342
|
res.set("Content-Type", "text/css");
|
|
@@ -6334,11 +6344,11 @@ async function createServerHandle(config4) {
|
|
|
6334
6344
|
}
|
|
6335
6345
|
})
|
|
6336
6346
|
);
|
|
6337
|
-
app.use("/manifest.webmanifest", express.static(
|
|
6338
|
-
app.use("/registerSW.js", express.static(
|
|
6339
|
-
app.use("/sw.js", express.static(
|
|
6347
|
+
app.use("/manifest.webmanifest", express.static(join7(distWebDir, "manifest.webmanifest")));
|
|
6348
|
+
app.use("/registerSW.js", express.static(join7(distWebDir, "registerSW.js")));
|
|
6349
|
+
app.use("/sw.js", express.static(join7(distWebDir, "sw.js")));
|
|
6340
6350
|
app.get("/fox.svg", (_req, res) => {
|
|
6341
|
-
readFile3(
|
|
6351
|
+
readFile3(join7(distWebDir, "fox.svg")).then((content) => {
|
|
6342
6352
|
res.set("Content-Type", "image/svg+xml");
|
|
6343
6353
|
res.send(content);
|
|
6344
6354
|
}).catch(() => {
|
|
@@ -6347,7 +6357,7 @@ async function createServerHandle(config4) {
|
|
|
6347
6357
|
});
|
|
6348
6358
|
app.use(
|
|
6349
6359
|
"/sounds",
|
|
6350
|
-
express.static(
|
|
6360
|
+
express.static(join7(distWebDir, "sounds"), {
|
|
6351
6361
|
setHeaders: (res) => {
|
|
6352
6362
|
res.set("Content-Type", "audio/mpeg");
|
|
6353
6363
|
}
|
|
@@ -6356,15 +6366,15 @@ async function createServerHandle(config4) {
|
|
|
6356
6366
|
app.use("/__inspect__.js", (_req, res) => {
|
|
6357
6367
|
res.set("Access-Control-Allow-Origin", "*");
|
|
6358
6368
|
res.set("Content-Type", "application/javascript");
|
|
6359
|
-
readFile3(
|
|
6369
|
+
readFile3(join7(distWebDir, "__inspect__.js")).then((content) => res.send(content)).catch(() => res.status(404).send("Not found"));
|
|
6360
6370
|
});
|
|
6361
6371
|
app.use("/__inspect__.js", (_req, res) => {
|
|
6362
6372
|
res.set("Access-Control-Allow-Origin", "*");
|
|
6363
6373
|
res.set("Content-Type", "application/javascript");
|
|
6364
|
-
readFile3(
|
|
6374
|
+
readFile3(join7(distWebDir, "__inspect__.js")).then((content) => res.send(content)).catch(() => res.status(404).send("Not found"));
|
|
6365
6375
|
});
|
|
6366
6376
|
app.get("/", (_req, res) => {
|
|
6367
|
-
readFile3(
|
|
6377
|
+
readFile3(join7(distWebDir, "index.html"), "utf-8").then((content) => res.send(content)).catch(() => {
|
|
6368
6378
|
res.status(404).send("Web UI not built. Run `npm run build:web`");
|
|
6369
6379
|
});
|
|
6370
6380
|
});
|
|
@@ -6372,7 +6382,7 @@ async function createServerHandle(config4) {
|
|
|
6372
6382
|
if (req.path.startsWith("/api/") || req.path.startsWith("/assets/") || req.path.startsWith("/sounds/") || req.path.startsWith("/manifest.webmanifest") || req.path.startsWith("/registerSW.js") || req.path.startsWith("/sw.js") || req.path === "/fox.svg") {
|
|
6373
6383
|
return;
|
|
6374
6384
|
}
|
|
6375
|
-
readFile3(
|
|
6385
|
+
readFile3(join7(distWebDir, "index.html"), "utf-8").then((content) => res.send(content)).catch(() => {
|
|
6376
6386
|
res.status(404).send("Web UI not built");
|
|
6377
6387
|
});
|
|
6378
6388
|
});
|
|
@@ -6387,7 +6397,7 @@ async function createServerHandle(config4) {
|
|
|
6387
6397
|
providerManager
|
|
6388
6398
|
);
|
|
6389
6399
|
const wss = wssExports.wss;
|
|
6390
|
-
const { QueueProcessor } = await import("./processor-
|
|
6400
|
+
const { QueueProcessor } = await import("./processor-F3GKMYJT.js");
|
|
6391
6401
|
const queueProcessor = new QueueProcessor({
|
|
6392
6402
|
sessionManager,
|
|
6393
6403
|
providerManager,
|
|
@@ -6407,7 +6417,7 @@ async function createServerHandle(config4) {
|
|
|
6407
6417
|
return {
|
|
6408
6418
|
httpServer,
|
|
6409
6419
|
ctx: { config: config4, sessionManager, llmClient: getLLMClient(), toolRegistry, providerManager },
|
|
6410
|
-
start: (port) => new Promise((
|
|
6420
|
+
start: (port) => new Promise((resolve3, reject) => {
|
|
6411
6421
|
const listenPort = port ?? config4.server.port;
|
|
6412
6422
|
const host = config4.server.host;
|
|
6413
6423
|
httpServer.listen(listenPort, host, () => {
|
|
@@ -6417,11 +6427,11 @@ async function createServerHandle(config4) {
|
|
|
6417
6427
|
logger.info(`OpenFox server running at http://${host}:${actualPort}`);
|
|
6418
6428
|
logger.info(`WebSocket available at ws://${host}:${actualPort}/ws`);
|
|
6419
6429
|
logger.info(`LLM backend: ${client.getBackend()}, model: ${client.getModel()}, url: ${config4.llm.baseUrl}`);
|
|
6420
|
-
|
|
6430
|
+
resolve3({ port: actualPort });
|
|
6421
6431
|
});
|
|
6422
6432
|
httpServer.on("error", reject);
|
|
6423
6433
|
}),
|
|
6424
|
-
close: () => new Promise((
|
|
6434
|
+
close: () => new Promise((resolve3) => {
|
|
6425
6435
|
logger.info("Shutting down...");
|
|
6426
6436
|
void (async () => {
|
|
6427
6437
|
await devServerManager.stopAll();
|
|
@@ -6434,7 +6444,7 @@ async function createServerHandle(config4) {
|
|
|
6434
6444
|
client.terminate();
|
|
6435
6445
|
}
|
|
6436
6446
|
wss.close();
|
|
6437
|
-
httpServer.close(() =>
|
|
6447
|
+
httpServer.close(() => resolve3());
|
|
6438
6448
|
})();
|
|
6439
6449
|
})
|
|
6440
6450
|
};
|
|
@@ -6453,13 +6463,10 @@ async function createServer(config4) {
|
|
|
6453
6463
|
process.on("SIGINT", shutdown);
|
|
6454
6464
|
process.on("SIGTERM", shutdown);
|
|
6455
6465
|
}
|
|
6456
|
-
function basename2(path) {
|
|
6457
|
-
return path.split("/").pop() || path.split("\\").pop() || path;
|
|
6458
|
-
}
|
|
6459
6466
|
|
|
6460
6467
|
export {
|
|
6461
6468
|
VERSION,
|
|
6462
6469
|
createServerHandle,
|
|
6463
6470
|
createServer
|
|
6464
6471
|
};
|
|
6465
|
-
//# sourceMappingURL=chunk-
|
|
6472
|
+
//# sourceMappingURL=chunk-B7UUSHT7.js.map
|
|
@@ -191,7 +191,7 @@ async function runCli(options) {
|
|
|
191
191
|
if (!configExists) {
|
|
192
192
|
await runNetworkSetup(mode);
|
|
193
193
|
}
|
|
194
|
-
const { runServe } = await import("./serve-
|
|
194
|
+
const { runServe } = await import("./serve-QRK2E7HR.js");
|
|
195
195
|
const serveOptions = { mode };
|
|
196
196
|
if (values.port) serveOptions.port = parseInt(values.port);
|
|
197
197
|
if (values["no-browser"] === true) serveOptions.openBrowser = false;
|
|
@@ -203,4 +203,4 @@ async function runCli(options) {
|
|
|
203
203
|
export {
|
|
204
204
|
runCli
|
|
205
205
|
};
|
|
206
|
-
//# sourceMappingURL=chunk-
|
|
206
|
+
//# sourceMappingURL=chunk-FBKS6IPU.js.map
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
getToolRegistryForAgent,
|
|
14
14
|
loadAllAgentsDefault,
|
|
15
15
|
runTopLevelAgentLoop
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-47FAM55V.js";
|
|
17
17
|
import {
|
|
18
18
|
getCurrentContextWindowId,
|
|
19
19
|
getEventStore
|
|
@@ -327,4 +327,4 @@ export {
|
|
|
327
327
|
runBuilderTurn,
|
|
328
328
|
runVerifierTurn
|
|
329
329
|
};
|
|
330
|
-
//# sourceMappingURL=chunk-
|
|
330
|
+
//# sourceMappingURL=chunk-K7IJKGYL.js.map
|
|
@@ -13,6 +13,8 @@ var SETTINGS_KEYS = {
|
|
|
13
13
|
DISPLAY_SHOW_SYNTAX_HIGHLIGHTING: "display.showSyntaxHighlighting",
|
|
14
14
|
DISPLAY_THEME: "display.theme",
|
|
15
15
|
DISPLAY_USER_PRESETS: "display.userPresets",
|
|
16
|
+
DISPLAY_FOLLOW_SYSTEM_THEME: "display.followSystemTheme",
|
|
17
|
+
DISPLAY_SHOW_OPEN_IN_EDITOR: "display.showOpenInEditorLinks",
|
|
16
18
|
LLM_DISABLE_XML_PROTECTION: "llm.disableXmlProtection",
|
|
17
19
|
KEYBINDINGS: "keybindings"
|
|
18
20
|
};
|
|
@@ -24,6 +26,8 @@ var SETTINGS_DEFAULTS = {
|
|
|
24
26
|
[SETTINGS_KEYS.DISPLAY_SHOW_WORKFLOW_BARS]: "true",
|
|
25
27
|
[SETTINGS_KEYS.DISPLAY_SHOW_SYNTAX_HIGHLIGHTING]: "true",
|
|
26
28
|
[SETTINGS_KEYS.DISPLAY_THEME]: JSON.stringify({ preset: "dark" }),
|
|
29
|
+
[SETTINGS_KEYS.DISPLAY_FOLLOW_SYSTEM_THEME]: "true",
|
|
30
|
+
[SETTINGS_KEYS.DISPLAY_SHOW_OPEN_IN_EDITOR]: "false",
|
|
27
31
|
[SETTINGS_KEYS.LLM_DISABLE_XML_PROTECTION]: "false",
|
|
28
32
|
[SETTINGS_KEYS.KEYBINDINGS]: JSON.stringify({
|
|
29
33
|
terminalToggle: { type: "double-press", key: "Control", threshold: 300 },
|
|
@@ -82,4 +86,4 @@ export {
|
|
|
82
86
|
deleteSetting,
|
|
83
87
|
getAllSettings
|
|
84
88
|
};
|
|
85
|
-
//# sourceMappingURL=chunk-
|
|
89
|
+
//# sourceMappingURL=chunk-ROWFVGB6.js.map
|
package/dist/cli/dev.js
CHANGED
package/dist/cli/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
runBuilderTurn,
|
|
4
4
|
runChatTurn,
|
|
5
5
|
runVerifierTurn
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-K7IJKGYL.js";
|
|
7
7
|
import {
|
|
8
8
|
TurnMetrics,
|
|
9
9
|
createChatDoneEvent,
|
|
@@ -11,8 +11,8 @@ import {
|
|
|
11
11
|
createMessageStartEvent,
|
|
12
12
|
createToolCallEvent,
|
|
13
13
|
createToolResultEvent
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import "./chunk-
|
|
14
|
+
} from "./chunk-47FAM55V.js";
|
|
15
|
+
import "./chunk-ROWFVGB6.js";
|
|
16
16
|
import "./chunk-ZHBL5G5X.js";
|
|
17
17
|
import "./chunk-DL6ZILAF.js";
|
|
18
18
|
import "./chunk-PBGOZMVY.js";
|
|
@@ -40,4 +40,4 @@ export {
|
|
|
40
40
|
runChatTurn,
|
|
41
41
|
runVerifierTurn
|
|
42
42
|
};
|
|
43
|
-
//# sourceMappingURL=orchestrator-
|
|
43
|
+
//# sourceMappingURL=orchestrator-I3YQFBTP.js.map
|