openfox 2.0.138 → 2.0.140

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 (73) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/CHANGELOG.md +27 -0
  3. package/dist/{backend-24FTDSHF.js → backend-EPISSWLB.js} +2 -2
  4. package/dist/{chat-handler-AUB5HDQD.js → chat-handler-JWRCPG72.js} +24 -24
  5. package/dist/{chunk-MOYWDP73.js → chunk-46Q2SHGJ.js} +2 -2
  6. package/dist/{chunk-BHVR2YS5.js → chunk-4F4ARGAM.js} +2 -2
  7. package/dist/{chunk-BENMBAU2.js → chunk-5EKBZXCU.js} +7 -7
  8. package/dist/{chunk-U7XCK7WL.js → chunk-5F7LNEEP.js} +4 -4
  9. package/dist/{chunk-N3PANDLT.js → chunk-5MGCTRKM.js} +21 -19
  10. package/dist/{chunk-5CZPHAHN.js → chunk-66XJC5TA.js} +10 -10
  11. package/dist/chunk-6RYTDRUR.js +7 -0
  12. package/dist/{chunk-X4PVR6AW.js → chunk-7OHSAZLF.js} +2 -2
  13. package/dist/{chunk-MMGHIPBU.js → chunk-AE2IBEUH.js} +2 -2
  14. package/dist/{chunk-Q33DL67W.js → chunk-CRJ5J7U5.js} +2 -2
  15. package/dist/{chunk-N5JKVNLH.js → chunk-EE6VFEE6.js} +3 -3
  16. package/dist/{chunk-QUAEH3MP.js → chunk-EMXMTCSY.js} +3 -1
  17. package/dist/{chunk-DG2YSWMC.js → chunk-FIEFBRTQ.js} +2 -2
  18. package/dist/{chunk-4LLGI372.js → chunk-GKRYQ56N.js} +34 -3
  19. package/dist/{chunk-2Q4THMD7.js → chunk-GZJRXVVJ.js} +13 -13
  20. package/dist/{chunk-G5GUQKLS.js → chunk-H7YL7PH3.js} +8 -4
  21. package/dist/{chunk-2KCREKHC.js → chunk-IFARTQOK.js} +18 -18
  22. package/dist/{chunk-4SBVW4UH.js → chunk-JLHYB445.js} +2 -2
  23. package/dist/{chunk-2OO46UAW.js → chunk-JTR3PC5I.js} +5 -5
  24. package/dist/{chunk-XS2QQERB.js → chunk-K227HOLU.js} +8 -7
  25. package/dist/{chunk-76C2PVOC.js → chunk-MAUQ6AW4.js} +6 -6
  26. package/dist/{chunk-HEYU7FAY.js → chunk-OA7KBQ2O.js} +7 -5
  27. package/dist/{chunk-HI25RCRW.js → chunk-QIGVYXMH.js} +91 -91
  28. package/dist/{chunk-DBCWILV3.js → chunk-RG326HS4.js} +3 -3
  29. package/dist/{chunk-64YDOCQR.js → chunk-SSHXYKW3.js} +34 -9
  30. package/dist/{chunk-QBWJCO5K.js → chunk-TJOKDC34.js} +3 -3
  31. package/dist/{chunk-SAGDTQXD.js → chunk-UA2ATO3B.js} +3 -3
  32. package/dist/{chunk-AKWJMMEJ.js → chunk-VLQ6BMU7.js} +7 -2
  33. package/dist/{chunk-RJ2GRUVF.js → chunk-WD354R3H.js} +4 -4
  34. package/dist/cli/dev.js +1 -1
  35. package/dist/cli/index.js +1 -1
  36. package/dist/{client-MVI3J7SN.js → client-KJS7QIIV.js} +5 -5
  37. package/dist/{compactor-KDTY4ERE.js → compactor-UREBHSZQ.js} +11 -11
  38. package/dist/{describe-image-AU6KBSWA.js → describe-image-TQOD52IC.js} +10 -10
  39. package/dist/{dynamic-context-SKHOUP4T.js → dynamic-context-KGSZ7TRQ.js} +10 -10
  40. package/dist/{events-ADE2KEHI.js → events-ZLP5V2YU.js} +6 -6
  41. package/dist/{export-import-SC3UW22Z.js → export-import-CJT33IO6.js} +7 -7
  42. package/dist/{folding-CM63AVSB.js → folding-BXMVJIFF.js} +4 -4
  43. package/dist/{http-client-C6UYWVWZ.js → http-client-JVJ43TBY.js} +3 -3
  44. package/dist/{launch-PTMPNZEN.js → launch-7NKOCT5A.js} +24 -24
  45. package/dist/{manager-FSPRJCYT.js → manager-JZNNVDYR.js} +4 -4
  46. package/dist/{orchestrator-KRHMAVBN.js → orchestrator-VSVDUGBT.js} +23 -23
  47. package/dist/package.json +1 -1
  48. package/dist/{path-security-YP2MRJNS.js → path-security-V3XALT5E.js} +8 -8
  49. package/dist/{platform-KPKYBU54.js → platform-DBPLSLE4.js} +3 -3
  50. package/dist/{processor-QZOGF5ES.js → processor-ACZM62WO.js} +23 -23
  51. package/dist/provider/index.d.ts +2 -2
  52. package/dist/{provider-SOC6Z25R.js → provider-7LNTLWRB.js} +6 -6
  53. package/dist/{provider-manager-Y53SVVQ3.js → provider-manager-TV5I5YJH.js} +6 -6
  54. package/dist/{registry-FMDMGIUB.js → registry-PVJAAL2Y.js} +3 -3
  55. package/dist/{serve-LVDF4XLG.js → serve-36D5HXWE.js} +29 -29
  56. package/dist/server/index.d.ts +1 -1
  57. package/dist/server/index.js +28 -28
  58. package/dist/{server-AIRQGHHR.js → server-R3J26IP2.js} +27 -27
  59. package/dist/{service-NKLQH647.js → service-7QKWUNU4.js} +8 -8
  60. package/dist/{session-overrides-ANQBKV74.js → session-overrides-7OPGV7CQ.js} +5 -5
  61. package/dist/{sessions-GLYACE5R.js → sessions-VHS47DHO.js} +4 -4
  62. package/dist/{settings-WH6BVQCP.js → settings-HCSHADP5.js} +2 -2
  63. package/dist/{tasks-GPM3JAE6.js → tasks-E7EG7344.js} +8 -8
  64. package/dist/{tools-NIPKV4YY.js → tools-AY6XEVJK.js} +21 -21
  65. package/dist/{types-CmiWoQ7p.d.ts → types-ofYNpiqi.d.ts} +2 -0
  66. package/dist/{update-Y5QXN3FK.js → update-JHFZMW3T.js} +2 -2
  67. package/dist/web/assets/index-Bm0_ekvt.js +313 -0
  68. package/dist/web/assets/{index-C1oW6oq0.css → index-BtkaULxJ.css} +1 -1
  69. package/dist/web/index.html +6 -3
  70. package/dist/web/sw.js +1 -1
  71. package/package.json +1 -1
  72. package/dist/chunk-OU7WD35E.js +0 -7
  73. package/dist/web/assets/index-CTAslWsi.js +0 -313
