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.
Files changed (31) hide show
  1. package/dist/{auto-compaction-2RKC6DC2.js → auto-compaction-A657A2UQ.js} +5 -5
  2. package/dist/{chat-handler-IY2XVOO6.js → chat-handler-2NXHPPMS.js} +9 -9
  3. package/dist/{chunk-4OI4VPZ6.js → chunk-6TWWJIFP.js} +64 -49
  4. package/dist/{chunk-F54ZJN4X.js → chunk-AV45GQ7B.js} +4 -4
  5. package/dist/{chunk-NJWPSSRW.js → chunk-DZHZ3UUR.js} +4 -4
  6. package/dist/{chunk-2KP34IDL.js → chunk-EEPU4INU.js} +4 -2
  7. package/dist/{chunk-U54QVKL2.js → chunk-KCJC3VBS.js} +4 -4
  8. package/dist/{chunk-6L3X7T4K.js → chunk-PMDJEJYY.js} +2 -2
  9. package/dist/{chunk-T5PBG2PE.js → chunk-THP77DXS.js} +2 -2
  10. package/dist/{chunk-NN65D5SI.js → chunk-WRFOMNHM.js} +80 -134
  11. package/dist/{chunk-SN7OBEVL.js → chunk-ZGTXED6Q.js} +3 -3
  12. package/dist/cli/dev.js +1 -1
  13. package/dist/cli/index.js +1 -1
  14. package/dist/{events-2ETDOE5B.js → events-LI4NAFRZ.js} +3 -3
  15. package/dist/{folding-M7FMUBOL.js → folding-HRZMWP4H.js} +2 -2
  16. package/dist/{orchestrator-U5VCLBYQ.js → orchestrator-VWMGHSCG.js} +6 -6
  17. package/dist/package.json +2 -2
  18. package/dist/{processor-VUEJM73B.js → processor-7TH3ATDK.js} +7 -7
  19. package/dist/{protocol-KUKFSV5U.js → protocol-YNVBDNL7.js} +2 -2
  20. package/dist/{serve-GOLQMQFA.js → serve-KMTRAQ4F.js} +8 -8
  21. package/dist/server/index.js +7 -7
  22. package/dist/{tools-55YICCVH.js → tools-F7RWE4YI.js} +5 -5
  23. package/dist/web/assets/{index-D4V7Gtvt.css → index-CcnXf371.css} +1 -1
  24. package/dist/web/assets/{index-CZBXRYpK.js → index-DwDDssmB.js} +45 -45
  25. package/dist/web/index.html +2 -2
  26. package/dist/web/sw.js +1 -1
  27. package/package.json +2 -2
  28. /package/dist/{server/commands/defaults → command-defaults}/commit-push.command.md +0 -0
  29. /package/dist/{server/commands/defaults → command-defaults}/init.command.md +0 -0
  30. /package/dist/{server/commands/defaults → command-defaults}/test-ui.command.md +0 -0
  31. /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-F54ZJN4X.js";
4
+ } from "./chunk-AV45GQ7B.js";
5
5
  import {
6
6
  createVerifierNudgeConfig,
7
7
  runBuilderTurn,
8
8
  runChatTurn
9
- } from "./chunk-U54QVKL2.js";
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-4OI4VPZ6.js";
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-6L3X7T4K.js";
95
+ } from "./chunk-PMDJEJYY.js";
93
96
  import {
94
97
  buildContextMessagesFromEventHistory,
95
98
  buildMessagesFromStoredEvents,
96
99
  foldPendingConfirmations
97
- } from "./chunk-2KP34IDL.js";
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-NJWPSSRW.js";
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 join6 } from "path";
149
- import { readFile as readFile4 } from "fs/promises";
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 pathExists(path) {
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 pathExists(dir)) {
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 pathExists(filePath);
1512
+ return pathExists2(filePath);
1510
1513
  }
