openfox 1.0.0 → 1.0.1

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.
@@ -0,0 +1,22 @@
1
+ ---
2
+ id: explorer
3
+ name: Explorer
4
+ description: Explore codebase, understand structure, and find relevant code
5
+ subagent: true
6
+ color: '#8b5cf6'
7
+ allowedTools:
8
+ - read_file
9
+ - run_command
10
+ - web_fetch
11
+ ---
12
+
13
+ You are a codebase exploration expert.
14
+
15
+ Your role is to investigate and map out code structure, find relevant files, and explain how components work together.
16
+
17
+ Guidelines:
18
+ - Use glob, grep, and read_file tools to discover code
19
+ - Trace dependencies and imports to understand relationships
20
+ - Identify patterns and conventions in the codebase
21
+ - Report findings clearly with file paths and key observations
22
+ - Look for tests, documentation, and configuration to supplement your understanding
@@ -2,7 +2,7 @@ import {
2
2
  maybeAutoCompactContext,
3
3
  performManualContextCompaction,
4
4
  resolveCompactionStatsIdentity
5
- } from "./chunk-YB2574C6.js";
5
+ } from "./chunk-ARKA56ZM.js";
6
6
  import "./chunk-BU2ZYOEA.js";
7
7
  import "./chunk-2KSCZSXQ.js";
8
8
  import "./chunk-S4QKTRGJ.js";
@@ -20,4 +20,4 @@ export {
20
20
  performManualContextCompaction,
21
21
  resolveCompactionStatsIdentity
22
22
  };
