openfox 2.0.128 → 2.0.130

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 (101) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/README.md +2 -0
  3. package/dist/CHANGELOG.md +43 -0
  4. package/dist/auth-D3WLIBTG.js +19 -0
  5. package/dist/{auto-config-454YE6KC.js → auto-config-5VSNLVNI.js} +6 -5
  6. package/dist/{backend-4YPEC3J2.js → backend-NDBY3DAQ.js} +4 -2
  7. package/dist/{chat-handler-3O6AIOID.js → chat-handler-4WCKNCQV.js} +32 -32
  8. package/dist/chunk-25DAVVTP.js +395 -0
  9. package/dist/{chunk-ISE55FOR.js → chunk-2AI7VYPN.js} +11 -1
  10. package/dist/{chunk-VHMZBKWY.js → chunk-2OMXXCJJ.js} +24 -24
  11. package/dist/{chunk-JEMPUHAA.js → chunk-35GQEIH2.js} +13 -13
  12. package/dist/{chunk-N2Q3KYWM.js → chunk-3DZSHRXE.js} +7 -2
  13. package/dist/chunk-3OBZ55SX.js +7 -0
  14. package/dist/{chunk-ZIL6VKLU.js → chunk-64N4CZFT.js} +2 -2
  15. package/dist/{chunk-66MG44TF.js → chunk-6QZVAOSA.js} +2 -2
  16. package/dist/{chunk-VJRLIKLE.js → chunk-7ET46SNE.js} +4 -4
  17. package/dist/{chunk-YJD5A375.js → chunk-AYCB32NI.js} +5 -5
  18. package/dist/{chunk-GIJUWPRQ.js → chunk-CGCEAKG5.js} +2 -2
  19. package/dist/{auth-GTGIGX5X.js → chunk-CQGJ5RWB.js} +4 -4
  20. package/dist/{chunk-B2RPFZ3U.js → chunk-CYQUM42E.js} +76 -32
  21. package/dist/{chunk-D5QVV3LT.js → chunk-DHDIKVRT.js} +278 -16
  22. package/dist/{chunk-4MXY7ELN.js → chunk-DI5GTIAU.js} +1154 -196
  23. package/dist/chunk-DQTN4B33.js +235 -0
  24. package/dist/{chunk-RV5G7QQU.js → chunk-DQTXXHD2.js} +3 -3
  25. package/dist/{chunk-OWCJRSOU.js → chunk-DYIDDGMN.js} +54 -36
  26. package/dist/{chunk-KAZWU73N.js → chunk-EUOWCVU6.js} +20 -7
  27. package/dist/{chunk-CQW4QASE.js → chunk-EVVWDRM5.js} +45 -16
  28. package/dist/{chunk-KSDWQ6IZ.js → chunk-HCYSGLY2.js} +1 -1
  29. package/dist/{chunk-KBESUA3W.js → chunk-JHA2SPCU.js} +2 -2
  30. package/dist/{chunk-ZIYETXOW.js → chunk-JKRMMNUR.js} +4 -4
  31. package/dist/{chunk-FYXZRVOL.js → chunk-JSONBGSY.js} +24 -4
  32. package/dist/{chunk-LWDL7HWL.js → chunk-KHKRHGA6.js} +15 -5
  33. package/dist/{chunk-K2QKX4ZJ.js → chunk-OA2FURC3.js} +8 -2
  34. package/dist/{chunk-ZFNBATE3.js → chunk-OXMOKQPW.js} +3 -2
  35. package/dist/{chunk-XAAEP5XM.js → chunk-P57IBMK4.js} +6 -2
  36. package/dist/{session-status-6Q5B5PEN.js → chunk-T3S5MTMD.js} +2 -3
  37. package/dist/{chunk-7ZMOP5LS.js → chunk-TS5WKTFB.js} +18 -1
  38. package/dist/{chunk-PBFGJFGC.js → chunk-UV6IH6HK.js} +32 -10
  39. package/dist/{chunk-KD4W3I6C.js → chunk-VJNA5AOB.js} +39 -7
  40. package/dist/{chunk-S6ATKIT2.js → chunk-VUIXQ6X4.js} +4 -4
  41. package/dist/{chunk-53R7QNZG.js → chunk-X24XN2M2.js} +97 -57
  42. package/dist/{chunk-AQBRI7TM.js → chunk-X3FHIDLT.js} +2 -2
  43. package/dist/chunk-YNMP647F.js +24 -0
  44. package/dist/{chunk-7YP4O4XE.js → chunk-ZRCRGPGT.js} +2 -2
  45. package/dist/cli/dev.js +1 -1
  46. package/dist/cli/index.js +1 -1
  47. package/dist/client-26RSMUAX.js +16 -0
  48. package/dist/{client-pure-CJKM3ACP.js → client-pure-FLKP6PTI.js} +2 -2
  49. package/dist/{compactor-B6IVMDES.js → compactor-HYBSSFKP.js} +14 -14
  50. package/dist/dynamic-context-2VLACYK4.js +50 -0
  51. package/dist/{events-GMHRX4LF.js → events-D33QXGSX.js} +7 -7
  52. package/dist/{folding-7K2GRPF4.js → folding-QOKBKUU6.js} +5 -5
  53. package/dist/{http-client-ROVNSHF6.js → http-client-MGAJTGPR.js} +3 -3
  54. package/dist/launch-KFENN5GS.js +53 -0
  55. package/dist/{manager-NOKJQTTF.js → manager-VRHX7BVI.js} +4 -4
  56. package/dist/mcp-YU7AM3UV.js +120 -0
  57. package/dist/{model-catalog-ZLOWTQA7.js → model-catalog-2PCKTYGW.js} +2 -2
  58. package/dist/{oauth-provider-DGBC2YM6.js → oauth-provider-VHUS2KEG.js} +8 -2
  59. package/dist/{orchestrator-WLNW7TS7.js → orchestrator-PLTAEOMR.js} +30 -30
  60. package/dist/package.json +1 -1
  61. package/dist/{path-security-YTPZ35SL.js → path-security-4WQJGU3Z.js} +11 -11
  62. package/dist/{platform-EMKWQTZX.js → platform-MWWJ6OKV.js} +3 -3
  63. package/dist/plugins-registry.json +12 -0
  64. package/dist/{processor-ZMXU5MOT.js → processor-K4WHZKE6.js} +31 -31
  65. package/dist/{profiles-HXGJIPF2.js → profiles-EBCVFYG7.js} +2 -2
  66. package/dist/{protocol-DCMH9Ufp.d.ts → protocol-BMUoqwYH.d.ts} +8 -3
  67. package/dist/{protocol-TLODRZSB.js → protocol-Y7MRKRUO.js} +5 -3
  68. package/dist/provider/index.d.ts +4 -4
  69. package/dist/{provider-QIOTESLB.js → provider-CVM33XHW.js} +10 -10
  70. package/dist/{provider-manager-FVI22EWM.js → provider-manager-7NL5EQLG.js} +10 -10
  71. package/dist/{registry-Z4GVYFTV.js → registry-KFFZFIZT.js} +3 -3
  72. package/dist/{serve-7M4HCERR.js → serve-KQAPXO5X.js} +42 -40
  73. package/dist/server/index.d.ts +18 -3
  74. package/dist/server/index.js +39 -37
  75. package/dist/server-RPKVKMDD.js +56 -0
  76. package/dist/{service-F4TWYTKE.js → service-7TLOSFAO.js} +12 -12
  77. package/dist/{session-overrides-4WAD3X5Q.js → session-overrides-U573CU2V.js} +5 -5
  78. package/dist/session-status-UFO5IFI7.js +10 -0
  79. package/dist/{sessions-D7VRCHQY.js → sessions-LUVWWRFO.js} +4 -4
  80. package/dist/{settings-VOWWO4VG.js → settings-LMAMF2X7.js} +2 -2
  81. package/dist/shared/index.d.ts +3 -3
  82. package/dist/shared/index.js +1 -1
  83. package/dist/skill-defaults/browser/SKILL.md +20 -1
  84. package/dist/{tasks-36WHYN3H.js → tasks-FA6Z52H2.js} +12 -12
  85. package/dist/{tools-WAUWG4PE.js → tools-SSPC3UQZ.js} +34 -34
  86. package/dist/{types-PAKlAzp9.d.ts → types-BIkpxjaj.d.ts} +11 -2
  87. package/dist/{types-BWuVnaBw.d.ts → types-CoY8Ka1C.d.ts} +1 -1
  88. package/dist/{update-AIVWCRXR.js → update-QRGK67DB.js} +2 -2
  89. package/dist/web/assets/{index-DtQsFnyQ.js → index-0PVQNOfW.js} +88 -88
  90. package/dist/web/assets/{index-CbX8veVW.css → index-Ds94aclE.css} +1 -1
  91. package/dist/web/index.html +2 -2
  92. package/dist/web/sw.js +1 -1
  93. package/package.json +1 -1
  94. package/plugins-registry.json +12 -0
  95. package/dist/chunk-BQNQJE57.js +0 -151
  96. package/dist/chunk-ES5635OP.js +0 -7
  97. package/dist/chunk-RSB4AR2A.js +0 -108
  98. package/dist/client-VDXO7IIV.js +0 -16
  99. package/dist/dynamic-context-4WVMNJTZ.js +0 -28
  100. package/dist/launch-AKIMGAGC.js +0 -53
  101. package/dist/server-RX5JM7IT.js +0 -56
