openfox 2.0.100 → 2.0.102

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 (71) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/CHANGELOG.md +34 -0
  3. package/dist/{chat-handler-YPWT4MAQ.js → chat-handler-IBFSBSGV.js} +22 -21
  4. package/dist/{chunk-O2PLNJIU.js → chunk-2EYTYXWN.js} +2 -2
  5. package/dist/{chunk-MRWR3SIT.js → chunk-4Z2ARCY3.js} +2 -2
  6. package/dist/{chunk-AY37NB76.js → chunk-5ZJYEINJ.js} +2 -2
  7. package/dist/{chunk-FXRZFIDX.js → chunk-6ZV3NYEE.js} +201 -103
  8. package/dist/{chunk-XTKLA4AK.js → chunk-73EV6QYX.js} +4 -4
  9. package/dist/{chunk-XLI6PDJG.js → chunk-7HIJP4PC.js} +2 -2
  10. package/dist/{chunk-W77HIJGH.js → chunk-AI27N57J.js} +3 -3
  11. package/dist/{chunk-VJILJ22N.js → chunk-BJDQPILB.js} +3 -3
  12. package/dist/{chunk-MO3GJIT3.js → chunk-DPRJYQ5U.js} +132 -43
  13. package/dist/{chunk-3LRYZ7R3.js → chunk-FQS7A5M4.js} +2 -2
  14. package/dist/{chunk-NWO6GRYE.js → chunk-JE7LW7Y6.js} +2 -1
  15. package/dist/{chunk-C6QW2IDH.js → chunk-K6VVTE6C.js} +30 -28
  16. package/dist/{chunk-UIK6GA3P.js → chunk-KCED2X4H.js} +2 -2
  17. package/dist/{chunk-NLN5LPQ4.js → chunk-KKEBXFB3.js} +2 -2
  18. package/dist/{chunk-HAFRPV7I.js → chunk-KLK5N4OX.js} +3 -3
  19. package/dist/{chunk-KQPDU65K.js → chunk-MGKS2NG2.js} +3 -3
  20. package/dist/{chunk-TDHDLDGQ.js → chunk-MR7ZEGOF.js} +2 -2
  21. package/dist/{chunk-NJQJUP6Z.js → chunk-QGWS2EBU.js} +5 -5
  22. package/dist/{chunk-CFTT46KH.js → chunk-QL2G5UWE.js} +26 -24
  23. package/dist/{chunk-ZIMGU5ZH.js → chunk-RZC6DAT2.js} +2 -2
  24. package/dist/chunk-SV3I2YNO.js +7 -0
  25. package/dist/chunk-W5FTCTGY.js +72 -0
  26. package/dist/{chunk-E2CSSHSI.js → chunk-W5RC44R6.js} +10 -10
  27. package/dist/{chunk-KNYPBXPW.js → chunk-WPCYFH6X.js} +4 -4
  28. package/dist/{chunk-UEOEA6BB.js → chunk-YZSBJUGC.js} +3 -2
  29. package/dist/{chunk-IXFEXEUL.js → chunk-Z753S3X7.js} +6 -6
  30. package/dist/{chunk-G5JFKTSR.js → chunk-ZLCPNTRT.js} +4 -4
  31. package/dist/cli/dev.js +1 -1
  32. package/dist/cli/index.js +1 -1
  33. package/dist/{client-CFTJH6BY.js → client-Q7BHKOCD.js} +5 -5
  34. package/dist/{client-pure-DCEZBFKW.js → client-pure-ONSVWEG5.js} +2 -2
  35. package/dist/command-defaults/add-criteria.command.md +0 -1
  36. package/dist/{compactor-B4V75Q3A.js → compactor-43P3LGDU.js} +11 -11
  37. package/dist/{dynamic-context-MA5BIJ52.js → dynamic-context-AMPVZXUU.js} +7 -7
  38. package/dist/{events-4THEZWVL.js → events-RCC32JOA.js} +6 -6
  39. package/dist/{folding-OYBO2NTH.js → folding-ZNUXPQUD.js} +4 -4
  40. package/dist/{http-client-U6DVFL7F.js → http-client-WGNBG7PC.js} +3 -3
  41. package/dist/{manager-53J5P4EZ.js → manager-HFGJLW7Q.js} +4 -4
  42. package/dist/model-overrides-DQDT5Y7R.js +21 -0
  43. package/dist/{orchestrator-DHBU7LRB.js → orchestrator-QDXKDLOW.js} +26 -25
  44. package/dist/package.json +1 -1
  45. package/dist/{path-security-6GYETPWN.js → path-security-SUFEIBTC.js} +7 -7
  46. package/dist/{platform-7KXP3VVA.js → platform-2RLL7RAE.js} +3 -3
  47. package/dist/{processor-RC3IBY2J.js → processor-YWNLWAZW.js} +21 -20
  48. package/dist/{provider-PEJ27FBM.js → provider-FX3QCGAF.js} +6 -6
  49. package/dist/{provider-manager-EJGPSLOZ.js → provider-manager-GLG6BA32.js} +6 -6
  50. package/dist/{registry-QEOTM3IG.js → registry-GBNLVWYQ.js} +3 -3
  51. package/dist/{serve-BBVBUYMU.js → serve-RKHLNGEV.js} +27 -26
  52. package/dist/server/index.d.ts +15 -0
  53. package/dist/server/index.js +26 -25
  54. package/dist/server-QGQGSHW6.js +47 -0
  55. package/dist/{service-2PW2V25M.js → service-CXWJQFOZ.js} +62 -20
  56. package/dist/{session-overrides-BQSE3V3F.js → session-overrides-MBGBX6TM.js} +5 -5
  57. package/dist/{sessions-AUDWMF55.js → sessions-FEIFYGH7.js} +4 -4
  58. package/dist/{settings-2WVGUPYV.js → settings-FT7HF7ZB.js} +2 -2
  59. package/dist/skill-defaults/browser/SKILL.md +8 -1
  60. package/dist/{tool-adapter-MOGEI6TP.js → tool-adapter-FEAHWU5C.js} +2 -2
  61. package/dist/{tools-X5FONL4Q.js → tools-M5DKWCJJ.js} +19 -16
  62. package/dist/{update-ZWVWDYZ2.js → update-N4GD5IUX.js} +2 -2
  63. package/dist/web/assets/{index-BG5sD2ez.css → index-B0CNNl1k.css} +1 -1
  64. package/dist/web/assets/index-FWViKQkM.js +324 -0
  65. package/dist/web/index.html +2 -2
  66. package/dist/web/sw.js +1 -1
  67. package/dist/workflow-defaults/default.workflow.json +1 -1
  68. package/package.json +1 -1
  69. package/dist/chunk-T3PLCTNA.js +0 -7
  70. package/dist/server-ORYMG5HD.js +0 -46
  71. package/dist/web/assets/index-ChM1ad7e.js +0 -324