package/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.140 - 2026-09-08
4
+
5
+ ### Features
6
+
7
+ - **Authenticated Ollama proxies** — Ollama behind OpenWebUI or any Bearer-auth proxy now works when an API key is configured
8
+
9
+ ### Enhancements
10
+
11
+ - **Refined mobile interface** — composer expands full-height with the keyboard, send/stop become icon pills, and the footer rebalances (agent + danger on top, MCP + model below)
12
+ - **Model names truncate on narrow screens** — no more overflowing the composer
13
+
14
+ ### Bug Fixes
15
+
16
+ - **MCP dropdown stays in view** — opens as a centered modal on touch and left-aligns on narrow windows instead of overflowing
17
+ - **iOS no longer auto-zooms into the composer** — input fields keep a comfortable size on focus
18
+ - **opencode.ai providers work reliably** — chain-of-thought is no longer echoed into assistant history (fixing HTTP 400 on multi-turn thinking requests), and stable x-opencode-session headers restore prompt caching
19
+
20
+ ## 2.0.139 - 2026-09-06
21
+
22
+ ### Features
23
+
24
+ - **Caveman thinking mode** — opt-in setting that compresses the agent's reasoning into terse fragments to cut thinking tokens
25
+
26
+ ### Enhancements
27
+
28
+ - **Pause-in-progress is now obvious** — pulsing pause button while waiting, cancel cross on hover, height matched to Send
29
+
3
30
  ## 2.0.138 - 2026-09-06
4
31
 
5
32
  ### Features
package/dist/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.140 - 2026-09-08
4
+
5
+ ### Features
6
+
7
+ - **Authenticated Ollama proxies** — Ollama behind OpenWebUI or any Bearer-auth proxy now works when an API key is configured
8
+
9
+ ### Enhancements
10
+
11
+ - **Refined mobile interface** — composer expands full-height with the keyboard, send/stop become icon pills, and the footer rebalances (agent + danger on top, MCP + model below)
12
+ - **Model names truncate on narrow screens** — no more overflowing the composer
13
+
14
+ ### Bug Fixes
15
+
16
+ - **MCP dropdown stays in view** — opens as a centered modal on touch and left-aligns on narrow windows instead of overflowing
17
+ - **iOS no longer auto-zooms into the composer** — input fields keep a comfortable size on focus
18
+ - **opencode.ai providers work reliably** — chain-of-thought is no longer echoed into assistant history (fixing HTTP 400 on multi-turn thinking requests), and stable x-opencode-session headers restore prompt caching
19
+
20
+ ## 2.0.139 - 2026-09-06
21
+
22
+ ### Features
23
+
24
+ - **Caveman thinking mode** — opt-in setting that compresses the agent's reasoning into terse fragments to cut thinking tokens
25
+
26
+ ### Enhancements
27
+
28
+ - **Pause-in-progress is now obvious** — pulsing pause button while waiting, cancel cross on hover, height matched to Send
29
+
3
30
  ## 2.0.138 - 2026-09-06