@@ -0,0 +1,53 @@
1
+ import {
2
+ abortRunnerRun,
3
+ launchWorkflowRun
4
+ } from "./chunk-2OMXXCJJ.js";
5
+ import "./chunk-EVVWDRM5.js";
6
+ import "./chunk-X24XN2M2.js";
7
+ import "./chunk-Y3BSBKHY.js";
8
+ import "./chunk-J7GAZGZT.js";
9
+ import "./chunk-JSONBGSY.js";
10
+ import "./chunk-ZRCRGPGT.js";
11
+ import "./chunk-7ET46SNE.js";
12
+ import "./chunk-EHFIUXWZ.js";
13
+ import "./chunk-DQTXXHD2.js";
14
+ import "./chunk-I72ACQ6R.js";
15
+ import "./chunk-JE7LW7Y6.js";
16
+ import "./chunk-OAN4BXEW.js";
17
+ import "./chunk-25DAVVTP.js";
18
+ import "./chunk-64N4CZFT.js";
19
+ import "./chunk-CGCEAKG5.js";
20
+ import "./chunk-JURM3RPZ.js";
21
+ import "./chunk-VJNA5AOB.js";
22
+ import "./chunk-AYCB32NI.js";
23
+ import "./chunk-JKRMMNUR.js";
24
+ import "./chunk-X3FHIDLT.js";
25
+ import "./chunk-JHA2SPCU.js";
26
+ import "./chunk-OSXPQSLW.js";
27
+ import "./chunk-P57IBMK4.js";
28
+ import "./chunk-LCLH6ZUL.js";
29
+ import "./chunk-6QZVAOSA.js";
30
+ import "./chunk-CYQUM42E.js";
31
+ import "./chunk-OA2FURC3.js";
32
+ import "./chunk-J2GP3J3X.js";
33
+ import "./chunk-3B232XG4.js";
34
+ import "./chunk-DHDIKVRT.js";
35
+ import "./chunk-TS5WKTFB.js";
36
+ import "./chunk-UV6IH6HK.js";
37
+ import "./chunk-HNCM3D7Y.js";
38
+ import "./chunk-EUOWCVU6.js";
39
+ import "./chunk-OXMOKQPW.js";
40
+ import "./chunk-3DZSHRXE.js";
41
+ import "./chunk-OYBUJIC3.js";
42
+ import "./chunk-2AI7VYPN.js";
43
+ import "./chunk-K44MW7JJ.js";
44
+ import "./chunk-7OHXF5GW.js";
45
+ import "./chunk-HCYSGLY2.js";
46
+ import "./chunk-R5FAEKXQ.js";
47
+ import "./chunk-CQGTEGKL.js";
48
+ import "./chunk-YLJ4XMA6.js";
49
+ export {
50
+ abortRunnerRun,
51
+ launchWorkflowRun
52
+ };
53
+ //# sourceMappingURL=launch-KFENN5GS.js.map
@@ -6,10 +6,10 @@ import {
6
6
  onProcessEvent,
7
7
  startProcessCommand,
8
8
  stopProcess
9
- } from "./chunk-RV5G7QQU.js";
9
+ } from "./chunk-DQTXXHD2.js";
10
10
  import "./chunk-I72ACQ6R.js";
