openfox 2.0.129 → 2.0.131

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 (113) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +2 -0
  3. package/dist/CHANGELOG.md +44 -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-TH6JBO6G.js → chat-handler-RAIMQU7F.js} +35 -35
  8. package/dist/{chunk-ISE55FOR.js → chunk-2AI7VYPN.js} +11 -1
  9. package/dist/{chunk-HO7A7TMF.js → chunk-55DGZIZ6.js} +15 -5
  10. package/dist/{chunk-L24A6GZ7.js → chunk-5AI3LHRQ.js} +85 -57
  11. package/dist/{chunk-ZFNBATE3.js → chunk-6EZDW4JS.js} +3 -2
  12. package/dist/{chunk-ZXWJ6JTL.js → chunk-6MUSEPV7.js} +1197 -225
  13. package/dist/{chunk-OHTBWA7L.js → chunk-6SUBBT2M.js} +13 -13
  14. package/dist/{chunk-6LX43YRA.js → chunk-7ET46SNE.js} +4 -4
  15. package/dist/{chunk-GIJUWPRQ.js → chunk-7JVBDBXE.js} +2 -2
  16. package/dist/{chunk-MYNNMV75.js → chunk-7LGMQ5KS.js} +54 -36
  17. package/dist/{chunk-ZIL6VKLU.js → chunk-BKMWZTNO.js} +3 -3
  18. package/dist/chunk-BMBOSVRM.js +7 -0
  19. package/dist/{auth-GTGIGX5X.js → chunk-CQGJ5RWB.js} +4 -4
  20. package/dist/{chunk-3B232XG4.js → chunk-DPFET73G.js} +2 -2
  21. package/dist/chunk-DQTN4B33.js +235 -0
  22. package/dist/{chunk-KBESUA3W.js → chunk-ELYHHEYL.js} +3 -3
  23. package/dist/{chunk-DABWCAXS.js → chunk-EUOWCVU6.js} +19 -6
  24. package/dist/{chunk-YJD5A375.js → chunk-FGNJMKDV.js} +5 -5
  25. package/dist/{chunk-ATWOXI52.js → chunk-HCYSGLY2.js} +1 -1
  26. package/dist/{chunk-OYBUJIC3.js → chunk-JU757HVI.js} +5 -1
  27. package/dist/{chunk-AQBRI7TM.js → chunk-KWAHD2JA.js} +13 -8
  28. package/dist/{chunk-N2Q3KYWM.js → chunk-LQKXJPKP.js} +8 -3
  29. package/dist/{chunk-EHFIUXWZ.js → chunk-LW6MMSTD.js} +2 -2
  30. package/dist/{chunk-ZIYETXOW.js → chunk-M5T4RDPJ.js} +4 -4
  31. package/dist/{chunk-66MG44TF.js → chunk-MGEYAYGU.js} +2 -2
  32. package/dist/{chunk-RV5G7QQU.js → chunk-MQMPIXON.js} +3 -3
  33. package/dist/{chunk-K2QKX4ZJ.js → chunk-OA2FURC3.js} +8 -2
  34. package/dist/{chunk-567L5OJ6.js → chunk-P57IBMK4.js} +2 -2
  35. package/dist/{chunk-P6GTPKE5.js → chunk-QJG5K3X2.js} +278 -16
  36. package/dist/{chunk-2COZT3YI.js → chunk-RQPHGBWI.js} +24 -24
  37. package/dist/chunk-SVALN5KE.js +394 -0
  38. package/dist/{session-status-6Q5B5PEN.js → chunk-T3S5MTMD.js} +2 -3
  39. package/dist/{chunk-7YP4O4XE.js → chunk-TACWRDDC.js} +3 -3
  40. package/dist/{chunk-7ZMOP5LS.js → chunk-TS5WKTFB.js} +18 -1
  41. package/dist/{chunk-PBFGJFGC.js → chunk-UV6IH6HK.js} +32 -10
  42. package/dist/{chunk-7RIEI2TE.js → chunk-WCM5ZW5N.js} +52 -17
  43. package/dist/{chunk-Y3BSBKHY.js → chunk-XE6UC5Z3.js} +2 -2
  44. package/dist/{chunk-26WS7AH6.js → chunk-Y6ZGHOKM.js} +39 -7
  45. package/dist/chunk-YNMP647F.js +24 -0
  46. package/dist/{chunk-H6YIVK67.js → chunk-ZCFQOC3C.js} +26 -6
  47. package/dist/{chunk-IJFKJ5D6.js → chunk-ZL4IAFF3.js} +4 -4
  48. package/dist/{chunk-JQMQ4DGC.js → chunk-ZVHUISW7.js} +76 -32
  49. package/dist/cli/dev.js +1 -1
  50. package/dist/cli/index.js +1 -1
  51. package/dist/client-E6QLHPHD.js +16 -0
  52. package/dist/{client-pure-GU2SV3DD.js → client-pure-FLKP6PTI.js} +2 -2
  53. package/dist/compactor-OEJAA2YP.js +32 -0
  54. package/dist/dynamic-context-Y555VDLA.js +52 -0
  55. package/dist/{events-GMHRX4LF.js → events-ZJPRGVL2.js} +9 -9
  56. package/dist/{folding-7K2GRPF4.js → folding-QRZOHY2I.js} +7 -7
  57. package/dist/http-client-P4XTKAZA.js +11 -0
  58. package/dist/{inspect-proxy-UKPU3Z64.js → inspect-proxy-A3OROWPG.js} +4 -4
  59. package/dist/launch-Y4H7FDU2.js +53 -0
  60. package/dist/{manager-NOKJQTTF.js → manager-TMBFBCQL.js} +5 -5
  61. package/dist/mcp-YU7AM3UV.js +120 -0
  62. package/dist/{model-catalog-ZLOWTQA7.js → model-catalog-2PCKTYGW.js} +2 -2
  63. package/dist/{oauth-provider-DGBC2YM6.js → oauth-provider-VHUS2KEG.js} +8 -2
  64. package/dist/orchestrator-SQN2SJ2A.js +64 -0
  65. package/dist/package.json +1 -1
  66. package/dist/{path-security-UDZ7UVWK.js → path-security-CBACXAMS.js} +13 -13
  67. package/dist/{platform-EMKWQTZX.js → platform-5LQXOZO3.js} +4 -4
  68. package/dist/plugins-registry.json +12 -0
  69. package/dist/{processor-7RDR675X.js → processor-MEHODYNE.js} +34 -34
  70. package/dist/{profiles-HXGJIPF2.js → profiles-EBCVFYG7.js} +2 -2
  71. package/dist/{project-creator-JF3YVQAH.js → project-creator-6AGQTNXB.js} +3 -3
  72. package/dist/{projects-TPSLCJP2.js → projects-5U37RUTL.js} +3 -3
  73. package/dist/{protocol-DMneA8mx.d.ts → protocol-BMUoqwYH.d.ts} +2 -1
  74. package/dist/{protocol-TS3GVTT3.js → protocol-Y7MRKRUO.js} +3 -3
  75. package/dist/provider/index.d.ts +4 -4
  76. package/dist/{provider-DXEICEIE.js → provider-6YRII4IV.js} +11 -11
  77. package/dist/{provider-manager-PU7RS2TK.js → provider-manager-URNJBK5Q.js} +11 -11
  78. package/dist/{registry-Z4GVYFTV.js → registry-CMSSZHDC.js} +5 -5
  79. package/dist/{serve-Z5ITDPCQ.js → serve-NPADSJG7.js} +45 -43
  80. package/dist/server/index.d.ts +28 -4
  81. package/dist/server/index.js +42 -40
  82. package/dist/server-5TY22HDN.js +56 -0
  83. package/dist/service-VPXGREXF.js +27 -0
  84. package/dist/{session-overrides-4WAD3X5Q.js → session-overrides-OECQYRDK.js} +7 -7
  85. package/dist/session-status-UFO5IFI7.js +10 -0
  86. package/dist/{sessions-D7VRCHQY.js → sessions-NMPX5ICI.js} +6 -6
  87. package/dist/{settings-VOWWO4VG.js → settings-MDCRNQBY.js} +3 -3
  88. package/dist/shared/index.d.ts +3 -3
  89. package/dist/shared/index.js +1 -1
  90. package/dist/skill-defaults/browser/SKILL.md +20 -1
  91. package/dist/{tasks-SE3DOPVP.js → tasks-MNPXK2S5.js} +14 -14
  92. package/dist/{tools-6XUSIJN2.js → tools-6BDT5YMT.js} +37 -37
  93. package/dist/{types-PAKlAzp9.d.ts → types-BIkpxjaj.d.ts} +11 -2
  94. package/dist/{types-BWuVnaBw.d.ts → types-CoY8Ka1C.d.ts} +1 -1
  95. package/dist/{update-EJUI6PSV.js → update-XKCOBE47.js} +2 -2
  96. package/dist/web/assets/{index-CGKd7WLQ.js → index-Bx5r3aJx.js} +88 -88
  97. package/dist/web/assets/{index-CbX8veVW.css → index-Y300llHY.css} +1 -1
  98. package/dist/web/index.html +2 -2
  99. package/dist/web/sw.js +1 -1
  100. package/dist/{workspace-6CUE26YA.js → workspace-LM646OHC.js} +4 -4
  101. package/package.json +1 -1
  102. package/plugins-registry.json +12 -0
  103. package/dist/chunk-HIRDDCPD.js +0 -7
  104. package/dist/chunk-PHP7PLFX.js +0 -151
  105. package/dist/chunk-RSB4AR2A.js +0 -108
  106. package/dist/client-RZGGDGUA.js +0 -16
  107. package/dist/compactor-WKFNTUXL.js +0 -32
  108. package/dist/dynamic-context-ZVE733UI.js +0 -28
  109. package/dist/http-client-ROVNSHF6.js +0 -11
  110. package/dist/launch-5ARSU7EM.js +0 -53
  111. package/dist/orchestrator-E6GIZGEN.js +0 -64
  112. package/dist/server-MUJ7EHEI.js +0 -56
  113. package/dist/service-INQWTYY2.js +0 -27
