openfox 2.0.105 → 2.0.106

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 (82) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/CHANGELOG.md +25 -0
  3. package/dist/agent-defaults/planner.agent.md +2 -1
  4. package/dist/{chat-handler-CQIDZUR7.js → chat-handler-A22X22VZ.js} +22 -22
  5. package/dist/{chunk-FGYOSQUR.js → chunk-26DEYDYV.js} +3 -3
  6. package/dist/{chunk-6SIX7P6O.js → chunk-2GM6SUIQ.js} +2 -2
  7. package/dist/{chunk-ZASSAZ73.js → chunk-33Q7LCVD.js} +2 -2
  8. package/dist/{chunk-S5HDT5RQ.js → chunk-3C73IUUL.js} +2 -2
  9. package/dist/{chunk-PP3WNUA6.js → chunk-46KNPXY6.js} +2 -2
  10. package/dist/{chunk-WWFH5GAR.js → chunk-6FPGJR7O.js} +2 -2
  11. package/dist/{chunk-AKUTOOSV.js → chunk-6M44ZHQA.js} +24 -24
  12. package/dist/{chunk-TFQSCHVU.js → chunk-6VNB4L4V.js} +3 -3
  13. package/dist/{chunk-KDJZGHSZ.js → chunk-AYUUGKZU.js} +13 -15
  14. package/dist/chunk-C5YV3EA4.js +7 -0
  15. package/dist/{chunk-B56G5OEF.js → chunk-D6ODGTSZ.js} +5 -3
  16. package/dist/{chunk-6XDKVVYS.js → chunk-G2VLGZ3Y.js} +255 -163
  17. package/dist/{chunk-DMI2BXHA.js → chunk-GXW4CRR5.js} +7 -6
  18. package/dist/{chunk-EIJFYENT.js → chunk-HU22EVEM.js} +7 -7
  19. package/dist/{chunk-OUMHR7LR.js → chunk-IA4Y3CKA.js} +7 -6
  20. package/dist/{chunk-SPA7PQPJ.js → chunk-KIAKWUZ3.js} +2 -2
  21. package/dist/{chunk-GLF65XDS.js → chunk-LCQ5AN6Y.js} +8 -1
  22. package/dist/{chunk-B76OP3OE.js → chunk-LOHVZGCM.js} +4 -4
  23. package/dist/{chunk-UADZ2LZJ.js → chunk-OEPRHAIO.js} +3 -3
  24. package/dist/{chunk-SGGFVTMP.js → chunk-P4APMCTX.js} +84 -24
  25. package/dist/{chunk-LG57PZYL.js → chunk-QBKAW5H4.js} +7 -7
  26. package/dist/{chunk-D3SXT3BL.js → chunk-RRTKVJMF.js} +5 -10
  27. package/dist/{chunk-J27BLIPY.js → chunk-SGJ3LSVA.js} +3 -2
  28. package/dist/{chunk-6IXRISXA.js → chunk-SUTJJWUK.js} +7 -7
  29. package/dist/{chunk-ERKPMNC7.js → chunk-TB7TTPYQ.js} +2 -2
  30. package/dist/{chunk-UUMJ5PAW.js → chunk-UCIZV76E.js} +2 -2
  31. package/dist/{chunk-EF7KGWF6.js → chunk-UXQN7FGB.js} +2 -2
  32. package/dist/{chunk-5VKT34HE.js → chunk-V6Y6OLB4.js} +2 -2
  33. package/dist/{chunk-62QCBNPE.js → chunk-WLJJRX22.js} +10 -3
  34. package/dist/{chunk-ERTTKKCE.js → chunk-X3USQHHK.js} +2 -2
  35. package/dist/cli/dev.js +1 -1
  36. package/dist/cli/index.js +1 -1
  37. package/dist/{client-XT4VHS7E.js → client-MP3FSNN7.js} +5 -5
  38. package/dist/{compactor-JMO7FHYA.js → compactor-KK2BVJK5.js} +10 -10
  39. package/dist/{config-3FKJV3KI.js → config-HX7FDKGJ.js} +2 -2
  40. package/dist/{dynamic-context-UJE6F7XT.js → dynamic-context-ZUXI5UTW.js} +9 -9
  41. package/dist/{events-BGVLDGLK.js → events-OJ2R6OEM.js} +7 -7
  42. package/dist/{folding-AJMZBHNR.js → folding-DUZSKCZF.js} +5 -5
  43. package/dist/http-client-KJXFSK7A.js +11 -0
  44. package/dist/{inspect-proxy-GF6OI7MR.js → inspect-proxy-N42Z5TOG.js} +4 -4
  45. package/dist/{manager-GGIIENDX.js → manager-N27WNW5B.js} +5 -5
  46. package/dist/{model-overrides-BLEFI7FQ.js → model-overrides-36SQR3JR.js} +4 -4
  47. package/dist/{openFolder-Z27FEM5M.js → openFolder-HX7X356L.js} +2 -2
  48. package/dist/{orchestrator-Y2MBWVOB.js → orchestrator-VZORJ7KF.js} +21 -21
  49. package/dist/package.json +4 -2
  50. package/dist/{path-security-JCDBLFIE.js → path-security-QCIA6YFV.js} +8 -8
  51. package/dist/{permissions-CGEK3DGZ.js → permissions-K6YEA2ZZ.js} +12 -1
  52. package/dist/{platform-GZ2WIDS5.js → platform-Q6T3AUHA.js} +4 -4
  53. package/dist/{processor-3IURFW2N.js → processor-QYVHKRIV.js} +21 -21
  54. package/dist/{project-creator-SMWFMIU5.js → project-creator-BVA55HY6.js} +4 -4
  55. package/dist/{projects-M5XKC7O6.js → projects-PQXME5S4.js} +3 -3
  56. package/dist/{protocol-rfiBDoXm.d.ts → protocol-zRSsysOe.d.ts} +1 -1
  57. package/dist/provider/index.d.ts +4 -4
  58. package/dist/{provider-ZXYITGFU.js → provider-RQQ5JN34.js} +8 -8
  59. package/dist/{provider-manager-QH5IIGHB.js → provider-manager-RUC5QQ75.js} +6 -6
  60. package/dist/{registry-M2QVGRNK.js → registry-BDSTPV65.js} +4 -4
  61. package/dist/{serve-OYLEY3HD.js → serve-2O7G2WZF.js} +30 -30
  62. package/dist/server/index.d.ts +33 -4
  63. package/dist/server/index.js +29 -29
  64. package/dist/server-CYE6XY7J.js +47 -0
  65. package/dist/{session-overrides-HA5IQYLI.js → session-overrides-SFWPS5CT.js} +6 -6
  66. package/dist/{sessions-ZV2WRC6K.js → sessions-TZNUQJ2I.js} +5 -5
  67. package/dist/{settings-TGCITCVA.js → settings-5LG7IB3K.js} +3 -3
  68. package/dist/shared/index.d.ts +3 -3
  69. package/dist/{tools-BG44DIYU.js → tools-Y4F4HJPO.js} +19 -19
  70. package/dist/{types-o0v5xVxu.d.ts → types-CTl70hba.d.ts} +12 -1
  71. package/dist/{types-o-YQ3Bfq.d.ts → types-_uF_PRaD.d.ts} +1 -1
  72. package/dist/{update-SOCIS7KO.js → update-QEZIUJHR.js} +2 -2
  73. package/dist/web/assets/index-BxI3Y9C7.js +323 -0
  74. package/dist/web/index.html +1 -1
  75. package/dist/web/sw.js +1 -1
  76. package/dist/workflow-defaults/default.workflow.json +3 -3
  77. package/dist/{workspace-2NDXTCVR.js → workspace-2OG5VQG6.js} +4 -4
  78. package/package.json +4 -2
  79. package/dist/chunk-UBF62JJI.js +0 -7
  80. package/dist/http-client-A7A4XWNK.js +0 -11
  81. package/dist/server-L6YS6A6J.js +0 -47
  82. package/dist/web/assets/index-BHIT-lGU.js +0 -323