11
- import "./chunk-66MG44TF.js";
12
- import "./chunk-N2Q3KYWM.js";
11
+ import "./chunk-6QZVAOSA.js";
12
+ import "./chunk-3DZSHRXE.js";
13
13
  import "./chunk-OYBUJIC3.js";
14
14
  import "./chunk-K44MW7JJ.js";
15
15
  import "./chunk-YLJ4XMA6.js";
@@ -22,4 +22,4 @@ export {
22
22
  startProcessCommand,
23
23
  stopProcess
24
24
  };
25
- //# sourceMappingURL=manager-NOKJQTTF.js.map
25
+ //# sourceMappingURL=manager-VRHX7BVI.js.map
@@ -0,0 +1,120 @@
1
+ import {
2
+ cancel,
3
+ isCancel,
4
+ password
5
+ } from "./chunk-AGXJ5O63.js";
6
+ import {
7
+ buildOpenFoxMcpBootstrap
8
+ } from "./chunk-YNMP647F.js";
9
+ import {
10
+ loadAuthConfig
11
+ } from "./chunk-CQGJ5RWB.js";
12
+ import {
13
+ loadGlobalConfig
14
+ } from "./chunk-R5FAEKXQ.js";
15
+ import {
16
+ getAuthKeyPath
17
+ } from "./chunk-CQGTEGKL.js";
18
+ import "./chunk-YLJ4XMA6.js";
19
+
20
+ // src/cli/mcp.ts
21
+ import { readFile } from "fs/promises";
22
+ import { createHash, createSign, privateDecrypt } from "crypto";
23
+ var MODE_DEFAULT_PORTS = { production: 10369, development: 10469, test: 10369 };
24
+ var WILDCARD_HOSTS = /* @__PURE__ */ new Set(["0.0.0.0", "::", "*"]);
25
+ var PROBE_INCREMENT = 15;
26
+ function probeHost(host) {
27
+ return WILDCARD_HOSTS.has(host) ? "127.0.0.1" : host;
28
+ }
29
+ function portCandidates(preferred, fallback) {
30
+ const candidates = [preferred, fallback];
31
+ for (let i = 1; i <= PROBE_INCREMENT; i++) {
32
+ candidates.push(preferred + i);
33
+ candidates.push(fallback + i);
34
+ }
35
+ return [...new Set(candidates)];
36
+ }
37
+ async function findLivePort(host, candidates) {
38
+ for (const port of candidates) {
39
+ try {
40
+ const res = await fetch(`http://${host}:${port}/api/health`, { signal: AbortSignal.timeout(400) });
41
+ if (res.ok) return port;
42
+ } catch {
43
+ }
44
+ }
45
+ return null;
46
+ }
47
+ function verifyPassword(encryptedPassword, privateKey, entered) {
48
+ try {
49
+ const decrypted = privateDecrypt({ key: privateKey, padding: 1 }, Buffer.from(encryptedPassword, "base64"));
50
+ return decrypted.toString() === entered;
51
+ } catch {
52
+ return false;
53
+ }
54
+ }
55
+ function signSessionToken(privateKey, passwordValue) {
56
+ const passwordHash = createHash("sha256").update(passwordValue).digest("hex");
57
+ const sign = createSign("SHA256");
58
+ sign.update(passwordHash);
59
+ sign.end();
60
+ return sign.sign(privateKey, "base64");
61
+ }
62
+ function renderMcpClientConfig(bootstrap) {
63
+ const server = { url: bootstrap.url };
64
+ if (bootstrap.headers) {
65
+ server["headers"] = bootstrap.headers;
66
+ }
67
+ return JSON.stringify({ mcpServers: { [bootstrap.name]: server } }, null, 2);
68
+ }
69
+ async function runMcpCommand(mode, options = {}) {
70
+ const config = await loadGlobalConfig(mode);
71
+ const auth = await loadAuthConfig(mode);
72
+ const host = config.server?.host ?? "127.0.0.1";
73
+ const configuredPort = config.server?.port ?? MODE_DEFAULT_PORTS[mode];
74
+ const requestedPort = options.port ?? configuredPort;
75
+ const livePort = await findLivePort(probeHost(host), portCandidates(MODE_DEFAULT_PORTS[mode], requestedPort));
76
+ const port = livePort ?? requestedPort;
77
+ if (!livePort) {
78
+ console.warn(
79
+ `
80
+ \u26A0 No running OpenFox server detected near port ${requestedPort} \u2014 the config below assumes it will start there.`
81
+ );
82
+ }
83
+ const authRequired = auth?.strategy === "network" && auth.encryptedPassword != null && auth.encryptedPassword.length > 0;
84
+ let sessionToken = null;
85
+ if (authRequired) {
86
+ const privateKey = await readFile(getAuthKeyPath(mode), "utf-8");
87
+ let entered = options.password;
88
+ if (entered == null) {
89
+ const pwd = await password({ message: "OpenFox password:" });
90
+ if (isCancel(pwd)) {
91
+ cancel();
92
+ process.exit(1);
93
+ }
94
+ entered = typeof pwd === "string" ? pwd : "";
95
+ }
96
+ if (!verifyPassword(auth.encryptedPassword, privateKey, entered)) {
97
+ console.error("Invalid password");
98
+ process.exit(1);
99
+ }
100
+ sessionToken = signSessionToken(privateKey, entered);
101
+ }
102
+ const bootstrap = buildOpenFoxMcpBootstrap({ host, port, authRequired, sessionToken });
103
+ console.log("OpenFox MCP client config");
104
+ console.log("=========================");
105
+ console.log();
106
+ console.log(`Endpoint: ${bootstrap.url}`);
107
+ console.log();
108
+ console.log("Paste into your MCP client (Claude Desktop, Cursor, ...):");
109
+ console.log();
110
+ console.log(renderMcpClientConfig(bootstrap));
111
+ }
112
+ export {
113
+ findLivePort,
114
+ portCandidates,
115
+ renderMcpClientConfig,
116
+ runMcpCommand,
117
+ signSessionToken,
118
+ verifyPassword
119
+ };
120
+ //# sourceMappingURL=mcp-YU7AM3UV.js.map
@@ -3,7 +3,7 @@ import {
3
3
  getCatalogDefaultEffort,
4
4
  getCatalogEntry,
5
5
  isReasoningEffortValue
6
- } from "./chunk-ISE55FOR.js";
6
+ } from "./chunk-2AI7VYPN.js";
7
7
  import "./chunk-YLJ4XMA6.js";