@@ -1,41 +1,42 @@
1
1
  import {
2
2
  runAgentTurn,
3
3
  runChatTurn
4
- } from "./chunk-CFTT46KH.js";
5
- import "./chunk-MO3GJIT3.js";
4
+ } from "./chunk-QL2G5UWE.js";
5
+ import "./chunk-Z753S3X7.js";
6
+ import "./chunk-DPRJYQ5U.js";
7
+ import "./chunk-MGKS2NG2.js";
8
+ import {
9
+ TurnMetrics,
10
+ createChatDoneEvent,
11
+ createMessageDoneEvent,
12
+ createMessageStartEvent,
13
+ createToolCallEvent,
14
+ createToolResultEvent
15
+ } from "./chunk-5ZJYEINJ.js";
16
+ import "./chunk-4Z2ARCY3.js";
6
17
  import "./chunk-ZASSAZ73.js";
7
- import "./chunk-HAFRPV7I.js";
18
+ import "./chunk-KLK5N4OX.js";
8
19
  import "./chunk-I72ACQ6R.js";
9
- import "./chunk-NWO6GRYE.js";
20
+ import "./chunk-JE7LW7Y6.js";
10
21
  import "./chunk-VKWVPQJ5.js";
11
22
  import "./chunk-D3SXT3BL.js";
12
23
  import "./chunk-J7GAZGZT.js";
13
- import "./chunk-IXFEXEUL.js";
14
- import "./chunk-KQPDU65K.js";
15
- import "./chunk-XLI6PDJG.js";
16
- import "./chunk-G5JFKTSR.js";
24
+ import "./chunk-7HIJP4PC.js";
25
+ import "./chunk-ZLCPNTRT.js";
26
+ import "./chunk-WPCYFH6X.js";
17
27
  import "./chunk-27SDWNKL.js";
18
28
  import "./chunk-EU3WWTFH.js";
29
+ import "./chunk-KKEBXFB3.js";
30
+ import "./chunk-W5FTCTGY.js";
19
31
  import "./chunk-WWFH5GAR.js";
20
- import {
21
- TurnMetrics,
22
- createChatDoneEvent,
23
- createMessageDoneEvent,
24
- createMessageStartEvent,
25
- createToolCallEvent,
26
- createToolResultEvent
27
- } from "./chunk-AY37NB76.js";
28
- import "./chunk-MRWR3SIT.js";
29
- import "./chunk-KNYPBXPW.js";
30
- import "./chunk-NLN5LPQ4.js";
31
- import "./chunk-O2PLNJIU.js";
32
- import "./chunk-ZIMGU5ZH.js";
33
- import "./chunk-3LRYZ7R3.js";
32
+ import "./chunk-2EYTYXWN.js";
33
+ import "./chunk-RZC6DAT2.js";
34
+ import "./chunk-FQS7A5M4.js";
34
35
  import "./chunk-J2GP3J3X.js";
35
36
  import "./chunk-V4IE7HJY.js";
36
37
  import "./chunk-YHEQTVFV.js";