package/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.106 - 2026-08-02
4
+
5
+ ### Features
6
+
7
+ - **Workflow choice steps** — user picks a fork and the run diverges down its own independent branch.
8
+ - **Wrong-branch write protection** — Build & Verify won't run when session and actual git branches diverge.
9
+
10
+ ### Enhancements
11
+
12
+ - **Vision fallback API key** — hosted OpenAI-compatible vision backends now accept an API key.
13
+ - **RTK pairing warning** — settings warn when RTK auto-rewrite is paired with cmd/PowerShell on Windows.
14
+ - **'What to test' tutorial** — the built-in Build & Verify workflow's last step summarizes it.
15
+ - **Planner stops asking to switch to build** — it waits for the mode reminder instead of a moot yes/no.
16
+ - **Clear-all confirmation stays visible** — no longer hidden below the fold in the criteria editor.
17
+
18
+ ### Bug Fixes
19
+
20
+ - **run_command output auto-scroll restored** — streaming output follows the tail while the command runs.
21
+ - **Per-project workflows** — follow the active project and show up in the launcher per project.
22
+ - **Workspace switch keeps the prompt cache** — new workspace arrives via system reminder instead.
23
+ - **Project skills load from the session dir** — no longer read from the server's working directory.
24
+ - **Windows reliability fixes** — folder opening, workspace deletion, file search, and permission checks.
25
+ - **Custom command deletion fixed** — overriding commands can be deleted again.
26
+ - **sshpass/nix-wrapped commands detected** — remote execution is recognized and confirmed properly.
27
+
3
28
  ## 2.0.105 - 2026-08-01