23
- //# sourceMappingURL=auto-compaction-7LNZ5J3W.js.map
23
+ //# sourceMappingURL=auto-compaction-WRS52ERL.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  runChatTurn
3
- } from "./chunk-VZXXJKSQ.js";
4
- import "./chunk-YB2574C6.js";
3
+ } from "./chunk-OWDPT3M6.js";
4
+ import "./chunk-ARKA56ZM.js";
5
5
  import {
6
6
  generateSessionName,
7
7
  needsNameGeneration
@@ -59,7 +59,7 @@ async function startChatSession(sessionId, content, deps, options) {
59
59
  sessionManager.setRunning(sessionId, true);
60
60
  broadcastForSession(sessionId, createSessionRunningMessage(true));
61
61
  try {
62
- const { maybeAutoCompactContext } = await import("./auto-compaction-7LNZ5J3W.js");
62
+ const { maybeAutoCompactContext } = await import("./auto-compaction-WRS52ERL.js");
63
63
  await maybeAutoCompactContext({
64
64
  sessionManager,
65
65
  sessionId,
@@ -198,4 +198,4 @@ export {
198
198
  startChatSession,
199
199
  stopSessionExecution
200
200
  };
201
- //# sourceMappingURL=chat-handler-T7SLWZ4E.js.map
201
+ //# sourceMappingURL=chat-handler-226J7XYE.js.map
@@ -3396,7 +3396,7 @@ var callSubAgentTool = {
3396
3396
  type: "function",
3397
3397
  function: {
3398
3398
  name: "call_sub_agent",
3399
- description: "Call a sub-agent to perform a specialized task. Available sub-agents: verifier (verify criteria), code_reviewer (review code quality), test_generator (generate tests), debugger (analyze errors). The sub-agent will execute with isolated context and return a text result.",
3399
+ description: "Call a sub-agent to perform a specialized task. Available sub-agents: verifier (verify criteria), code_reviewer (review code quality), explorer (explore codebase). The sub-agent will execute with isolated context and return a text result.",
3400
3400
  parameters: {
3401
3401
  type: "object",
3402
3402
  properties: {
@@ -3454,7 +3454,7 @@ var callSubAgentTool = {
3454
3454
  };
3455
3455
  }
3456
3456
  try {
3457
- const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-SGBQE736.js");
3457
+ const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-WOZVXNEQ.js");
3458
3458
  const toolRegistry = getToolRegistryForAgent2(agentDef);
3459
3459
  const turnMetrics = new TurnMetrics();
3460
3460
  const result = await executeSubAgent({
@@ -4462,4 +4462,4 @@ export {
4462
4462
  getToolRegistryForAgent,
4463
4463
  createToolRegistry
4464
4464
  };
4465
- //# sourceMappingURL=chunk-YB2574C6.js.map
4465
+ //# sourceMappingURL=chunk-ARKA56ZM.js.map
@@ -2,7 +2,7 @@ import {
2
2
  createVerifierNudgeConfig,
3
3
  runBuilderTurn,
4
4
  runChatTurn
5
- } from "./chunk-VZXXJKSQ.js";
5
+ } from "./chunk-OWDPT3M6.js";
6
6
  import {
7
7
  TurnMetrics,
8
8
  agentExists,
@@ -40,7 +40,7 @@ import {
40
40
  saveSkill,
41
41
  setSkillEnabled,
42
42
  skillExists
43
- } from "./chunk-YB2574C6.js";
43
+ } from "./chunk-ARKA56ZM.js";
44
44
  import {
45
45
  generateSessionName,
46
46
  needsNameGeneration
@@ -5629,7 +5629,7 @@ async function createServerHandle(config) {
5629
5629
  if (!callId || approved === void 0) {
5630
5630
  return res.status(400).json({ error: "callId and approved are required" });
5631
5631
  }
5632
- const { providePathConfirmation: providePathConfirmation2 } = await import("./tools-SGBQE736.js");
5632
+ const { providePathConfirmation: providePathConfirmation2 } = await import("./tools-WOZVXNEQ.js");
5633
5633
  const result = providePathConfirmation2(callId, approved, alwaysAllow);
5634
5634
  if (!result.found) {
5635
5635
  return res.status(404).json({ error: "No pending path confirmation with that ID" });
@@ -5654,7 +5654,7 @@ async function createServerHandle(config) {
5654
5654
  if (!callId || !answer) {
5655
5655
  return res.status(400).json({ error: "callId and answer are required" });
5656
5656
  }
5657
- const { provideAnswer: provideAnswer2 } = await import("./tools-SGBQE736.js");
5657
+ const { provideAnswer: provideAnswer2 } = await import("./tools-WOZVXNEQ.js");
5658
5658
  const found = provideAnswer2(callId, answer);
5659
5659
  if (!found) {
5660
5660
  return res.status(404).json({ error: "No pending question with that ID" });
@@ -5690,8 +5690,8 @@ async function createServerHandle(config) {
5690
5690
  if (!session) {
5691
5691
  return res.status(404).json({ error: "Session not found" });
5692
5692
  }
5693
- const { stopSessionExecution } = await import("./chat-handler-T7SLWZ4E.js");
5694
- const { cancelQuestionsForSession: cancelQuestionsForSession2, cancelPathConfirmationsForSession: cancelPathConfirmationsForSession2 } = await import("./tools-SGBQE736.js");
5693
+ const { stopSessionExecution } = await import("./chat-handler-226J7XYE.js");
5694
+ const { cancelQuestionsForSession: cancelQuestionsForSession2, cancelPathConfirmationsForSession: cancelPathConfirmationsForSession2 } = await import("./tools-WOZVXNEQ.js");
5695
5695
  stopSessionExecution(sessionId, sessionManager);
5696
5696
  abortSession(sessionId);
5697
5697
  cancelQuestionsForSession2(sessionId, "Session stopped by user");
@@ -6012,7 +6012,7 @@ async function createServerHandle(config) {
6012
6012
  providerManager
6013
6013
  );
6014
6014
  const wss = wssExports.wss;
6015
- const { QueueProcessor } = await import("./processor-KLHKDILM.js");
6015
+ const { QueueProcessor } = await import("./processor-LAKHPIG3.js");
6016
6016
  const queueProcessor = new QueueProcessor({
6017
6017
  sessionManager,
6018
6018
  providerManager,
@@ -6082,4 +6082,4 @@ export {
6082
6082
  createServerHandle,
6083
6083
  createServer
6084
6084
  };
6085
- //# sourceMappingURL=chunk-RAZQTQK2.js.map
6085
+ //# sourceMappingURL=chunk-HGMG5F72.js.map
@@ -13,7 +13,7 @@ import {
13
13
  getToolRegistryForAgent,
14
14
  loadAllAgentsDefault,
15
15
  runTopLevelAgentLoop
16
- } from "./chunk-YB2574C6.js";
16
+ } from "./chunk-ARKA56ZM.js";
17
17
  import {
18
18
  getCurrentContextWindowId,
19
19
  getEventStore
@@ -311,4 +311,4 @@ export {
311
311
  runBuilderTurn,
312
312
  runVerifierTurn
313
313
  };
314
- //# sourceMappingURL=chunk-VZXXJKSQ.js.map
314
+ //# sourceMappingURL=chunk-OWDPT3M6.js.map
@@ -129,7 +129,7 @@ async function runCli(options) {
129
129
  await runInitWithSelect(mode);
130
130
  }
131
131
  }
132
- const { runServe } = await import("./serve-UK6B6G2O.js");
132
+ const { runServe } = await import("./serve-5NHW3X5B.js");
133
133
  await runServe({
134
134
  mode,
135
135
  port: values.port ? parseInt(values.port) : void 0,
@@ -142,4 +142,4 @@ async function runCli(options) {
142
142
  export {
143
143
  runCli
144
144
  };
145
- //# sourceMappingURL=chunk-2TBNG7CS.js.map
145
+ //# sourceMappingURL=chunk-VUQPJFMQ.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-2TBNG7CS.js";
4
+ } from "../chunk-VUQPJFMQ.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-2TBNG7CS.js";
4
+ } from "../chunk-VUQPJFMQ.js";
5
5
  import {
6
6
  logger
7
7
  } from "../chunk-PNBH3RAX.js";
@@ -3,7 +3,7 @@ import {
3
3
  runBuilderTurn,
4
4
  runChatTurn,
5
5
  runVerifierTurn
6
- } from "./chunk-VZXXJKSQ.js";
6
+ } from "./chunk-OWDPT3M6.js";
7
7
  import {
8
8
  TurnMetrics,
9
9
  createChatDoneEvent,
@@ -11,7 +11,7 @@ import {
11
11
  createMessageStartEvent,
12
12
  createToolCallEvent,
13
13
  createToolResultEvent
14
- } from "./chunk-YB2574C6.js";
14
+ } from "./chunk-ARKA56ZM.js";
15
15
  import "./chunk-BU2ZYOEA.js";
16
16
  import "./chunk-2KSCZSXQ.js";
17
17
  import "./chunk-S4QKTRGJ.js";
@@ -36,4 +36,4 @@ export {
36
36
  runChatTurn,
37
37
  runVerifierTurn
38
38
  };
39
- //# sourceMappingURL=orchestrator-UGXX7JRQ.js.map
39
+ //# sourceMappingURL=orchestrator-4CBESUGB.js.map
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openfox",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Local-LLM-first agentic coding assistant",
5
5
  "type": "module",
6
6
  "bin": {
@@ -188,7 +188,7 @@ var QueueProcessor = class {
188
188
  backend: provider?.backend ?? llmClient.getBackend(),
189
189
  model: llmClient.getModel()
190
190
  };
191
- const { runChatTurn } = await import("./orchestrator-UGXX7JRQ.js");
191
+ const { runChatTurn } = await import("./orchestrator-4CBESUGB.js");
192
192
  runChatTurn({
193
193
  sessionManager,
194
194
  sessionId,
@@ -233,4 +233,4 @@ var QueueProcessor = class {
233
233
  export {
234
234
  QueueProcessor
235
235
  };
236
- //# sourceMappingURL=processor-KLHKDILM.js.map
236
+ //# sourceMappingURL=processor-LAKHPIG3.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  createServer
3
- } from "./chunk-RAZQTQK2.js";
4
- import "./chunk-VZXXJKSQ.js";
5
- import "./chunk-YB2574C6.js";
3
+ } from "./chunk-HGMG5F72.js";
4
+ import "./chunk-OWDPT3M6.js";
5
+ import "./chunk-ARKA56ZM.js";
6
6
  import "./chunk-QDEKU5RL.js";
7
7
  import "./chunk-QYP5HQV4.js";
8
8
  import "./chunk-BU2ZYOEA.js";
@@ -37,14 +37,26 @@ import {
37
37
  // src/server/utils/network.ts
38
38
  import os from "os";
39
39
  import { statSync, readFileSync } from "fs";
40
- import { fileURLToPath } from "url";
41
40
  import { dirname, join } from "path";
42
41
  function getVersion() {
43
- const __filename = fileURLToPath(import.meta.url);
44
- const __dirname = dirname(__filename);
45
- const packageJsonPath = join(__dirname, "../package.json");
46
- const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
47
- return packageJson.version;
42
+ const possiblePaths = [];
43
+ possiblePaths.push(join(process.cwd(), "package.json"));
44
+ const entryPoint = process.argv[1];
45
+ if (entryPoint) {
46
+ const cliDir = dirname(entryPoint);
47
+ possiblePaths.push(join(cliDir, "../../package.json"));
48
+ possiblePaths.push(join(cliDir, "../../../package.json"));
49
+ }
50
+ for (const packageJsonPath of possiblePaths) {
51
+ try {
52
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
53
+ if (packageJson.version && typeof packageJson.version === "string") {
54
+ return packageJson.version;
55
+ }
56
+ } catch {
57
+ }
58
+ }
59
+ return "unknown";
48
60
  }
49
61
  function getNetworkInterfaces() {
50
62
  const interfaces = os.networkInterfaces();
@@ -194,4 +206,4 @@ async function runServe(options) {
194
206
  export {
195
207
  runServe
196
208
  };
197
- //# sourceMappingURL=serve-UK6B6G2O.js.map
209
+ //# sourceMappingURL=serve-5NHW3X5B.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  createServer,
3
3
  createServerHandle
4
- } from "../chunk-RAZQTQK2.js";
5
- import "../chunk-VZXXJKSQ.js";
6
- import "../chunk-YB2574C6.js";
4
+ } from "../chunk-HGMG5F72.js";
5
+ import "../chunk-OWDPT3M6.js";
6
+ import "../chunk-ARKA56ZM.js";
7
7
  import "../chunk-QDEKU5RL.js";
8
8
  import "../chunk-QYP5HQV4.js";
9
9
  import "../chunk-BU2ZYOEA.js";
@@ -11,7 +11,7 @@ import {
11
11
  requestPathAccess,
12
12
  stepDoneTool,
13
13
  validateToolAction
14
- } from "./chunk-YB2574C6.js";
14
+ } from "./chunk-ARKA56ZM.js";
15
15
  import "./chunk-BU2ZYOEA.js";
16
16
  import "./chunk-2KSCZSXQ.js";
17
17
  import "./chunk-S4QKTRGJ.js";
@@ -45,4 +45,4 @@ export {
45
45
  stepDoneTool,
46
46
  validateToolAction
47
47
  };
48
- //# sourceMappingURL=tools-SGBQE736.js.map
48
+ //# sourceMappingURL=tools-WOZVXNEQ.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openfox",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Local-LLM-first agentic coding assistant",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,20 +0,0 @@
1
- ---
2
- id: debugger
3
- name: Debugger
4
- description: Analyze errors and suggest fixes
5
- subagent: true
6
- color: '#f97316'
7
- allowedTools:
8
- - read_file
9
- - run_command
10
- - web_fetch
11
- ---
12
-
13
- You are an expert debugger.
14
- Analyze the provided error and code to:
15
- 1. Identify the root cause
16
- 2. Explain why the error occurs
17
- 3. Suggest specific fixes
18
- 4. Recommend prevention strategies
19
-
20
- Be precise and provide code examples when applicable.
@@ -1,22 +0,0 @@
1
- ---
2
- id: test_generator
3
- name: Test Generator
4
- description: Generate tests for implemented features
5
- subagent: true
6
- color: '#f59e0b'
7
- allowedTools:
8
- - read_file
9
- - write_file
10
- - run_command
11
- - web_fetch
12
- ---
13
-
14
- You are a test generation specialist.
15
- Generate comprehensive tests for the provided source code.
16
-
17
- Guidelines:
18
- - Follow the project's existing test patterns
19
- - Cover edge cases and error conditions
20
- - Use the appropriate test framework
21
- - Ensure tests are deterministic and isolated
22
- - Include descriptive test names