4
31
 
5
32
  ### Features
@@ -3,7 +3,7 @@ import {
3
3
  detectProviderDefaultsFromUrl,
4
4
  getBackendCapabilities,
5
5
  getBackendDisplayName
6
- } from "./chunk-AKWJMMEJ.js";
6
+ } from "./chunk-VLQ6BMU7.js";
7
7
  import "./chunk-YLJ4XMA6.js";
8
8
  export {
9
9
  detectBackendFromUrl,
@@ -11,4 +11,4 @@ export {
11
11
  getBackendCapabilities,
12
12
  getBackendDisplayName
13
13
  };
14
- //# sourceMappingURL=backend-24FTDSHF.js.map
14
+ //# sourceMappingURL=backend-EPISSWLB.js.map
@@ -2,34 +2,34 @@ import {
2
2
  buildRunChatTurnParams,
3
3
  finalizeTurnCompletion,
4
4
  generateSessionNameForSession
5
- } from "./chunk-XS2QQERB.js";
5
+ } from "./chunk-K227HOLU.js";
6
6
  import {
7
7
  runChatTurn
8
- } from "./chunk-2Q4THMD7.js";
9
- import "./chunk-BENMBAU2.js";
10
- import "./chunk-N3PANDLT.js";
11
- import "./chunk-Q33DL67W.js";
8
+ } from "./chunk-GZJRXVVJ.js";
9
+ import "./chunk-5EKBZXCU.js";
10
+ import "./chunk-5MGCTRKM.js";
11
+ import "./chunk-CRJ5J7U5.js";
12
12
  import "./chunk-XE6UC5Z3.js";
13
13
  import "./chunk-J7GAZGZT.js";
14
- import "./chunk-QBWJCO5K.js";
15
- import "./chunk-DG2YSWMC.js";
16
- import "./chunk-76C2PVOC.js";
17
- import "./chunk-4SBVW4UH.js";
18
- import "./chunk-HEYU7FAY.js";
19
- import "./chunk-4LLGI372.js";
14
+ import "./chunk-TJOKDC34.js";
15
+ import "./chunk-FIEFBRTQ.js";
16
+ import "./chunk-MAUQ6AW4.js";
17
+ import "./chunk-JLHYB445.js";
18
+ import "./chunk-OA7KBQ2O.js";
19
+ import "./chunk-GKRYQ56N.js";
20
20
  import "./chunk-LW6MMSTD.js";
21
- import "./chunk-SAGDTQXD.js";
21
+ import "./chunk-UA2ATO3B.js";
22
22
  import "./chunk-I72ACQ6R.js";
23
23
  import "./chunk-VIJVLLPT.js";
24
24
  import "./chunk-OAN4BXEW.js";
25
25
  import "./chunk-V5AC2TV7.js";
26
- import "./chunk-DBCWILV3.js";
26
+ import "./chunk-RG326HS4.js";
27
27
  import {
28
28
  getEventStore
29
- } from "./chunk-2OO46UAW.js";
30
- import "./chunk-MMGHIPBU.js";
31
- import "./chunk-X4PVR6AW.js";
32
- import "./chunk-BHVR2YS5.js";
29
+ } from "./chunk-JTR3PC5I.js";
30
+ import "./chunk-AE2IBEUH.js";
31
+ import "./chunk-7OHSAZLF.js";
32
+ import "./chunk-4F4ARGAM.js";
33
33
  import "./chunk-OSXPQSLW.js";
34
34
  import {
35
35
  createChatMessageMessage,
@@ -37,20 +37,20 @@ import {
37
37
  createSessionRunningMessage
38
38
  } from "./chunk-OVAHNEFG.js";
39
39
  import "./chunk-LCLH6ZUL.js";
40
- import "./chunk-MOYWDP73.js";
41
- import "./chunk-G5GUQKLS.js";
40
+ import "./chunk-46Q2SHGJ.js";
41
+ import "./chunk-H7YL7PH3.js";
42
42
  import "./chunk-OA2FURC3.js";
43
43
  import "./chunk-J2GP3J3X.js";
44
44
  import "./chunk-DPFET73G.js";
45
- import "./chunk-64YDOCQR.js";
45
+ import "./chunk-SSHXYKW3.js";
46
46
  import "./chunk-TS5WKTFB.js";
47
- import "./chunk-AKWJMMEJ.js";
47
+ import "./chunk-VLQ6BMU7.js";
48
48
  import "./chunk-HNCM3D7Y.js";
49
49
  import "./chunk-QMU3ZY2C.js";
50
50
  import "./chunk-FSSUPWYO.js";
51
51
  import "./chunk-XG3AUMPI.js";
52
- import "./chunk-N5JKVNLH.js";
53
- import "./chunk-QUAEH3MP.js";
52
+ import "./chunk-EE6VFEE6.js";
53
+ import "./chunk-EMXMTCSY.js";
54
54
  import "./chunk-JU757HVI.js";
55
55
  import "./chunk-VKMPR25F.js";
56
56
  import "./chunk-K44MW7JJ.js";
@@ -180,4 +180,4 @@ export {
180
180
  startChatSession,
181
181
  stopSessionExecution
182
182
  };
183
- //# sourceMappingURL=chat-handler-AUB5HDQD.js.map
183
+ //# sourceMappingURL=chat-handler-JWRCPG72.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SETTINGS_KEYS,
3
3
  getSetting
4
- } from "./chunk-QUAEH3MP.js";
4
+ } from "./chunk-EMXMTCSY.js";
5
5
 