4
29
 
5
30
  ### Features
package/dist/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.106 - 2026-08-02
4
+
5
+ ### Features
6
+
7
+ - **Workflow choice steps** — user picks a fork and the run diverges down its own independent branch.
8
+ - **Wrong-branch write protection** — Build & Verify won't run when session and actual git branches diverge.
9
+
10
+ ### Enhancements
11
+
12
+ - **Vision fallback API key** — hosted OpenAI-compatible vision backends now accept an API key.
13
+ - **RTK pairing warning** — settings warn when RTK auto-rewrite is paired with cmd/PowerShell on Windows.
14
+ - **'What to test' tutorial** — the built-in Build & Verify workflow's last step summarizes it.
15
+ - **Planner stops asking to switch to build** — it waits for the mode reminder instead of a moot yes/no.
16
+ - **Clear-all confirmation stays visible** — no longer hidden below the fold in the criteria editor.
17
+
18
+ ### Bug Fixes
19
+
20
+ - **run_command output auto-scroll restored** — streaming output follows the tail while the command runs.
21
+ - **Per-project workflows** — follow the active project and show up in the launcher per project.
22
+ - **Workspace switch keeps the prompt cache** — new workspace arrives via system reminder instead.
23
+ - **Project skills load from the session dir** — no longer read from the server's working directory.
24
+ - **Windows reliability fixes** — folder opening, workspace deletion, file search, and permission checks.
25
+ - **Custom command deletion fixed** — overriding commands can be deleted again.
26
+ - **sshpass/nix-wrapped commands detected** — remote execution is recognized and confirmed properly.
27
+
3
28
  ## 2.0.105 - 2026-08-01
4
29
 
5
30
  ### Features
@@ -30,5 +30,6 @@ You MUST NOT make any edits, implementations, commits, config changes, or other
30
30
 
31
31
  - Understand the user's goal before locking in details.
32
32
  - Explore the codebase with read-only actions when needed.
33
- - Present clear, verifiable criteria and ask the user to approve or refine them.
33
+ - Present clear, verifiable criteria for the user to approve or refine.
34
34
  - Stay in planning mode until the user explicitly switches to build mode.
35
+ - Never ask "Do you approve these criteria and shall I switch to build? (Yes/No)" — answering cannot switch modes; mode changes are driven externally, not by your question. Present the criteria plainly and stop there — do not write until a new <system-reminder> switches you to build mode, which only the user or a launched workflow can trigger.
@@ -2,48 +2,48 @@ import {
2
2
  buildRunChatTurnParams,
3
3
  finalizeTurnCompletion,
4
4
  generateSessionNameForSession
5
- } from "./chunk-6IXRISXA.js";
5
+ } from "./chunk-SUTJJWUK.js";
6
6
  import {
7
7
  runChatTurn
8
- } from "./chunk-KDJZGHSZ.js";
9
- import "./chunk-EIJFYENT.js";
10
- import "./chunk-AKUTOOSV.js";
11
- import "./chunk-B76OP3OE.js";
8
+ } from "./chunk-AYUUGKZU.js";
9
+ import "./chunk-HU22EVEM.js";
10
+ import "./chunk-6M44ZHQA.js";
11
+ import "./chunk-LOHVZGCM.js";
12
12
  import "./chunk-5M45NHQ2.js";
13
- import "./chunk-J27BLIPY.js";
14
- import "./chunk-ZASSAZ73.js";
15
- import "./chunk-TFQSCHVU.js";
13
+ import "./chunk-SGJ3LSVA.js";
14
+ import "./chunk-33Q7LCVD.js";
15
+ import "./chunk-6VNB4L4V.js";
16
16
  import "./chunk-I72ACQ6R.js";
17
17
  import "./chunk-JE7LW7Y6.js";
18
18
  import "./chunk-VKWVPQJ5.js";
19
- import "./chunk-D3SXT3BL.js";
19
+ import "./chunk-RRTKVJMF.js";
20
20
  import "./chunk-J7GAZGZT.js";
21
- import "./chunk-UADZ2LZJ.js";
22
- import "./chunk-ERTTKKCE.js";
21
+ import "./chunk-OEPRHAIO.js";
22
+ import "./chunk-X3USQHHK.js";
23
23
  import {
24
24
  getEventStore
25
- } from "./chunk-DMI2BXHA.js";
25
+ } from "./chunk-GXW4CRR5.js";
26
26
  import {
27
27
  createChatMessageMessage,
28
28
  createPhaseChangedMessage,
29
29
  createSessionRunningMessage
30
30
  } from "./chunk-27SDWNKL.js";