8
8
  export {
9
9
  REASONING_EFFORT_VALUES,
@@ -11,4 +11,4 @@ export {
11
11
  getCatalogEntry,
12
12
  isReasoningEffortValue
13
13
  };
14
- //# sourceMappingURL=model-catalog-ZLOWTQA7.js.map
14
+ //# sourceMappingURL=model-catalog-2PCKTYGW.js.map
@@ -1,15 +1,21 @@
1
1
  import {
2
2
  McpOAuthProvider,
3
+ buildOAuthProbeUrl,
3
4
  getMcpOAuthRedirectUri,
5
+ rejectStaleOAuthClient,
6
+ resetProbeCache,
4
7
  setMcpOAuthServerPort
5
- } from "./chunk-RSB4AR2A.js";
8
+ } from "./chunk-DQTN4B33.js";
6
9
  import "./chunk-IJ53Y77N.js";
7
10
  import "./chunk-K44MW7JJ.js";
8
11
  import "./chunk-CQGTEGKL.js";
9
12
  import "./chunk-YLJ4XMA6.js";
10
13
  export {
11
14
  McpOAuthProvider,
15
+ buildOAuthProbeUrl,
12
16
  getMcpOAuthRedirectUri,
17
+ rejectStaleOAuthClient,
18
+ resetProbeCache,
13
19
  setMcpOAuthServerPort
14
20
  };
15
- //# sourceMappingURL=oauth-provider-DGBC2YM6.js.map
21
+ //# sourceMappingURL=oauth-provider-VHUS2KEG.js.map
@@ -1,10 +1,12 @@
1
1
  import {
2
2
  runAgentTurn,
3
3
  runChatTurn
4
- } from "./chunk-CQW4QASE.js";
5
- import "./chunk-53R7QNZG.js";
6
- import "./chunk-BQNQJE57.js";
7
- import "./chunk-ZIL6VKLU.js";
4
+ } from "./chunk-EVVWDRM5.js";
5
+ import "./chunk-X24XN2M2.js";
6
+ import "./chunk-Y3BSBKHY.js";
7
+ import "./chunk-J7GAZGZT.js";
8
+ import "./chunk-JSONBGSY.js";
9
+ import "./chunk-ZRCRGPGT.js";
8
10
  import {
9
11
  TurnMetrics,
10
12
  createChatDoneEvent,
@@ -12,42 +14,40 @@ import {
12
14
  createMessageStartEvent,
13
15
  createToolCallEvent,
14
16
  createToolResultEvent
15
- } from "./chunk-VJRLIKLE.js";
16
- import "./chunk-GIJUWPRQ.js";
17
+ } from "./chunk-7ET46SNE.js";
17
18
  import "./chunk-EHFIUXWZ.js";
18
- import "./chunk-RV5G7QQU.js";
19
+ import "./chunk-DQTXXHD2.js";
19
20
  import "./chunk-I72ACQ6R.js";
20
21
  import "./chunk-JE7LW7Y6.js";
21
22
  import "./chunk-OAN4BXEW.js";
22
- import "./chunk-Y3BSBKHY.js";
23
- import "./chunk-J7GAZGZT.js";
24
- import "./chunk-FYXZRVOL.js";
25
- import "./chunk-7YP4O4XE.js";
26
- import "./chunk-KD4W3I6C.js";
27
- import "./chunk-YJD5A375.js";
28
- import "./chunk-ZIYETXOW.js";
29
- import "./chunk-AQBRI7TM.js";
30
- import "./chunk-XAAEP5XM.js";
31
- import "./chunk-66MG44TF.js";
23
+ import "./chunk-25DAVVTP.js";
24
+ import "./chunk-64N4CZFT.js";
25
+ import "./chunk-CGCEAKG5.js";
32
26
  import "./chunk-JURM3RPZ.js";
27
+ import "./chunk-VJNA5AOB.js";
28
+ import "./chunk-AYCB32NI.js";
29
+ import "./chunk-JKRMMNUR.js";
30
+ import "./chunk-X3FHIDLT.js";
31
+ import "./chunk-JHA2SPCU.js";
32
+ import "./chunk-OSXPQSLW.js";
33
+ import "./chunk-P57IBMK4.js";
33
34
  import "./chunk-LCLH6ZUL.js";
34
- import "./chunk-B2RPFZ3U.js";
35
- import "./chunk-K2QKX4ZJ.js";
35
+ import "./chunk-6QZVAOSA.js";
36
+ import "./chunk-CYQUM42E.js";
37
+ import "./chunk-OA2FURC3.js";
36
38
  import "./chunk-J2GP3J3X.js";
37
- import "./chunk-KBESUA3W.js";
38
- import "./chunk-OSXPQSLW.js";
39
39
  import "./chunk-3B232XG4.js";
40
- import "./chunk-D5QVV3LT.js";
41
- import "./chunk-7ZMOP5LS.js";
42
- import "./chunk-PBFGJFGC.js";
40
+ import "./chunk-DHDIKVRT.js";
41
+ import "./chunk-TS5WKTFB.js";
42
+ import "./chunk-UV6IH6HK.js";
43
43
  import "./chunk-HNCM3D7Y.js";
44
- import "./chunk-KAZWU73N.js";
45
- import "./chunk-ZFNBATE3.js";
46
- import "./chunk-N2Q3KYWM.js";
44
+ import "./chunk-EUOWCVU6.js";
45
+ import "./chunk-OXMOKQPW.js";
46
+ import "./chunk-3DZSHRXE.js";
47
47
  import "./chunk-OYBUJIC3.js";
48
- import "./chunk-ISE55FOR.js";
48
+ import "./chunk-2AI7VYPN.js";
49
49
  import "./chunk-K44MW7JJ.js";