6
6
  // src/server/utils/platform.ts
7
7
  import os from "os";
@@ -63,4 +63,4 @@ export {
63
63
  isWindowsPath,
64
64
  isAbsolutePath
65
65
  };
66
- //# sourceMappingURL=chunk-MOYWDP73.js.map
66
+ //# sourceMappingURL=chunk-46Q2SHGJ.js.map
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  SETTINGS_KEYS,
9
9
  getSetting
10
- } from "./chunk-QUAEH3MP.js";
10
+ } from "./chunk-EMXMTCSY.js";
11
11
  import {
12
12
  logger
13
13
  } from "./chunk-K44MW7JJ.js";
@@ -352,4 +352,4 @@ export {
352
352
  getOverrideAgentIds,
353
353
  resolveDefaultAgentId
354
354
  };
355
- //# sourceMappingURL=chunk-BHVR2YS5.js.map
355
+ //# sourceMappingURL=chunk-4F4ARGAM.js.map
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  getAllInstructions,
3
3
  getEnabledSkillMetadata
4
- } from "./chunk-Q33DL67W.js";
4
+ } from "./chunk-CRJ5J7U5.js";
5
5
  import {
6
6
  buildTopLevelSystemPrompt
7
- } from "./chunk-4LLGI372.js";
7
+ } from "./chunk-GKRYQ56N.js";
8
8
  import {
9
9
  getCurrentContextWindowId,
10
10
  getEventStore
11
- } from "./chunk-2OO46UAW.js";
11
+ } from "./chunk-JTR3PC5I.js";
12
12
  import {
13
13
  findAgentById,
14
14
  getRuntimeConfig,
15
15
  getSubAgents,
16
16
  loadAllAgentsDefault,
17
17
  resolveDefaultAgentId
18
- } from "./chunk-BHVR2YS5.js";
18
+ } from "./chunk-4F4ARGAM.js";
19
19
  import {
20
20
  logger
21
21
  } from "./chunk-K44MW7JJ.js";
@@ -327,8 +327,8 @@ function resolveAgentDef(sessionManager, sessionId) {
327
327
  });
328
328
  }
329
329
  async function getEffectiveToolDefinitions(agentDef, sessionId, modelName) {
330
- const { getToolRegistryForAgent } = await import("./tools-NIPKV4YY.js");
331
- const { isDescribeImageEligible } = await import("./describe-image-AU6KBSWA.js");
330
+ const { getToolRegistryForAgent } = await import("./tools-AY6XEVJK.js");
331
+ const { isDescribeImageEligible } = await import("./describe-image-TQOD52IC.js");
332
332
  const all = getToolRegistryForAgent(agentDef, sessionId).definitions;
333
333
  const eligible = await isDescribeImageEligible(modelName);
334
334
  if (eligible) return all;
@@ -396,4 +396,4 @@ export {
396
396
  computeSessionHash,
397
397
  applyDynamicContext
398
398
  };
399
- //# sourceMappingURL=chunk-BENMBAU2.js.map
399
+ //# sourceMappingURL=chunk-5EKBZXCU.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  createMessageStartEvent
3
- } from "./chunk-HEYU7FAY.js";
3
+ } from "./chunk-OA7KBQ2O.js";
4
4
  import {
5
5
  COMPACTION_PROMPT
6
- } from "./chunk-4LLGI372.js";
6
+ } from "./chunk-GKRYQ56N.js";
7
7
  import {
8
8
  getCurrentWindowMessageOptions
9
- } from "./chunk-2OO46UAW.js";
9
+ } from "./chunk-JTR3PC5I.js";
10
10
 
11
11
  // src/server/context/compactor.ts
