openfox 1.6.98 → 1.6.100

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 (40) hide show
  1. package/dist/{auto-compaction-ZYKJQPGM.js → auto-compaction-NLUAT562.js} +9 -9
  2. package/dist/{chat-handler-N3FYFHYQ.js → chat-handler-5KT442LF.js} +12 -12
  3. package/dist/{chunk-7Y3HFCTD.js → chunk-BZBT5VJL.js} +12 -28
  4. package/dist/{chunk-XVWVAWSG.js → chunk-DCYDTDWO.js} +7 -9
  5. package/dist/{chunk-5GVCNVKV.js → chunk-FBGWG4N6.js} +1 -5
  6. package/dist/{chunk-NVVKBL4S.js → chunk-IB3TCZF7.js} +4 -4
  7. package/dist/{chunk-LC6HW727.js → chunk-KOQOPNE5.js} +40 -53
  8. package/dist/{chunk-T67WWSM7.js → chunk-MEOKWBXX.js} +2 -6
  9. package/dist/{chunk-KR7N2ONG.js → chunk-PFSOVCEN.js} +78 -26
  10. package/dist/{chunk-ROWFVGB6.js → chunk-TYIHIHJF.js} +2 -2
  11. package/dist/{chunk-I2EVVAG4.js → chunk-VMRDLSNP.js} +4 -4
  12. package/dist/{chunk-RGRBWDZP.js → chunk-VUQCQXXJ.js} +5 -2
  13. package/dist/{chunk-ERFRUQQR.js → chunk-X3GA33UG.js} +1 -1
  14. package/dist/{chunk-ZHBL5G5X.js → chunk-XAMAYRDA.js} +2 -2
  15. package/dist/{chunk-K7F73QLL.js → chunk-Y532ULQ2.js} +4 -4
  16. package/dist/cli/dev.js +1 -1
  17. package/dist/cli/index.js +1 -1
  18. package/dist/{events-Z2SXIOUX.js → events-QBKF32WS.js} +4 -4
  19. package/dist/{folding-4VHGQE6Y.js → folding-EQPDQKQS.js} +2 -2
  20. package/dist/{orchestrator-2A6RG6ZR.js → orchestrator-4GHZFEGT.js} +10 -10
  21. package/dist/package.json +1 -1
  22. package/dist/{processor-V34TTHI2.js → processor-I3WKCUAE.js} +8 -8
  23. package/dist/{project-creator-25F7KUPX.js → project-creator-6DU7E75S.js} +3 -3
  24. package/dist/{projects-55F45PH3.js → projects-2HYIZC4Y.js} +3 -3
  25. package/dist/{protocol-FZUIA4BS.js → protocol-GKGDN64O.js} +3 -5
  26. package/dist/{protocol-BFKDuZ7J.d.ts → protocol-eKAFeMXn.d.ts} +2 -6
  27. package/dist/{serve-FD3A43KR.js → serve-CJEAHPPU.js} +12 -12
  28. package/dist/server/index.d.ts +1 -5
  29. package/dist/server/index.js +11 -11
  30. package/dist/{service-3CLVG2HV.js → service-EUOBAATS.js} +2 -1
  31. package/dist/{settings-TTYCUHWU.js → settings-4334IX63.js} +3 -3
  32. package/dist/shared/index.d.ts +2 -2
  33. package/dist/shared/index.js +2 -2
  34. package/dist/{tools-ASM4FNUG.js → tools-UBURWNND.js} +9 -9
  35. package/dist/web/assets/index-DzlTckHS.js +299 -0
  36. package/dist/web/assets/{index-D3nUB0zb.css → index-aAebFDVk.css} +1 -1
  37. package/dist/web/index.html +2 -2
  38. package/dist/web/sw.js +1 -1
  39. package/package.json +1 -1
  40. package/dist/web/assets/index-BhmZRmbE.js +0 -299
@@ -2,10 +2,10 @@ import {
2
2
  SETTINGS_KEYS,
3
3
  deleteSetting,
4
4
  getSetting
5
- } from "./chunk-ROWFVGB6.js";
5
+ } from "./chunk-TYIHIHJF.js";
6
6
  import {
7
7
  getProject
8
- } from "./chunk-ZHBL5G5X.js";
8
+ } from "./chunk-XAMAYRDA.js";
9
9
  import {
10
10
  startInspectProxy
11
11
  } from "./chunk-DL6ZILAF.js";