50
- import "./chunk-KSDWQ6IZ.js";
50
+ import "./chunk-HCYSGLY2.js";
51
51
  import "./chunk-R5FAEKXQ.js";
52
52
  import "./chunk-CQGTEGKL.js";
53
53
  import "./chunk-YLJ4XMA6.js";
@@ -61,4 +61,4 @@ export {
61
61
  runAgentTurn,
62
62
  runChatTurn
63
63
  };
64
- //# sourceMappingURL=orchestrator-WLNW7TS7.js.map
64
+ //# sourceMappingURL=orchestrator-PLTAEOMR.js.map
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openfox",
3
- "version": "2.0.128",
3
+ "version": "2.0.130",
4
4
  "description": "Local-LLM-first agentic coding assistant",
5
5
  "type": "module",
6
6
  "bin": {
@@ -20,20 +20,20 @@ import {
20
20
  registerPathConfirmation,
21
21
  requestPathAccess,
22
22
  resolveRelativeTraversals
23
- } from "./chunk-KD4W3I6C.js";
24
- import "./chunk-YJD5A375.js";
25
- import "./chunk-ZIYETXOW.js";
26
- import "./chunk-AQBRI7TM.js";
27
- import "./chunk-XAAEP5XM.js";
28
- import "./chunk-66MG44TF.js";
29
- import "./chunk-LCLH6ZUL.js";
30
- import "./chunk-KBESUA3W.js";
23
+ } from "./chunk-VJNA5AOB.js";
24
+ import "./chunk-AYCB32NI.js";
25
+ import "./chunk-JKRMMNUR.js";
26
+ import "./chunk-X3FHIDLT.js";
27
+ import "./chunk-JHA2SPCU.js";
31
28
  import "./chunk-OSXPQSLW.js";
29
+ import "./chunk-P57IBMK4.js";
30
+ import "./chunk-LCLH6ZUL.js";
31
+ import "./chunk-6QZVAOSA.js";
32
32
  import "./chunk-3B232XG4.js";
33
- import "./chunk-N2Q3KYWM.js";
33
+ import "./chunk-3DZSHRXE.js";
34
34
  import "./chunk-OYBUJIC3.js";
35
35
  import "./chunk-K44MW7JJ.js";
36
- import "./chunk-KSDWQ6IZ.js";
36
+ import "./chunk-HCYSGLY2.js";
37
37
  import "./chunk-CQGTEGKL.js";
38
38
  import "./chunk-YLJ4XMA6.js";
39
39
  export {
@@ -59,4 +59,4 @@ export {
59
59
  requestPathAccess,
60
60
  resolveRelativeTraversals
61
61
  };
62
- //# sourceMappingURL=path-security-YTPZ35SL.js.map
62
+ //# sourceMappingURL=path-security-4WQJGU3Z.js.map
@@ -5,8 +5,8 @@ import {
5
5
  isAbsolutePath,
6
6
  isWindowsPath,
7
7
  listAvailableShells
8
- } from "./chunk-66MG44TF.js";
9
- import "./chunk-N2Q3KYWM.js";
8
+ } from "./chunk-6QZVAOSA.js";
9
+ import "./chunk-3DZSHRXE.js";
10
10
  import "./chunk-OYBUJIC3.js";
11
11
  import "./chunk-K44MW7JJ.js";
12
12
  import "./chunk-YLJ4XMA6.js";
@@ -18,4 +18,4 @@ export {
18
18
  isWindowsPath,
19
19
  listAvailableShells
20
20
  };
21
- //# sourceMappingURL=platform-EMKWQTZX.js.map
21
+ //# sourceMappingURL=platform-MWWJ6OKV.js.map
@@ -22,5 +22,17 @@
22
22
  "displayName": "xAI Grok (SuperGrok)",
23
23
  "description": "Authenticate with an X (xAI) SuperGrok subscription via OAuth. No API key required. | ⚠️ Using this plugin may violate xAI's Terms of Service.",
24
24
  "githubUrl": "https://github.com/Olgean-Group/openfox-xai-supergrok"
25
+ },
26
+ {
27
+ "name": "openfox-openrouter-free",
28
+ "displayName": "OpenRouter (Free Models)",
29
+ "description": "OpenRouter provider filtered to include only free plans, with automatic hourly updates (once per hour) and 1-Click OAuth / API key authentication.",
30
+ "githubUrl": "https://github.com/JamesDAdams/openfox-openrouter-free"
31
+ },
32
+ {
33
+ "name": "openfox-opencode-free",
34
+ "displayName": "OpenCode (Free Models)",
35
+ "description": "OpenCode provider filtered to free models only (-free suffix), with automatic hourly model updates (1x/hour) and API key auth.",
36
+ "githubUrl": "https://github.com/JamesDAdams/openfox-opencode-free"
25
37
  }
26
38
  ]
@@ -2,52 +2,52 @@ import {
2
2
  buildRunChatTurnParams,
3
3
  finalizeTurnCompletion,
4
4
  generateSessionNameForSession
5
- } from "./chunk-JEMPUHAA.js";
6
- import "./chunk-53R7QNZG.js";
7
- import "./chunk-ZIL6VKLU.js";
8
- import "./chunk-VJRLIKLE.js";
9
- import "./chunk-GIJUWPRQ.js";
5
+ } from "./chunk-35GQEIH2.js";
6
+ import "./chunk-X24XN2M2.js";
7
+ import "./chunk-Y3BSBKHY.js";
8
+ import "./chunk-J7GAZGZT.js";
9
+ import "./chunk-JSONBGSY.js";
10
+ import "./chunk-ZRCRGPGT.js";
11
+ import "./chunk-7ET46SNE.js";
10
12
  import "./chunk-EHFIUXWZ.js";
11
- import "./chunk-RV5G7QQU.js";
13
+ import "./chunk-DQTXXHD2.js";
12
14
  import "./chunk-I72ACQ6R.js";
13
15
  import "./chunk-JE7LW7Y6.js";
14
16
  import "./chunk-OAN4BXEW.js";