12
12
  function appendCompactionPrompt(sessionId, append) {
@@ -36,4 +36,4 @@ export {
36
36
  COMPACTION_MAX_RATIO,
37
37
  shouldCompact
38
38
  };
39
- //# sourceMappingURL=chunk-U7XCK7WL.js.map
39
+ //# sourceMappingURL=chunk-5F7LNEEP.js.map
@@ -4,7 +4,7 @@ import {
4
4
  getEnabledSkillMetadata,
5
5
  isSkillEnabled,
6
6
  loadAllSkills
7
- } from "./chunk-Q33DL67W.js";
7
+ } from "./chunk-CRJ5J7U5.js";
8
8
  import {
9
9
  getGitBranch,
10
10
  isGitRepository,
@@ -14,10 +14,10 @@ import {
14
14
  getGateConfig,
15
15
  isTaskConflictError,
16
16
  isTaskGateError
17
- } from "./chunk-QBWJCO5K.js";
17
+ } from "./chunk-TJOKDC34.js";
18
18
  import {
19
19
  getSessionDisabledServers
20
- } from "./chunk-DG2YSWMC.js";
20
+ } from "./chunk-FIEFBRTQ.js";
21
21
  import {
22
22
  buildSignal,
23
23
  computeFileHash,
@@ -33,10 +33,10 @@ import {
33
33
  requireSession,
34
34
  validateActionWithPermission,
35
35
  validateFileForWrite
36
- } from "./chunk-76C2PVOC.js";
36
+ } from "./chunk-MAUQ6AW4.js";
37
37
  import {
38
38
  serverT
39
- } from "./chunk-4SBVW4UH.js";
39
+ } from "./chunk-JLHYB445.js";
40
40
  import {
41
41
  TurnMetrics,
42
42
  clearLLMFailure,
@@ -50,12 +50,12 @@ import {
50
50
  recordLLMFailure,
51
51
  sleepThroughRetryBackoff,
52
52
  streamLLMPure
53
- } from "./chunk-HEYU7FAY.js";
53
+ } from "./chunk-OA7KBQ2O.js";
54
54
  import {
55
55
  COMPACTION_PROMPT,
56
56
  buildBasePrompt,
57
57
  computeEffectiveTools
58
- } from "./chunk-4LLGI372.js";
58
+ } from "./chunk-GKRYQ56N.js";
59
59
  import {
60
60
  startInspectProxy
61
61
  } from "./chunk-LW6MMSTD.js";
@@ -72,7 +72,7 @@ import {
72
72
  spawnShellProcess,
73
73
  startProcessCommand,
74
74
  stopProcess
75
- } from "./chunk-SAGDTQXD.js";
75
+ } from "./chunk-UA2ATO3B.js";
76
76
  import {
77
77
  getMaxPerSession,
78
78
  getSessionProcessCount,
@@ -93,12 +93,12 @@ import {
93
93
  extractAbsolutePathsFromCommand,
94
94
  extractSensitivePathsFromCommand,
95
95
  resolveRelativeTraversals
96
- } from "./chunk-DBCWILV3.js";
96
+ } from "./chunk-RG326HS4.js";
97
97
  import {
98
98
  getCurrentContextWindowId,
99
99
  getCurrentWindowMessageOptions,
100
100
  getEventStore
101
- } from "./chunk-2OO46UAW.js";
101
+ } from "./chunk-JTR3PC5I.js";
102
102
  import {
103
103
  buildContextMessagesFromEventHistory,
104
104
  foldContextState,
@@ -108,13 +108,13 @@ import {
108
108
  handleToolResult,
109
109
  reorderToolMessages,
110
110
  stripOrphanedToolCalls
111
- } from "./chunk-MMGHIPBU.js";
111
+ } from "./chunk-AE2IBEUH.js";
112
112
  import {
113
113
  findAgentById,
114
114
  getRuntimeConfig,
115
115
  getSubAgents,
116
116
  loadAllAgentsDefault
117
- } from "./chunk-BHVR2YS5.js";
117
+ } from "./chunk-4F4ARGAM.js";
118
118
  import {
119
119
  createChatDoneMessage,
120
120
  createChatLLMRetryFailedMessage,
@@ -139,7 +139,7 @@ import {
139
139
  SETTINGS_KEYS,
140
140
  getSetting,
141
141
  setSetting
142
- } from "./chunk-QUAEH3MP.js";
142
+ } from "./chunk-EMXMTCSY.js";
143
143
  import {
144
144
  logger
145
145
  } from "./chunk-K44MW7JJ.js";
@@ -1498,6 +1498,7 @@ async function runTopLevelAgentLoop(config, turnMetrics) {
1498
1498
  });
1499
1499
  const modelSettings = sessionManager.getCurrentModelSettings(sessionId, config.mode);