package/CHANGELOG.md CHANGED
@@ -1,5 +1,49 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.131 - 2026-08-28
4
+
5
+ ### Enhancements
6
+
7
+ - **Tool-change reminders embed full schemas** — added and changed tools carry their exact JSON definition, so no rebase is needed to act on them
8
+ - **Rebase system prompt shows a pending badge** — a "changes" indicator lights up the rebase action whenever drift awaits your approval
9
+
10
+ ### Bug Fixes
11
+
12
+ - **Tool changes no longer wipe the prefix cache** — deep context caching survives releases and restarts, so 400k-token sessions skip the full re-prefill
13
+ - **No spurious prompt-diff checks after restart** — only a tool change no longer trips the prompt drift detector
14
+
15
+ ## 2.0.130 - 2026-08-28
16
+
17
+ ### Features
18
+
19
+ - **Drive OpenFox sessions from any MCP client** — a built-in MCP server exposes `openfox_*` tools to run agents, manage sessions and workflows, plus an `openfox mcp` command that prints a paste-ready client config
20
+ - **Merge multi-mode model variants into a single model** — OmniRoute-style families (`*-low/-medium/-high`) collapse into one model with mode chips, mapped to the right provider ID per effort
21
+ - **Agent sees tool and prompt changes instantly** — system-reminder diffs are injected at the point of contention mid-session
22
+ - **Header icons collapse into a mobile menu** — cleaner navigation on small screens
23
+ - **New plugin registry entries** — openfox-openrouter-free and openfox-opencode-free
24
+
25
+ ### Enhancements
26
+
27
+ - **Full reasoning-effort control on OpenAI gpt-5** — tools and effort work together via the Responses API, no more forced "none"
28
+ - **Vision-capable models get an eye indicator** — auto-detected from the backend and shown across the model lists
29
+ - **MCP tool changes previewed in the system prompt** — the preview lists exactly which tools were added/removed
30
+ - **OAuth authorize completes instantly in the UI** — the callback tab notifies the app via BroadcastChannel, no paste-back needed
31
+
32
+ ### Bug Fixes
33
+
34
+ - **OpenAI provider no longer fails LLM calls** — gpt-5.x uses max_completion_tokens, thinking no longer sends chat_template_kwargs, and api.openai.com/anthropic.com providers auto-detect their backend without a re-save
35
+ - **OpenCode Go Responses-API models now work** — gpt-5.6-luna, grok-4.6 and muse-spark route to /v1/responses instead of the rejecting chat endpoint
36
+ - **Responses routing is backend-aware** — vLLM, Ollama and friends never hit /v1/responses
37
+ - **Session list no longer shrinks after delete/rename/favorite** — reloads are scoped to the active project
38
+ - **Session history defaults to a 300-message limit** — fresh installs no longer send unlimited history; explicit 0 stays opt-in unlimited
39
+ - **Logout actually logs out** — clears the token, closes the WebSocket and stops auto-reconnect
40
+ - **MCP OAuth reconnects no longer clobber pending authorizations** — background probes use in-memory state; stale client registrations are auto-detected and cleared
41
+ - **MCP server list refreshes reliably in the UI** — the tools tab updates immediately after server changes
42
+ - **Sub-agent window no longer shows the main session's compaction badge** — and no longer overlaps on narrow panes
43
+ - **No more false path confirmations from heredoc bodies** — path extraction ignores heredocs
44
+ - **Removed fake provider-defaults fields** — dead thinking/non-thinking params are gone, pointing to the real per-model settings
45
+ - **Merged mode-chip models survive catalog refresh** — no re-expanding after a re-fetch
46
+
3
47
  ## 2.0.129 - 2026-08-25