15
- import "./chunk-Y3BSBKHY.js";
16
- import "./chunk-J7GAZGZT.js";
17
- import "./chunk-FYXZRVOL.js";
18
- import "./chunk-7YP4O4XE.js";
19
- import "./chunk-KD4W3I6C.js";
17
+ import "./chunk-64N4CZFT.js";
18
+ import "./chunk-CGCEAKG5.js";
19
+ import "./chunk-JURM3RPZ.js";
20
+ import "./chunk-VJNA5AOB.js";
20
21
  import {
21
22
  getEventStore
22
- } from "./chunk-YJD5A375.js";
23
- import "./chunk-ZIYETXOW.js";
24
- import "./chunk-AQBRI7TM.js";
23
+ } from "./chunk-AYCB32NI.js";
24
+ import "./chunk-JKRMMNUR.js";
25
+ import "./chunk-X3FHIDLT.js";
26
+ import "./chunk-JHA2SPCU.js";
27
+ import "./chunk-OSXPQSLW.js";
25
28
  import {
26
29
  createChatMessageMessage,
27
30
  createSessionRunningMessage
28
- } from "./chunk-XAAEP5XM.js";
29
- import "./chunk-66MG44TF.js";
30
- import "./chunk-JURM3RPZ.js";
31
+ } from "./chunk-P57IBMK4.js";
31
32
  import "./chunk-LCLH6ZUL.js";
32
- import "./chunk-B2RPFZ3U.js";
33
- import "./chunk-K2QKX4ZJ.js";
33
+ import "./chunk-6QZVAOSA.js";
34
+ import "./chunk-CYQUM42E.js";
35
+ import "./chunk-OA2FURC3.js";
34
36
  import "./chunk-J2GP3J3X.js";
35
- import "./chunk-KBESUA3W.js";
36
- import "./chunk-OSXPQSLW.js";
37
37
  import "./chunk-3B232XG4.js";
38
- import "./chunk-D5QVV3LT.js";
39
- import "./chunk-7ZMOP5LS.js";
40
- import "./chunk-PBFGJFGC.js";
38
+ import "./chunk-DHDIKVRT.js";
39
+ import "./chunk-TS5WKTFB.js";
40
+ import "./chunk-UV6IH6HK.js";
41
41
  import "./chunk-HNCM3D7Y.js";
42
- import "./chunk-KAZWU73N.js";
43
- import "./chunk-ZFNBATE3.js";
44
- import "./chunk-N2Q3KYWM.js";
42
+ import "./chunk-EUOWCVU6.js";
43
+ import "./chunk-OXMOKQPW.js";
44
+ import "./chunk-3DZSHRXE.js";
45
45
  import "./chunk-OYBUJIC3.js";
46
- import "./chunk-ISE55FOR.js";
46
+ import "./chunk-2AI7VYPN.js";
47
47
  import {
48
48
  logger
49
49
  } from "./chunk-K44MW7JJ.js";
50
- import "./chunk-KSDWQ6IZ.js";
50
+ import "./chunk-HCYSGLY2.js";
51
51
  import "./chunk-R5FAEKXQ.js";
52
52
  import "./chunk-CQGTEGKL.js";
53
53
  import "./chunk-YLJ4XMA6.js";
@@ -207,7 +207,7 @@ var QueueProcessor = class {
207
207
  model: sessionClient.getModel(),
208
208
  ...sessionEffort ? { reasoningEffort: sessionEffort } : {}
209
209
  };