31
31
  import "./chunk-JAX5OEMM.js";
32
- import "./chunk-EF7KGWF6.js";
33
- import "./chunk-5VKT34HE.js";
34
- import "./chunk-WWFH5GAR.js";
35
- import "./chunk-S5HDT5RQ.js";
36
- import "./chunk-OUMHR7LR.js";
37
- import "./chunk-6SIX7P6O.js";
32
+ import "./chunk-UXQN7FGB.js";
33
+ import "./chunk-V6Y6OLB4.js";
34
+ import "./chunk-6FPGJR7O.js";
35
+ import "./chunk-3C73IUUL.js";
36
+ import "./chunk-IA4Y3CKA.js";
37
+ import "./chunk-2GM6SUIQ.js";
38
38
  import "./chunk-J2GP3J3X.js";
39
39
  import "./chunk-V4IE7HJY.js";
40
40
  import "./chunk-YHEQTVFV.js";
41
41
  import "./chunk-WDJOSRIB.js";
42
- import "./chunk-SPA7PQPJ.js";
43
- import "./chunk-GLF65XDS.js";
42
+ import "./chunk-KIAKWUZ3.js";
43
+ import "./chunk-LCQ5AN6Y.js";
44
44
  import "./chunk-K44MW7JJ.js";
45
45
  import "./chunk-4R7G5JB6.js";
46
- import "./chunk-B56G5OEF.js";
46
+ import "./chunk-D6ODGTSZ.js";
47
47
  import "./chunk-CQGTEGKL.js";
48
48
  import "./chunk-5WRI5ZAA.js";
49
49
 
@@ -166,4 +166,4 @@ export {
166
166
  startChatSession,
167
167
  stopSessionExecution
168
168
  };
169
- //# sourceMappingURL=chat-handler-CQIDZUR7.js.map
169
+ //# sourceMappingURL=chat-handler-A22X22VZ.js.map
@@ -3,10 +3,10 @@ import {
3
3
  } from "./chunk-5M45NHQ2.js";
4
4
  import {
5
5
  COMPACTION_PROMPT
6
- } from "./chunk-J27BLIPY.js";
6
+ } from "./chunk-SGJ3LSVA.js";
7
7
  import {
8
8
  getCurrentWindowMessageOptions
9
- } from "./chunk-DMI2BXHA.js";
9
+ } from "./chunk-GXW4CRR5.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-FGYOSQUR.js.map
39
+ //# sourceMappingURL=chunk-26DEYDYV.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SETTINGS_KEYS,
3
3
  getSetting
4
- } from "./chunk-SPA7PQPJ.js";
4
+ } from "./chunk-KIAKWUZ3.js";
5
5
  import {
6
6
  logger
7
7
  } from "./chunk-K44MW7JJ.js";
@@ -455,4 +455,4 @@ export {
455
455
  getOverrideAgentIds,
456
456
  resolveDefaultAgentId
457
457
  };
458
- //# sourceMappingURL=chunk-6SIX7P6O.js.map
458
+ //# sourceMappingURL=chunk-2GM6SUIQ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getProjectByWorkdir
3
- } from "./chunk-WWFH5GAR.js";
3
+ } from "./chunk-6FPGJR7O.js";
4
4
  import {
5
5
  logger
6
6
  } from "./chunk-K44MW7JJ.js";
@@ -343,4 +343,4 @@ export {
343
343
  startInspectProxy,
344
344
  stopAllInspectProxies
345
345
  };
346
- //# sourceMappingURL=chunk-ZASSAZ73.js.map
346
+ //# sourceMappingURL=chunk-33Q7LCVD.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveDefaultAgentId
3
- } from "./chunk-6SIX7P6O.js";
3
+ } from "./chunk-2GM6SUIQ.js";
4
4
 
5
5
  // src/server/events/apply-events.ts
6
6
  function markComplete(msg, reason) {
@@ -929,4 +929,4 @@ export {
929
929
  buildSnapshot,
930
930
  buildSnapshotFromSessionState
931
931
  };
932
- //# sourceMappingURL=chunk-S5HDT5RQ.js.map
932
+ //# sourceMappingURL=chunk-3C73IUUL.js.map
@@ -17,7 +17,7 @@ import {
17
17
  import {
18
18
  LLMError,
19
19
  OpenAIHttpClient
20
- } from "./chunk-ERKPMNC7.js";
20
+ } from "./chunk-TB7TTPYQ.js";
21
21
  import {
22
22
  logger
23
23
  } from "./chunk-K44MW7JJ.js";
@@ -310,4 +310,4 @@ function createLLMClient(config, initialBackend = "unknown") {
310
310
  export {
311
311
  createLLMClient
312
312
  };
313
- //# sourceMappingURL=chunk-PP3WNUA6.js.map
313
+ //# sourceMappingURL=chunk-46KNPXY6.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getDatabase
3
- } from "./chunk-GLF65XDS.js";
3
+ } from "./chunk-LCQ5AN6Y.js";
4
4
 