4
48
 
5
49
  ### Features
package/README.md CHANGED
@@ -100,6 +100,8 @@ Restart OpenFox after installing or updating a plugin.
100
100
  - To authenticate with a Github copilot account, you can install the [`openfox-github-copilot`](https://github.com/JamesDAdams/openfox-github-copilot) plugin.
101
101
  - To authenticate with a Google Antigravity account, you can install the [`openfox-google-antigravity`](https://github.com/JamesDAdams/openfox-google-antigravity) plugin.
102
102
  - To authenticate with an X (xAI) SuperGrok subscription, you can install the [`openfox-xai-supergrok`](https://github.com/Olgean-Group/openfox-xai-supergrok) plugin.
103
+ - To use free OpenRouter models, you can install the [`openfox-openrouter-free`](https://github.com/JamesDAdams/openfox-openrouter-free) plugin.
104
+ - To use free OpenCode models, you can install the [`openfox-opencode-free`](https://github.com/JamesDAdams/openfox-opencode-free) plugin.
103
105
 
104
106
  ## Screenshots
105
107
 
package/dist/CHANGELOG.md CHANGED
@@ -1,5 +1,49 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.131 - 2026-08-28
4
+
5
+ ### Enhancements
6
+
7
+ - **Tool-change reminders embed full schemas** — added and changed tools carry their exact JSON definition, so no rebase is needed to act on them
8
+ - **Rebase system prompt shows a pending badge** — a "changes" indicator lights up the rebase action whenever drift awaits your approval
9
+
10
+ ### Bug Fixes
11
+
12
+ - **Tool changes no longer wipe the prefix cache** — deep context caching survives releases and restarts, so 400k-token sessions skip the full re-prefill
13
+ - **No spurious prompt-diff checks after restart** — only a tool change no longer trips the prompt drift detector
14
+
15
+ ## 2.0.130 - 2026-08-28
16
+
17
+ ### Features
18
+
19
+ - **Drive OpenFox sessions from any MCP client** — a built-in MCP server exposes `openfox_*` tools to run agents, manage sessions and workflows, plus an `openfox mcp` command that prints a paste-ready client config
20
+ - **Merge multi-mode model variants into a single model** — OmniRoute-style families (`*-low/-medium/-high`) collapse into one model with mode chips, mapped to the right provider ID per effort
21
+ - **Agent sees tool and prompt changes instantly** — system-reminder diffs are injected at the point of contention mid-session
22
+ - **Header icons collapse into a mobile menu** — cleaner navigation on small screens
23
+ - **New plugin registry entries** — openfox-openrouter-free and openfox-opencode-free
24
+
25
+ ### Enhancements
26
+
27
+ - **Full reasoning-effort control on OpenAI gpt-5** — tools and effort work together via the Responses API, no more forced "none"
28
+ - **Vision-capable models get an eye indicator** — auto-detected from the backend and shown across the model lists
29
+ - **MCP tool changes previewed in the system prompt** — the preview lists exactly which tools were added/removed
30
+ - **OAuth authorize completes instantly in the UI** — the callback tab notifies the app via BroadcastChannel, no paste-back needed
31
+
32
+ ### Bug Fixes
33
+
34
+ - **OpenAI provider no longer fails LLM calls** — gpt-5.x uses max_completion_tokens, thinking no longer sends chat_template_kwargs, and api.openai.com/anthropic.com providers auto-detect their backend without a re-save
35
+ - **OpenCode Go Responses-API models now work** — gpt-5.6-luna, grok-4.6 and muse-spark route to /v1/responses instead of the rejecting chat endpoint
36
+ - **Responses routing is backend-aware** — vLLM, Ollama and friends never hit /v1/responses
37
+ - **Session list no longer shrinks after delete/rename/favorite** — reloads are scoped to the active project
38
+ - **Session history defaults to a 300-message limit** — fresh installs no longer send unlimited history; explicit 0 stays opt-in unlimited
39
+ - **Logout actually logs out** — clears the token, closes the WebSocket and stops auto-reconnect
40
+ - **MCP OAuth reconnects no longer clobber pending authorizations** — background probes use in-memory state; stale client registrations are auto-detected and cleared
41
+ - **MCP server list refreshes reliably in the UI** — the tools tab updates immediately after server changes
42
+ - **Sub-agent window no longer shows the main session's compaction badge** — and no longer overlaps on narrow panes
43
+ - **No more false path confirmations from heredoc bodies** — path extraction ignores heredocs
44
+ - **Removed fake provider-defaults fields** — dead thinking/non-thinking params are gone, pointing to the real per-model settings
45
+ - **Merged mode-chip models survive catalog refresh** — no re-expanding after a re-fetch
46
+
3
47
  ## 2.0.129 - 2026-08-25
4
48
 
5
49
  ### Features
@@ -0,0 +1,19 @@
1
+ import {
2
+ authConfigExists,
3
+ encryptPassword,
4
+ hashPassword,
5
+ loadAuthConfig,
6
+ saveAuthConfig,
7
+ verifyPassword
8
+ } from "./chunk-CQGJ5RWB.js";
9
+ import "./chunk-CQGTEGKL.js";
10
+ import "./chunk-YLJ4XMA6.js";
11
+ export {
12
+ authConfigExists,
13
+ encryptPassword,
14
+ hashPassword,
15
+ loadAuthConfig,
16
+ saveAuthConfig,
17
+ verifyPassword
18
+ };
19
+ //# sourceMappingURL=auth-D3WLIBTG.js.map
@@ -1,12 +1,13 @@
1
1
  import {
2
- findLmStudioModel
3
- } from "./chunk-K2QKX4ZJ.js";
2
+ findLmStudioModel,
3
+ hasVisionEvidence
4
+ } from "./chunk-OA2FURC3.js";
4
5
  import {
5
6
  ensureVersionPrefix
6
7
  } from "./chunk-HNCM3D7Y.js";
7
8
  import {
8
9
  getCatalogEntry
9
- } from "./chunk-ISE55FOR.js";
10
+ } from "./chunk-2AI7VYPN.js";
10
11
  import {
11
12
  logger
12
13
  } from "./chunk-K44MW7JJ.js";
@@ -99,7 +100,7 @@ async function detectOllamaInfo(baseUrl, modelId) {
99
100
  const mi = data.model_info ?? {};
100
101
  const ctxKey = Object.keys(mi).find((k) => k.endsWith(".context_length") || k === "context_length");
101
102
  const ctxLen = ctxKey ? Number(mi[ctxKey]) : void 0;
102
- const supportsVision = !!mi["vision_start_token_id"] || Object.keys(mi).some((k) => k.includes(".vision."));
103
+ const supportsVision = hasVisionEvidence(mi);
103
104
  if (ctxLen && !isNaN(ctxLen)) {
104
105
  return { contextWindow: ctxLen, source: "backend", supportsVision };
105
106
  }
@@ -307,4 +308,4 @@ async function autoConfig(input) {
307
308
  export {
308
309
  autoConfig
309
310
  };
310
- //# sourceMappingURL=auto-config-454YE6KC.js.map
311
+ //# sourceMappingURL=auto-config-5VSNLVNI.js.map
@@ -1,10 +1,12 @@
1
1
  import {
2
+ detectBackendFromUrl,
2
3
  getBackendCapabilities,
3
4
  getBackendDisplayName
4
- } from "./chunk-PBFGJFGC.js";
5
+ } from "./chunk-UV6IH6HK.js";
5
6
  import "./chunk-YLJ4XMA6.js";
6
7
  export {
8
+ detectBackendFromUrl,
7
9
  getBackendCapabilities,
8
10
  getBackendDisplayName
9
11
  };
10
- //# sourceMappingURL=backend-4YPEC3J2.js.map
12
+ //# sourceMappingURL=backend-NDBY3DAQ.js.map
@@ -2,55 +2,55 @@ import {
2
2
  buildRunChatTurnParams,
3
3
  finalizeTurnCompletion,
4
4
  generateSessionNameForSession
5
- } from "./chunk-OHTBWA7L.js";
5
+ } from "./chunk-6SUBBT2M.js";
6
6
  import {
7
7
  runChatTurn
8
- } from "./chunk-7RIEI2TE.js";
9
- import "./chunk-L24A6GZ7.js";
10
- import "./chunk-PHP7PLFX.js";
11
- import "./chunk-ZIL6VKLU.js";
12
- import "./chunk-6LX43YRA.js";
13
- import "./chunk-GIJUWPRQ.js";
14
- import "./chunk-EHFIUXWZ.js";
15
- import "./chunk-RV5G7QQU.js";
8
+ } from "./chunk-WCM5ZW5N.js";
9
+ import "./chunk-5AI3LHRQ.js";
10
+ import "./chunk-XE6UC5Z3.js";
11
+ import "./chunk-J7GAZGZT.js";
12
+ import "./chunk-ZCFQOC3C.js";
13
+ import "./chunk-TACWRDDC.js";
14
+ import "./chunk-7ET46SNE.js";
15
+ import "./chunk-LW6MMSTD.js";
16
+ import "./chunk-MQMPIXON.js";
16
17
  import "./chunk-I72ACQ6R.js";
17
18
  import "./chunk-JE7LW7Y6.js";
18
19
  import "./chunk-OAN4BXEW.js";
19
- import "./chunk-Y3BSBKHY.js";
20
- import "./chunk-J7GAZGZT.js";
21
- import "./chunk-H6YIVK67.js";
22
- import "./chunk-7YP4O4XE.js";
23
- import "./chunk-26WS7AH6.js";
20
+ import "./chunk-SVALN5KE.js";
21
+ import "./chunk-BKMWZTNO.js";
22
+ import "./chunk-7JVBDBXE.js";
23
+ import "./chunk-JURM3RPZ.js";
24
+ import "./chunk-Y6ZGHOKM.js";
24
25
  import {
25
26
  getEventStore
26
- } from "./chunk-YJD5A375.js";
27
- import "./chunk-ZIYETXOW.js";
28
- import "./chunk-AQBRI7TM.js";
27
+ } from "./chunk-FGNJMKDV.js";
28
+ import "./chunk-M5T4RDPJ.js";
29
+ import "./chunk-KWAHD2JA.js";
30
+ import "./chunk-ELYHHEYL.js";
31
+ import "./chunk-OSXPQSLW.js";
29
32
  import {
30
33
  createChatMessageMessage,
31
34
  createPhaseChangedMessage,
32
35
  createSessionRunningMessage
33
- } from "./chunk-567L5OJ6.js";
34
- import "./chunk-66MG44TF.js";
35
- import "./chunk-JURM3RPZ.js";
36
+ } from "./chunk-P57IBMK4.js";
36
37
  import "./chunk-LCLH6ZUL.js";