210
- const { runChatTurn } = await import("./orchestrator-WLNW7TS7.js");
210
+ const { runChatTurn } = await import("./orchestrator-PLTAEOMR.js");
211
211
  const runChatTurnParams = buildRunChatTurnParams({
212
212
  sessionManager,
213
213
  sessionId,
@@ -256,4 +256,4 @@ var QueueProcessor = class {
256
256
  export {
257
257
  QueueProcessor
258
258
  };
259
- //# sourceMappingURL=processor-ZMXU5MOT.js.map
259
+ //# sourceMappingURL=processor-K4WHZKE6.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  getModelProfile,
3
3
  modelSupportsVision
4
- } from "./chunk-7ZMOP5LS.js";
4
+ } from "./chunk-TS5WKTFB.js";
5
5
  import "./chunk-YLJ4XMA6.js";
6
6
  export {
7
7
  getModelProfile,
8
8
  modelSupportsVision
9
9
  };
10
- //# sourceMappingURL=profiles-HXGJIPF2.js.map
10
+ //# sourceMappingURL=profiles-EBCVFYG7.js.map
@@ -1,4 +1,4 @@
1
- import { A as Attachment, Z as ToolMode, $ as ToolResult, a as Message, Y as Todo, c as ContextState, e as Criterion, i as Diagnostic, r as MetadataEntry, G as SessionMode, H as SessionPhase, t as Project, J as SessionSummary, z as Session, a2 as WorkflowExecution, u as ProjectTask, w as ProjectTaskSettings, v as ProjectTaskCounts, U as TaskGateConfig } from './types-PAKlAzp9.js';
1
+ import { A as Attachment, Z as ToolMode, $ as ToolResult, a as Message, q as MessageStats, Y as Todo, c as ContextState, e as Criterion, i as Diagnostic, r as MetadataEntry, G as SessionMode, H as SessionPhase, t as Project, J as SessionSummary, z as Session, a2 as WorkflowExecution, u as ProjectTask, w as ProjectTaskSettings, v as ProjectTaskCounts, U as TaskGateConfig } from './types-BIkpxjaj.js';
2
2
 
3
3
  type ClientMessageType = 'session.load' | 'context.compact' | 'context.checkDynamic' | 'context.applyDynamic' | 'context.applyDynamic.preview' | 'runner.launch' | 'workflow.exit' | 'chat.retry' | 'chat.llm_retry_now' | 'path.confirm' | 'ask.answer';
4
4
  interface ClientMessage<T = unknown> {
@@ -23,7 +23,7 @@ interface QueuedMessage {
23
23
  queuedAt: string;
24
24
  messageKind?: string;
25
25
  }
26
- type ServerMessageType = 'project.state' | 'project.list' | 'project.deleted' | 'session.state' | 'session.list' | 'session.created' | 'session.deleted' | 'session.deletedAll' | 'session.running' | 'session.name_generated' | 'session.confirmation_pending' | 'session.confirmation_resolved' | '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.llm_retry' | 'chat.llm_retry_failed' | 'chat.path_confirmation' | 'chat.ask_user' | 'mode.changed' | 'phase.changed' | 'workflow.execution_changed' | 'task.completed' | 'criteria.updated' | 'metadata.updated' | 'context.state' | 'context.preview' | 'settings.value' | 'provider.changed' | 'queue.state' | 'devServer.output' | 'devServer.state' | 'backgroundProcess.started' | 'backgroundProcess.output' | 'backgroundProcess.exited' | 'backgroundProcess.removed' | 'git.status' | 'tasks.update' | 'mcp.servers.changed' | 'lsp.diagnostics' | 'error' | 'ack';
26
+ type ServerMessageType = 'project.state' | 'project.list' | 'project.deleted' | 'session.state' | 'session.list' | 'session.created' | 'session.deleted' | 'session.deletedAll' | 'session.running' | 'session.name_generated' | 'session.confirmation_pending' | 'session.confirmation_resolved' | '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.stats' | 'chat.done' | 'chat.vision_fallback' | 'chat.error' | 'chat.llm_retry' | 'chat.llm_retry_failed' | 'chat.path_confirmation' | 'chat.ask_user' | 'mode.changed' | 'phase.changed' | 'workflow.execution_changed' | 'task.completed' | 'criteria.updated' | 'metadata.updated' | 'context.state' | 'context.preview' | 'settings.value' | 'provider.changed' | 'queue.state' | 'devServer.output' | 'devServer.state' | 'backgroundProcess.started' | 'backgroundProcess.output' | 'backgroundProcess.exited' | 'backgroundProcess.removed' | 'git.status' | 'tasks.update' | 'mcp.servers.changed' | 'lsp.diagnostics' | 'error' | 'ack';
27
27
  interface ServerMessage<T = unknown> {
28
28
  id?: string;
29
29
  type: ServerMessageType;
@@ -163,6 +163,10 @@ interface ChatDonePayload {
163
163
  generationSpeed: number;
164
164
  };
165
165
  }
166
+ interface ChatStatsPayload {
167
+ /** Cumulative turn stats so far, streamed as each LLM call completes. */
168
+ stats: MessageStats;
169
+ }
166
170
  interface ChatErrorPayload {
167
171
  error: string;
168
172
  recoverable: boolean;
@@ -250,6 +254,7 @@ interface ContextPreviewPayload {
250
254
  oldHash?: string;
251
255
  newHash: string;
252
256
  diff: DiffLine[];
257
+ toolDiff?: DiffLine[];
253
258
  }
254
259
  interface ProviderChangedPayload {
255
260
  providerId: string;
@@ -439,4 +444,4 @@ interface QueueCancelledEvent {
439
444
  }
440
445
  type QueueEvent = QueueAddedEvent | QueueDrainedEvent | QueueCancelledEvent;
441
446
 
442
- export { type ProjectStatePayload as $, type AgentEvent as A, type BackgroundProcess as B, type ChatAskUserPayload as C, type ChoiceOption as D, type ClientMessage as E, type ClientMessageType as F, type ContextCompactionEvent as G, type ContextPreviewPayload as H, type ContextStatePayload as I, type CriteriaUpdatedPayload as J, type DevServerOutputPayload as K, type DevServerStatePayload as L, type DiffLine as M, type ErrorPayload as N, type GitDiffFile as O, type GitStatusPayload as P, type LogLine as Q, type LspDiagnosticsPayload as R, type MetadataUpdatedPayload as S, type ModeChangedPayload as T, type PathConfirmPayload as U, type PathConfirmationReason as V, type PendingPathConfirmationPayload as W, type PendingQuestionPayload as X, type PhaseChangedPayload as Y, type ProjectDeletedPayload as Z, type ProjectListPayload as _, type AskAnswerPayload as a, type ProviderChangedPayload as a0, type QueueAddedEvent as a1, type QueueCancelledEvent as a2, type QueueDrainedEvent as a3, type QueueEvent as a4, type QueueEventType as a5, type QueueStatePayload as a6, type QueuedMessage as a7, type ServerMessage as a8, type ServerMessageType as a9, type SessionCreatedPayload as aa, type SessionListPayload as ab, type SessionLoadPayload as ac, type SessionNameGeneratedPayload as ad, type SessionRunningPayload as ae, type SessionStatePayload as af, type TaskCompletedPayload as ag, type TasksUpdatePayload as ah, type WorkflowWaitingPayload as ai, createClientMessage as aj, createServerMessage as ak, isClientMessage as al, isServerMessage as am, type AskUserEvent as b, type BackgroundProcessExitedPayload as c, type BackgroundProcessOutputPayload as d, type BackgroundProcessRemovedPayload as e, type BackgroundProcessStartedPayload as f, type BackgroundProcessStatus as g, type ChatDeltaPayload as h, type ChatDonePayload as i, type ChatErrorPayload as j, type ChatFormatRetryPayload as k, type ChatLLMRetryFailedPayload as l, type ChatLLMRetryNowPayload as m, type ChatLLMRetryPayload as n, type ChatMessagePayload as o, type ChatMessageUpdatedPayload as p, type ChatPathConfirmationPayload as q, type ChatProgressPayload as r, type ChatRetryPayload as s, type ChatThinkingPayload as t, type ChatTodoPayload as u, type ChatToolCallPayload as v, type ChatToolOutputPayload as w, type ChatToolPreparingPayload as x, type ChatToolResultPayload as y, type ChatVisionFallbackPayload as z };
447
+ export { type ProjectListPayload as $, type AgentEvent as A, type BackgroundProcess as B, type ChatAskUserPayload as C, type ChatVisionFallbackPayload as D, type ChoiceOption as E, type ClientMessage as F, type ClientMessageType as G, type ContextCompactionEvent as H, type ContextPreviewPayload as I, type ContextStatePayload as J, type CriteriaUpdatedPayload as K, type DevServerOutputPayload as L, type DevServerStatePayload as M, type DiffLine as N, type ErrorPayload as O, type GitDiffFile as P, type GitStatusPayload as Q, type LogLine as R, type LspDiagnosticsPayload as S, type MetadataUpdatedPayload as T, type ModeChangedPayload as U, type PathConfirmPayload as V, type PathConfirmationReason as W, type PendingPathConfirmationPayload as X, type PendingQuestionPayload as Y, type PhaseChangedPayload as Z, type ProjectDeletedPayload as _, type AskAnswerPayload as a, type ProjectStatePayload as a0, type ProviderChangedPayload as a1, type QueueAddedEvent as a2, type QueueCancelledEvent as a3, type QueueDrainedEvent as a4, type QueueEvent as a5, type QueueEventType as a6, type QueueStatePayload as a7, type QueuedMessage as a8, type ServerMessage as a9, type ServerMessageType as aa, type SessionCreatedPayload as ab, type SessionListPayload as ac, type SessionLoadPayload as ad, type SessionNameGeneratedPayload as ae, type SessionRunningPayload as af, type SessionStatePayload as ag, type TaskCompletedPayload as ah, type TasksUpdatePayload as ai, type WorkflowWaitingPayload as aj, createClientMessage as ak, createServerMessage as al, isClientMessage as am, isServerMessage as an, type AskUserEvent as b, type BackgroundProcessExitedPayload as c, type BackgroundProcessOutputPayload as d, type BackgroundProcessRemovedPayload as e, type BackgroundProcessStartedPayload as f, type BackgroundProcessStatus as g, type ChatDeltaPayload as h, type ChatDonePayload as i, type ChatErrorPayload as j, type ChatFormatRetryPayload as k, type ChatLLMRetryFailedPayload as l, type ChatLLMRetryNowPayload as m, type ChatLLMRetryPayload as n, type ChatMessagePayload as o, type ChatMessageUpdatedPayload as p, type ChatPathConfirmationPayload as q, type ChatProgressPayload as r, type ChatRetryPayload as s, type ChatStatsPayload as t, type ChatThinkingPayload as u, type ChatTodoPayload as v, type ChatToolCallPayload as w, type ChatToolOutputPayload as x, type ChatToolPreparingPayload as y, type ChatToolResultPayload as z };
@@ -10,6 +10,7 @@ import {
10
10
  createChatMessageUpdatedMessage,
11
11
  createChatPathConfirmationMessage,
12
12
  createChatProgressMessage,
13
+ createChatStatsMessage,
13
14
  createChatThinkingMessage,
14
15
  createChatTodoMessage,
15
16
  createChatToolCallMessage,
@@ -37,9 +38,9 @@ import {
37
38
  parseClientMessage,
38
39
  serializeServerMessage,
39
40
  storedEventToServerMessage
40
- } from "./chunk-XAAEP5XM.js";
41
+ } from "./chunk-P57IBMK4.js";
41
42
  import "./chunk-LCLH6ZUL.js";
42
- import "./chunk-KSDWQ6IZ.js";
43
+ import "./chunk-HCYSGLY2.js";
43
44
  import "./chunk-YLJ4XMA6.js";
44
45
  export {
45
46
  createChatAskUserMessage,
@@ -53,6 +54,7 @@ export {
53
54
  createChatMessageUpdatedMessage,
54
55
  createChatPathConfirmationMessage,
55
56
  createChatProgressMessage,
57
+ createChatStatsMessage,
56
58
  createChatThinkingMessage,
57
59
  createChatTodoMessage,
58
60
  createChatToolCallMessage,
@@ -81,4 +83,4 @@ export {
81
83
  serializeServerMessage,
82
84
  storedEventToServerMessage
83
85
  };
84
- //# sourceMappingURL=protocol-TLODRZSB.js.map
86
+ //# sourceMappingURL=protocol-Y7MRKRUO.js.map
@@ -1,7 +1,7 @@
1
- import { M as ModelConfig } from '../types-PAKlAzp9.js';
2
- export { T as ToolCall } from '../types-PAKlAzp9.js';
3
- import { L as LLMCompletionRequest, a as LLMCompletionResponse, b as LLMStreamEvent } from '../types-BWuVnaBw.js';
4
- export { c as LLMMessage, d as LLMToolDefinition } from '../types-BWuVnaBw.js';
1
+ import { M as ModelConfig } from '../types-BIkpxjaj.js';
2
+ export { T as ToolCall } from '../types-BIkpxjaj.js';
3
+ import { L as LLMCompletionRequest, a as LLMCompletionResponse, b as LLMStreamEvent } from '../types-CoY8Ka1C.js';
4
+ export { c as LLMMessage, d as LLMToolDefinition } from '../types-CoY8Ka1C.js';
5
5
 
6
6
  type ProviderAuthState = 'disconnected' | 'pending' | 'connected' | 'expired' | 'error';
7
7
  interface ProviderAuthStatus {
@@ -11,18 +11,18 @@ import {
11
11
  import {
12
12
  detectModel,
13
13
  fetchAvailableModelsFromBackend
14
- } from "./chunk-B2RPFZ3U.js";
15
- import "./chunk-K2QKX4ZJ.js";
14
+ } from "./chunk-CYQUM42E.js";
15
+ import "./chunk-OA2FURC3.js";
16
16
  import "./chunk-J2GP3J3X.js";
17
- import "./chunk-D5QVV3LT.js";
18
- import "./chunk-7ZMOP5LS.js";
19
- import "./chunk-PBFGJFGC.js";
17
+ import "./chunk-DHDIKVRT.js";
18
+ import "./chunk-TS5WKTFB.js";
19
+ import "./chunk-UV6IH6HK.js";
20
20
  import "./chunk-HNCM3D7Y.js";
21
- import "./chunk-KAZWU73N.js";
22
- import "./chunk-ZFNBATE3.js";
23
- import "./chunk-N2Q3KYWM.js";
21
+ import "./chunk-EUOWCVU6.js";
22
+ import "./chunk-OXMOKQPW.js";
23
+ import "./chunk-3DZSHRXE.js";
24
24
  import "./chunk-OYBUJIC3.js";
25
- import "./chunk-ISE55FOR.js";
25
+ import "./chunk-2AI7VYPN.js";
26
26
  import "./chunk-K44MW7JJ.js";
27
27
  import {
28
28
  activateProvider,
@@ -400,4 +400,4 @@ export {
400
400
  runProviderRemove,
401
401
  runProviderUse
402
402
  };
403
- //# sourceMappingURL=provider-QIOTESLB.js.map
403
+ //# sourceMappingURL=provider-CVM33XHW.js.map