openfox 2.0.62 → 2.0.63

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/README.md +14 -0
  2. package/dist/{chat-handler-TRAITVLO.js → chat-handler-WNARPARQ.js} +11 -11
  3. package/dist/{chunk-WEB4WBUF.js → chunk-5OPZLQDV.js} +38 -38
  4. package/dist/{chunk-3WL5YCP6.js → chunk-FGG4KRFX.js} +6 -6
  5. package/dist/{chunk-L4WACPUX.js → chunk-IVJYQZSN.js} +5 -5
  6. package/dist/{chunk-QZRS2RF5.js → chunk-N5JF4RYJ.js} +362 -92
  7. package/dist/{chunk-GJU35MDV.js → chunk-OESYKZCM.js} +2 -2
  8. package/dist/{chunk-JKLPWTUN.js → chunk-QBYQ7KDX.js} +9 -4
  9. package/dist/{chunk-NVPVDDQZ.js → chunk-QJ5FH5DP.js} +14 -10
  10. package/dist/{chunk-H774GQJW.js → chunk-RYIREJAW.js} +234 -40
  11. package/dist/{chunk-BKTBHEPY.js → chunk-W4PUAODY.js} +32 -42
  12. package/dist/{chunk-43UFGATL.js → chunk-WGAAQASA.js} +31 -9
  13. package/dist/{chunk-6VDCH5ML.js → chunk-X5YCWKNS.js} +4 -4
  14. package/dist/cli/dev.js +1 -1
  15. package/dist/cli/index.js +1 -1
  16. package/dist/{client-KRFGMNGN.js → client-LAKW7TA5.js} +3 -3
  17. package/dist/{compactor-Q33AJPCQ.js → compactor-I3N56PSJ.js} +4 -4
  18. package/dist/{config-GMQUPNBY.js → config-EUMVEFHU.js} +2 -2
  19. package/dist/{orchestrator-TQ23BAFQ.js → orchestrator-OIBLY5QJ.js} +14 -14
  20. package/dist/package.json +5 -1
  21. package/dist/{processor-3ZOFGZP5.js → processor-27VCKRGB.js} +13 -12
  22. package/dist/protocol-Cq66hdDX.d.ts +375 -0
  23. package/dist/provider/index.d.ts +129 -0
  24. package/dist/provider/index.js +1 -0
  25. package/dist/{provider-LBYBC5AG.js → provider-GYOW4OWQ.js} +7 -9
  26. package/dist/{provider-manager-ABEUYU3K.js → provider-manager-HRHNF73A.js} +4 -5
  27. package/dist/{serve-CNA5NKOR.js → serve-HB222ARV.js} +15 -16
  28. package/dist/server/index.d.ts +5 -87
  29. package/dist/server/index.js +12 -13
  30. package/dist/{server-CI5IEBOC.js → server-XDC7R2IX.js} +10 -14
  31. package/dist/shared/index.d.ts +3 -2
  32. package/dist/{tools-33FQNFKC.js → tools-W2FFSF4N.js} +7 -7
  33. package/dist/types-CDZakn7f.d.ts +89 -0
  34. package/dist/{protocol-J7khRG62.d.ts → types-akHmgvBk.d.ts} +17 -373
  35. package/dist/web/assets/{index-BGkyTfuQ.css → index-DvPmgi8F.css} +1 -1
  36. package/dist/web/assets/{index-CETZPQXr.js → index-bSaZSLjg.js} +74 -73
  37. package/dist/web/index.html +2 -2
  38. package/dist/web/sw.js +1 -1
  39. package/package.json +5 -1
  40. package/dist/chunk-M3RB4IF6.js +0 -114
package/README.md CHANGED
@@ -81,6 +81,20 @@ openfox provider remove # Remove provider
81
81
  - **LSP Integration**: Immediate feedback on code validity
82
82
  - **Real-Time Metrics**: Prefill time, generation speed, context usage
83
83
 