37
- import "./chunk-UIK6GA3P.js";
38
- import "./chunk-UEOEA6BB.js";
38
+ import "./chunk-KCED2X4H.js";
39
+ import "./chunk-YZSBJUGC.js";
39
40
  import "./chunk-GLF65XDS.js";
40
41
  import "./chunk-K44MW7JJ.js";
41
42
  import "./chunk-4R7G5JB6.js";
@@ -52,4 +53,4 @@ export {
52
53
  runAgentTurn,
53
54
  runChatTurn
54
55
  };
55
- //# sourceMappingURL=orchestrator-DHBU7LRB.js.map
56
+ //# sourceMappingURL=orchestrator-QDXKDLOW.js.map
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openfox",
3
- "version": "2.0.100",
3
+ "version": "2.0.102",
4
4
  "description": "Local-LLM-first agentic coding assistant",
5
5
  "type": "module",
6
6
  "bin": {
@@ -19,13 +19,13 @@ import {
19
19
  providePathConfirmation,
20
20
  registerPathConfirmation,
21
21
  requestPathAccess
22
- } from "./chunk-G5JFKTSR.js";
22
+ } from "./chunk-ZLCPNTRT.js";
23
+ import "./chunk-WPCYFH6X.js";
23
24
  import "./chunk-27SDWNKL.js";
24
- import "./chunk-KNYPBXPW.js";
25
- import "./chunk-O2PLNJIU.js";
26
- import "./chunk-ZIMGU5ZH.js";
27
- import "./chunk-3LRYZ7R3.js";
28
- import "./chunk-UEOEA6BB.js";
25
+ import "./chunk-2EYTYXWN.js";
26
+ import "./chunk-RZC6DAT2.js";
27
+ import "./chunk-FQS7A5M4.js";
28
+ import "./chunk-YZSBJUGC.js";
29
29
  import "./chunk-GLF65XDS.js";
30
30
  import "./chunk-K44MW7JJ.js";
31
31
  import "./chunk-4R7G5JB6.js";
@@ -53,4 +53,4 @@ export {
53
53
  registerPathConfirmation,
54
54
  requestPathAccess
55
55
  };
56
- //# sourceMappingURL=path-security-6GYETPWN.js.map
56
+ //# sourceMappingURL=path-security-SUFEIBTC.js.map
@@ -5,8 +5,8 @@ import {
5
5
  isAbsolutePath,
6
6
  isWindowsPath,
7
7
  listAvailableShells
8
- } from "./chunk-NLN5LPQ4.js";
9
- import "./chunk-UEOEA6BB.js";
8
+ } from "./chunk-KKEBXFB3.js";
9
+ import "./chunk-YZSBJUGC.js";
10
10
  import "./chunk-GLF65XDS.js";
11
11
  import "./chunk-K44MW7JJ.js";
12
12
  import "./chunk-5WRI5ZAA.js";
@@ -18,4 +18,4 @@ export {
18
18
  isWindowsPath,
19
19
  listAvailableShells
20
20
  };
21
- //# sourceMappingURL=platform-7KXP3VVA.js.map
21
+ //# sourceMappingURL=platform-2RLL7RAE.js.map
@@ -2,38 +2,39 @@ import {
2
2
  buildRunChatTurnParams,
3
3
  finalizeTurnCompletion,
4
4
  generateSessionNameForSession
5
- } from "./chunk-E2CSSHSI.js";
6
- import "./chunk-MO3GJIT3.js";
5
+ } from "./chunk-W5RC44R6.js";
6
+ import "./chunk-DPRJYQ5U.js";
7
+ import "./chunk-MGKS2NG2.js";
8
+ import "./chunk-5ZJYEINJ.js";
9
+ import "./chunk-4Z2ARCY3.js";
7
10
  import "./chunk-ZASSAZ73.js";
8
- import "./chunk-HAFRPV7I.js";
11
+ import "./chunk-KLK5N4OX.js";
9
12
  import "./chunk-I72ACQ6R.js";
10
- import "./chunk-NWO6GRYE.js";
13
+ import "./chunk-JE7LW7Y6.js";
11
14
  import "./chunk-VKWVPQJ5.js";
12
15
  import "./chunk-D3SXT3BL.js";
13
16
  import "./chunk-J7GAZGZT.js";
14
- import "./chunk-KQPDU65K.js";
15
- import "./chunk-XLI6PDJG.js";
16
- import "./chunk-G5JFKTSR.js";
17
+ import "./chunk-7HIJP4PC.js";
18
+ import "./chunk-ZLCPNTRT.js";
19
+ import {
20
+ getEventStore
21
+ } from "./chunk-WPCYFH6X.js";
17
22
  import {
18
23
  createChatMessageMessage,
19
24
  createSessionRunningMessage
20
25
  } from "./chunk-27SDWNKL.js";
21
26
  import "./chunk-EU3WWTFH.js";
27
+ import "./chunk-KKEBXFB3.js";
28
+ import "./chunk-W5FTCTGY.js";
22
29
  import "./chunk-WWFH5GAR.js";