37
- import "./chunk-JQMQ4DGC.js";
38
- import "./chunk-K2QKX4ZJ.js";
38
+ import "./chunk-MGEYAYGU.js";
39
+ import "./chunk-ZVHUISW7.js";
40
+ import "./chunk-OA2FURC3.js";
39
41
  import "./chunk-J2GP3J3X.js";
40
- import "./chunk-KBESUA3W.js";
41
- import "./chunk-OSXPQSLW.js";
42
- import "./chunk-3B232XG4.js";
43
- import "./chunk-P6GTPKE5.js";
44
- import "./chunk-7ZMOP5LS.js";
45
- import "./chunk-PBFGJFGC.js";
42
+ import "./chunk-DPFET73G.js";
43
+ import "./chunk-QJG5K3X2.js";
44
+ import "./chunk-TS5WKTFB.js";
45
+ import "./chunk-UV6IH6HK.js";
46
46
  import "./chunk-HNCM3D7Y.js";
47
- import "./chunk-DABWCAXS.js";
48
- import "./chunk-ZFNBATE3.js";
49
- import "./chunk-N2Q3KYWM.js";
50
- import "./chunk-OYBUJIC3.js";
51
- import "./chunk-ISE55FOR.js";
47
+ import "./chunk-EUOWCVU6.js";
48
+ import "./chunk-6EZDW4JS.js";
49
+ import "./chunk-LQKXJPKP.js";
50
+ import "./chunk-JU757HVI.js";
51
+ import "./chunk-2AI7VYPN.js";
52
52
  import "./chunk-K44MW7JJ.js";