1500
1500
  await resolveClient().complete({
1501
+ sessionId,
1501
1502
  messages: [{ role: "system", content: assembledRequest.systemPrompt }],
1502
1503
  tools: assembledRequest.tools,
1503
1504
  maxTokens: 1,
@@ -1598,6 +1599,7 @@ ${CONTINUE_PROMPT}` : CONTINUE_PROMPT;
1598
1599
  messageId: assistantMsgId,
1599
1600
  systemPrompt: assembledRequest.systemPrompt,
1600
1601
  llmClient: attemptClient,
1602
+ sessionId,
1601
1603
  messages: assembledRequest.messages,
1602
1604
  tools: assembledRequest.tools,
1603
1605
  toolChoice: "auto",
@@ -1729,7 +1731,7 @@ ${CONTINUE_PROMPT}` : CONTINUE_PROMPT;
1729
1731
  currentMaxTokensOverride = void 0;
1730
1732
  if (!compacting) {
1731
1733
  const contextState = sessionManager.getContextState(sessionId);
1732
- const { shouldCompact, appendCompactionPrompt } = await import("./compactor-KDTY4ERE.js");
1734
+ const { shouldCompact, appendCompactionPrompt } = await import("./compactor-UREBHSZQ.js");
1733
1735
  if (shouldCompact(
1734
1736
  contextState.currentTokens,
1735
1737
  contextState.maxTokens,
@@ -2445,7 +2447,7 @@ var callSubAgentTool = {
2445
2447
  };
2446
2448
  }
2447
2449
  try {
2448
- const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-NIPKV4YY.js");
2450
+ const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-AY6XEVJK.js");
2449
2451
  const toolRegistry = getToolRegistryForAgent2(agentDef);
2450
2452
  const turnMetrics = new TurnMetrics();
2451
2453
  const result = await executeSubAgent({
@@ -3549,11 +3551,11 @@ var mcpConfigTool = createTool(
3549
3551
  async function notifyContextChanged(sessionId) {
3550
3552
  context.sessionManager.setDynamicContextChanged(sessionId, true);
3551
3553
  mcpNotifyChanged?.(sessionId);
3552
- const { injectContextDriftReminders } = await import("./dynamic-context-SKHOUP4T.js");
3554
+ const { injectContextDriftReminders } = await import("./dynamic-context-KGSZ7TRQ.js");
3553
3555
  await injectContextDriftReminders(context.sessionManager, sessionId);
3554
3556
  }
3555
3557
  async function rebuildTools() {
3556
- const { setMcpTools: setMcpTools2 } = await import("./tools-NIPKV4YY.js");
3558
+ const { setMcpTools: setMcpTools2 } = await import("./tools-AY6XEVJK.js");
3557
3559
  const mcpTools = createMcpTools(mcpManagerForTools);
3558
3560
  setMcpTools2(mcpTools);
3559
3561
  }
@@ -3562,7 +3564,7 @@ var mcpConfigTool = createTool(
3562
3564
  if (servers.length === 0) {
3563
3565
  return helpers.success(serverT({ en: "No MCP servers configured.", fr: "Aucun serveur MCP configur\xE9." }));
3564
3566
  }
3565
- const { getSessionDisabledServers: getSessionDisabledServers2 } = await import("./session-overrides-ANQBKV74.js");
3567
+ const { getSessionDisabledServers: getSessionDisabledServers2 } = await import("./session-overrides-7OPGV7CQ.js");
3566
3568
  const disabledForSession = new Set(context.sessionId ? getSessionDisabledServers2(context.sessionId) : []);
3567
3569
  const visibleServers = servers.filter((server) => !disabledForSession.has(server.name));
3568
3570
  if (visibleServers.length === 0) {
@@ -4695,4 +4697,4 @@ export {
4695
4697
  getToolRegistryForAgent,
4696
4698
  createToolRegistry
4697
4699
  };
4698
- //# sourceMappingURL=chunk-N3PANDLT.js.map
4700
+ //# sourceMappingURL=chunk-5MGCTRKM.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  runAgentTurn
3
- } from "./chunk-2Q4THMD7.js";
3
+ } from "./chunk-GZJRXVVJ.js";
4
4
  import {
5
5
  executeSubAgent,
6
6
  getToolRegistryForAgent
7
- } from "./chunk-N3PANDLT.js";
7
+ } from "./chunk-5MGCTRKM.js";
8
8
  import {
9
9
  gitSpawnEnv
10
10
  } from "./chunk-J7GAZGZT.js";
@@ -15,39 +15,39 @@ import {
15
15
  loadProjectWorkflows,
16
16
  loadUserWorkflows,
17
17
  normalizeWorkflowScope
18
- } from "./chunk-QBWJCO5K.js";
18
+ } from "./chunk-TJOKDC34.js";
19
19
  import {
20
20
  serverT
21
- } from "./chunk-4SBVW4UH.js";
21
+ } from "./chunk-JLHYB445.js";
22
22
  import {
23
23
  TurnMetrics,
24
24
  createMessageStartEvent
25
- } from "./chunk-HEYU7FAY.js";
25
+ } from "./chunk-OA7KBQ2O.js";
26
26
  import {
27
27
  checkAborted,
28
28
  decodeUtf8,
29
29
  spawnShellProcess
30
- } from "./chunk-SAGDTQXD.js";
30
+ } from "./chunk-UA2ATO3B.js";
31
31
  import {
32
32
  terminateProcessTree
33
33
  } from "./chunk-I72ACQ6R.js";
34
34
  import {
35
35
  getCurrentContextWindowId,
36
36
  getEventStore
37
- } from "./chunk-2OO46UAW.js";
37
+ } from "./chunk-JTR3PC5I.js";
38
38
  import {
39
39
  findAgentById,
40
40
  getRuntimeConfig,
41
41
  loadAllAgentsDefault,
42
42
  resolveDefaultAgentId
43
- } from "./chunk-BHVR2YS5.js";
43
+ } from "./chunk-4F4ARGAM.js";
44
44
  import {
45
45
  createChatMessageMessage,
46
46
  createSessionRunningMessage
47
47
  } from "./chunk-OVAHNEFG.js";
48
48
  import {
49
49
  LLMError
50
- } from "./chunk-N5JKVNLH.js";
50
+ } from "./chunk-EE6VFEE6.js";
51
51
  import {
52
52
  logger
53
53
  } from "./chunk-K44MW7JJ.js";