23
- import "./chunk-AY37NB76.js";
24
- import "./chunk-MRWR3SIT.js";
25
- import {
26
- getEventStore
27
- } from "./chunk-KNYPBXPW.js";
28
- import "./chunk-NLN5LPQ4.js";
29
- import "./chunk-O2PLNJIU.js";
30
- import "./chunk-ZIMGU5ZH.js";
31
- import "./chunk-3LRYZ7R3.js";
30
+ import "./chunk-2EYTYXWN.js";
31
+ import "./chunk-RZC6DAT2.js";
32
+ import "./chunk-FQS7A5M4.js";
32
33
  import "./chunk-J2GP3J3X.js";
33
34
  import "./chunk-V4IE7HJY.js";
34
35
  import "./chunk-YHEQTVFV.js";
35
- import "./chunk-UIK6GA3P.js";
36
- import "./chunk-UEOEA6BB.js";
36
+ import "./chunk-KCED2X4H.js";
37
+ import "./chunk-YZSBJUGC.js";
37
38
  import "./chunk-GLF65XDS.js";
38
39
  import {
39
40
  logger
@@ -185,7 +186,7 @@ var QueueProcessor = class {
185
186
  backend: provider?.backend ?? llmClient.getBackend(),
186
187
  model: llmClient.getModel()
187
188
  };
188
- const { runChatTurn } = await import("./orchestrator-DHBU7LRB.js");
189
+ const { runChatTurn } = await import("./orchestrator-QDXKDLOW.js");
189
190
  const runChatTurnParams = buildRunChatTurnParams({
190
191
  sessionManager,
191
192
  sessionId,
@@ -233,4 +234,4 @@ var QueueProcessor = class {
233
234
  export {
234
235
  QueueProcessor
235
236
  };
236
- //# sourceMappingURL=processor-RC3IBY2J.js.map
237
+ //# sourceMappingURL=processor-YWNLWAZW.js.map
@@ -11,15 +11,15 @@ import {
11
11
  import {
12
12
  detectModel,
13
13
  fetchAvailableModelsFromBackend
14
- } from "./chunk-W77HIJGH.js";
14
+ } from "./chunk-AI27N57J.js";
15
15
  import "./chunk-J2GP3J3X.js";
16
- import "./chunk-VJILJ22N.js";
16
+ import "./chunk-BJDQPILB.js";
17
17
  import "./chunk-V4IE7HJY.js";
18
18
  import "./chunk-YHEQTVFV.js";
19
19
  import "./chunk-HNCM3D7Y.js";
20
- import "./chunk-UIK6GA3P.js";
21
- import "./chunk-TDHDLDGQ.js";
22
- import "./chunk-UEOEA6BB.js";
20
+ import "./chunk-KCED2X4H.js";
21
+ import "./chunk-MR7ZEGOF.js";
22
+ import "./chunk-YZSBJUGC.js";
23
23
  import "./chunk-GLF65XDS.js";
24
24
  import "./chunk-K44MW7JJ.js";
25
25
  import {
@@ -398,4 +398,4 @@ export {
398
398
  runProviderRemove,
399
399
  runProviderUse
400
400
  };
401
- //# sourceMappingURL=provider-PEJ27FBM.js.map
401
+ //# sourceMappingURL=provider-FX3QCGAF.js.map
@@ -3,15 +3,15 @@ import {
3
3
  fetchAvailableModelsFromBackend,
4
4
  fetchModelsWithContext,
5
5
  parseDefaultModelSelection
6
- } from "./chunk-W77HIJGH.js";
6
+ } from "./chunk-AI27N57J.js";
7
7
  import "./chunk-J2GP3J3X.js";
8
- import "./chunk-VJILJ22N.js";
8
+ import "./chunk-BJDQPILB.js";
9
9
  import "./chunk-V4IE7HJY.js";
10
10
  import "./chunk-YHEQTVFV.js";
11
11
  import "./chunk-HNCM3D7Y.js";
12
- import "./chunk-UIK6GA3P.js";
13
- import "./chunk-TDHDLDGQ.js";
14
- import "./chunk-UEOEA6BB.js";
12
+ import "./chunk-KCED2X4H.js";
13
+ import "./chunk-MR7ZEGOF.js";
14
+ import "./chunk-YZSBJUGC.js";
15
15
  import "./chunk-GLF65XDS.js";
16
16
  import "./chunk-K44MW7JJ.js";
17
17
  import "./chunk-5WRI5ZAA.js";
@@ -21,4 +21,4 @@ export {
21
21
  fetchModelsWithContext,
22
22
  parseDefaultModelSelection
23
23
  };
24
- //# sourceMappingURL=provider-manager-EJGPSLOZ.js.map
24
+ //# sourceMappingURL=provider-manager-GLG6BA32.js.map
@@ -17,8 +17,8 @@ import {
17
17
  resolveDefaultAgentId,
18
18
  saveAgent,
19
19
  saveAgentToProject
20
- } from "./chunk-3LRYZ7R3.js";
21
- import "./chunk-UEOEA6BB.js";
20
+ } from "./chunk-FQS7A5M4.js";
21
+ import "./chunk-YZSBJUGC.js";
22
22
  import "./chunk-GLF65XDS.js";
23
23
  import "./chunk-K44MW7JJ.js";
24
24
  import "./chunk-CQGTEGKL.js";
@@ -43,4 +43,4 @@ export {
43
43
  saveAgent,
44
44
  saveAgentToProject
45
45
  };
46
- //# sourceMappingURL=registry-QEOTM3IG.js.map
46
+ //# sourceMappingURL=registry-GBNLVWYQ.js.map
@@ -1,47 +1,48 @@
1
1
  import {
2
2
  createServer
3
- } from "./chunk-FXRZFIDX.js";
4
- import "./chunk-C6QW2IDH.js";
3
+ } from "./chunk-6ZV3NYEE.js";
4
+ import "./chunk-K6VVTE6C.js";
5
5
  import "./chunk-62QCBNPE.js";
6
- import "./chunk-E2CSSHSI.js";
7
- import "./chunk-CFTT46KH.js";
8
- import "./chunk-MO3GJIT3.js";
6
+ import "./chunk-W5RC44R6.js";
7
+ import "./chunk-QL2G5UWE.js";
8
+ import "./chunk-Z753S3X7.js";
9
+ import "./chunk-73EV6QYX.js";
10
+ import "./chunk-DPRJYQ5U.js";
11
+ import "./chunk-MGKS2NG2.js";
12
+ import "./chunk-5ZJYEINJ.js";
13
+ import "./chunk-4Z2ARCY3.js";
9
14
  import "./chunk-ZASSAZ73.js";
10
- import "./chunk-HAFRPV7I.js";
15
+ import "./chunk-KLK5N4OX.js";
11
16
  import "./chunk-I72ACQ6R.js";
12
- import "./chunk-NWO6GRYE.js";
17
+ import "./chunk-JE7LW7Y6.js";
13
18
  import "./chunk-VKWVPQJ5.js";
14
19
  import "./chunk-D3SXT3BL.js";
15
20
  import "./chunk-J7GAZGZT.js";
16
- import "./chunk-IXFEXEUL.js";
17
- import "./chunk-KQPDU65K.js";
18
- import "./chunk-XLI6PDJG.js";
19
- import "./chunk-G5JFKTSR.js";
21
+ import "./chunk-7HIJP4PC.js";
22
+ import "./chunk-ZLCPNTRT.js";
23
+ import "./chunk-WPCYFH6X.js";
20
24
  import "./chunk-27SDWNKL.js";
21
25
  import "./chunk-EU3WWTFH.js";
26
+ import "./chunk-KKEBXFB3.js";
27
+ import "./chunk-W5FTCTGY.js";
22
28
  import "./chunk-WWFH5GAR.js";
23
- import "./chunk-XTKLA4AK.js";
24
- import "./chunk-AY37NB76.js";
25
- import "./chunk-MRWR3SIT.js";
26
- import "./chunk-KNYPBXPW.js";
27
- import "./chunk-NLN5LPQ4.js";
28
29
  import {
29
30
  VERSION
30
- } from "./chunk-T3PLCTNA.js";
31
- import "./chunk-O2PLNJIU.js";
32
- import "./chunk-ZIMGU5ZH.js";
31
+ } from "./chunk-SV3I2YNO.js";
32
+ import "./chunk-2EYTYXWN.js";
33
+ import "./chunk-RZC6DAT2.js";
33
34
  import {
34
35
  loadConfig
35
- } from "./chunk-3LRYZ7R3.js";
36
- import "./chunk-W77HIJGH.js";
36
+ } from "./chunk-FQS7A5M4.js";
37
+ import "./chunk-AI27N57J.js";
37
38
  import "./chunk-J2GP3J3X.js";