84
+ ## Plugins
85
+
86
+ OpenFox supports provider plugins loaded from the `plugins` directory inside its configuration folder. Plugins can add authentication methods, transports, provider presets, and model discovery without adding provider-specific code to the OpenFox core.
87
+
88
+ Default plugin directories:
89
+
90
+ - macOS: `~/Library/Application Support/openfox/plugins`
91
+ - Linux: `${XDG_CONFIG_HOME:-~/.config}/openfox/plugins`
92
+ - Windows: `%APPDATA%\openfox\plugins`
93
+
94
+ Restart OpenFox after installing or updating a plugin.
95
+
96
+ To authenticate with a ChatGPT Plus or Pro account, you can install the [`openfox-chatgpt`](https://github.com/arthurlacoste/openfox-chatgpt) plugin.
97
+
84
98
  ## Screenshots
85
99
 
86
100
  _Homepage — Project overview and session history_
@@ -2,15 +2,20 @@ import {
2
2
  buildRunChatTurnParams,
3
3
  finalizeTurnCompletion,
4
4
  generateSessionNameForSession
5
- } from "./chunk-NVPVDDQZ.js";
5
+ } from "./chunk-QJ5FH5DP.js";
6
6
  import {
7
7
  runChatTurn
8
- } from "./chunk-L4WACPUX.js";
9
- import "./chunk-WEB4WBUF.js";
8
+ } from "./chunk-IVJYQZSN.js";
9
+ import "./chunk-5OPZLQDV.js";
10
+ import "./chunk-X5YCWKNS.js";
10
11
  import "./chunk-LBGHZLLH.js";
11
12
  import "./chunk-BGTEIA2S.js";
12
13
  import "./chunk-PK2RMVMB.js";
13
14
  import "./chunk-NWO6GRYE.js";