@@ -1023,4 +1023,4 @@ export {
1023
1023
  abortRunnerRun,
1024
1024
  launchWorkflowRun
1025
1025
  };
1026
- //# sourceMappingURL=chunk-5CZPHAHN.js.map
1026
+ //# sourceMappingURL=chunk-66XJC5TA.js.map
@@ -0,0 +1,7 @@
1
+ // src/constants.ts
2
+ var VERSION = "2.0.140";
3
+
4
+ export {
5
+ VERSION
6
+ };
7
+ //# sourceMappingURL=chunk-6RYTDRUR.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveDefaultAgentId
3
- } from "./chunk-BHVR2YS5.js";
3
+ } from "./chunk-4F4ARGAM.js";
4
4
  import {
5
5
  getDatabase
6
6
  } from "./chunk-JU757HVI.js";
@@ -484,4 +484,4 @@ export {
484
484
  getLatestWorkflowExecution,
485
485
  clearWorkflowExecution
486
486
  };
487
- //# sourceMappingURL=chunk-X4PVR6AW.js.map
487
+ //# sourceMappingURL=chunk-7OHSAZLF.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveDefaultAgentId
3
- } from "./chunk-BHVR2YS5.js";
3
+ } from "./chunk-4F4ARGAM.js";
4
4
  import {
5
5
  normalizeAskOptions
6
6
  } from "./chunk-LCLH6ZUL.js";
@@ -983,4 +983,4 @@ export {
983
983
  buildSnapshot,
984
984
  buildSnapshotFromSessionState
985
985
  };
986
- //# sourceMappingURL=chunk-MMGHIPBU.js.map
986
+ //# sourceMappingURL=chunk-AE2IBEUH.js.map
@@ -11,7 +11,7 @@ import {
11
11
  deleteSetting,
12
12
  getSetting,
13
13
  setSetting
14
- } from "./chunk-QUAEH3MP.js";
14
+ } from "./chunk-EMXMTCSY.js";
15
15
 
16
16
  // src/server/context/instructions.ts
17
17
  import { readFile, access } from "fs/promises";
@@ -452,4 +452,4 @@ export {
452
452
  deleteSkill,
453
453
  deleteProjectSkill
454
454
  };
455
- //# sourceMappingURL=chunk-Q33DL67W.js.map
455
+ //# sourceMappingURL=chunk-CRJ5J7U5.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SETTINGS_KEYS,
3
3
  getSetting
4
- } from "./chunk-QUAEH3MP.js";
4
+ } from "./chunk-EMXMTCSY.js";
5
5
  import {
6
6
  logger
7
7
  } from "./chunk-K44MW7JJ.js";