53
- import "./chunk-ATWOXI52.js";
53
+ import "./chunk-HCYSGLY2.js";
54
54
  import "./chunk-R5FAEKXQ.js";
55
55
  import "./chunk-CQGTEGKL.js";
56
56
  import "./chunk-YLJ4XMA6.js";
@@ -174,4 +174,4 @@ export {
174
174
  startChatSession,
175
175
  stopSessionExecution
176
176
  };
177
- //# sourceMappingURL=chat-handler-TH6JBO6G.js.map
177
+ //# sourceMappingURL=chat-handler-RAIMQU7F.js.map
@@ -22,6 +22,15 @@ function resolveEffortForModel({
22
22
  if (override) return override;
23
23
  return defaultEffort && reasoningEfforts.includes(defaultEffort) ? defaultEffort : void 0;
24
24
  }
25
+ var MODE_SUFFIXES = ["low", "medium", "high", "xhigh", "max"];
26
+ var MODE_SUFFIX_REGEX = new RegExp(`-(${MODE_SUFFIXES.join("|")})$`);
27
+ function resolveModeModelId(modes, effort, fallbackApiModelId, modelId) {
28
+ const modeEntry = modes?.find((mode) => mode.level === effort);
29
+ if (modeEntry) {
30
+ return { modelId: modeEntry.apiModelId, suppressEffort: true };
31
+ }
32
+ return { modelId: fallbackApiModelId ?? modelId, suppressEffort: false };
33
+ }
25
34
 
26
35
  // src/server/providers/model-catalog.ts
27
36
  var CATALOG = [
@@ -83,7 +92,8 @@ export {
83
92
  REASONING_EFFORT_VALUES,
84
93
  isReasoningEffortValue,
85
94
  resolveEffortForModel,
95
+ resolveModeModelId,
86
96
  getCatalogEntry,
87
97
  getCatalogDefaultEffort
88
98
  };
89
- //# sourceMappingURL=chunk-ISE55FOR.js.map
99
+ //# sourceMappingURL=chunk-2AI7VYPN.js.map
@@ -25,6 +25,7 @@ Commands:
25
25
  provider remove Remove a provider
26
26
  service Manage the systemd service (install, start, stop, status, logs, uninstall)
27
27
  pwa Manage the PWA installation (install, uninstall, launch, update, status)
28
+ mcp Print a paste-ready MCP client config for this server (asks for the password if set)
28
29
  install Install a persistent OpenFox launcher (use --check to inspect)
29
30
  update Update OpenFox to the latest version
30
31
 
@@ -36,7 +37,7 @@ Options:
36
37
  `);
37
38
  }
38
39
  async function runNetworkSetup(mode) {
39
- const { loadAuthConfig, saveAuthConfig, encryptPassword } = await import("./auth-GTGIGX5X.js");
40
+ const { loadAuthConfig, saveAuthConfig, encryptPassword } = await import("./auth-D3WLIBTG.js");
40
41
  const { saveGlobalConfig } = await import("./config-LOK3LXFH.js");
41
42
  const { getAuthKeyPath } = await import("./paths-BHR7CZ7I.js");
42
43
  const existingAuth = await loadAuthConfig(mode);
@@ -131,6 +132,7 @@ async function runCli(options) {
131
132
  const { values, positionals } = parseArgs({
132
133
  options: {
133
134
  port: { type: "string", short: "p" },
135
+ password: { type: "string" },
134
136
  "no-browser": { type: "boolean" },
135
137
  help: { type: "boolean", short: "h" },
136
138
  version: { type: "boolean", short: "v" },
@@ -163,7 +165,7 @@ async function runCli(options) {
163
165
  break;
164
166
  }
165
167
  case "provider": {
166
- const { runProviderCommand } = await import("./provider-DXEICEIE.js");
168
+ const { runProviderCommand } = await import("./provider-6YRII4IV.js");
167
169
  const [, subcommand] = positionals;
168
170
  await runProviderCommand(mode, subcommand);
169
171
  break;
@@ -191,6 +193,14 @@ async function runCli(options) {
191
193
  }
192
194
  break;
193
195
  }
196
+ case "mcp": {
197
+ const { runMcpCommand } = await import("./mcp-YU7AM3UV.js");
198
+ const mcpOptions = {};
199
+ if (values.password) mcpOptions.password = values.password;
200
+ if (values.port) mcpOptions.port = parseInt(values.port);
201
+ await runMcpCommand(mode, mcpOptions);
202
+ break;
203
+ }
194
204
  case "install": {
195
205
  const { runInstall } = await import("./install-VA2F6X6Z.js");
196
206
  const code = await runInstall({ check: values.check === true });
@@ -200,7 +210,7 @@ async function runCli(options) {
200
210
  break;
201
211
  }
202
212
  case "update": {
203
- const { runUpdate } = await import("./update-EJUI6PSV.js");
213
+ const { runUpdate } = await import("./update-XKCOBE47.js");
204
214
  const code = await runUpdate();
205
215
  if (code !== 0) {
206
216
  process.exit(code);
@@ -213,7 +223,7 @@ async function runCli(options) {
213
223
  if (!configExists) {
214
224
  await runNetworkSetup(mode);
215
225
  }
216
- const { runServe } = await import("./serve-Z5ITDPCQ.js");
226
+ const { runServe } = await import("./serve-NPADSJG7.js");
217
227
  const serveOptions = { mode };
218
228
  if (values.port) serveOptions.port = parseInt(values.port);
219
229
  if (values["no-browser"] === true) serveOptions.openBrowser = false;
@@ -225,4 +235,4 @@ async function runCli(options) {
225
235
  export {
226
236
  runCli
227
237
  };
228
- //# sourceMappingURL=chunk-HO7A7TMF.js.map
238
+ //# sourceMappingURL=chunk-55DGZIZ6.js.map