38
- import "./chunk-VJILJ22N.js";
39
+ import "./chunk-BJDQPILB.js";
39
40
  import "./chunk-V4IE7HJY.js";
40
41
  import "./chunk-YHEQTVFV.js";
41
42
  import "./chunk-HNCM3D7Y.js";
42
- import "./chunk-UIK6GA3P.js";
43
- import "./chunk-TDHDLDGQ.js";
44
- import "./chunk-UEOEA6BB.js";
43
+ import "./chunk-KCED2X4H.js";
44
+ import "./chunk-MR7ZEGOF.js";
45
+ import "./chunk-YZSBJUGC.js";
45
46
  import "./chunk-GLF65XDS.js";
46
47
  import {
47
48
  logger
@@ -219,4 +220,4 @@ async function runServe(options) {
219
220
  export {
220
221
  runServe
221
222
  };
222
- //# sourceMappingURL=serve-BBVBUYMU.js.map
223
+ //# sourceMappingURL=serve-RKHLNGEV.js.map
@@ -321,6 +321,19 @@ declare class SessionManager {
321
321
  private switchLocks;
322
322
  private workspaceCreationLocks;
323
323
  constructor(providerManager: ProviderManager);
324
+ getProviderManager(): ProviderManager;
325
+ /**
326
+ * Create an LLM client for a specific agent, respecting its model override.
327
+ *
328
+ * If the agent has a model override stored in settings, creates a dedicated
329
+ * client for that provider+model. Falls back to the global client if no
330
+ * override is set or the provider no longer exists.
331
+ *
332
+ * @param preferredFallback - When provided, used as fallback instead of
333
+ * providerManager.getLLMClient(). This is important in mock/test mode
334
+ * where the caller already has a mock client that should be preserved.
335
+ */
336
+ createClientForAgent(agentId: string, preferredFallback?: LLMClientWithModel): LLMClientWithModel;
324
337
  getCurrentModelSettings(sessionId?: string): {
325
338
  temperature?: number;
326
339
  topP?: number;
@@ -629,6 +642,7 @@ interface ToolContext {
629
642
  lspManager?: LspManagerInterface | undefined;
630
643
  llmClient?: LLMClientWithModel | undefined;
631
644
  statsIdentity?: StatsIdentity | undefined;
645
+ providerManager?: ProviderManager | undefined;
632
646
  permittedActions?: Record<string, string[]> | undefined;
633
647
  toolCallId?: string;
634
648
  agentTimeout?: number;
@@ -638,6 +652,7 @@ interface Tool {
638
652
  definition: LLMToolDefinition;
639
653
  execute: (args: Record<string, unknown>, context: ToolContext) => Promise<ToolResult>;
640
654
  permittedActions?: string[];
655
+ mcpServer?: string;
641
656
  }
642
657
  interface ToolRegistry {
643
658
  tools: Tool[];
@@ -1,44 +1,45 @@
1
1
  import {
2
2
  createServer,
3
3
  createServerHandle
4
- } from "../chunk-FXRZFIDX.js";
5
- import "../chunk-C6QW2IDH.js";
4
+ } from "../chunk-6ZV3NYEE.js";
5
+ import "../chunk-K6VVTE6C.js";
6
6
  import "../chunk-62QCBNPE.js";
7
- import "../chunk-E2CSSHSI.js";
8
- import "../chunk-CFTT46KH.js";
9
- import "../chunk-MO3GJIT3.js";
7
+ import "../chunk-W5RC44R6.js";
8
+ import "../chunk-QL2G5UWE.js";
9
+ import "../chunk-Z753S3X7.js";
10
+ import "../chunk-73EV6QYX.js";
11
+ import "../chunk-DPRJYQ5U.js";
12
+ import "../chunk-MGKS2NG2.js";
13
+ import "../chunk-5ZJYEINJ.js";
14
+ import "../chunk-4Z2ARCY3.js";
10
15
  import "../chunk-ZASSAZ73.js";
11
- import "../chunk-HAFRPV7I.js";
16
+ import "../chunk-KLK5N4OX.js";
12
17
  import "../chunk-I72ACQ6R.js";
13
- import "../chunk-NWO6GRYE.js";
18
+ import "../chunk-JE7LW7Y6.js";
14
19
  import "../chunk-VKWVPQJ5.js";
15
20
  import "../chunk-D3SXT3BL.js";
16
21
  import "../chunk-J7GAZGZT.js";
17
- import "../chunk-IXFEXEUL.js";
18
- import "../chunk-KQPDU65K.js";
19
- import "../chunk-XLI6PDJG.js";
20
- import "../chunk-G5JFKTSR.js";
22
+ import "../chunk-7HIJP4PC.js";
23
+ import "../chunk-ZLCPNTRT.js";
24
+ import "../chunk-WPCYFH6X.js";
21
25
  import "../chunk-27SDWNKL.js";
22
26
  import "../chunk-EU3WWTFH.js";
27
+ import "../chunk-KKEBXFB3.js";
28
+ import "../chunk-W5FTCTGY.js";
23
29
  import "../chunk-WWFH5GAR.js";
24
- import "../chunk-XTKLA4AK.js";
25
- import "../chunk-AY37NB76.js";
26
- import "../chunk-MRWR3SIT.js";
27
- import "../chunk-KNYPBXPW.js";
28
- import "../chunk-NLN5LPQ4.js";
29
- import "../chunk-T3PLCTNA.js";
30
- import "../chunk-O2PLNJIU.js";
31
- import "../chunk-ZIMGU5ZH.js";
32
- import "../chunk-3LRYZ7R3.js";
33
- import "../chunk-W77HIJGH.js";
30
+ import "../chunk-SV3I2YNO.js";
31
+ import "../chunk-2EYTYXWN.js";
32
+ import "../chunk-RZC6DAT2.js";
33
+ import "../chunk-FQS7A5M4.js";
34
+ import "../chunk-AI27N57J.js";
34
35
  import "../chunk-J2GP3J3X.js";
35
- import "../chunk-VJILJ22N.js";
36
+ import "../chunk-BJDQPILB.js";
36
37
  import "../chunk-V4IE7HJY.js";
37
38
  import "../chunk-YHEQTVFV.js";
38
39
  import "../chunk-HNCM3D7Y.js";
39
- import "../chunk-UIK6GA3P.js";
40
- import "../chunk-TDHDLDGQ.js";
41
- import "../chunk-UEOEA6BB.js";
40
+ import "../chunk-KCED2X4H.js";
41
+ import "../chunk-MR7ZEGOF.js";
42
+ import "../chunk-YZSBJUGC.js";
42
43
  import "../chunk-GLF65XDS.js";
43
44
  import "../chunk-K44MW7JJ.js";
44
45
  import "../chunk-VUQCQXXJ.js";
@@ -0,0 +1,47 @@
1
+ import {
2
+ createWebSocketServer,
3
+ signalMcpReady
4
+ } from "./chunk-K6VVTE6C.js";
5
+ import "./chunk-W5RC44R6.js";
6
+ import "./chunk-QL2G5UWE.js";
7
+ import "./chunk-Z753S3X7.js";
8
+ import "./chunk-73EV6QYX.js";
9
+ import "./chunk-DPRJYQ5U.js";
10
+ import "./chunk-MGKS2NG2.js";
11
+ import "./chunk-5ZJYEINJ.js";
12
+ import "./chunk-4Z2ARCY3.js";
13
+ import "./chunk-ZASSAZ73.js";
14
+ import "./chunk-KLK5N4OX.js";
15
+ import "./chunk-I72ACQ6R.js";
16
+ import "./chunk-JE7LW7Y6.js";
17
+ import "./chunk-VKWVPQJ5.js";
18
+ import "./chunk-D3SXT3BL.js";
19
+ import "./chunk-J7GAZGZT.js";
20
+ import "./chunk-7HIJP4PC.js";
21
+ import "./chunk-ZLCPNTRT.js";
22
+ import "./chunk-WPCYFH6X.js";
23
+ import "./chunk-27SDWNKL.js";
24
+ import "./chunk-EU3WWTFH.js";
25
+ import "./chunk-KKEBXFB3.js";
26
+ import "./chunk-W5FTCTGY.js";
27
+ import "./chunk-WWFH5GAR.js";
28
+ import "./chunk-2EYTYXWN.js";
29
+ import "./chunk-RZC6DAT2.js";
30
+ import "./chunk-FQS7A5M4.js";
31
+ import "./chunk-J2GP3J3X.js";
32
+ import "./chunk-V4IE7HJY.js";
33
+ import "./chunk-YHEQTVFV.js";
34
+ import "./chunk-KCED2X4H.js";
35
+ import "./chunk-YZSBJUGC.js";
36
+ import "./chunk-GLF65XDS.js";
37
+ import "./chunk-K44MW7JJ.js";
38
+ import "./chunk-VUQCQXXJ.js";
39
+ import "./chunk-4R7G5JB6.js";
40
+ import "./chunk-B56G5OEF.js";
41
+ import "./chunk-CQGTEGKL.js";
42
+ import "./chunk-5WRI5ZAA.js";
43
+ export {
44
+ createWebSocketServer,
45
+ signalMcpReady
46
+ };
47
+ //# sourceMappingURL=server-QGQGSHW6.js.map
@@ -42,14 +42,7 @@ function exec(command, args = []) {
42
42
  child.on("error", reject);
43
43
  });
44
44
  }
45
- async function createWrapperScript() {
46
- const binDir = expandPath("~/.local/state/openfox/bin");
47
- await mkdir(binDir, { recursive: true });
48
- const scriptPath = expandPath(RUN_SCRIPT_PATH);
49
- const scriptContent = `#!/bin/bash
50
- source ~/.profile 2>/dev/null || true
51
- source ~/.bashrc 2>/dev/null || true
52
-
45
+ var DISPLAY_POLLING_BLOCK = `
53
46
  if [ -z "$DISPLAY" ] || [ -z "$WAYLAND_DISPLAY" ]; then
54
47
  for _ in 0 1 2 3 4; do
55
48
  if [ -z "$DISPLAY" ]; then
@@ -77,7 +70,34 @@ if [ -z "$DISPLAY" ] || [ -z "$WAYLAND_DISPLAY" ]; then
77
70
  sleep 2
78
71
  done
79
72
  fi
80
-
73
+ `;
74
+ async function detectHeadless() {
75
+ if (process.env["DISPLAY"] || process.env["WAYLAND_DISPLAY"]) {
76
+ return false;
77
+ }
78
+ try {
79
+ await access("/tmp/.X11-unix/X0", constants.F_OK);
80
+ return false;
81
+ } catch {
82
+ }
83
+ const runtimeDir = process.env["XDG_RUNTIME_DIR"];
84
+ if (runtimeDir) {
85
+ try {
86
+ await access(join(runtimeDir, "wayland-0"), constants.F_OK);
87
+ return false;
88
+ } catch {
89
+ }
90
+ }
91
+ return true;
92
+ }
93
+ async function createWrapperScript(headless) {
94
+ const binDir = expandPath("~/.local/state/openfox/bin");
95
+ await mkdir(binDir, { recursive: true });
96
+ const scriptPath = expandPath(RUN_SCRIPT_PATH);
97
+ const scriptContent = `#!/bin/bash
98
+ source ~/.profile 2>/dev/null || true
99
+ source ~/.bashrc 2>/dev/null || true
100
+ ${headless ? "" : DISPLAY_POLLING_BLOCK}
81
101
  # Find openfox - respect user's PATH, fallback to nvm search for non-interactive cases
82
102
  if ! openfox_bin=$(which openfox 2>/dev/null); then
83
103
  openfox_bindir=""
@@ -102,14 +122,15 @@ exec "$openfox_bin" "$@"
102
122
  await exec("chmod", ["+x", scriptPath]);
103
123
  console.log(`Created: ${scriptPath}`);
104
124
  }
105
- async function createSystemdService() {
125
+ async function createSystemdService(headless) {
106
126
  const serviceDir = expandPath("~/.config/systemd/user");
107
127
  await mkdir(serviceDir, { recursive: true });
128
+ const target = headless ? "default.target" : "graphical-session.target";
129
+ const wants = headless ? "" : "\nWants=graphical-session.target";
108
130
  const servicePath = expandPath(SERVICE_PATH);
109
131
  const serviceContent = `[Unit]
110
132
  Description=OpenFox Agentic Coding Assistant
111
- After=graphical-session.target
112
- Wants=graphical-session.target
133
+ After=${target}${wants}
113
134
 
114
135
  [Service]
115
136
  Type=simple
@@ -120,7 +141,7 @@ KillMode=control-group
120
141
  Environment=OPENFOX_SERVICE=true
121
142
 
122
143
  [Install]
123
- WantedBy=graphical-session.target
144
+ WantedBy=${target}
124
145
  `;
125
146
  await writeFile(servicePath, serviceContent, "utf-8");
126
147
  console.log(`Created: ${servicePath}`);
@@ -135,10 +156,22 @@ async function runServiceCommand(_mode, subcommand, ...args) {
135
156
  printServiceHelp();
136
157
  return;
137
158
  }
159
+ const headlessFlag = args.includes("--headless");
160
+ const desktopFlag = args.includes("--desktop");
138
161
  switch (subcommand) {
139
- case "install":
140
- await serviceInstall();
162
+ case "install": {
163
+ let headlessOverride;
164
+ if (headlessFlag && desktopFlag) {
165
+ console.error("Cannot use both --headless and --desktop");
166
+ process.exit(1);
167
+ } else if (headlessFlag) {
168
+ headlessOverride = true;
169
+ } else if (desktopFlag) {
170
+ headlessOverride = false;
171
+ }
172
+ await serviceInstall(headlessOverride);
141
173
  break;
174
+ }
142
175
  case "start":
143
176
  await serviceStart();
144
177
  break;
@@ -172,6 +205,8 @@ Usage:
172
205
 
173
206
  Commands:
174
207
  install Install and enable the systemd service
208
+ Use --headless for headless/CLI-only servers
209
+ Use --desktop to force desktop mode (default when display detected)
175
210
  start Start the service (if installed)
176
211
  stop Stop the service (if installed)
177
212
  restart Restart the service (if installed)
@@ -180,8 +215,14 @@ Commands:
180
215
  uninstall Disable and remove the service files
181
216
  `);
182
217
  }
183
- async function serviceInstall() {
184
- console.log("Installing OpenFox service...\n");
218
+ async function serviceInstall(headlessOverride) {
219
+ const headless = headlessOverride ?? await detectHeadless();
220
+ if (headless) {
221
+ console.log("Installing OpenFox service (headless mode)...\n");
222
+ } else {
223
+ console.log("Installing OpenFox service (desktop mode)...\n");
224
+ console.log(" Tip: Use --headless for headless/CLI-only servers");
225
+ }
185
226
  const installed = await pathExists(SERVICE_PATH);
186
227
  if (installed) {
187
228
  const { success } = systemctl(["is-active", SERVICE_NAME], true);
@@ -192,8 +233,8 @@ async function serviceInstall() {
192
233
  console.log("Service files exist. Reinstalling...");
193
234
  await serviceUninstall();
194
235
  }
195
- await createWrapperScript();
196
- await createSystemdService();
236
+ await createWrapperScript(headless);
237
+ await createSystemdService(headless);
197
238
  systemctl(["daemon-reload"]);
198
239
  systemctl(["enable", SERVICE_NAME]);
199
240
  systemctl(["start", SERVICE_NAME]);
@@ -294,6 +335,7 @@ async function serviceUninstall() {
294
335
  console.log("\n\u2713 Service uninstalled");
295
336
  }
296
337
  export {
338
+ detectHeadless,
297
339
  runServiceCommand
298
340
  };
299
- //# sourceMappingURL=service-2PW2V25M.js.map
341
+ //# sourceMappingURL=service-CXWJQFOZ.js.map