5
5
  // src/server/db/projects.ts
6
6
  function createProject(name, workdir) {
@@ -129,4 +129,4 @@ export {
129
129
  deleteProject,
130
130
  toggleStar
131
131
  };
132
- //# sourceMappingURL=chunk-WWFH5GAR.js.map
132
+ //# sourceMappingURL=chunk-6FPGJR7O.js.map
@@ -4,7 +4,7 @@ import {
4
4
  getEnabledSkillMetadata,
5
5
  isSkillEnabled,
6
6
  loadAllSkills
7
- } from "./chunk-B76OP3OE.js";
7
+ } from "./chunk-LOHVZGCM.js";
8
8
  import {
9
9
  TurnMetrics,
10
10
  consumeStreamGenerator,
@@ -19,10 +19,10 @@ import {
19
19
  COMPACTION_PROMPT,
20
20
  buildBasePrompt,
21
21
  computeEffectiveTools
22
- } from "./chunk-J27BLIPY.js";
22
+ } from "./chunk-SGJ3LSVA.js";
23
23
  import {
24
24
  startInspectProxy
25
- } from "./chunk-ZASSAZ73.js";
25
+ } from "./chunk-33Q7LCVD.js";
26
26
  import {
27
27
  checkAborted,
28
28
  createProcess,
@@ -33,7 +33,7 @@ import {
33
33
  spawnShellProcess,
34
34
  startProcessCommand,
35
35
  stopProcess
36
- } from "./chunk-TFQSCHVU.js";
36
+ } from "./chunk-6VNB4L4V.js";
37
37
  import {
38
38
  getMaxPerSession,
39
39
  getSessionProcessCount,
@@ -49,22 +49,22 @@ import {
49
49
  getGitBranch,
50
50
  isGitRepository,
51
51
  listWorkspaces
52
- } from "./chunk-D3SXT3BL.js";
52
+ } from "./chunk-RRTKVJMF.js";
53
53
  import {
54
54
  getSessionDisabledServers
55
- } from "./chunk-UADZ2LZJ.js";
55
+ } from "./chunk-OEPRHAIO.js";
56
56
  import {
57
57
  PathAccessDeniedError,
58
58
  extractAbsolutePathsFromCommand,
59
59
  extractSensitivePathsFromCommand,
60
60
  registerPathConfirmation,
61
61
  requestPathAccess
62
- } from "./chunk-ERTTKKCE.js";
62
+ } from "./chunk-X3USQHHK.js";
63
63
  import {
64
64
  getCurrentContextWindowId,
65
65
  getCurrentWindowMessageOptions,
66
66
  getEventStore
67
- } from "./chunk-DMI2BXHA.js";
67
+ } from "./chunk-GXW4CRR5.js";
68
68
  import {
69
69
  createChatDoneMessage,
70
70
  createChatMessageMessage,
@@ -78,7 +78,7 @@ import {
78
78
  } from "./chunk-JAX5OEMM.js";
79
79
  import {
80
80
  resolveLLMClientForAgent
81
- } from "./chunk-5VKT34HE.js";
81
+ } from "./chunk-V6Y6OLB4.js";
82
82
  import {
83
83
  buildContextMessagesFromEventHistory,
84
84
  foldContextState,
@@ -88,13 +88,13 @@ import {
88
88
  handleToolResult,
89
89
  reorderToolMessages,
90
90
  stripOrphanedToolCalls
91
- } from "./chunk-S5HDT5RQ.js";
91
+ } from "./chunk-3C73IUUL.js";
92
92
  import {
93
93
  findAgentById,
94
94
  getRuntimeConfig,
95
95
  getSubAgents,
96
96
  loadAllAgentsDefault
97
- } from "./chunk-6SIX7P6O.js";
97
+ } from "./chunk-2GM6SUIQ.js";
98
98
  import {
99
99
  modelSupportsVision
100
100
  } from "./chunk-V4IE7HJY.js";
@@ -112,14 +112,14 @@ import {
112
112
  import {
113
113
  SETTINGS_KEYS,
114
114
  getSetting
115
- } from "./chunk-SPA7PQPJ.js";
115
+ } from "./chunk-KIAKWUZ3.js";
116
116
  import {
117
117
  logger
118
118
  } from "./chunk-K44MW7JJ.js";
119
119
  import {
120
120
  loadGlobalConfig,
121
121
  saveGlobalConfig
122
- } from "./chunk-B56G5OEF.js";
122
+ } from "./chunk-D6ODGTSZ.js";
123
123
  import {
124
124
  getGlobalConfigDir
125
125
  } from "./chunk-CQGTEGKL.js";