@@ -31,7 +31,7 @@ import {
31
31
  import {
32
32
  getCurrentContextWindowId,
33
33
  getEventStore
34
- } from "./chunk-7Y3HFCTD.js";
34
+ } from "./chunk-BZBT5VJL.js";
35
35
  import {
36
36
  buildContextMessagesFromEventHistory,
37
37
  foldContextState,
@@ -40,7 +40,7 @@ import {
40
40
  handleToolCall,
41
41
  handleToolResult,
42
42
  stripOrphanedToolCalls
43
- } from "./chunk-XVWVAWSG.js";
43
+ } from "./chunk-DCYDTDWO.js";
44
44
  import {
45
45
  createChatDoneMessage,
46
46
  createChatMessageMessage,
@@ -48,7 +48,7 @@ import {
48
48
  createChatPathConfirmationMessage,
49
49
  createChatVisionFallbackMessage,
50
50
  createQueueStateMessage
51
- } from "./chunk-T67WWSM7.js";
51
+ } from "./chunk-MEOKWBXX.js";
52
52
  import {
53
53
  AskUserInterrupt,
54
54
  askUserTool
@@ -1327,8 +1327,8 @@ async function deleteAgent(configDir, agentId) {
1327
1327
  }
1328
1328
 
1329
1329
  // src/server/tools/read.ts
1330
- import { readFile as readFile5, stat } from "fs/promises";
1331
- import { extname } from "path";
1330
+ import { readFile as readFile5, stat, readdir as readdir3 } from "fs/promises";
1331
+ import { extname, join as join5 } from "path";
1332
1332
 
1333
1333
  // src/server/tools/types.ts
1334
1334
  var OUTPUT_LIMITS = {
@@ -1910,13 +1910,44 @@ function detectImageType(buffer, filePath) {
1910
1910
  }
1911
1911
  return null;
1912
1912
  }
1913
+ function formatSize(bytes) {
1914
+ if (bytes < 1024) return `${bytes} B`;
1915
+ if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;
1916
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
1917
+ }
1918
+ async function listDirectory(dirPath, relativePath) {
1919
+ const entries = await readdir3(dirPath, { withFileTypes: true });
1920
+ const sorted = [...entries].sort((a, b) => {
1921
+ if (a.isDirectory() !== b.isDirectory()) {
1922
+ return a.isDirectory() ? -1 : 1;
1923
+ }
1924
+ return a.name.localeCompare(b.name);
1925
+ });
1926
+ const lines = [`${relativePath}/`];
1927
+ for (let i = 0; i < sorted.length; i++) {
1928
+ const entry = sorted[i];
1929
+ const isLast = i === sorted.length - 1;
1930
+ const prefix = isLast ? "\u2514\u2500\u2500 " : "\u251C\u2500\u2500 ";
1931
+ const suffix = entry.isDirectory() ? "/" : "";
1932
+ let sizeStr = "";
1933
+ if (!entry.isDirectory()) {
1934
+ try {
1935
+ const entryStat = await stat(join5(dirPath, entry.name));
1936
+ sizeStr = ` ${formatSize(entryStat.size).padStart(7)}`;
1937
+ } catch {
1938
+ }
1939
+ }
1940
+ lines.push(`${prefix}${entry.name}${suffix}${sizeStr}`);
1941
+ }
1942
+ return lines.join("\n");
1943
+ }
1913
1944
  var readFileTool = createTool(
1914
1945
  "read_file",
1915
1946
  {
1916
1947
  type: "function",
1917
1948
  function: {
1918
1949
  name: "read_file",
1919
- description: "Read the contents of a file. For text files: returns line-numbered content. For images (PNG, JPEG, GIF, WebP, BMP, SVG): returns base64-encoded data with MIME type metadata.",
1950
+ description: "Read the contents of a file or list directory contents. For text files: returns line-numbered content. For images (PNG, JPEG, GIF, WebP, BMP, SVG): returns base64-encoded data with MIME type metadata. For directories: returns a tree-formatted listing of entries with file sizes.",
1920
1951
  parameters: {
1921
1952
  type: "object",
1922
1953
  properties: {
@@ -1945,7 +1976,8 @@ var readFileTool = createTool(
1945
1976
  try {
1946
1977
  const stats = await stat(fullPath);
1947
1978
  if (stats.isDirectory()) {
1948
- return helpers.error(`Path is a directory, not a file: ${args.path}`);
1979
+ const listing = await listDirectory(fullPath, args.path);
1980
+ return helpers.success(listing);
1949
1981
  }
1950
1982
  if (stats.size > OUTPUT_LIMITS.read_file.maxImageBytes) {
1951
1983
  return helpers.error(
@@ -2373,6 +2405,19 @@ async function terminateProcessTree(proc, options) {
2373
2405
  }
2374
2406
  }
2375
2407
 
2408
+ // src/server/tools/shell-tail.ts
2409
+ var TAIL_END_RE = /^(.*?)\s*\|\s*tail\s+(?:-n\s+)?-?(\d+)\s*$/;
2410
+ function stripTailPipe(command) {
2411
+ const trimmed = command.trim();
2412
+ if (!trimmed) return null;
2413
+ const match = trimmed.match(TAIL_END_RE);
2414
+ if (!match) return null;
2415
+ const beforeTail = match[1];
2416
+ const tailLines = Number.parseInt(match[2], 10);
2417
+ if (tailLines <= 0) return null;
2418
+ return { command: beforeTail.trim(), tailLines };
2419
+ }
2420
+
2376
2421
  // src/server/tools/shell.ts
2377
2422
  var runCommandTool = createTool(
2378
2423
  "run_command",
@@ -2416,7 +2461,9 @@ var runCommandTool = createTool(
2416
2461
  pathsToCheck.push(resolved);
2417
2462
  }
2418
2463
  await helpers.checkPathAccess(pathsToCheck, args.command);
2419
- const result = await executeCommand(args.command, workingDir, timeout, context.signal, context.onProgress);
2464
+ const tailInfo = stripTailPipe(args.command);
2465
+ const execCommand = tailInfo ? tailInfo.command : args.command;
2466
+ const result = await executeCommand(execCommand, workingDir, timeout, context.signal, context.onProgress);
2420
2467
  let output = "";
2421
2468
  if (result.stdout) {
2422
2469
  output += result.stdout;
@@ -2429,14 +2476,19 @@ ${result.stderr}`;
2429
2476
  output += `
2430
2477
 
2431
2478
  [Exit code: ${result.exitCode}]`;
2479
+ if (tailInfo) {
2480
+ const lines = output.split("\n");
2481
+ const tailed = lines.slice(-tailInfo.tailLines);
2482
+ output = tailed.join("\n");
2483
+ }
2432
2484
  let truncated = false;
2433
2485
  if (output.length > OUTPUT_LIMITS.run_command.maxBytes) {
2434
2486
  output = output.slice(0, OUTPUT_LIMITS.run_command.maxBytes);
2435
2487
  output += "\n\n[Output truncated due to size limit]";
2436
2488
  truncated = true;
2437
2489
  }
2438
- const lines = output.split("\n").length;
2439
- if (lines > OUTPUT_LIMITS.run_command.maxLines) {
2490
+ const linesCount = output.split("\n").length;
2491
+ if (linesCount > OUTPUT_LIMITS.run_command.maxLines) {
2440
2492
  const limitedLines = output.split("\n").slice(0, OUTPUT_LIMITS.run_command.maxLines);
2441
2493
  output = limitedLines.join("\n");
2442
2494
  output += "\n\n[Output truncated due to line limit]";
@@ -2801,19 +2853,19 @@ function createToolProgressHandler(eventStore, messageId, callId, sessionId) {
2801
2853
 
2802
2854
  // src/server/skills/registry.ts
2803
2855
  import { writeFile as writeFile5, mkdir as mkdir4, unlink as unlink3 } from "fs/promises";
2804
- import { join as join5, dirname as dirname4 } from "path";
2856
+ import { join as join6, dirname as dirname4 } from "path";
2805
2857
  import { fileURLToPath as fileURLToPath2 } from "url";
2806
2858
  import matter3 from "gray-matter";
2807
2859
  var __bundleDir2 = dirname4(fileURLToPath2(import.meta.url));
2808
- var DEFAULTS_DIR2 = join5(__bundleDir2, "defaults");
2809
- var DEFAULTS_DIR_ALT2 = join5(__bundleDir2, "skill-defaults");
2860
+ var DEFAULTS_DIR2 = join6(__bundleDir2, "defaults");
2861
+ var DEFAULTS_DIR_ALT2 = join6(__bundleDir2, "skill-defaults");
2810
2862
  var SKILL_EXTENSION = ".skill.md";
2811
2863
  var SKILL_SETTING_PREFIX = "skill.enabled.";
2812
2864
  function getSkillsDir(configDir) {
2813
- return join5(configDir, "skills");
2865
+ return join6(configDir, "skills");
2814
2866
  }
2815
2867
  function getProjectSkillsDir(projectDir) {
2816
- return join5(projectDir, ".openfox", "skills");
2868
+ return join6(projectDir, ".openfox", "skills");
2817
2869
  }
2818
2870
  async function loadDefaultSkills() {
2819
2871
  let defaults = await loadItemsFromDir(DEFAULTS_DIR2, {
@@ -2883,8 +2935,8 @@ function findSkillById(skillId, skills) {
2883
2935
  return skills.find((s) => s.metadata.id === skillId);
2884
2936
  }
2885
2937
  async function skillExists(configDir, skillId, projectDir) {
2886
- if (await pathExists(join5(getSkillsDir(configDir), `${skillId}${SKILL_EXTENSION}`))) return true;
2887
- if (projectDir && await pathExists(join5(getProjectSkillsDir(projectDir), `${skillId}${SKILL_EXTENSION}`)))
2938
+ if (await pathExists(join6(getSkillsDir(configDir), `${skillId}${SKILL_EXTENSION}`))) return true;
2939
+ if (projectDir && await pathExists(join6(getProjectSkillsDir(projectDir), `${skillId}${SKILL_EXTENSION}`)))
2888
2940
  return true;
2889
2941
  return false;
2890
2942
  }
@@ -2893,7 +2945,7 @@ async function saveSkill(configDir, skill) {
2893
2945
  if (!await pathExists(skillsDir)) {
2894
2946
  await mkdir4(skillsDir, { recursive: true });
2895
2947
  }
2896
- const filePath = join5(skillsDir, `${skill.metadata.id}${SKILL_EXTENSION}`);
2948
+ const filePath = join6(skillsDir, `${skill.metadata.id}${SKILL_EXTENSION}`);
2897
2949
  const content = matter3.stringify(skill.prompt, skill.metadata);
2898
2950
  await writeFile5(filePath, content, "utf-8");
2899
2951
  }
@@ -2910,7 +2962,7 @@ async function deleteSkill(configDir, skillId) {
2910
2962
  if (isDefault) {
2911
2963
  return { success: false, reason: "Cannot delete built-in defaults" };
2912
2964
  }
2913
- const filePath = join5(getSkillsDir(configDir), `${skillId}${SKILL_EXTENSION}`);
2965
+ const filePath = join6(getSkillsDir(configDir), `${skillId}${SKILL_EXTENSION}`);
2914
2966
  try {
2915
2967
  await unlink3(filePath);
2916
2968
  deleteSetting(`${SKILL_SETTING_PREFIX}${skillId}`);
@@ -3880,7 +3932,7 @@ var callSubAgentTool = {
3880
3932
  };
3881
3933
  }
3882
3934
  try {
3883
- const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-ASM4FNUG.js");
3935
+ const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-UBURWNND.js");
3884
3936
  const toolRegistry = getToolRegistryForAgent2(agentDef);
3885
3937
  const turnMetrics = new TurnMetrics();
3886
3938
  const result = await executeSubAgent({
@@ -4132,12 +4184,12 @@ var webFetchTool = createTool(
4132
4184
  // src/server/dev-server/manager.ts
4133
4185
  import { spawn as spawn3 } from "child_process";
4134
4186
  import { readFile as readFile7, writeFile as writeFile6, mkdir as mkdir5 } from "fs/promises";
4135
- import { resolve as resolve5, join as join6 } from "path";
4187
+ import { resolve as resolve5, join as join7 } from "path";
4136
4188
  var MAX_LOG_LINES = 2e3;
4137
4189
  var MAX_LOG_BYTES = 1e5;
4138
4190
  var getDevServerConfigPath = (workdir) => {
4139
4191
  const mode = getRuntimeConfig().mode ?? "production";
4140
- return join6(resolve5(workdir), ".openfox", `${mode === "development" ? "dev-dev" : "dev"}.json`);
4192
+ return join7(resolve5(workdir), ".openfox", `${mode === "development" ? "dev-dev" : "dev"}.json`);
4141
4193
  };
4142
4194
  var ERROR_PATTERNS = [
4143
4195
  /EADDRINUSE/,
@@ -4213,7 +4265,7 @@ var DevServerManager = class {
4213
4265
  }
4214
4266
  async saveConfig(workdir, config) {
4215
4267
  const resolved = this.resolveWorkdir(workdir);
4216
- const dirPath = join6(resolved, ".openfox");
4268
+ const dirPath = join7(resolved, ".openfox");
4217
4269
  await mkdir5(dirPath, { recursive: true });
4218
4270
  const configPath = getDevServerConfigPath(workdir);
4219
4271
  await writeFile6(configPath, JSON.stringify(config, null, 2) + "\n", "utf-8");
@@ -5078,4 +5130,4 @@ export {
5078
5130
  getToolRegistryForAgent,
5079
5131
  createToolRegistry
5080
5132
  };
5081
- //# sourceMappingURL=chunk-KR7N2ONG.js.map
5133
+ //# sourceMappingURL=chunk-PFSOVCEN.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getDatabase
3
- } from "./chunk-5GVCNVKV.js";
3
+ } from "./chunk-FBGWG4N6.js";
4
4
 
5
5
  // src/server/db/settings.ts
6
6
  var SETTINGS_KEYS = {
@@ -86,4 +86,4 @@ export {
86
86
  deleteSetting,
87
87
  getAllSettings
88
88
  };
89
- //# sourceMappingURL=chunk-ROWFVGB6.js.map
89
+ //# sourceMappingURL=chunk-TYIHIHJF.js.map
@@ -156,7 +156,7 @@ async function runCli(options) {
156
156
  break;
157
157
  }
158
158
  case "service": {
159
- const { runServiceCommand } = await import("./service-3CLVG2HV.js");
159
+ const { runServiceCommand } = await import("./service-EUOBAATS.js");
160
160
  const [, subcommand] = positionals;
161
161
  if (subcommand === "--help" || subcommand === "-h" || values.help) {
162
162
  runServiceCommand(mode, void 0);
@@ -178,7 +178,7 @@ async function runCli(options) {
178
178
  case "update": {
179
179
  const __filename = fileURLToPath(import.meta.url);
180
180
  const __dirname = dirname(__filename);
181
- const updateScriptPath = join(__dirname, "cli", "update.sh");
181
+ const updateScriptPath = join(__dirname, "update.sh");
182
182
  const result = spawnSync(updateScriptPath, [], { shell: true, stdio: "inherit" });
183
183
  if (result.status !== 0) {
184
184
  process.exit(result.status ?? 1);
@@ -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-FD3A43KR.js");
194
+ const { runServe } = await import("./serve-CJEAHPPU.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-I2EVVAG4.js.map
206
+ //# sourceMappingURL=chunk-VMRDLSNP.js.map
@@ -1,5 +1,8 @@
1
1
  // src/shared/stats.ts
2
2
  var roundTo1 = (n) => Math.round(n * 10) / 10;
3
+ function hasValidStats(stats) {
4
+ return typeof stats.totalTime === "number" && !Number.isNaN(stats.totalTime);
5
+ }
3
6
  function getStatsIdentity(stats) {
4
7
  return {
5
8
  providerId: stats.providerId,
@@ -94,7 +97,7 @@ function buildSessionStats(messagesWithStats) {
94
97
  };
95
98
  }
96
99
  function computeSessionStats(messages) {
97
- const messagesWithStats = messages.filter((msg) => msg.stats !== void 0 && msg.stats !== null).sort((a, b) => new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime());
100
+ const messagesWithStats = messages.filter((msg) => msg.stats !== void 0 && msg.stats !== null && hasValidStats(msg.stats)).sort((a, b) => new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime());
98
101
  if (messagesWithStats.length === 0) {
99
102
  return null;
100
103
  }
@@ -123,4 +126,4 @@ function computeSessionStats(messages) {
123
126
  export {
124
127
  computeSessionStats
125
128
  };
126
- //# sourceMappingURL=chunk-RGRBWDZP.js.map
129
+ //# sourceMappingURL=chunk-VUQCQXXJ.js.map
@@ -26,4 +26,4 @@ export {
26
26
  isClientMessage,
27
27
  isServerMessage
28
28
  };
29
- //# sourceMappingURL=chunk-ERFRUQQR.js.map
29
+ //# sourceMappingURL=chunk-X3GA33UG.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getDatabase
3
- } from "./chunk-5GVCNVKV.js";
3
+ } from "./chunk-FBGWG4N6.js";
4
4
 
5
5
  // src/server/db/projects.ts
6
6
  function createProject(name, workdir) {
@@ -113,4 +113,4 @@ export {
113
113
  deleteProject,
114
114
  toggleStar
115
115
  };
116
- //# sourceMappingURL=chunk-ZHBL5G5X.js.map
116
+ //# sourceMappingURL=chunk-XAMAYRDA.js.map
@@ -13,14 +13,14 @@ import {
13
13
  getToolRegistryForAgent,
14
14
  loadAllAgentsDefault,
15
15
  runTopLevelAgentLoop
16
- } from "./chunk-KR7N2ONG.js";
16
+ } from "./chunk-PFSOVCEN.js";
17
17
  import {
18
18
  getCurrentContextWindowId,
19
19
  getEventStore
20
- } from "./chunk-7Y3HFCTD.js";
20
+ } from "./chunk-BZBT5VJL.js";
21
21
  import {
22
22
  buildSnapshotFromSessionState
23
- } from "./chunk-XVWVAWSG.js";
23
+ } from "./chunk-DCYDTDWO.js";
24
24
  import {
25
25
  logger
26
26
  } from "./chunk-K44MW7JJ.js";
@@ -327,4 +327,4 @@ export {
327
327
  runBuilderTurn,
328
328
  runVerifierTurn
329
329
  };
330
- //# sourceMappingURL=chunk-K7F73QLL.js.map
330
+ //# sourceMappingURL=chunk-Y532ULQ2.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-I2EVVAG4.js";
4
+ } from "../chunk-VMRDLSNP.js";
5
5
  import {
6
6
  logger
7
7
  } from "../chunk-K44MW7JJ.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-I2EVVAG4.js";
4
+ } from "../chunk-VMRDLSNP.js";
5
5
  import {
6
6
  logger
7
7
  } from "../chunk-K44MW7JJ.js";
@@ -37,8 +37,8 @@ import {
37
37
  isStoredEvent,
38
38
  isTurnEvent,
39
39
  truncateSessionMessages
40
- } from "./chunk-7Y3HFCTD.js";
41
- import "./chunk-5GVCNVKV.js";
40
+ } from "./chunk-BZBT5VJL.js";
41
+ import "./chunk-FBGWG4N6.js";
42
42
  import {
43
43
  buildContextMessagesFromEventHistory,
44
44
  buildContextMessagesFromMessages,
@@ -55,7 +55,7 @@ import {
55
55
  foldTodos,
56
56
  foldTurnEventsToSnapshotMessages,
57
57
  getMessagesForWindow
58
- } from "./chunk-XVWVAWSG.js";
58
+ } from "./chunk-DCYDTDWO.js";
59
59
  import "./chunk-CGZHLM3K.js";
60
60
  import "./chunk-K44MW7JJ.js";
61
61
  export {
@@ -113,4 +113,4 @@ export {
113
113
  isTurnEvent,
114
114
  truncateSessionMessages
115
115
  };
116
- //# sourceMappingURL=events-Z2SXIOUX.js.map
116
+ //# sourceMappingURL=events-QBKF32WS.js.map
@@ -22,7 +22,7 @@ import {
22
22
  handleToolResult,
23
23
  spreadOptionalMessageFields,
24
24
  stripOrphanedToolCalls
25
- } from "./chunk-XVWVAWSG.js";
25
+ } from "./chunk-DCYDTDWO.js";
26
26
  export {
27
27
  buildContextMessagesFromEventHistory,
28
28
  buildContextMessagesFromMessages,
@@ -48,4 +48,4 @@ export {
48
48
  spreadOptionalMessageFields,
49
49
  stripOrphanedToolCalls
50
50
  };
51
- //# sourceMappingURL=folding-4VHGQE6Y.js.map
51
+ //# sourceMappingURL=folding-EQPDQKQS.js.map
@@ -3,7 +3,7 @@ import {
3
3
  runBuilderTurn,
4
4
  runChatTurn,
5
5
  runVerifierTurn
6
- } from "./chunk-K7F73QLL.js";
6
+ } from "./chunk-Y532ULQ2.js";
7
7
  import {
8
8
  TurnMetrics,
9
9
  createChatDoneEvent,
@@ -11,19 +11,19 @@ import {
11
11
  createMessageStartEvent,
12
12
  createToolCallEvent,
13
13
  createToolResultEvent
14
- } from "./chunk-KR7N2ONG.js";
15
- import "./chunk-ROWFVGB6.js";
16
- import "./chunk-ZHBL5G5X.js";
14
+ } from "./chunk-PFSOVCEN.js";
15
+ import "./chunk-TYIHIHJF.js";
16
+ import "./chunk-XAMAYRDA.js";
17
17
  import "./chunk-DL6ZILAF.js";
18
18
  import "./chunk-PBGOZMVY.js";
19
19
  import "./chunk-VRGRAQDG.js";
20
20
  import "./chunk-HGAMIPFO.js";
21
- import "./chunk-7Y3HFCTD.js";
22
- import "./chunk-5GVCNVKV.js";
23
- import "./chunk-XVWVAWSG.js";
24
- import "./chunk-T67WWSM7.js";
21
+ import "./chunk-BZBT5VJL.js";
22
+ import "./chunk-FBGWG4N6.js";
23
+ import "./chunk-DCYDTDWO.js";
24
+ import "./chunk-MEOKWBXX.js";
25
25
  import "./chunk-BJYPTN5S.js";
26
- import "./chunk-ERFRUQQR.js";
26
+ import "./chunk-X3GA33UG.js";
27
27
  import "./chunk-CQGTEGKL.js";
28
28
  import "./chunk-CGZHLM3K.js";
29
29
  import "./chunk-SZKEGZIB.js";
@@ -40,4 +40,4 @@ export {
40
40
  runChatTurn,
41
41
  runVerifierTurn
42
42
  };
43
- //# sourceMappingURL=orchestrator-2A6RG6ZR.js.map
43
+ //# sourceMappingURL=orchestrator-4GHZFEGT.js.map
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openfox",
3
- "version": "1.6.98",
3
+ "version": "1.6.100",
4
4
  "description": "Local-LLM-first agentic coding assistant",
5
5
  "type": "module",
6
6
  "bin": {
@@ -5,17 +5,17 @@ import {
5
5
  generateSessionName,
6
6
  getSessionMessageCount,
7
7
  needsNameGenerationCheck
8
- } from "./chunk-NVVKBL4S.js";
8
+ } from "./chunk-IB3TCZF7.js";
9
9
  import {
10
10
  getEventStore
11
- } from "./chunk-7Y3HFCTD.js";
12
- import "./chunk-5GVCNVKV.js";
13
- import "./chunk-XVWVAWSG.js";
11
+ } from "./chunk-BZBT5VJL.js";
12
+ import "./chunk-FBGWG4N6.js";
13
+ import "./chunk-DCYDTDWO.js";
14
14
  import {
15
15
  createChatMessageMessage,
16
16
  createSessionRunningMessage
17
- } from "./chunk-T67WWSM7.js";
18
- import "./chunk-ERFRUQQR.js";
17
+ } from "./chunk-MEOKWBXX.js";
18
+ import "./chunk-X3GA33UG.js";
19
19
  import "./chunk-CGZHLM3K.js";
20
20
  import {
21
21
  logger
@@ -177,7 +177,7 @@ var QueueProcessor = class {
177
177
  backend: provider?.backend ?? llmClient.getBackend(),
178
178
  model: llmClient.getModel()
179
179
  };
180
- const { runChatTurn } = await import("./orchestrator-2A6RG6ZR.js");
180
+ const { runChatTurn } = await import("./orchestrator-4GHZFEGT.js");
181
181
  const runChatTurnParams = buildRunChatTurnParams({
182
182
  sessionManager,
183
183
  sessionId,
@@ -221,4 +221,4 @@ var QueueProcessor = class {
221
221
  export {
222
222
  QueueProcessor
223
223
  };
224
- //# sourceMappingURL=processor-V34TTHI2.js.map
224
+ //# sourceMappingURL=processor-I3WKCUAE.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createProject
3
- } from "./chunk-ZHBL5G5X.js";
4
- import "./chunk-5GVCNVKV.js";
3
+ } from "./chunk-XAMAYRDA.js";
4
+ import "./chunk-FBGWG4N6.js";
5
5
  import "./chunk-K44MW7JJ.js";
6
6
 
7
7
  // src/server/utils/project-creator.ts
@@ -108,4 +108,4 @@ export {
108
108
  createDirectoryWithGit,
109
109
  validateProjectName
110
110
  };
111
- //# sourceMappingURL=project-creator-25F7KUPX.js.map
111
+ //# sourceMappingURL=project-creator-6DU7E75S.js.map
@@ -6,8 +6,8 @@ import {
6
6
  listProjects,
7
7
  toggleStar,
8
8
  updateProject
9
- } from "./chunk-ZHBL5G5X.js";
10
- import "./chunk-5GVCNVKV.js";
9
+ } from "./chunk-XAMAYRDA.js";
10
+ import "./chunk-FBGWG4N6.js";
11
11
  import "./chunk-K44MW7JJ.js";
12
12
  export {
13
13
  createProject,
@@ -18,4 +18,4 @@ export {
18
18
  toggleStar,
19
19
  updateProject
20
20
  };
21
- //# sourceMappingURL=projects-55F45PH3.js.map
21
+ //# sourceMappingURL=projects-2HYIZC4Y.js.map
@@ -8,7 +8,6 @@ import {
8
8
  createChatMessageUpdatedMessage,
9
9
  createChatPathConfirmationMessage,
10
10
  createChatProgressMessage,
11
- createChatSummaryMessage,
12
11
  createChatThinkingMessage,
13
12
  createChatTodoMessage,
14
13
  createChatToolCallMessage,
@@ -36,8 +35,8 @@ import {
36
35
  parseClientMessage,
37
36
  serializeServerMessage,
38
37
  storedEventToServerMessage
39
- } from "./chunk-T67WWSM7.js";
40
- import "./chunk-ERFRUQQR.js";
38
+ } from "./chunk-MEOKWBXX.js";
39
+ import "./chunk-X3GA33UG.js";
41
40
  export {
42
41
  createChatAskUserMessage,
43
42
  createChatDeltaMessage,
@@ -48,7 +47,6 @@ export {
48
47
  createChatMessageUpdatedMessage,
49
48
  createChatPathConfirmationMessage,
50
49
  createChatProgressMessage,
51
- createChatSummaryMessage,
52
50
  createChatThinkingMessage,
53
51
  createChatTodoMessage,
54
52
  createChatToolCallMessage,
@@ -77,4 +75,4 @@ export {
77
75
  serializeServerMessage,
78
76
  storedEventToServerMessage
79
77
  };
80
- //# sourceMappingURL=protocol-FZUIA4BS.js.map
78
+ //# sourceMappingURL=protocol-GKGDN64O.js.map
@@ -19,7 +19,6 @@ interface Session {
19
19
  mode: SessionMode;
20
20
  phase: SessionPhase;
21
21
  isRunning: boolean;
22
- summary: string | null;
23
22
  providerId?: string | null;
24
23
  providerModel?: string | null;
25
24
  createdAt: string;
@@ -529,7 +528,7 @@ interface QueuedMessage {
529
528
  queuedAt: string;
530
529
  messageKind?: string;
531
530
  }
532
- type ServerMessageType = 'project.state' | 'project.list' | 'project.deleted' | 'session.state' | 'session.list' | 'session.deleted' | 'session.deletedAll' | 'session.running' | 'session.name_generated' | 'chat.delta' | 'chat.thinking' | 'chat.tool_preparing' | 'chat.tool_call' | 'chat.tool_output' | 'chat.tool_result' | 'chat.todo' | 'chat.summary' | 'chat.progress' | 'chat.format_retry' | 'chat.message' | 'chat.message_updated' | 'chat.done' | 'chat.vision_fallback' | 'chat.error' | 'chat.path_confirmation' | 'chat.ask_user' | 'mode.changed' | 'phase.changed' | 'task.completed' | 'criteria.updated' | 'context.state' | 'settings.value' | 'provider.changed' | 'queue.state' | 'devServer.output' | 'devServer.state' | 'backgroundProcess.started' | 'backgroundProcess.output' | 'backgroundProcess.exited' | 'backgroundProcess.removed' | 'git.status' | 'lsp.diagnostics' | 'error' | 'ack';
531
+ type ServerMessageType = 'project.state' | 'project.list' | 'project.deleted' | 'session.state' | 'session.list' | 'session.deleted' | 'session.deletedAll' | 'session.running' | 'session.name_generated' | 'chat.delta' | 'chat.thinking' | 'chat.tool_preparing' | 'chat.tool_call' | 'chat.tool_output' | 'chat.tool_result' | 'chat.todo' | 'chat.progress' | 'chat.format_retry' | 'chat.message' | 'chat.message_updated' | 'chat.done' | 'chat.vision_fallback' | 'chat.error' | 'chat.path_confirmation' | 'chat.ask_user' | 'mode.changed' | 'phase.changed' | 'task.completed' | 'criteria.updated' | 'context.state' | 'settings.value' | 'provider.changed' | 'queue.state' | 'devServer.output' | 'devServer.state' | 'backgroundProcess.started' | 'backgroundProcess.output' | 'backgroundProcess.exited' | 'backgroundProcess.removed' | 'git.status' | 'lsp.diagnostics' | 'error' | 'ack';
533
532
  interface ServerMessage<T = unknown> {
534
533
  id?: string;
535
534
  type: ServerMessageType;
@@ -603,9 +602,6 @@ interface ChatToolOutputPayload {
603
602
  interface ChatTodoPayload {
604
603
  todos: Todo[];
605
604
  }
606
- interface ChatSummaryPayload {
607
- summary: string;
608
- }
609
605
  interface ChatProgressPayload {
610
606
  message: string;
611
607
  phase?: 'summary' | 'mode_switch' | 'starting' | 'context_warning' | 'context_error';
@@ -864,4 +860,4 @@ interface QueueCancelledEvent {
864
860
  }
865
861
  type QueueEvent = QueueAddedEvent | QueueDrainedEvent | QueueCancelledEvent;
866
862
 
867
- export { type GitDiffFile as $, type AgentEvent as A, type BackgroundProcess as B, type CallStatsDataPoint as C, type ClientMessageType as D, type Config as E, type ContextCompactionEvent as F, type ContextState as G, type ContextStatePayload as H, type ContextWindow as I, type CriteriaUpdatedPayload as J, type Criterion as K, type CriterionAttempt as L, type Message as M, type CriterionStatus as N, type CriterionValidation as O, type DangerLevel as P, type DevServerOutputPayload as Q, type DevServerStatePayload as R, type SessionStats as S, type Diagnostic as T, type EditContextEdit as U, type EditContextLine as V, type EditContextRegion as W, type ElementData as X, type ErrorPayload as Y, type ExecutionState as Z, type FileReadEntry as _, type AskAnswerPayload as a, type GitStatusPayload as a0, type InjectedFile as a1, type LLMCallStats as a2, type LlmBackend as a3, type LogLine as a4, type LspDiagnosticsPayload as a5, type MessageRole as a6, type MessageSegment as a7, type MessageStats as a8, type ModeChangedPayload as a9, type ServerMessage as aA, type ServerMessageType as aB, type Session as aC, type SessionListPayload as aD, type SessionLoadPayload as aE, type SessionMetadata as aF, type SessionMode as aG, type SessionNameGeneratedPayload as aH, type SessionPhase as aI, type SessionRunningPayload as aJ, type SessionStatePayload as aK, type SessionSummary as aL, type StatsDataPoint as aM, type StatsIdentity as aN, type TaskCompletedPayload as aO, type Todo as aP, type ToolCall as aQ, type ToolMode as aR, type ToolName as aS, type ToolResult as aT, type ValidationResult as aU, createClientMessage as aV, createServerMessage as aW, isClientMessage as aX, isServerMessage as aY, type ModelConfig as aa, type ModelSessionStats as ab, type PathConfirmPayload as ac, type PathConfirmationReason as ad, type PendingPathConfirmationPayload as ae, type PhaseChangedPayload as af, type PreparingToolCall as ag, type Project as ah, type ProjectDeletedPayload as ai, type ProjectListPayload as aj, type ProjectStatePayload as ak, type PromptContext as al, type PromptContextMessage as am, type PromptContextTool as an, type PromptRequestOptions as ao, type Provider as ap, type ProviderBackend as aq, type ProviderChangedPayload as ar, type QueueAddedEvent as as, type QueueCancelledEvent as at, type QueueDrainedEvent as au, type QueueEvent as av, type QueueEventType as aw, type QueueStatePayload as ax, type QueuedMessage as ay, type RecentUserPrompt as az, type AskUserEvent as b, type Attachment as c, type BackgroundProcessExitedPayload as d, type BackgroundProcessOutputPayload as e, type BackgroundProcessRemovedPayload as f, type BackgroundProcessStartedPayload as g, type BackgroundProcessStatus as h, type ChatAskUserPayload as i, type ChatDeltaPayload as j, type ChatDonePayload as k, type ChatErrorPayload as l, type ChatFormatRetryPayload as m, type ChatMessagePayload as n, type ChatMessageUpdatedPayload as o, type ChatPathConfirmationPayload as p, type ChatProgressPayload as q, type ChatSummaryPayload as r, type ChatThinkingPayload as s, type ChatTodoPayload as t, type ChatToolCallPayload as u, type ChatToolOutputPayload as v, type ChatToolPreparingPayload as w, type ChatToolResultPayload as x, type ChatVisionFallbackPayload as y, type ClientMessage as z };
863
+ export { type GitStatusPayload as $, type AgentEvent as A, type BackgroundProcess as B, type CallStatsDataPoint as C, type Config as D, type ContextCompactionEvent as E, type ContextState as F, type ContextStatePayload as G, type ContextWindow as H, type CriteriaUpdatedPayload as I, type Criterion as J, type CriterionAttempt as K, type CriterionStatus as L, type Message as M, type CriterionValidation as N, type DangerLevel as O, type DevServerOutputPayload as P, type DevServerStatePayload as Q, type Diagnostic as R, type SessionStats as S, type EditContextEdit as T, type EditContextLine as U, type EditContextRegion as V, type ElementData as W, type ErrorPayload as X, type ExecutionState as Y, type FileReadEntry as Z, type GitDiffFile as _, type AskAnswerPayload as a, type InjectedFile as a0, type LLMCallStats as a1, type LlmBackend as a2, type LogLine as a3, type LspDiagnosticsPayload as a4, type MessageRole as a5, type MessageSegment as a6, type MessageStats as a7, type ModeChangedPayload as a8, type ModelConfig as a9, type ServerMessageType as aA, type Session as aB, type SessionListPayload as aC, type SessionLoadPayload as aD, type SessionMetadata as aE, type SessionMode as aF, type SessionNameGeneratedPayload as aG, type SessionPhase as aH, type SessionRunningPayload as aI, type SessionStatePayload as aJ, type SessionSummary as aK, type StatsDataPoint as aL, type StatsIdentity as aM, type TaskCompletedPayload as aN, type Todo as aO, type ToolCall as aP, type ToolMode as aQ, type ToolName as aR, type ToolResult as aS, type ValidationResult as aT, createClientMessage as aU, createServerMessage as aV, isClientMessage as aW, isServerMessage as aX, type ModelSessionStats as aa, type PathConfirmPayload as ab, type PathConfirmationReason as ac, type PendingPathConfirmationPayload as ad, type PhaseChangedPayload as ae, type PreparingToolCall as af, type Project as ag, type ProjectDeletedPayload as ah, type ProjectListPayload as ai, type ProjectStatePayload as aj, type PromptContext as ak, type PromptContextMessage as al, type PromptContextTool as am, type PromptRequestOptions as an, type Provider as ao, type ProviderBackend as ap, type ProviderChangedPayload as aq, type QueueAddedEvent as ar, type QueueCancelledEvent as as, type QueueDrainedEvent as at, type QueueEvent as au, type QueueEventType as av, type QueueStatePayload as aw, type QueuedMessage as ax, type RecentUserPrompt as ay, type ServerMessage as az, type AskUserEvent as b, type Attachment as c, type BackgroundProcessExitedPayload as d, type BackgroundProcessOutputPayload as e, type BackgroundProcessRemovedPayload as f, type BackgroundProcessStartedPayload as g, type BackgroundProcessStatus as h, type ChatAskUserPayload as i, type ChatDeltaPayload as j, type ChatDonePayload as k, type ChatErrorPayload as l, type ChatFormatRetryPayload as m, type ChatMessagePayload as n, type ChatMessageUpdatedPayload as o, type ChatPathConfirmationPayload as p, type ChatProgressPayload as q, type ChatThinkingPayload as r, type ChatTodoPayload as s, type ChatToolCallPayload as t, type ChatToolOutputPayload as u, type ChatToolPreparingPayload as v, type ChatToolResultPayload as w, type ChatVisionFallbackPayload as x, type ClientMessage as y, type ClientMessageType as z };