15
+ import {
16
+ getEventStore
17
+ } from "./chunk-AIJE3RYH.js";
18
+ import "./chunk-TMUBLQFC.js";
14
19
  import {
15
20
  createChatMessageMessage,
16
21
  createPhaseChangedMessage,
@@ -19,20 +24,15 @@ import {
19
24
  import "./chunk-EU3WWTFH.js";
20
25
  import "./chunk-SVSKQYFH.js";
21
26
  import "./chunk-YQ3SOPBI.js";
22
- import "./chunk-6VDCH5ML.js";
23
- import {
24
- getEventStore
25
- } from "./chunk-AIJE3RYH.js";
26
- import "./chunk-TMUBLQFC.js";
27
27
  import "./chunk-ZPIZLTWU.js";
28
28
  import "./chunk-J2GP3J3X.js";
29
+ import "./chunk-V4IE7HJY.js";
29
30
  import "./chunk-YHEQTVFV.js";
30
31
  import "./chunk-Z6W4YHJB.js";
31
32
  import "./chunk-K44MW7JJ.js";
32
33
  import "./chunk-YD6NDTKF.js";
33
- import "./chunk-43UFGATL.js";
34
+ import "./chunk-WGAAQASA.js";
34
35
  import "./chunk-CQGTEGKL.js";
35
- import "./chunk-V4IE7HJY.js";
36
36
  import "./chunk-5WRI5ZAA.js";
37
37
 
38
38
  // src/server/session/chat-handler.ts
@@ -154,4 +154,4 @@ export {
154
154
  startChatSession,
155
155
  stopSessionExecution
156
156
  };
157
- //# sourceMappingURL=chat-handler-TRAITVLO.js.map
157
+ //# sourceMappingURL=chat-handler-WNARPARQ.js.map
@@ -1,3 +1,16 @@
1
+ import {
2
+ COMPACTION_PROMPT,
3
+ TurnMetrics,
4
+ buildBasePrompt,
5
+ computeEffectiveTools,
6
+ consumeStreamGenerator,
7
+ createChatDoneEvent,
8
+ createMessageDoneEvent,
9
+ createMessageStartEvent,
10
+ createToolCallEvent,
11
+ createToolResultEvent,
12
+ streamLLMPure
13
+ } from "./chunk-X5YCWKNS.js";
1
14
  import {
2
15
  startInspectProxy
3
16
  } from "./chunk-LBGHZLLH.js";
@@ -18,6 +31,22 @@ import {
18
31
  import {
19
32
  createMcpTools
20
33
  } from "./chunk-NWO6GRYE.js";
34
+ import {
35
+ getCurrentContextWindowId,
36
+ getCurrentWindowMessageOptions,
37
+ getEventStore,
38
+ getRuntimeConfig
39
+ } from "./chunk-AIJE3RYH.js";
40
+ import {
41
+ buildContextMessagesFromEventHistory,
42
+ foldContextState,
43
+ handleMessageDelta,
44
+ handleMessageThinking,
45
+ handleToolCall,
46
+ handleToolResult,
47
+ reorderToolMessages,
48
+ stripOrphanedToolCalls
49
+ } from "./chunk-TMUBLQFC.js";
21
50
  import {
22
51
  createChatDoneMessage,
23
52
  createChatMessageMessage,
@@ -39,47 +68,18 @@ import {
39
68
  getProject
40
69
  } from "./chunk-YQ3SOPBI.js";
41
70
  import {
42
- COMPACTION_PROMPT,
43
- TurnMetrics,
44
- buildBasePrompt,
45
- computeEffectiveTools,
46
- consumeStreamGenerator,
47
- createChatDoneEvent,
48
- createMessageDoneEvent,
49
- createMessageStartEvent,
50
- createToolCallEvent,
51
- createToolResultEvent,
52
- streamLLMPure
53
- } from "./chunk-6VDCH5ML.js";
54
- import {
55
- getCurrentContextWindowId,
56
- getCurrentWindowMessageOptions,
57
- getEventStore,
58
- getRuntimeConfig
59
- } from "./chunk-AIJE3RYH.js";
60
- import {
61
- buildContextMessagesFromEventHistory,
62
- foldContextState,
63
- handleMessageDelta,
64
- handleMessageThinking,
65
- handleToolCall,
66
- handleToolResult,
67
- reorderToolMessages,
68
- stripOrphanedToolCalls
69
- } from "./chunk-TMUBLQFC.js";
71
+ modelSupportsVision
72
+ } from "./chunk-V4IE7HJY.js";
70
73
  import {
71
74
  logger
72
75
  } from "./chunk-K44MW7JJ.js";
73
76
  import {
74
77
  loadGlobalConfig,
75
78
  saveGlobalConfig
76
- } from "./chunk-43UFGATL.js";
79
+ } from "./chunk-WGAAQASA.js";
77
80
  import {
78
81
  getGlobalConfigDir
79
82
  } from "./chunk-CQGTEGKL.js";
80
- import {
81
- modelSupportsVision
82
- } from "./chunk-V4IE7HJY.js";
83
83
 
84
84
  // src/server/tools/read.ts
85
85
  import { readFile as readFile2, stat, readdir } from "fs/promises";
@@ -239,7 +239,7 @@ function extractAbsolutePathsFromCommand(command) {
239
239
  sanitized = sanitized.replace(/s\|[^|]*\|[^|]*\|[gip]*/g, " __SED__ ");
240
240
  sanitized = sanitized.replace(/s:[^:]*:[^:]*:[gip]*/g, " __SED__ ");
241
241
  sanitized = sanitized.replace(
242
- /git\s+commit\s+(?:-[^-]\s*|--message\s+)(["'])(?:\\?.)*?\1/gi,
242
+ /git\s+commit\b.*?(?:-(?:[a-zA-Z]*m)(?=\s)|--message)\s+(["'])(?:(?!\1).)*\1/g,
243
243
  (match2) => match2.replace(/\/[^\s"'|&;<>`()]+/g, " __COMMIT_MSG__ ")
244
244
  );
245
245
  const fileUrlMatches = command.matchAll(/file:\/\/([^\s'"]+)/g);
@@ -2865,7 +2865,7 @@ ${CONTINUE_PROMPT}` : CONTINUE_PROMPT;
2865
2865
  sessionManager.setCurrentContextSize(sessionId, result.usage.promptTokens);
2866
2866
  if (!compacting) {
2867
2867
  const contextState2 = sessionManager.getContextState(sessionId);
2868
- const { shouldCompact, appendCompactionPrompt } = await import("./compactor-Q33AJPCQ.js");
2868
+ const { shouldCompact, appendCompactionPrompt } = await import("./compactor-I3N56PSJ.js");
2869
2869
  if (shouldCompact(contextState2.currentTokens, contextState2.maxTokens, runtimeConfig.context.compactionThreshold)) {
2870
2870
  appendCompactionPrompt(sessionId, append);
2871
2871
  compacting = true;
@@ -3222,7 +3222,7 @@ async function describeImageFromDataUrl(dataUrl, visionModel, options) {
3222
3222
  import { createHash as createHash2 } from "crypto";
3223
3223
  async function loadVisionModelFromGlobalConfig() {
3224
3224
  try {
3225
- const { loadGlobalConfig: loadGlobalConfig2, getVisionFallback } = await import("./config-GMQUPNBY.js");
3225
+ const { loadGlobalConfig: loadGlobalConfig2, getVisionFallback } = await import("./config-EUMVEFHU.js");
3226
3226
  const runtimeConfig = getRuntimeConfig();
3227
3227
  const mode = runtimeConfig.mode ?? "production";
3228
3228
  const globalConfig = await loadGlobalConfig2(mode);
@@ -3766,7 +3766,7 @@ var callSubAgentTool = {
3766
3766
  };
3767
3767
  }
3768
3768
  try {
3769
- const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-33FQNFKC.js");
3769
+ const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-W2FFSF4N.js");
3770
3770
  const toolRegistry = getToolRegistryForAgent2(agentDef);
3771
3771
  const turnMetrics = new TurnMetrics();
3772
3772
  const result = await executeSubAgent({
@@ -4688,7 +4688,7 @@ var mcpConfigTool = createTool(
4688
4688
  mcpNotifyChanged?.(sessionId);
4689
4689
  }
4690
4690
  async function rebuildTools() {
4691
- const { setMcpTools: setMcpTools2 } = await import("./tools-33FQNFKC.js");
4691
+ const { setMcpTools: setMcpTools2 } = await import("./tools-W2FFSF4N.js");
4692
4692
  const mcpTools = createMcpTools(mcpManagerForTools);
4693
4693
  setMcpTools2(mcpTools);
4694
4694
  }
@@ -5492,4 +5492,4 @@ export {
5492
5492
  getToolRegistryForAgent,
5493
5493
  createToolRegistry
5494
5494
  };
5495
- //# sourceMappingURL=chunk-WEB4WBUF.js.map
5495
+ //# sourceMappingURL=chunk-5OPZLQDV.js.map
@@ -39,7 +39,7 @@ Options:
39
39
  }
40
40
  async function runNetworkSetup(mode) {
41
41
  const { loadAuthConfig, saveAuthConfig, encryptPassword } = await import("./auth-YY5PJYSC.js");
42
- const { saveGlobalConfig } = await import("./config-GMQUPNBY.js");
42
+ const { saveGlobalConfig } = await import("./config-EUMVEFHU.js");
43
43
  const { getAuthKeyPath } = await import("./paths-F27V3S4I.js");
44
44
  const existingAuth = await loadAuthConfig(mode);
45
45
  if (existingAuth) {
@@ -106,7 +106,7 @@ async function runNetworkSetup(mode) {
106
106
  console.log("\u2713 Configuration saved!\n");
107
107
  }
108
108
  async function runConfig(mode) {
109
- const { loadGlobalConfig, getActiveProvider, getDefaultModel } = await import("./config-GMQUPNBY.js");
109
+ const { loadGlobalConfig, getActiveProvider, getDefaultModel } = await import("./config-EUMVEFHU.js");
110
110
  const { getGlobalConfigPath } = await import("./paths-F27V3S4I.js");
111
111
  const config = await loadGlobalConfig(mode);
112
112
  const configPath = getGlobalConfigPath(mode);
@@ -164,7 +164,7 @@ async function runCli(options) {
164
164
  break;
165
165
  }
166
166
  case "provider": {
167
- const { runProviderCommand } = await import("./provider-LBYBC5AG.js");
167
+ const { runProviderCommand } = await import("./provider-GYOW4OWQ.js");
168
168
  const [, subcommand] = positionals;
169
169
  await runProviderCommand(mode, subcommand);
170
170
  break;
@@ -203,12 +203,12 @@ async function runCli(options) {
203
203
  break;
204
204
  }
205
205
  default: {
206
- const { configFileExists } = await import("./config-GMQUPNBY.js");
206
+ const { configFileExists } = await import("./config-EUMVEFHU.js");
207
207
  const configExists = await configFileExists(mode);
208
208
  if (!configExists) {
209
209
  await runNetworkSetup(mode);
210
210
  }
211
- const { runServe } = await import("./serve-CNA5NKOR.js");
211
+ const { runServe } = await import("./serve-HB222ARV.js");
212
212
  const serveOptions = { mode };
213
213
  if (values.port) serveOptions.port = parseInt(values.port);
214
214
  if (values["no-browser"] === true) serveOptions.openBrowser = false;
@@ -220,4 +220,4 @@ async function runCli(options) {
220
220
  export {
221
221
  runCli
222
222
  };
223
- //# sourceMappingURL=chunk-3WL5YCP6.js.map
223
+ //# sourceMappingURL=chunk-FGG4KRFX.js.map
@@ -10,7 +10,7 @@ import {
10
10
  loadAllAgentsDefault,
11
11
  processEventsForConversation,
12
12
  runTopLevelAgentLoop
13
- } from "./chunk-WEB4WBUF.js";
13
+ } from "./chunk-5OPZLQDV.js";
14
14
  import {
15
15
  TurnMetrics,
16
16
  WORKFLOW_KICKOFF_PROMPT,
@@ -19,7 +19,7 @@ import {
19
19
  buildTopLevelSystemPrompt,
20
20
  createChatDoneEvent,
21
21
  createMessageStartEvent
22
- } from "./chunk-6VDCH5ML.js";
22
+ } from "./chunk-X5YCWKNS.js";
23
23
  import {
24
24
  getCurrentContextWindowId,
25
25
  getCurrentWindowMessageOptions,
@@ -65,7 +65,7 @@ function resolveAgentDef(sessionManager, sessionId) {
65
65
  }
66
66
  async function buildCachedPrompt(sessionManager, sessionId, agentDef) {
67
67
  const { instructionContent, skills } = await loadSessionContext(sessionManager, sessionId);
68
- const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-33FQNFKC.js");
68
+ const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-W2FFSF4N.js");
69
69
  const tools = getToolRegistryForAgent2(agentDef).definitions;
70
70
  const toolFingerprint = getToolFingerprint(tools);
71
71
  const allAgents = await loadAllAgentsDefault();
@@ -78,7 +78,7 @@ async function buildCachedPrompt(sessionManager, sessionId, agentDef) {
78
78
  async function computeSessionHash(sessionManager, sessionId) {
79
79
  const { instructionContent, skills } = await loadSessionContext(sessionManager, sessionId);
80
80
  const agentDef = await resolveAgentDef(sessionManager, sessionId);
81
- const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-33FQNFKC.js");
81
+ const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-W2FFSF4N.js");
82
82
  const tools = getToolRegistryForAgent2(agentDef).definitions;
83
83
  const toolFingerprint = getToolFingerprint(tools);
84
84
  return computeDynamicContextHash(instructionContent, skills, toolFingerprint);
@@ -383,4 +383,4 @@ export {
383
383
  runAgentTurn,
384
384
  injectWorkflowKickoffIfNeeded
385
385
  };
386
- //# sourceMappingURL=chunk-L4WACPUX.js.map
386
+ //# sourceMappingURL=chunk-IVJYQZSN.js.map