@@ -136,7 +136,7 @@ async function requestUserConfirmation(context, toolLabel, desc) {
136
136
  if (context.dangerLevel === "dangerous") return Promise.resolve(true);
137
137
  if (toolLabel === "workspace" || toolLabel === "command") {
138
138
  try {
139
- const { getSetting: getSetting2, SETTINGS_KEYS: SETTINGS_KEYS2 } = await import("./settings-TGCITCVA.js");
139
+ const { getSetting: getSetting2, SETTINGS_KEYS: SETTINGS_KEYS2 } = await import("./settings-5LG7IB3K.js");
140
140
  if (getSetting2(SETTINGS_KEYS2.CONFIRM_ON_WORKSPACE_ACTIONS) !== "true") {
141
141
  return Promise.resolve(true);
142
142
  }
@@ -1768,7 +1768,7 @@ async function runTopLevelAgentLoop(config, turnMetrics) {
1768
1768
  const session2 = sessionManager.requireSession(sessionId);
1769
1769
  const runtimeConfig2 = getRuntimeConfig();
1770
1770
  const configDir2 = getGlobalConfigDir(runtimeConfig2.mode ?? "production");
1771
- const skills2 = await getEnabledSkillMetadata(configDir2, runtimeConfig2.workdir);
1771
+ const skills2 = await getEnabledSkillMetadata(configDir2, sessionManager.getEffectiveWorkdir(sessionId));
1772
1772
  const { content: instructionContent2 } = await getAllInstructions(session2.workdir, session2.projectId);
1773
1773
  const toolRegistry2 = config.getToolRegistry();
1774
1774
  const assembledRequest2 = await config.assembleRequest({
@@ -1823,7 +1823,7 @@ ${CONTINUE_PROMPT}` : CONTINUE_PROMPT;
1823
1823
  }
1824
1824
  const runtimeConfig = getRuntimeConfig();
1825
1825
  const configDir = getGlobalConfigDir(runtimeConfig.mode ?? "production");
1826
- const skills = await getEnabledSkillMetadata(configDir, runtimeConfig.workdir);
1826
+ const skills = await getEnabledSkillMetadata(configDir, sessionManager.getEffectiveWorkdir(sessionId));
1827
1827
  if (signal?.aborted) throw new Error("Aborted");
1828
1828
  const assembledRequest = await config.assembleRequest({
1829
1829
  workdir: session.workdir,
@@ -1919,7 +1919,7 @@ ${CONTINUE_PROMPT}` : CONTINUE_PROMPT;
1919
1919
  sessionManager.setCurrentContextSize(sessionId, result.usage.promptTokens, config.subAgentMetadata?.subAgentId);
1920
1920
  if (!compacting) {
1921
1921
  const contextState2 = sessionManager.getContextState(sessionId);
1922
- const { shouldCompact, appendCompactionPrompt } = await import("./compactor-JMO7FHYA.js");
1922
+ const { shouldCompact, appendCompactionPrompt } = await import("./compactor-KK2BVJK5.js");
1923
1923
  if (shouldCompact(
1924
1924
  contextState2.currentTokens,
1925
1925
  contextState2.maxTokens,
@@ -2289,7 +2289,7 @@ async function describeImageFromDataUrl(dataUrl, visionModel, options) {
2289
2289
  // src/server/context/image-processor.ts
2290
2290
  async function loadVisionModelFromGlobalConfig() {
2291
2291
  try {
2292
- const { loadGlobalConfig: loadGlobalConfig2, resolveVisionFallback } = await import("./config-3FKJV3KI.js");
2292
+ const { loadGlobalConfig: loadGlobalConfig2, resolveVisionFallback } = await import("./config-HX7FDKGJ.js");
2293
2293
  const runtimeConfig = getRuntimeConfig();
2294
2294
  const mode = runtimeConfig.mode ?? "production";
2295
2295
  const globalConfig = await loadGlobalConfig2(mode);
@@ -2793,7 +2793,7 @@ async function executeSubAgent(options) {
2793
2793
  const { content: instructionContent } = await getAllInstructions(effectiveWorkdir, session.projectId);
2794
2794
  const config = getRuntimeConfig();
2795
2795
  const configDir = getGlobalConfigDir(config.mode ?? "production");
2796
- const skills = await getEnabledSkillMetadata(configDir, config.workdir);
2796
+ const skills = await getEnabledSkillMetadata(configDir, effectiveWorkdir);
2797
2797
  const hasRunCommand = agentDef.metadata.allowedTools?.includes("run_command") ?? false;
2798
2798
  const gitignoreSection = hasRunCommand ? await loadGitIgnoreRules(effectiveWorkdir) : "";
2799
2799
  const systemPrompt = buildBasePrompt(effectiveWorkdir, void 0, skills.length > 0 ? skills : void 0, llmClient.getModel()) + "\n\n" + agentDef.prompt + (gitignoreSection ? "\n\n" + gitignoreSection : "") + RETURN_VALUE_INSTRUCTION;
@@ -2907,7 +2907,7 @@ var callSubAgentTool = {
2907
2907
  };
2908
2908
  }
2909
2909
  try {
2910
- const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-BG44DIYU.js");
2910
+ const { getToolRegistryForAgent: getToolRegistryForAgent2 } = await import("./tools-Y4F4HJPO.js");
2911
2911
  const toolRegistry = getToolRegistryForAgent2(agentDef);
2912
2912
  const turnMetrics = new TurnMetrics();
2913
2913
  const result = await executeSubAgent({
@@ -2953,7 +2953,7 @@ Resolve relative paths in these instructions from that directory.
2953
2953
 
2954
2954
  ${skill.prompt}`;
2955
2955
  }
2956
- var handler = async (args, _context, helpers) => {
2956
+ var handler = async (args, context, helpers) => {
2957
2957
  const { skillId } = args;
2958
2958
  if (!skillId) {
2959
2959
  return helpers.error("Missing required parameter: skillId");
@@ -2963,7 +2963,7 @@ var handler = async (args, _context, helpers) => {
2963
2963
  }
2964
2964
  const config = getRuntimeConfig();
2965
2965
  const configDir = getGlobalConfigDir(config.mode ?? "production");
2966
- const allSkills = await loadAllSkills(configDir, config.workdir);
2966
+ const allSkills = await loadAllSkills(configDir, context.workdir);
2967
2967
  const skill = findSkillById(skillId, allSkills);
2968
2968
  if (!skill) {
2969
2969
  const available = allSkills.map((s) => s.metadata.id).join(", ");
@@ -3929,7 +3929,7 @@ var mcpConfigTool = createTool(
3929
3929
  mcpNotifyChanged?.(sessionId);
3930
3930
  }
3931
3931
  async function rebuildTools() {
3932
- const { setMcpTools: setMcpTools2 } = await import("./tools-BG44DIYU.js");
3932
+ const { setMcpTools: setMcpTools2 } = await import("./tools-Y4F4HJPO.js");
3933
3933
  const mcpTools = createMcpTools(mcpManagerForTools);
3934
3934
  setMcpTools2(mcpTools);
3935
3935
  }
@@ -4604,4 +4604,4 @@ export {
4604
4604
  getToolRegistryForAgent,
4605
4605
  createToolRegistry
4606
4606
  };
4607
- //# sourceMappingURL=chunk-AKUTOOSV.js.map
4607
+ //# sourceMappingURL=chunk-6M44ZHQA.js.map
@@ -11,11 +11,11 @@ import {
11
11
  } from "./chunk-I72ACQ6R.js";
12
12
  import {
13
13
  getPlatformShell
14
- } from "./chunk-EF7KGWF6.js";
14
+ } from "./chunk-UXQN7FGB.js";
15
15
  import {
16
16
  SETTINGS_KEYS,
17
17
  getSetting
18
- } from "./chunk-SPA7PQPJ.js";
18
+ } from "./chunk-KIAKWUZ3.js";
19
19
 
20
20
  // src/server/utils/shell.ts
21
21
  import { spawn } from "child_process";
@@ -163,4 +163,4 @@ export {
163
163
  getSessionProcesses2 as getSessionProcesses,
164
164
  getProcessLogs
165
165
  };
166
- //# sourceMappingURL=chunk-TFQSCHVU.js.map
166
+ //# sourceMappingURL=chunk-6VNB4L4V.js.map
@@ -2,18 +2,18 @@ import {
2
2
  buildCachedPrompt,
3
3
  computeDynamicContextHash,
4
4
  getToolFingerprint
5
- } from "./chunk-EIJFYENT.js";
5
+ } from "./chunk-HU22EVEM.js";
6
6
  import {
7
7
  createAssemblyResult,
8
8
  getConversationMessages,
9
9
  getToolRegistryForAgent,
10
10
  processEventsForConversation,
11
11
  runTopLevelAgentLoop
12
- } from "./chunk-AKUTOOSV.js";
12
+ } from "./chunk-6M44ZHQA.js";
13
13
  import {
14
14
  getAllInstructions,
15
15
  getEnabledSkillMetadata
16
- } from "./chunk-B76OP3OE.js";
16
+ } from "./chunk-LOHVZGCM.js";
17
17
  import {
18
18
  TurnMetrics,
19
19
  createChatDoneEvent,
@@ -22,24 +22,24 @@ import {
22
22
  import {
23
23
  buildAgentReminder,
24
24
  buildAgentSmallReminder
25
- } from "./chunk-J27BLIPY.js";
25
+ } from "./chunk-SGJ3LSVA.js";
26
26
  import {
27
27
  PathAccessDeniedError
28
- } from "./chunk-ERTTKKCE.js";
28
+ } from "./chunk-X3USQHHK.js";
29
29
  import {
30
30
  getCurrentContextWindowId,
31
31
  getCurrentWindowMessageOptions,
32
32
  getEventStore
33
- } from "./chunk-DMI2BXHA.js";
33
+ } from "./chunk-GXW4CRR5.js";
34
34
  import {
35
35
  buildSnapshotFromSessionState
36
- } from "./chunk-S5HDT5RQ.js";
36
+ } from "./chunk-3C73IUUL.js";
37
37
  import {
38
38
  findAgentById,
39
39
  getRuntimeConfig,
40
40
  loadAllAgentsDefault,
41
41
  resolveDefaultAgentId
42
- } from "./chunk-6SIX7P6O.js";
42
+ } from "./chunk-2GM6SUIQ.js";
43
43
  import {
44
44
  logger
45
45
  } from "./chunk-K44MW7JJ.js";
@@ -49,7 +49,7 @@ import {
49
49
 
50
50
  // src/server/chat/orchestrator.ts
51
51
  async function buildRetryPatterns() {
52
- const { getSetting, SETTINGS_KEYS } = await import("./settings-TGCITCVA.js");
52
+ const { getSetting, SETTINGS_KEYS } = await import("./settings-5LG7IB3K.js");
53
53
  const raw = getSetting(SETTINGS_KEYS.RETRY_PATTERNS);
54
54
  if (!raw) {
55
55
  const oldXmlProtection = getSetting("llm.disableXmlProtection");
@@ -231,13 +231,11 @@ async function runAgentTurn(options, turnMetrics, agentId, append, callbacks) {
231
231
  if (!options.warmup) {
232
232
  injectAgentReminder(options.sessionId, agentDef);
233
233
  }
234
- const { content: instructionContent } = await getAllInstructions(
235
- options.sessionManager.requireSession(options.sessionId).workdir,
236
- options.sessionManager.requireSession(options.sessionId).projectId
237
- );
234
+ const session = options.sessionManager.requireSession(options.sessionId);
235
+ const { content: instructionContent } = await getAllInstructions(session.workdir, session.projectId);
238
236
  const runtimeConfig = getRuntimeConfig();
239
237
  const configDir = getGlobalConfigDir(runtimeConfig.mode ?? "production");
240
- const skills = await getEnabledSkillMetadata(configDir, runtimeConfig.workdir);
238
+ const skills = await getEnabledSkillMetadata(configDir, options.sessionManager.getEffectiveWorkdir(options.sessionId));
241
239
  return runTopLevelAgentLoop(
242
240
  {
243
241
  mode: agentId,
@@ -321,4 +319,4 @@ export {
321
319
  runChatTurn,
322
320
  runAgentTurn
323
321
  };
324
- //# sourceMappingURL=chunk-KDJZGHSZ.js.map
322
+ //# sourceMappingURL=chunk-AYUUGKZU.js.map
@@ -0,0 +1,7 @@
1
+ // src/constants.ts
2
+ var VERSION = "2.0.106";
3
+
4
+ export {
5
+ VERSION
6
+ };
7
+ //# sourceMappingURL=chunk-C5YV3EA4.js.map
@@ -92,7 +92,8 @@ var visionFallbackSchema = z.object({
92
92
  model: z.string().default("qwen3.5:0.8b"),
93
93
  timeout: z.number().default(120),
94
94
  backend: z.enum(["ollama", "openai"]).default("ollama"),
95
- providerModelRef: z.string().optional()
95
+ providerModelRef: z.string().optional(),
96
+ apiKey: z.string().optional()
96
97
  });
97
98
  var cachedToolSchema = z.object({
98
99
  name: z.string(),
@@ -204,7 +205,8 @@ function resolveVisionFallback(config) {
204
205
  baseUrl: fallback.url,
205
206
  model: fallback.model,
206
207
  timeout: (fallback.timeout ?? 120) * 1e3,
207
- backend: fallback.backend ?? "ollama"
208
+ backend: fallback.backend ?? "ollama",
209
+ ...fallback.apiKey ? { apiKey: fallback.apiKey } : {}
208
210
  };
209
211
  }
210
212
  return void 0;
@@ -368,4 +370,4 @@ export {
368
370
  removeProvider,
369
371
  activateProvider
370
372
  };
371
- //# sourceMappingURL=chunk-B56G5OEF.js.map
373
+ //# sourceMappingURL=chunk-D6ODGTSZ.js.map