openfox 1.6.16 → 1.6.18
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-2RKC6DC2.js → auto-compaction-A657A2UQ.js} +5 -5
- package/dist/{chat-handler-IY2XVOO6.js → chat-handler-2NXHPPMS.js} +9 -9
- package/dist/{chunk-4OI4VPZ6.js → chunk-6TWWJIFP.js} +64 -49
- package/dist/{chunk-F54ZJN4X.js → chunk-AV45GQ7B.js} +4 -4
- package/dist/{chunk-NJWPSSRW.js → chunk-DZHZ3UUR.js} +4 -4
- package/dist/{chunk-2KP34IDL.js → chunk-EEPU4INU.js} +4 -2
- package/dist/{chunk-U54QVKL2.js → chunk-KCJC3VBS.js} +4 -4
- package/dist/{chunk-6L3X7T4K.js → chunk-PMDJEJYY.js} +2 -2
- package/dist/{chunk-T5PBG2PE.js → chunk-THP77DXS.js} +2 -2
- package/dist/{chunk-NN65D5SI.js → chunk-WRFOMNHM.js} +80 -134
- package/dist/{chunk-SN7OBEVL.js → chunk-ZGTXED6Q.js} +3 -3
- package/dist/cli/dev.js +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/{events-2ETDOE5B.js → events-LI4NAFRZ.js} +3 -3
- package/dist/{folding-M7FMUBOL.js → folding-HRZMWP4H.js} +2 -2
- package/dist/{orchestrator-U5VCLBYQ.js → orchestrator-VWMGHSCG.js} +6 -6
- package/dist/package.json +2 -2
- package/dist/{processor-VUEJM73B.js → processor-7TH3ATDK.js} +7 -7
- package/dist/{protocol-KUKFSV5U.js → protocol-YNVBDNL7.js} +2 -2
- package/dist/{serve-GOLQMQFA.js → serve-KMTRAQ4F.js} +8 -8
- package/dist/server/index.js +7 -7
- package/dist/{tools-55YICCVH.js → tools-F7RWE4YI.js} +5 -5
- package/dist/web/assets/{index-D4V7Gtvt.css → index-CcnXf371.css} +1 -1
- package/dist/web/assets/{index-CZBXRYpK.js → index-DwDDssmB.js} +45 -45
- package/dist/web/index.html +2 -2
- package/dist/web/sw.js +1 -1
- package/package.json +2 -2
- /package/dist/{server/commands/defaults → command-defaults}/commit-push.command.md +0 -0
- /package/dist/{server/commands/defaults → command-defaults}/init.command.md +0 -0
- /package/dist/{server/commands/defaults → command-defaults}/test-ui.command.md +0 -0
- /package/dist/{server/skills/defaults → skill-defaults}/browser.skill.md +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
generateSessionName,
|
|
3
3
|
needsNameGeneration
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-AV45GQ7B.js";
|
|
5
5
|
import {
|
|
6
6
|
createVerifierNudgeConfig,
|
|
7
7
|
runBuilderTurn,
|
|
8
8
|
runChatTurn
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-KCJC3VBS.js";
|
|
10
10
|
import {
|
|
11
11
|
TurnMetrics,
|
|
12
12
|
agentExists,
|
|
@@ -25,6 +25,7 @@ import {
|
|
|
25
25
|
getAllInstructions,
|
|
26
26
|
getDefaultAgentContent,
|
|
27
27
|
getDefaultAgentIds,
|
|
28
|
+
getDefaultIds,
|
|
28
29
|
getDefaultSkillContent,
|
|
29
30
|
getDefaultSkillIds,
|
|
30
31
|
getEnabledSkillMetadata,
|
|
@@ -35,16 +36,18 @@ import {
|
|
|
35
36
|
loadAllSkills,
|
|
36
37
|
loadDefaultAgents,
|
|
37
38
|
loadDefaultSkills,
|
|
39
|
+
loadItemsFromDir,
|
|
38
40
|
loadUserAgents,
|
|
39
41
|
loadUserSkills,
|
|
40
42
|
maybeAutoCompactContext,
|
|
43
|
+
pathExists,
|
|
41
44
|
performManualContextCompaction,
|
|
42
45
|
saveAgent,
|
|
43
46
|
saveSkill,
|
|
44
47
|
setSkillEnabled,
|
|
45
48
|
skillExists,
|
|
46
49
|
spawnShellProcess
|
|
47
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-6TWWJIFP.js";
|
|
48
51
|
import {
|
|
49
52
|
getPathSeparator,
|
|
50
53
|
getPlatformShell,
|
|
@@ -89,12 +92,12 @@ import {
|
|
|
89
92
|
updateSessionProvider,
|
|
90
93
|
updateSessionRunning,
|
|
91
94
|
updateSessionSummary
|
|
92
|
-
} from "./chunk-
|
|
95
|
+
} from "./chunk-PMDJEJYY.js";
|
|
93
96
|
import {
|
|
94
97
|
buildContextMessagesFromEventHistory,
|
|
95
98
|
buildMessagesFromStoredEvents,
|
|
96
99
|
foldPendingConfirmations
|
|
97
|
-
} from "./chunk-
|
|
100
|
+
} from "./chunk-EEPU4INU.js";
|
|
98
101
|
import {
|
|
99
102
|
createChatErrorMessage,
|
|
100
103
|
createChatMessageMessage,
|
|
@@ -110,7 +113,7 @@ import {
|
|
|
110
113
|
parseClientMessage,
|
|
111
114
|
serializeServerMessage,
|
|
112
115
|
storedEventToServerMessage
|
|
113
|
-
} from "./chunk-
|
|
116
|
+
} from "./chunk-DZHZ3UUR.js";
|
|
114
117
|
import {
|
|
115
118
|
EventEmitter,
|
|
116
119
|
cancelQuestionsForSession,
|
|
@@ -145,8 +148,8 @@ import express from "express";
|
|
|
145
148
|
import cors from "cors";
|
|
146
149
|
import { createServer as createHttpServer } from "http";
|
|
147
150
|
import { fileURLToPath as fileURLToPath4 } from "url";
|
|
148
|
-
import { dirname as dirname5, resolve, join as
|
|
149
|
-
import { readFile as
|
|
151
|
+
import { dirname as dirname5, resolve, join as join5 } from "path";
|
|
152
|
+
import { readFile as readFile3 } from "fs/promises";
|
|
150
153
|
import { createServer as createViteServer } from "vite";
|
|
151
154
|
|
|
152
155
|
// src/server/llm/mock.ts
|
|
@@ -1425,7 +1428,7 @@ var WORKFLOW_EXTENSION = ".workflow.json";
|
|
|
1425
1428
|
function getWorkflowsDir(configDir) {
|
|
1426
1429
|
return join(configDir, "workflows");
|
|
1427
1430
|
}
|
|
1428
|
-
async function
|
|
1431
|
+
async function pathExists2(path) {
|
|
1429
1432
|
try {
|
|
1430
1433
|
await access(path, constants.R_OK);
|
|
1431
1434
|
return true;
|
|
@@ -1434,7 +1437,7 @@ async function pathExists(path) {
|
|
|
1434
1437
|
}
|
|
1435
1438
|
}
|
|
1436
1439
|
async function loadWorkflowsFromDir(dir) {
|
|
1437
|
-
if (!await
|
|
1440
|
+
if (!await pathExists2(dir)) {
|
|
1438
1441
|
return [];
|
|
1439
1442
|
}
|
|
1440
1443
|
let files;
|
|
@@ -1506,11 +1509,11 @@ function findWorkflowById(workflowId, workflows) {
|
|
|
1506
1509
|
}
|
|
1507
1510
|
async function workflowExists(configDir, workflowId) {
|
|
1508
1511
|
const filePath = join(getWorkflowsDir(configDir), `${workflowId}${WORKFLOW_EXTENSION}`);
|
|
1509
|
-
return
|
|
1512
|
+
return pathExists2(filePath);
|
|
1510
1513
|
}
|
|
1511
1514
|
async function saveWorkflow(configDir, workflow) {
|
|
1512
1515
|
const workflowsDir = getWorkflowsDir(configDir);
|
|
1513
|
-
if (!await
|
|
1516
|
+
if (!await pathExists2(workflowsDir)) {
|
|
1514
1517
|
await mkdir(workflowsDir, { recursive: true });
|
|
1515
1518
|
}
|
|
1516
1519
|
const filePath = join(workflowsDir, `${workflow.metadata.id}${WORKFLOW_EXTENSION}`);
|
|
@@ -4982,102 +4985,35 @@ function createSkillRoutes(configDir) {
|
|
|
4982
4985
|
import { Router as Router2 } from "express";
|
|
4983
4986
|
|
|
4984
4987
|
// src/server/commands/registry.ts
|
|
4985
|
-
import {
|
|
4986
|
-
|
|
4987
|
-
// src/server/commands/registry-utils.ts
|
|
4988
|
-
import { readdir as readdir2, readFile as readFile3, writeFile as writeFile3, mkdir as mkdir3, access as access3, unlink as unlink2 } from "fs/promises";
|
|
4988
|
+
import { writeFile as writeFile3, mkdir as mkdir3, unlink as unlink2 } from "fs/promises";
|
|
4989
4989
|
import { join as join4, dirname as dirname4 } from "path";
|
|
4990
|
-
import { constants as constants3 } from "fs";
|
|
4991
4990
|
import { fileURLToPath as fileURLToPath3 } from "url";
|
|
4992
4991
|
import matter from "gray-matter";
|
|
4993
|
-
|
|
4994
|
-
|
|
4995
|
-
|
|
4996
|
-
async function dirExists(path) {
|
|
4997
|
-
try {
|
|
4998
|
-
await access3(path, constants3.R_OK);
|
|
4999
|
-
return true;
|
|
5000
|
-
} catch {
|
|
5001
|
-
return false;
|
|
5002
|
-
}
|
|
5003
|
-
}
|
|
5004
|
-
async function ensureDir(path) {
|
|
5005
|
-
if (!await dirExists(path)) {
|
|
5006
|
-
await mkdir3(path, { recursive: true });
|
|
5007
|
-
}
|
|
5008
|
-
}
|
|
5009
|
-
async function loadItems(dir, extension) {
|
|
5010
|
-
if (!await dirExists(dir)) return [];
|
|
5011
|
-
let files;
|
|
5012
|
-
try {
|
|
5013
|
-
files = (await readdir2(dir)).filter((f) => f.endsWith(extension));
|
|
5014
|
-
} catch {
|
|
5015
|
-
return [];
|
|
5016
|
-
}
|
|
5017
|
-
const items = [];
|
|
5018
|
-
for (const file of files) {
|
|
5019
|
-
try {
|
|
5020
|
-
const raw = await readFile3(join4(dir, file), "utf-8");
|
|
5021
|
-
const { data, content } = matter(raw);
|
|
5022
|
-
if (data.id && content.trim()) {
|
|
5023
|
-
items.push({ metadata: data, prompt: content.trim() });
|
|
5024
|
-
} else {
|
|
5025
|
-
logger.warn(`Skipping invalid ${extension} file`, { file });
|
|
5026
|
-
}
|
|
5027
|
-
} catch (err) {
|
|
5028
|
-
logger.warn(`Failed to parse ${extension} file`, { file, error: err instanceof Error ? err.message : String(err) });
|
|
5029
|
-
}
|
|
5030
|
-
}
|
|
5031
|
-
return items;
|
|
5032
|
-
}
|
|
5033
|
-
async function saveItem(dir, id, extension, item) {
|
|
5034
|
-
await ensureDir(dir);
|
|
5035
|
-
const filePath = join4(dir, `${id}${extension}`);
|
|
5036
|
-
const content = matter.stringify(item.prompt, item.metadata);
|
|
5037
|
-
await writeFile3(filePath, content, "utf-8");
|
|
5038
|
-
}
|
|
5039
|
-
async function deleteItem(dir, id, extension) {
|
|
5040
|
-
const filePath = join4(dir, `${id}${extension}`);
|
|
5041
|
-
try {
|
|
5042
|
-
await unlink2(filePath);
|
|
5043
|
-
return true;
|
|
5044
|
-
} catch {
|
|
5045
|
-
return false;
|
|
5046
|
-
}
|
|
5047
|
-
}
|
|
5048
|
-
function findById(id, items) {
|
|
5049
|
-
return items.find((i) => i.metadata.id === id);
|
|
5050
|
-
}
|
|
5051
|
-
async function getDefaultIds(bundleDir, defaultsDir, extension) {
|
|
5052
|
-
try {
|
|
5053
|
-
const files = (await readdir2(join4(bundleDir, defaultsDir))).filter((f) => f.endsWith(extension));
|
|
5054
|
-
return files.map((f) => f.replace(extension, ""));
|
|
5055
|
-
} catch {
|
|
5056
|
-
return [];
|
|
5057
|
-
}
|
|
5058
|
-
}
|
|
5059
|
-
async function loadDefaults(bundleDir, defaultsDir, extension) {
|
|
5060
|
-
const dir = join4(bundleDir, defaultsDir);
|
|
5061
|
-
return loadItems(dir, extension);
|
|
5062
|
-
}
|
|
5063
|
-
|
|
5064
|
-
// src/server/commands/registry.ts
|
|
5065
|
-
var DEFAULTS_DIR2 = "defaults";
|
|
5066
|
-
var DEFAULTS_DIR_ALT2 = "command-defaults";
|
|
4992
|
+
var __bundleDir2 = dirname4(fileURLToPath3(import.meta.url));
|
|
4993
|
+
var DEFAULTS_DIR2 = join4(__bundleDir2, "defaults");
|
|
4994
|
+
var DEFAULTS_DIR_ALT2 = join4(__bundleDir2, "command-defaults");
|
|
5067
4995
|
var COMMAND_EXTENSION = ".command.md";
|
|
5068
4996
|
function getCommandsDir(configDir) {
|
|
5069
|
-
return
|
|
4997
|
+
return join4(configDir, "commands");
|
|
5070
4998
|
}
|
|
5071
4999
|
async function loadDefaultCommands() {
|
|
5072
|
-
|
|
5073
|
-
|
|
5000
|
+
let defaults = await loadItemsFromDir(DEFAULTS_DIR2, {
|
|
5001
|
+
extension: COMMAND_EXTENSION,
|
|
5002
|
+
logName: "command"
|
|
5003
|
+
});
|
|
5074
5004
|
if (!defaults.length) {
|
|
5075
|
-
defaults = await
|
|
5005
|
+
defaults = await loadItemsFromDir(DEFAULTS_DIR_ALT2, {
|
|
5006
|
+
extension: COMMAND_EXTENSION,
|
|
5007
|
+
logName: "command"
|
|
5008
|
+
});
|
|
5076
5009
|
}
|
|
5077
5010
|
return defaults;
|
|
5078
5011
|
}
|
|
5079
5012
|
async function loadUserCommands(configDir) {
|
|
5080
|
-
return
|
|
5013
|
+
return loadItemsFromDir(getCommandsDir(configDir), {
|
|
5014
|
+
extension: COMMAND_EXTENSION,
|
|
5015
|
+
logName: "command"
|
|
5016
|
+
});
|
|
5081
5017
|
}
|
|
5082
5018
|
async function loadAllCommands(configDir) {
|
|
5083
5019
|
const [defaultCommands, userCommands] = await Promise.all([
|
|
@@ -5094,10 +5030,9 @@ async function loadAllCommands(configDir) {
|
|
|
5094
5030
|
return Array.from(commandMap.values());
|
|
5095
5031
|
}
|
|
5096
5032
|
async function getDefaultCommandIds() {
|
|
5097
|
-
const
|
|
5098
|
-
const ids = await getDefaultIds(bundleDir, DEFAULTS_DIR2, COMMAND_EXTENSION);
|
|
5033
|
+
const ids = await getDefaultIds(DEFAULTS_DIR2, COMMAND_EXTENSION);
|
|
5099
5034
|
if (ids.length) return ids;
|
|
5100
|
-
return getDefaultIds(
|
|
5035
|
+
return getDefaultIds(DEFAULTS_DIR_ALT2, COMMAND_EXTENSION);
|
|
5101
5036
|
}
|
|
5102
5037
|
async function getDefaultCommandContent(commandId) {
|
|
5103
5038
|
const defaults = await loadDefaultCommands();
|
|
@@ -5108,21 +5043,32 @@ async function isDefaultCommand(commandId) {
|
|
|
5108
5043
|
return defaultIds.includes(commandId);
|
|
5109
5044
|
}
|
|
5110
5045
|
function findCommandById(commandId, commands) {
|
|
5111
|
-
return
|
|
5046
|
+
return commands.find((c) => c.metadata.id === commandId);
|
|
5112
5047
|
}
|
|
5113
5048
|
async function commandExists(configDir, commandId) {
|
|
5114
|
-
return
|
|
5049
|
+
return pathExists(join4(getCommandsDir(configDir), `${commandId}${COMMAND_EXTENSION}`));
|
|
5115
5050
|
}
|
|
5116
5051
|
async function saveCommand(configDir, command) {
|
|
5117
|
-
|
|
5052
|
+
const commandsDir = getCommandsDir(configDir);
|
|
5053
|
+
if (!await pathExists(commandsDir)) {
|
|
5054
|
+
await mkdir3(commandsDir, { recursive: true });
|
|
5055
|
+
}
|
|
5056
|
+
const filePath = join4(commandsDir, `${command.metadata.id}${COMMAND_EXTENSION}`);
|
|
5057
|
+
const content = matter.stringify(command.prompt, command.metadata);
|
|
5058
|
+
await writeFile3(filePath, content, "utf-8");
|
|
5118
5059
|
}
|
|
5119
5060
|
async function deleteCommand(configDir, commandId) {
|
|
5120
5061
|
const isDefault = await isDefaultCommand(commandId);
|
|
5121
5062
|
if (isDefault) {
|
|
5122
5063
|
return { success: false, reason: "Cannot delete built-in defaults" };
|
|
5123
5064
|
}
|
|
5124
|
-
const
|
|
5125
|
-
|
|
5065
|
+
const filePath = join4(getCommandsDir(configDir), `${commandId}${COMMAND_EXTENSION}`);
|
|
5066
|
+
try {
|
|
5067
|
+
await unlink2(filePath);
|
|
5068
|
+
return { success: true };
|
|
5069
|
+
} catch {
|
|
5070
|
+
return { success: false };
|
|
5071
|
+
}
|
|
5126
5072
|
}
|
|
5127
5073
|
|
|
5128
5074
|
// src/server/routes/commands.ts
|
|
@@ -5526,7 +5472,7 @@ function createTerminalRoutes() {
|
|
|
5526
5472
|
}
|
|
5527
5473
|
|
|
5528
5474
|
// src/constants.ts
|
|
5529
|
-
var VERSION = "1.6.
|
|
5475
|
+
var VERSION = "1.6.18";
|
|
5530
5476
|
|
|
5531
5477
|
// src/server/index.ts
|
|
5532
5478
|
var __dirname2 = dirname5(fileURLToPath4(import.meta.url));
|
|
@@ -5687,7 +5633,7 @@ async function createServerHandle(config) {
|
|
|
5687
5633
|
res.json({ success: true });
|
|
5688
5634
|
});
|
|
5689
5635
|
app.get("/api/sessions", async (req, res) => {
|
|
5690
|
-
const { getRecentUserPromptsForSession } = await import("./events-
|
|
5636
|
+
const { getRecentUserPromptsForSession } = await import("./events-LI4NAFRZ.js");
|
|
5691
5637
|
const projectId = req.query["projectId"];
|
|
5692
5638
|
const limit = Math.min(parseInt(req.query["limit"]) || 20, 100);
|
|
5693
5639
|
const offset = parseInt(req.query["offset"]) || 0;
|
|
@@ -5720,8 +5666,8 @@ async function createServerHandle(config) {
|
|
|
5720
5666
|
res.status(201).json({ session });
|
|
5721
5667
|
});
|
|
5722
5668
|
app.get("/api/sessions/:id", async (req, res) => {
|
|
5723
|
-
const { getEventStore: getEventStore2 } = await import("./events-
|
|
5724
|
-
const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-
|
|
5669
|
+
const { getEventStore: getEventStore2 } = await import("./events-LI4NAFRZ.js");
|
|
5670
|
+
const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-HRZMWP4H.js");
|
|
5725
5671
|
const session = sessionManager.getSession(req.params.id);
|
|
5726
5672
|
if (!session) {
|
|
5727
5673
|
return res.status(404).json({ error: "Session not found" });
|
|
@@ -5751,8 +5697,8 @@ async function createServerHandle(config) {
|
|
|
5751
5697
|
res.json({ success: true });
|
|
5752
5698
|
});
|
|
5753
5699
|
app.post("/api/sessions/:id/provider", async (req, res) => {
|
|
5754
|
-
const { getEventStore: getEventStore2 } = await import("./events-
|
|
5755
|
-
const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-
|
|
5700
|
+
const { getEventStore: getEventStore2 } = await import("./events-LI4NAFRZ.js");
|
|
5701
|
+
const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-HRZMWP4H.js");
|
|
5756
5702
|
const sessionId = req.params.id;
|
|
5757
5703
|
const session = sessionManager.getSession(sessionId);
|
|
5758
5704
|
if (!session) {
|
|
@@ -5789,8 +5735,8 @@ async function createServerHandle(config) {
|
|
|
5789
5735
|
res.json({ success: true });
|
|
5790
5736
|
});
|
|
5791
5737
|
app.put("/api/sessions/:id/mode", async (req, res) => {
|
|
5792
|
-
const { getEventStore: getEventStore2 } = await import("./events-
|
|
5793
|
-
const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-
|
|
5738
|
+
const { getEventStore: getEventStore2 } = await import("./events-LI4NAFRZ.js");
|
|
5739
|
+
const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-HRZMWP4H.js");
|
|
5794
5740
|
const sessionId = req.params.id;
|
|
5795
5741
|
const session = sessionManager.getSession(sessionId);
|
|
5796
5742
|
if (!session) {
|
|
@@ -5828,14 +5774,14 @@ async function createServerHandle(config) {
|
|
|
5828
5774
|
if (!callId || approved === void 0) {
|
|
5829
5775
|
return res.status(400).json({ error: "callId and approved are required" });
|
|
5830
5776
|
}
|
|
5831
|
-
const { providePathConfirmation: providePathConfirmation2 } = await import("./tools-
|
|
5777
|
+
const { providePathConfirmation: providePathConfirmation2 } = await import("./tools-F7RWE4YI.js");
|
|
5832
5778
|
const result = providePathConfirmation2(callId, approved, alwaysAllow);
|
|
5833
5779
|
if (!result.found) {
|
|
5834
5780
|
return res.status(404).json({ error: "No pending path confirmation with that ID" });
|
|
5835
5781
|
}
|
|
5836
|
-
const { getEventStore: getEventStore2 } = await import("./events-
|
|
5837
|
-
const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations: foldPendingConfirmations2 } = await import("./folding-
|
|
5838
|
-
const { createSessionStateMessage: createSessionStateMessage2 } = await import("./protocol-
|
|
5782
|
+
const { getEventStore: getEventStore2 } = await import("./events-LI4NAFRZ.js");
|
|
5783
|
+
const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations: foldPendingConfirmations2 } = await import("./folding-HRZMWP4H.js");
|
|
5784
|
+
const { createSessionStateMessage: createSessionStateMessage2 } = await import("./protocol-YNVBDNL7.js");
|
|
5839
5785
|
const eventStore = getEventStore2();
|
|
5840
5786
|
const events = eventStore.getEvents(sessionId);
|
|
5841
5787
|
const messages = buildMessagesFromStoredEvents2(events);
|
|
@@ -5853,7 +5799,7 @@ async function createServerHandle(config) {
|
|
|
5853
5799
|
if (!callId || !answer) {
|
|
5854
5800
|
return res.status(400).json({ error: "callId and answer are required" });
|
|
5855
5801
|
}
|
|
5856
|
-
const { provideAnswer: provideAnswer2 } = await import("./tools-
|
|
5802
|
+
const { provideAnswer: provideAnswer2 } = await import("./tools-F7RWE4YI.js");
|
|
5857
5803
|
const found = provideAnswer2(callId, answer);
|
|
5858
5804
|
if (!found) {
|
|
5859
5805
|
return res.status(404).json({ error: "No pending question with that ID" });
|
|
@@ -5889,14 +5835,14 @@ async function createServerHandle(config) {
|
|
|
5889
5835
|
if (!session) {
|
|
5890
5836
|
return res.status(404).json({ error: "Session not found" });
|
|
5891
5837
|
}
|
|
5892
|
-
const { stopSessionExecution } = await import("./chat-handler-
|
|
5893
|
-
const { cancelQuestionsForSession: cancelQuestionsForSession2, cancelPathConfirmationsForSession: cancelPathConfirmationsForSession2 } = await import("./tools-
|
|
5838
|
+
const { stopSessionExecution } = await import("./chat-handler-2NXHPPMS.js");
|
|
5839
|
+
const { cancelQuestionsForSession: cancelQuestionsForSession2, cancelPathConfirmationsForSession: cancelPathConfirmationsForSession2 } = await import("./tools-F7RWE4YI.js");
|
|
5894
5840
|
stopSessionExecution(sessionId, sessionManager);
|
|
5895
5841
|
abortSession(sessionId);
|
|
5896
5842
|
cancelQuestionsForSession2(sessionId, "Session stopped by user");
|
|
5897
5843
|
cancelPathConfirmationsForSession2(sessionId, "Session stopped by user");
|
|
5898
5844
|
sessionManager.clearMessageQueue(sessionId);
|
|
5899
|
-
const eventStore = (await import("./events-
|
|
5845
|
+
const eventStore = (await import("./events-LI4NAFRZ.js")).getEventStore();
|
|
5900
5846
|
eventStore.append(sessionId, { type: "running.changed", data: { isRunning: false } });
|
|
5901
5847
|
res.json({ success: true });
|
|
5902
5848
|
});
|
|
@@ -6210,7 +6156,7 @@ async function createServerHandle(config) {
|
|
|
6210
6156
|
const entries = await import("fs/promises").then((m) => m.readdir(resolvedPath, { withFileTypes: true }));
|
|
6211
6157
|
const directories = entries.filter((entry) => entry.isDirectory() && !entry.name.startsWith(".")).map((entry) => ({
|
|
6212
6158
|
name: entry.name,
|
|
6213
|
-
path:
|
|
6159
|
+
path: join5(resolvedPath, entry.name)
|
|
6214
6160
|
})).sort((a, b) => a.name.localeCompare(b.name));
|
|
6215
6161
|
const parent = dirname5(resolvedPath);
|
|
6216
6162
|
const hasParent = parent !== resolvedPath;
|
|
@@ -6257,7 +6203,7 @@ async function createServerHandle(config) {
|
|
|
6257
6203
|
}
|
|
6258
6204
|
});
|
|
6259
6205
|
app.get("/fox.svg", (_req, res) => {
|
|
6260
|
-
|
|
6206
|
+
readFile3(join5(webDir, "fox.svg")).then((content) => {
|
|
6261
6207
|
res.set("Content-Type", "image/svg+xml");
|
|
6262
6208
|
res.send(content);
|
|
6263
6209
|
}).catch(() => {
|
|
@@ -6266,7 +6212,7 @@ async function createServerHandle(config) {
|
|
|
6266
6212
|
});
|
|
6267
6213
|
app.use(
|
|
6268
6214
|
"/sounds",
|
|
6269
|
-
express.static(
|
|
6215
|
+
express.static(join5(webDir, "public", "sounds"), {
|
|
6270
6216
|
setHeaders: (res) => {
|
|
6271
6217
|
res.set("Content-Type", "audio/mpeg");
|
|
6272
6218
|
}
|
|
@@ -6276,7 +6222,7 @@ async function createServerHandle(config) {
|
|
|
6276
6222
|
if (req.path.startsWith("/api/")) {
|
|
6277
6223
|
return;
|
|
6278
6224
|
}
|
|
6279
|
-
|
|
6225
|
+
readFile3(join5(webDir, "index.html"), "utf-8").then((indexHtml) => viteServer.transformIndexHtml(req.originalUrl, indexHtml)).then((transformed) => res.send(transformed)).catch((err) => {
|
|
6280
6226
|
logger.error("Error serving index.html", { error: err });
|
|
6281
6227
|
res.status(500).send("Server error");
|
|
6282
6228
|
});
|
|
@@ -6287,7 +6233,7 @@ async function createServerHandle(config) {
|
|
|
6287
6233
|
const distWebDir = resolve(__dirname2, "web");
|
|
6288
6234
|
app.use(
|
|
6289
6235
|
"/assets",
|
|
6290
|
-
express.static(
|
|
6236
|
+
express.static(join5(distWebDir, "assets"), {
|
|
6291
6237
|
setHeaders: (res, filepath) => {
|
|
6292
6238
|
if (filepath.endsWith(".css")) {
|
|
6293
6239
|
res.set("Content-Type", "text/css");
|
|
@@ -6295,11 +6241,11 @@ async function createServerHandle(config) {
|
|
|
6295
6241
|
}
|
|
6296
6242
|
})
|
|
6297
6243
|
);
|
|
6298
|
-
app.use("/manifest.webmanifest", express.static(
|
|
6299
|
-
app.use("/registerSW.js", express.static(
|
|
6300
|
-
app.use("/sw.js", express.static(
|
|
6244
|
+
app.use("/manifest.webmanifest", express.static(join5(distWebDir, "manifest.webmanifest")));
|
|
6245
|
+
app.use("/registerSW.js", express.static(join5(distWebDir, "registerSW.js")));
|
|
6246
|
+
app.use("/sw.js", express.static(join5(distWebDir, "sw.js")));
|
|
6301
6247
|
app.get("/fox.svg", (_req, res) => {
|
|
6302
|
-
|
|
6248
|
+
readFile3(join5(distWebDir, "fox.svg")).then((content) => {
|
|
6303
6249
|
res.set("Content-Type", "image/svg+xml");
|
|
6304
6250
|
res.send(content);
|
|
6305
6251
|
}).catch(() => {
|
|
@@ -6308,14 +6254,14 @@ async function createServerHandle(config) {
|
|
|
6308
6254
|
});
|
|
6309
6255
|
app.use(
|
|
6310
6256
|
"/sounds",
|
|
6311
|
-
express.static(
|
|
6257
|
+
express.static(join5(distWebDir, "sounds"), {
|
|
6312
6258
|
setHeaders: (res) => {
|
|
6313
6259
|
res.set("Content-Type", "audio/mpeg");
|
|
6314
6260
|
}
|
|
6315
6261
|
})
|
|
6316
6262
|
);
|
|
6317
6263
|
app.get("/", (_req, res) => {
|
|
6318
|
-
|
|
6264
|
+
readFile3(join5(distWebDir, "index.html"), "utf-8").then((content) => res.send(content)).catch(() => {
|
|
6319
6265
|
res.status(404).send("Web UI not built. Run `npm run build:web`");
|
|
6320
6266
|
});
|
|
6321
6267
|
});
|
|
@@ -6323,7 +6269,7 @@ async function createServerHandle(config) {
|
|
|
6323
6269
|
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") {
|
|
6324
6270
|
return;
|
|
6325
6271
|
}
|
|
6326
|
-
|
|
6272
|
+
readFile3(join5(distWebDir, "index.html"), "utf-8").then((content) => res.send(content)).catch(() => {
|
|
6327
6273
|
res.status(404).send("Web UI not built");
|
|
6328
6274
|
});
|
|
6329
6275
|
});
|
|
@@ -6338,7 +6284,7 @@ async function createServerHandle(config) {
|
|
|
6338
6284
|
providerManager
|
|
6339
6285
|
);
|
|
6340
6286
|
const wss = wssExports.wss;
|
|
6341
|
-
const { QueueProcessor } = await import("./processor-
|
|
6287
|
+
const { QueueProcessor } = await import("./processor-7TH3ATDK.js");
|
|
6342
6288
|
const queueProcessor = new QueueProcessor({
|
|
6343
6289
|
sessionManager,
|
|
6344
6290
|
providerManager,
|
|
@@ -6411,4 +6357,4 @@ export {
|
|
|
6411
6357
|
createServerHandle,
|
|
6412
6358
|
createServer
|
|
6413
6359
|
};
|
|
6414
|
-
//# sourceMappingURL=chunk-
|
|
6360
|
+
//# sourceMappingURL=chunk-WRFOMNHM.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getEventStore
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-PMDJEJYY.js";
|
|
4
4
|
import {
|
|
5
5
|
createContextStateMessage
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-DZHZ3UUR.js";
|
|
7
7
|
|
|
8
8
|
// src/server/utils/session-utils.ts
|
|
9
9
|
function getSessionMessageCount(sessionId) {
|
|
@@ -41,4 +41,4 @@ export {
|
|
|
41
41
|
finalizeTurnCompletion,
|
|
42
42
|
buildRunChatTurnParams
|
|
43
43
|
};
|
|
44
|
-
//# sourceMappingURL=chunk-
|
|
44
|
+
//# sourceMappingURL=chunk-ZGTXED6Q.js.map
|
package/dist/cli/dev.js
CHANGED
package/dist/cli/index.js
CHANGED
|
@@ -36,7 +36,7 @@ import {
|
|
|
36
36
|
isFileInCache,
|
|
37
37
|
isStoredEvent,
|
|
38
38
|
isTurnEvent
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-PMDJEJYY.js";
|
|
40
40
|
import {
|
|
41
41
|
buildContextMessagesFromEventHistory,
|
|
42
42
|
buildContextMessagesFromMessages,
|
|
@@ -53,7 +53,7 @@ import {
|
|
|
53
53
|
foldTodos,
|
|
54
54
|
foldTurnEventsToSnapshotMessages,
|
|
55
55
|
getMessagesForWindow
|
|
56
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-EEPU4INU.js";
|
|
57
57
|
import "./chunk-3EHGGBWE.js";
|
|
58
58
|
import "./chunk-TVQOONDR.js";
|
|
59
59
|
import "./chunk-PNBH3RAX.js";
|
|
@@ -111,4 +111,4 @@ export {
|
|
|
111
111
|
isStoredEvent,
|
|
112
112
|
isTurnEvent
|
|
113
113
|
};
|
|
114
|
-
//# sourceMappingURL=events-
|
|
114
|
+
//# sourceMappingURL=events-LI4NAFRZ.js.map
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
foldTurnEventsToSnapshotMessages,
|
|
17
17
|
getMessagesForWindow,
|
|
18
18
|
spreadOptionalMessageFields
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-EEPU4INU.js";
|
|
20
20
|
export {
|
|
21
21
|
buildContextMessagesFromEventHistory,
|
|
22
22
|
buildContextMessagesFromMessages,
|
|
@@ -36,4 +36,4 @@ export {
|
|
|
36
36
|
getMessagesForWindow,
|
|
37
37
|
spreadOptionalMessageFields
|
|
38
38
|
};
|
|
39
|
-
//# sourceMappingURL=folding-
|
|
39
|
+
//# sourceMappingURL=folding-HRZMWP4H.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
runBuilderTurn,
|
|
4
4
|
runChatTurn,
|
|
5
5
|
runVerifierTurn
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-KCJC3VBS.js";
|
|
7
7
|
import {
|
|
8
8
|
TurnMetrics,
|
|
9
9
|
createChatDoneEvent,
|
|
@@ -11,13 +11,13 @@ import {
|
|
|
11
11
|
createMessageStartEvent,
|
|
12
12
|
createToolCallEvent,
|
|
13
13
|
createToolResultEvent
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-6TWWJIFP.js";
|
|
15
15
|
import "./chunk-NBU6KIOD.js";
|
|
16
16
|
import "./chunk-574HZVLE.js";
|
|
17
17
|
import "./chunk-55N6FAAZ.js";
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-PMDJEJYY.js";
|
|
19
|
+
import "./chunk-EEPU4INU.js";
|
|
20
|
+
import "./chunk-DZHZ3UUR.js";
|
|
21
21
|
import "./chunk-22CTURMH.js";
|
|
22
22
|
import "./chunk-7IOZFJBW.js";
|
|
23
23
|
import "./chunk-XKFPU2FA.js";
|
|
@@ -38,4 +38,4 @@ export {
|
|
|
38
38
|
runChatTurn,
|
|
39
39
|
runVerifierTurn
|
|
40
40
|
};
|
|
41
|
-
//# sourceMappingURL=orchestrator-
|
|
41
|
+
//# sourceMappingURL=orchestrator-VWMGHSCG.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.18",
|
|
4
4
|
"description": "Local-LLM-first agentic coding assistant",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"dev": "OPENFOX_DEV=true tsx watch src/cli/dev.ts --no-browser",
|
|
28
28
|
"dev:web": "vite --config web/vite.config.ts",
|
|
29
29
|
"build": "FORCE_COLOR=1 npm run build:server && FORCE_COLOR=1 npm run build:web",
|
|
30
|
-
"build:server": "FORCE_COLOR=1 tsup && mkdir -p dist/
|
|
30
|
+
"build:server": "FORCE_COLOR=1 tsup && mkdir -p dist/command-defaults dist/skill-defaults dist/agent-defaults dist/workflow-defaults && cp src/server/commands/defaults/*.md dist/command-defaults/ && cp src/server/skills/defaults/*.md dist/skill-defaults/ && cp src/server/agents/defaults/*.md dist/agent-defaults/ && cp src/server/workflows/defaults/*.json dist/workflow-defaults/ && cp package.json dist/",
|
|
31
31
|
"build:web": "cd web && FORCE_COLOR=1 vite build --outDir ../dist/web",
|
|
32
32
|
"start": "node dist/cli/index.js",
|
|
33
33
|
"start:dev": "node dist/cli/dev.js",
|
|
@@ -2,20 +2,20 @@ import {
|
|
|
2
2
|
buildRunChatTurnParams,
|
|
3
3
|
finalizeTurnCompletion,
|
|
4
4
|
getSessionMessageCount
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-ZGTXED6Q.js";
|
|
6
6
|
import {
|
|
7
7
|
applyGeneratedSessionName,
|
|
8
8
|
generateSessionName,
|
|
9
9
|
needsNameGenerationCheck
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-AV45GQ7B.js";
|
|
11
11
|
import {
|
|
12
12
|
getEventStore
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-PMDJEJYY.js";
|
|
14
|
+
import "./chunk-EEPU4INU.js";
|
|
15
15
|
import {
|
|
16
16
|
createChatMessageMessage,
|
|
17
17
|
createSessionRunningMessage
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-DZHZ3UUR.js";
|
|
19
19
|
import "./chunk-3EHGGBWE.js";
|
|
20
20
|
import "./chunk-Y6HBEACI.js";
|
|
21
21
|
import "./chunk-TVQOONDR.js";
|
|
@@ -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-VWMGHSCG.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-7TH3ATDK.js.map
|
|
@@ -40,7 +40,7 @@ import {
|
|
|
40
40
|
parseClientMessage,
|
|
41
41
|
serializeServerMessage,
|
|
42
42
|
storedEventToServerMessage
|
|
43
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-DZHZ3UUR.js";
|
|
44
44
|
import "./chunk-Y6HBEACI.js";
|
|
45
45
|
export {
|
|
46
46
|
createChatAskUserMessage,
|
|
@@ -85,4 +85,4 @@ export {
|
|
|
85
85
|
serializeServerMessage,
|
|
86
86
|
storedEventToServerMessage
|
|
87
87
|
};
|
|
88
|
-
//# sourceMappingURL=protocol-
|
|
88
|
+
//# sourceMappingURL=protocol-YNVBDNL7.js.map
|