@@ -44,7 +44,7 @@ var ChatHttpClient = class {
44
44
  async post(params, options) {
45
45
  const { url, headers, body } = this.buildRequest(params);
46
46
  logger.debug("HTTP request to LLM", { url, bodyKeys: Object.keys(params) });
47
- return postJson(url, headers, body, options);
47
+ return postJson(url, { ...headers, ...options?.headers }, body, options);
48
48
  }
49
49
  async createChatCompletion(params, options, returnRaw) {
50
50
  const response = await this.post(params, options);
@@ -194,4 +194,4 @@ export {
194
194
  ChatHttpClient,
195
195
  OpenAIHttpClient
196
196
  };
197
- //# sourceMappingURL=chunk-N5JKVNLH.js.map
197
+ //# sourceMappingURL=chunk-EE6VFEE6.js.map
@@ -31,6 +31,7 @@ var SETTINGS_KEYS = {
31
31
  DISPLAY_COLLAPSE_FAVORITES_BY_DEFAULT: "display.collapseFavoritesByDefault",
32
32
  DISPLAY_MODEL_FAVORITES: "display.modelFavorites",
33
33
  LLM_DYNAMIC_SYSTEM_PROMPT: "llm.dynamicSystemPrompt",
34
+ LLM_CAVEMAN_THINKING: "llm.cavemanThinking",
34
35
  CACHE_WARMING: "cache.warming",
35
36
  KEYBINDINGS: "keybindings",
36
37
  RETRY_PATTERNS: "agent.retryPatterns",
@@ -74,6 +75,7 @@ var SETTINGS_DEFAULTS = {
74
75
  [SETTINGS_KEYS.DISPLAY_COLLAPSE_FAVORITES_BY_DEFAULT]: "false",
75
76
  [SETTINGS_KEYS.DISPLAY_MODEL_FAVORITES]: "[]",
76
77
  [SETTINGS_KEYS.LLM_DYNAMIC_SYSTEM_PROMPT]: "false",
78
+ [SETTINGS_KEYS.LLM_CAVEMAN_THINKING]: "false",
77
79
  [SETTINGS_KEYS.CACHE_WARMING]: "false",
78
80
  [SETTINGS_KEYS.RETRY_PATTERNS]: JSON.stringify({ patterns: [], maxRetriesPerTurn: 10 }),
79
81
  [SETTINGS_KEYS.KEYBINDINGS]: JSON.stringify({
@@ -168,4 +170,4 @@ export {
168
170
  pruneFavoriteModels,
169
171
  getMaxVisibleItems
170
172
  };
171
- //# sourceMappingURL=chunk-QUAEH3MP.js.map
173
+ //# sourceMappingURL=chunk-EMXMTCSY.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  updateSessionMcpDisabledServers
3
- } from "./chunk-X4PVR6AW.js";
3
+ } from "./chunk-7OHSAZLF.js";
4
4
  import {
5
5
  getProject
6
6
  } from "./chunk-DPFET73G.js";
@@ -96,4 +96,4 @@ export {
96
96
  computeDisabledServersForProject,
97
97
  initSessionMcpOverrides
98
98
  };
99
- //# sourceMappingURL=chunk-DG2YSWMC.js.map
99
+ //# sourceMappingURL=chunk-FIEFBRTQ.js.map
@@ -1,6 +1,10 @@
1
1
  import {
2
2
  getPlatformShell
3
- } from "./chunk-MOYWDP73.js";
3
+ } from "./chunk-46Q2SHGJ.js";
4
+ import {
5
+ SETTINGS_KEYS,
6
+ getSetting
7
+ } from "./chunk-EMXMTCSY.js";
4
8
 
5
9
  // src/server/tools/tool-policy.ts
6
10
  var ALWAYS_ALLOWED = /* @__PURE__ */ new Set(["step_done"]);
@@ -22,6 +26,30 @@ function computeEffectiveTools(allowedTools, type) {
22
26
 
23
27
  // src/server/chat/prompts.ts
24
28
  import { basename } from "path";
29
+ var CAVEMAN_THINKING_SECTION = `## THINKING STYLE
30
+ VERY IMPORTANT: think caveman style \u2014 fragments, no full sentences.
31
+ BANNED in thinking: "the", "a", "an", "I should", "Let me", "Need to", "Found it", "User asks", "Now, ".
32
+ NEVER restate the question or recap earlier steps. Each thinking block = one fresh fragment, straight to the point.
33
+ BAD vs GOOD:
34
+ - "Let me look at ChatInput.tsx." \u2192 "Check ChatInput.tsx."
35
+ - "I need to run the tests." \u2192 "Run tests."
36
+ - "I should read the file first." \u2192 "Read file first."
37
+ - "Let me search for the pause button." \u2192 "Search web/src for 'pause'."
38
+ - "User asks where the pause button is in the code." \u2192 "Question: pause button location."
39
+ - "Now, how is this exposed?" \u2192 "How exposed?"
40
+ - "I found the answer." \u2192 "Done."
41
+ Full trace example (one line per thinking block):
42
+ - "Question: pause button location. Plan mode \u2014 answer only, no criteria."
43
+ - "Search web/src for 'pause'."
44
+ - "ChatInput.tsx ~line 700, PauseIcon render."
45
+ - "Answer: ChatInput.tsx, pause/stop row, ~line 700."
46
+ More fragments:
47
+ - "Test red: title mismatch. Fix string in ChatInput."
48
+ - "Run typecheck after edit."
49
+ - "Read file before edit. Check imports."
50
+ - "Blocker: happy-dom, no layout. Assert classes."
51
+ - "Wait for dev server restart before testing."
52
+ Same meaning, far fewer tokens.`;
25
53
  function buildBasePrompt(workdir, customInstructions, skills, modelName) {
26
54
  const instructionsSection = customInstructions ? `
27
55
 
@@ -30,6 +58,9 @@ function buildBasePrompt(workdir, customInstructions, skills, modelName) {
30
58
  ${customInstructions}` : "";
31
59
  const modelLine = modelName ? `
32
60
  Model: ${modelName}` : "";
61
+ const cavemanSection = getSetting(SETTINGS_KEYS.LLM_CAVEMAN_THINKING) === "true" ? `
62
+
63
+ ${CAVEMAN_THINKING_SECTION}` : "";
33
64
  return `You are OpenFox, an agentic assistant.
34
65
 
35
66
  Today's date is ${(/* @__PURE__ */ new Date()).toISOString().split("T")[0].replace(/-/g, "/")}
@@ -87,7 +118,7 @@ assistant: src/foo.c
87
118
 
88
119
  user: write tests for new feature
89
120
  assistant: [uses run_command tool to find where similar tests are defined, uses concurrent read file tool use blocks in one tool call to read relevant files at the same time, uses edit file tool to write new tests]
90
-
121
+ ${cavemanSection}
91
122
  ## FILE REFERENCES
92
123
  @ prefix, e.g. @src/index.ts or @web/components/.
93
124
  Relative to the working directory above. Strip leading @ and resolve against working directory, never treat as absolute path.
@@ -246,4 +277,4 @@ export {
246
277
  buildAgentSmallReminder,
247
278
  COMPACTION_PROMPT
248
279
  };
249
- //# sourceMappingURL=chunk-4LLGI372.js.map
280
+ //# sourceMappingURL=chunk-GKRYQ56N.js.map