1511
1514
  async function saveWorkflow(configDir, workflow) {
1512
1515
  const workflowsDir = getWorkflowsDir(configDir);
1513
- if (!await pathExists(workflowsDir)) {
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 { join as join5 } from "path";
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
- function getBundleDir() {
4994
- return dirname4(fileURLToPath3(import.meta.url));
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 join5(configDir, "commands");
4997
+ return join4(configDir, "commands");
5070
4998
  }
5071
4999
  async function loadDefaultCommands() {
5072
- const bundleDir = getBundleDir();
5073
- let defaults = await loadDefaults(bundleDir, DEFAULTS_DIR2, COMMAND_EXTENSION);
5000
+ let defaults = await loadItemsFromDir(DEFAULTS_DIR2, {
5001
+ extension: COMMAND_EXTENSION,
5002
+ logName: "command"
5003
+ });
5074
5004
  if (!defaults.length) {
5075
- defaults = await loadDefaults(bundleDir, DEFAULTS_DIR_ALT2, COMMAND_EXTENSION);
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 loadItems(getCommandsDir(configDir), COMMAND_EXTENSION);
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 bundleDir = getBundleDir();
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(bundleDir, DEFAULTS_DIR_ALT2, COMMAND_EXTENSION);
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 findById(commandId, commands);
5046
+ return commands.find((c) => c.metadata.id === commandId);
5112
5047
  }
5113
5048
  async function commandExists(configDir, commandId) {
5114
- return dirExists(join5(getCommandsDir(configDir), `${commandId}${COMMAND_EXTENSION}`));
5049
+ return pathExists(join4(getCommandsDir(configDir), `${commandId}${COMMAND_EXTENSION}`));
5115
5050
  }
5116
5051
  async function saveCommand(configDir, command) {
5117
- return saveItem(getCommandsDir(configDir), command.metadata.id, COMMAND_EXTENSION, command);
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 deleted = await deleteItem(getCommandsDir(configDir), commandId, COMMAND_EXTENSION);
5125
- return { success: deleted };
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.16";
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-2ETDOE5B.js");
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-2ETDOE5B.js");
5724
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-M7FMUBOL.js");
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-2ETDOE5B.js");
5755
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-M7FMUBOL.js");
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-2ETDOE5B.js");
5793
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2 } = await import("./folding-M7FMUBOL.js");
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-55YICCVH.js");
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-2ETDOE5B.js");
5837
- const { buildMessagesFromStoredEvents: buildMessagesFromStoredEvents2, foldPendingConfirmations: foldPendingConfirmations2 } = await import("./folding-M7FMUBOL.js");
5838
- const { createSessionStateMessage: createSessionStateMessage2 } = await import("./protocol-KUKFSV5U.js");
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-55YICCVH.js");
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-IY2XVOO6.js");
5893
- const { cancelQuestionsForSession: cancelQuestionsForSession2, cancelPathConfirmationsForSession: cancelPathConfirmationsForSession2 } = await import("./tools-55YICCVH.js");
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-2ETDOE5B.js")).getEventStore();
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: join6(resolvedPath, entry.name)
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
- readFile4(join6(webDir, "fox.svg")).then((content) => {
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(join6(webDir, "public", "sounds"), {
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
- readFile4(join6(webDir, "index.html"), "utf-8").then((indexHtml) => viteServer.transformIndexHtml(req.originalUrl, indexHtml)).then((transformed) => res.send(transformed)).catch((err) => {
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(join6(distWebDir, "assets"), {
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(join6(distWebDir, "manifest.webmanifest")));
6299
- app.use("/registerSW.js", express.static(join6(distWebDir, "registerSW.js")));
6300
- app.use("/sw.js", express.static(join6(distWebDir, "sw.js")));
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
- readFile4(join6(distWebDir, "fox.svg")).then((content) => {
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(join6(distWebDir, "sounds"), {
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
- readFile4(join6(distWebDir, "index.html"), "utf-8").then((content) => res.send(content)).catch(() => {
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
- readFile4(join6(distWebDir, "index.html"), "utf-8").then((content) => res.send(content)).catch(() => {
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-VUEJM73B.js");
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-NN65D5SI.js.map
6360
+ //# sourceMappingURL=chunk-WRFOMNHM.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  getEventStore
3
- } from "./chunk-6L3X7T4K.js";
3
+ } from "./chunk-PMDJEJYY.js";
4
4
  import {
5
5
  createContextStateMessage
6
- } from "./chunk-NJWPSSRW.js";
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-SN7OBEVL.js.map
44
+ //# sourceMappingURL=chunk-ZGTXED6Q.js.map
package/dist/cli/dev.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runCli
4
- } from "../chunk-T5PBG2PE.js";
4
+ } from "../chunk-THP77DXS.js";
5
5
  import {
6
6
  logger
7
7
  } from "../chunk-PNBH3RAX.js";
package/dist/cli/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runCli
4
- } from "../chunk-T5PBG2PE.js";
4
+ } from "../chunk-THP77DXS.js";
5
5
  import {
6
6
  logger
7
7
  } from "../chunk-PNBH3RAX.js";
@@ -36,7 +36,7 @@ import {
36
36
  isFileInCache,
37
37
  isStoredEvent,
38
38
  isTurnEvent
39
- } from "./chunk-6L3X7T4K.js";
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-2KP34IDL.js";
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-2ETDOE5B.js.map
114
+ //# sourceMappingURL=events-LI4NAFRZ.js.map
@@ -16,7 +16,7 @@ import {
16
16
  foldTurnEventsToSnapshotMessages,
17
17
  getMessagesForWindow,
18
18
  spreadOptionalMessageFields
19
- } from "./chunk-2KP34IDL.js";
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-M7FMUBOL.js.map
39
+ //# sourceMappingURL=folding-HRZMWP4H.js.map
@@ -3,7 +3,7 @@ import {
3
3
  runBuilderTurn,
4
4
  runChatTurn,
5
5
  runVerifierTurn
6
- } from "./chunk-U54QVKL2.js";
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-4OI4VPZ6.js";
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-6L3X7T4K.js";
19
- import "./chunk-2KP34IDL.js";
20
- import "./chunk-NJWPSSRW.js";
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-U5VCLBYQ.js.map
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.16",
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/server/commands/defaults dist/server/skills/defaults && cp src/server/skills/defaults/*.md dist/server/skills/defaults/ && cp src/server/commands/defaults/*.md dist/server/commands/defaults/ && cp src/server/agents/defaults/*.md dist/agent-defaults/ && cp src/server/workflows/defaults/*.json dist/workflow-defaults/ && cp package.json 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-SN7OBEVL.js";
5
+ } from "./chunk-ZGTXED6Q.js";
6
6
  import {
7
7
  applyGeneratedSessionName,
8
8
  generateSessionName,
9
9
  needsNameGenerationCheck
10
- } from "./chunk-F54ZJN4X.js";
10
+ } from "./chunk-AV45GQ7B.js";
11
11
  import {
12
12
  getEventStore
13
- } from "./chunk-6L3X7T4K.js";
14
- import "./chunk-2KP34IDL.js";
13
+ } from "./chunk-PMDJEJYY.js";
14
+ import "./chunk-EEPU4INU.js";
15
15
  import {
16
16
  createChatMessageMessage,
17
17
  createSessionRunningMessage
18
- } from "./chunk-NJWPSSRW.js";
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-U5VCLBYQ.js");
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-VUEJM73B.js.map
211
+ //# sourceMappingURL=processor-7TH3ATDK.js.map
@@ -40,7 +40,7 @@ import {
40
40
  parseClientMessage,
41
41
  serializeServerMessage,
42
42
  storedEventToServerMessage
43
- } from "./chunk-NJWPSSRW.js";
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-KUKFSV5U.js.map
88
+ //# sourceMappingURL=protocol-YNVBDNL7.js.map