openfox 2.0.129 → 2.0.130

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +2 -0
  3. package/dist/CHANGELOG.md +32 -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-4WCKNCQV.js} +32 -32
  8. package/dist/chunk-25DAVVTP.js +395 -0
  9. package/dist/{chunk-ISE55FOR.js → chunk-2AI7VYPN.js} +11 -1
  10. package/dist/{chunk-2COZT3YI.js → chunk-2OMXXCJJ.js} +24 -24
  11. package/dist/{chunk-OHTBWA7L.js → chunk-35GQEIH2.js} +13 -13
  12. package/dist/{chunk-N2Q3KYWM.js → chunk-3DZSHRXE.js} +7 -2
  13. package/dist/chunk-3OBZ55SX.js +7 -0
  14. package/dist/{chunk-ZIL6VKLU.js → chunk-64N4CZFT.js} +2 -2
  15. package/dist/{chunk-66MG44TF.js → chunk-6QZVAOSA.js} +2 -2
  16. package/dist/{chunk-6LX43YRA.js → chunk-7ET46SNE.js} +4 -4
  17. package/dist/{chunk-YJD5A375.js → chunk-AYCB32NI.js} +5 -5
  18. package/dist/{chunk-GIJUWPRQ.js → chunk-CGCEAKG5.js} +2 -2
  19. package/dist/{auth-GTGIGX5X.js → chunk-CQGJ5RWB.js} +4 -4
  20. package/dist/{chunk-JQMQ4DGC.js → chunk-CYQUM42E.js} +76 -32
  21. package/dist/{chunk-P6GTPKE5.js → chunk-DHDIKVRT.js} +278 -16
  22. package/dist/{chunk-ZXWJ6JTL.js → chunk-DI5GTIAU.js} +1154 -196
  23. package/dist/chunk-DQTN4B33.js +235 -0
  24. package/dist/{chunk-RV5G7QQU.js → chunk-DQTXXHD2.js} +3 -3
  25. package/dist/{chunk-MYNNMV75.js → chunk-DYIDDGMN.js} +54 -36
  26. package/dist/{chunk-DABWCAXS.js → chunk-EUOWCVU6.js} +19 -6
  27. package/dist/{chunk-7RIEI2TE.js → chunk-EVVWDRM5.js} +45 -16
  28. package/dist/{chunk-ATWOXI52.js → chunk-HCYSGLY2.js} +1 -1
  29. package/dist/{chunk-KBESUA3W.js → chunk-JHA2SPCU.js} +2 -2
  30. package/dist/{chunk-ZIYETXOW.js → chunk-JKRMMNUR.js} +4 -4
  31. package/dist/{chunk-H6YIVK67.js → chunk-JSONBGSY.js} +24 -4
  32. package/dist/{chunk-HO7A7TMF.js → chunk-KHKRHGA6.js} +15 -5
  33. package/dist/{chunk-K2QKX4ZJ.js → chunk-OA2FURC3.js} +8 -2
  34. package/dist/{chunk-ZFNBATE3.js → chunk-OXMOKQPW.js} +3 -2
  35. package/dist/{chunk-567L5OJ6.js → chunk-P57IBMK4.js} +2 -2
  36. package/dist/{session-status-6Q5B5PEN.js → chunk-T3S5MTMD.js} +2 -3
  37. package/dist/{chunk-7ZMOP5LS.js → chunk-TS5WKTFB.js} +18 -1
  38. package/dist/{chunk-PBFGJFGC.js → chunk-UV6IH6HK.js} +32 -10
  39. package/dist/{chunk-26WS7AH6.js → chunk-VJNA5AOB.js} +39 -7
  40. package/dist/{chunk-IJFKJ5D6.js → chunk-VUIXQ6X4.js} +4 -4
  41. package/dist/{chunk-L24A6GZ7.js → chunk-X24XN2M2.js} +84 -56
  42. package/dist/{chunk-AQBRI7TM.js → chunk-X3FHIDLT.js} +2 -2
  43. package/dist/chunk-YNMP647F.js +24 -0
  44. package/dist/{chunk-7YP4O4XE.js → chunk-ZRCRGPGT.js} +2 -2
  45. package/dist/cli/dev.js +1 -1
  46. package/dist/cli/index.js +1 -1
  47. package/dist/client-26RSMUAX.js +16 -0
  48. package/dist/{client-pure-GU2SV3DD.js → client-pure-FLKP6PTI.js} +2 -2
  49. package/dist/{compactor-WKFNTUXL.js → compactor-HYBSSFKP.js} +14 -14
  50. package/dist/dynamic-context-2VLACYK4.js +50 -0
  51. package/dist/{events-GMHRX4LF.js → events-D33QXGSX.js} +7 -7
  52. package/dist/{folding-7K2GRPF4.js → folding-QOKBKUU6.js} +5 -5
  53. package/dist/{http-client-ROVNSHF6.js → http-client-MGAJTGPR.js} +3 -3
  54. package/dist/launch-KFENN5GS.js +53 -0
  55. package/dist/{manager-NOKJQTTF.js → manager-VRHX7BVI.js} +4 -4
  56. package/dist/mcp-YU7AM3UV.js +120 -0
  57. package/dist/{model-catalog-ZLOWTQA7.js → model-catalog-2PCKTYGW.js} +2 -2
  58. package/dist/{oauth-provider-DGBC2YM6.js → oauth-provider-VHUS2KEG.js} +8 -2
  59. package/dist/{orchestrator-E6GIZGEN.js → orchestrator-PLTAEOMR.js} +30 -30
  60. package/dist/package.json +1 -1
  61. package/dist/{path-security-UDZ7UVWK.js → path-security-4WQJGU3Z.js} +11 -11
  62. package/dist/{platform-EMKWQTZX.js → platform-MWWJ6OKV.js} +3 -3
  63. package/dist/plugins-registry.json +12 -0
  64. package/dist/{processor-7RDR675X.js → processor-K4WHZKE6.js} +31 -31
  65. package/dist/{profiles-HXGJIPF2.js → profiles-EBCVFYG7.js} +2 -2
  66. package/dist/{protocol-DMneA8mx.d.ts → protocol-BMUoqwYH.d.ts} +2 -1
  67. package/dist/{protocol-TS3GVTT3.js → protocol-Y7MRKRUO.js} +3 -3
  68. package/dist/provider/index.d.ts +4 -4
  69. package/dist/{provider-DXEICEIE.js → provider-CVM33XHW.js} +10 -10
  70. package/dist/{provider-manager-PU7RS2TK.js → provider-manager-7NL5EQLG.js} +10 -10
  71. package/dist/{registry-Z4GVYFTV.js → registry-KFFZFIZT.js} +3 -3
  72. package/dist/{serve-Z5ITDPCQ.js → serve-KQAPXO5X.js} +42 -40
  73. package/dist/server/index.d.ts +18 -3
  74. package/dist/server/index.js +39 -37
  75. package/dist/server-RPKVKMDD.js +56 -0
  76. package/dist/{service-INQWTYY2.js → service-7TLOSFAO.js} +12 -12
  77. package/dist/{session-overrides-4WAD3X5Q.js → session-overrides-U573CU2V.js} +5 -5
  78. package/dist/session-status-UFO5IFI7.js +10 -0
  79. package/dist/{sessions-D7VRCHQY.js → sessions-LUVWWRFO.js} +4 -4
  80. package/dist/{settings-VOWWO4VG.js → settings-LMAMF2X7.js} +2 -2
  81. package/dist/shared/index.d.ts +3 -3
  82. package/dist/shared/index.js +1 -1
  83. package/dist/skill-defaults/browser/SKILL.md +20 -1
  84. package/dist/{tasks-SE3DOPVP.js → tasks-FA6Z52H2.js} +12 -12
  85. package/dist/{tools-6XUSIJN2.js → tools-SSPC3UQZ.js} +34 -34
  86. package/dist/{types-PAKlAzp9.d.ts → types-BIkpxjaj.d.ts} +11 -2
  87. package/dist/{types-BWuVnaBw.d.ts → types-CoY8Ka1C.d.ts} +1 -1
  88. package/dist/{update-EJUI6PSV.js → update-QRGK67DB.js} +2 -2
  89. package/dist/web/assets/{index-CGKd7WLQ.js → index-0PVQNOfW.js} +88 -88
  90. package/dist/web/assets/{index-CbX8veVW.css → index-Ds94aclE.css} +1 -1
  91. package/dist/web/index.html +2 -2
  92. package/dist/web/sw.js +1 -1
  93. package/package.json +1 -1
  94. package/plugins-registry.json +12 -0
  95. package/dist/chunk-HIRDDCPD.js +0 -7
  96. package/dist/chunk-PHP7PLFX.js +0 -151
  97. package/dist/chunk-RSB4AR2A.js +0 -108
  98. package/dist/client-RZGGDGUA.js +0 -16
  99. package/dist/dynamic-context-ZVE733UI.js +0 -28
  100. package/dist/launch-5ARSU7EM.js +0 -53
  101. package/dist/server-MUJ7EHEI.js +0 -56
@@ -1,61 +1,63 @@
1
1
  import {
2
2
  createServer
3
- } from "./chunk-ZXWJ6JTL.js";
4
- import "./chunk-RSB4AR2A.js";
5
- import "./chunk-IJ53Y77N.js";
6
- import "./chunk-MYNNMV75.js";
7
- import "./chunk-OHTBWA7L.js";
8
- import "./chunk-2COZT3YI.js";
9
- import "./chunk-7RIEI2TE.js";
10
- import "./chunk-L24A6GZ7.js";
11
- import "./chunk-PHP7PLFX.js";
12
- import "./chunk-ZIL6VKLU.js";
3
+ } from "./chunk-DI5GTIAU.js";
4
+ import "./chunk-T3S5MTMD.js";
13
5
  import "./chunk-WLJJRX22.js";
14
- import "./chunk-IJFKJ5D6.js";
15
- import "./chunk-6LX43YRA.js";
16
- import "./chunk-GIJUWPRQ.js";
6
+ import "./chunk-DQTN4B33.js";
7
+ import "./chunk-IJ53Y77N.js";
8
+ import "./chunk-DYIDDGMN.js";
9
+ import "./chunk-35GQEIH2.js";
10
+ import "./chunk-2OMXXCJJ.js";
11
+ import "./chunk-EVVWDRM5.js";
12
+ import "./chunk-X24XN2M2.js";
13
+ import "./chunk-Y3BSBKHY.js";
14
+ import "./chunk-J7GAZGZT.js";
15
+ import "./chunk-JSONBGSY.js";
16
+ import "./chunk-ZRCRGPGT.js";
17
+ import "./chunk-VUIXQ6X4.js";
18
+ import "./chunk-7ET46SNE.js";
17
19
  import "./chunk-EHFIUXWZ.js";
18
- import "./chunk-RV5G7QQU.js";
20
+ import "./chunk-DQTXXHD2.js";
19
21
  import "./chunk-I72ACQ6R.js";
20
22
  import "./chunk-JE7LW7Y6.js";
21
23
  import "./chunk-OAN4BXEW.js";
22
- import "./chunk-Y3BSBKHY.js";
23
- import "./chunk-J7GAZGZT.js";
24
- import "./chunk-H6YIVK67.js";
25
- import "./chunk-7YP4O4XE.js";
26
- import "./chunk-26WS7AH6.js";
27
- import "./chunk-YJD5A375.js";
28
- import "./chunk-ZIYETXOW.js";
29
- import "./chunk-AQBRI7TM.js";
30
- import "./chunk-567L5OJ6.js";
31
- import "./chunk-66MG44TF.js";
24
+ import "./chunk-25DAVVTP.js";
25
+ import "./chunk-64N4CZFT.js";
26
+ import "./chunk-CGCEAKG5.js";
32
27
  import "./chunk-JURM3RPZ.js";
28
+ import "./chunk-VJNA5AOB.js";
29
+ import "./chunk-AYCB32NI.js";
30
+ import "./chunk-JKRMMNUR.js";
31
+ import "./chunk-X3FHIDLT.js";
32
+ import {
33
+ loadConfig
34
+ } from "./chunk-JHA2SPCU.js";
35
+ import "./chunk-OSXPQSLW.js";
36
+ import "./chunk-P57IBMK4.js";
33
37
  import "./chunk-LCLH6ZUL.js";
34
- import "./chunk-JQMQ4DGC.js";
35
- import "./chunk-K2QKX4ZJ.js";
38
+ import "./chunk-6QZVAOSA.js";
39
+ import "./chunk-CYQUM42E.js";
40
+ import "./chunk-OA2FURC3.js";
36
41
  import "./chunk-J2GP3J3X.js";
42
+ import "./chunk-YNMP647F.js";
37
43
  import {
38
44
  VERSION
39
- } from "./chunk-HIRDDCPD.js";
40
- import {
41
- loadConfig
42
- } from "./chunk-KBESUA3W.js";
43
- import "./chunk-OSXPQSLW.js";
45
+ } from "./chunk-3OBZ55SX.js";
44
46
  import "./chunk-3B232XG4.js";
45
- import "./chunk-P6GTPKE5.js";
46
- import "./chunk-7ZMOP5LS.js";
47
- import "./chunk-PBFGJFGC.js";
47
+ import "./chunk-DHDIKVRT.js";
48
+ import "./chunk-TS5WKTFB.js";
49
+ import "./chunk-UV6IH6HK.js";
48
50
  import "./chunk-HNCM3D7Y.js";
49
- import "./chunk-DABWCAXS.js";
50
- import "./chunk-ZFNBATE3.js";
51
- import "./chunk-N2Q3KYWM.js";
51
+ import "./chunk-EUOWCVU6.js";
52
+ import "./chunk-OXMOKQPW.js";
53
+ import "./chunk-3DZSHRXE.js";
52
54
  import "./chunk-OYBUJIC3.js";
53
- import "./chunk-ISE55FOR.js";
55
+ import "./chunk-2AI7VYPN.js";
54
56
  import {
55
57
  logger
56
58
  } from "./chunk-K44MW7JJ.js";
57
59
  import "./chunk-7OHXF5GW.js";
58
- import "./chunk-ATWOXI52.js";
60
+ import "./chunk-HCYSGLY2.js";
59
61
  import {
60
62
  getActiveProvider,
61
63
  getDefaultModel,
@@ -227,4 +229,4 @@ async function runServe(options) {
227
229
  export {
228
230
  runServe
229
231
  };
230
- //# sourceMappingURL=serve-Z5ITDPCQ.js.map
232
+ //# sourceMappingURL=serve-KQAPXO5X.js.map
@@ -1,7 +1,7 @@
1
- import { i as Diagnostic, x as Provider, M as ModelConfig, z as Session, J as SessionSummary, t as Project, G as SessionMode, H as SessionPhase, a0 as UserStepChoice, a2 as WorkflowExecution, a as Message, e as Criterion, g as CriterionStatus, r as MetadataEntry, A as Attachment, c as ContextState, D as DangerLevel$1, N as StatsIdentity, $ as ToolResult, b as Config } from '../types-PAKlAzp9.js';
1
+ import { i as Diagnostic, x as Provider, M as ModelConfig, z as Session, J as SessionSummary, t as Project, G as SessionMode, H as SessionPhase, a0 as UserStepChoice, a2 as WorkflowExecution, a as Message, e as Criterion, g as CriterionStatus, r as MetadataEntry, A as Attachment, c as ContextState, D as DangerLevel$1, N as StatsIdentity, $ as ToolResult, b as Config } from '../types-BIkpxjaj.js';
2
2
  import { Server } from 'node:http';
3
- import { e as LLMClient, d as LLMToolDefinition } from '../types-BWuVnaBw.js';
4
- import { a8 as QueuedMessage, a9 as ServerMessage } from '../protocol-DMneA8mx.js';
3
+ import { e as LLMClient, d as LLMToolDefinition } from '../types-CoY8Ka1C.js';
4
+ import { a8 as QueuedMessage, a9 as ServerMessage } from '../protocol-BMUoqwYH.js';
5
5
 
6
6
  /**
7
7
  * Model-specific configuration profiles.
@@ -18,6 +18,12 @@ interface ModelProfile {
18
18
  defaultMaxTokens: number;
19
19
  /** Whether the model supports vision/images */
20
20
  supportsVision: boolean;
21
+ /**
22
+ * Preferred API protocol for the model family (e.g. gpt-5 → responses,
23
+ * where tools + reasoning effort work together). Used to route the request
24
+ * on backends that speak that protocol (currently `openai`).
25
+ */
26
+ apiProtocol?: 'chat-completions' | 'responses';
21
27
  }
22
28
 
23
29
  /**
@@ -32,6 +38,8 @@ interface LLMClientWithModel extends LLMClient {
32
38
  getProfile(): ModelProfile;
33
39
  getBackend(): Backend;
34
40
  setBackend(backend: Backend): void;
41
+ /** True when the active model is routed to the OpenAI Responses API. */
42
+ usesResponsesApi?(): boolean;
35
43
  /** The reasoning effort this client was created with (if any). */
36
44
  getReasoningEffort?(): string | undefined;
37
45
  }
@@ -329,6 +337,7 @@ declare class SessionManager {
329
337
  private providerManager;
330
338
  private dynamicContextChangedStore;
331
339
  private debugDumpStore;
340
+ private announcedPromptHashStore;
332
341
  private warmedUpSessions;
333
342
  private switchLocks;
334
343
  private workspaceCreationLocks;
@@ -682,6 +691,12 @@ declare class SessionManager {
682
691
  }): void;
683
692
  clearDebugDump(sessionId: string): void;
684
693
  getDynamicContextChanged(sessionId: string): boolean;
694
+ /**
695
+ * The instructions/skills/model hash last announced to the model via a
696
+ * system-prompt-change reminder. Drives exactly-once prompt-drift reminders.
697
+ */
698
+ getAnnouncedPromptHash(sessionId: string): string | undefined;
699
+ setAnnouncedPromptHash(sessionId: string, hash: string): void;
685
700
  /**
686
701
  * @deprecated Use addTokensUsed instead
687
702
  */
@@ -1,56 +1,58 @@
1
1
  import {
2
2
  createServer,
3
3
  createServerHandle
4
- } from "../chunk-ZXWJ6JTL.js";
5
- import "../chunk-RSB4AR2A.js";
6
- import "../chunk-IJ53Y77N.js";
7
- import "../chunk-MYNNMV75.js";
8
- import "../chunk-OHTBWA7L.js";
9
- import "../chunk-2COZT3YI.js";
10
- import "../chunk-7RIEI2TE.js";
11
- import "../chunk-L24A6GZ7.js";
12
- import "../chunk-PHP7PLFX.js";
13
- import "../chunk-ZIL6VKLU.js";
4
+ } from "../chunk-DI5GTIAU.js";
5
+ import "../chunk-T3S5MTMD.js";
14
6
  import "../chunk-WLJJRX22.js";
15
- import "../chunk-IJFKJ5D6.js";
16
- import "../chunk-6LX43YRA.js";
17
- import "../chunk-GIJUWPRQ.js";
7
+ import "../chunk-DQTN4B33.js";
8
+ import "../chunk-IJ53Y77N.js";
9
+ import "../chunk-DYIDDGMN.js";
10
+ import "../chunk-35GQEIH2.js";
11
+ import "../chunk-2OMXXCJJ.js";
12
+ import "../chunk-EVVWDRM5.js";
13
+ import "../chunk-X24XN2M2.js";
14
+ import "../chunk-Y3BSBKHY.js";
15
+ import "../chunk-J7GAZGZT.js";
16
+ import "../chunk-JSONBGSY.js";
17
+ import "../chunk-ZRCRGPGT.js";
18
+ import "../chunk-VUIXQ6X4.js";
19
+ import "../chunk-7ET46SNE.js";
18
20
  import "../chunk-EHFIUXWZ.js";
19
- import "../chunk-RV5G7QQU.js";
21
+ import "../chunk-DQTXXHD2.js";
20
22
  import "../chunk-I72ACQ6R.js";
21
23
  import "../chunk-JE7LW7Y6.js";
22
24
  import "../chunk-OAN4BXEW.js";
23
- import "../chunk-Y3BSBKHY.js";
24
- import "../chunk-J7GAZGZT.js";
25
- import "../chunk-H6YIVK67.js";
26
- import "../chunk-7YP4O4XE.js";
27
- import "../chunk-26WS7AH6.js";
28
- import "../chunk-YJD5A375.js";
29
- import "../chunk-ZIYETXOW.js";
30
- import "../chunk-AQBRI7TM.js";
31
- import "../chunk-567L5OJ6.js";
32
- import "../chunk-66MG44TF.js";
25
+ import "../chunk-25DAVVTP.js";
26
+ import "../chunk-64N4CZFT.js";
27
+ import "../chunk-CGCEAKG5.js";
33
28
  import "../chunk-JURM3RPZ.js";
29
+ import "../chunk-VJNA5AOB.js";
30
+ import "../chunk-AYCB32NI.js";
31
+ import "../chunk-JKRMMNUR.js";
32
+ import "../chunk-X3FHIDLT.js";
33
+ import "../chunk-JHA2SPCU.js";
34
+ import "../chunk-OSXPQSLW.js";
35
+ import "../chunk-P57IBMK4.js";
34
36
  import "../chunk-LCLH6ZUL.js";
35
- import "../chunk-JQMQ4DGC.js";
36
- import "../chunk-K2QKX4ZJ.js";
37
+ import "../chunk-6QZVAOSA.js";
38
+ import "../chunk-CYQUM42E.js";
39
+ import "../chunk-OA2FURC3.js";
37
40
  import "../chunk-J2GP3J3X.js";
38
- import "../chunk-HIRDDCPD.js";
39
- import "../chunk-KBESUA3W.js";
40
- import "../chunk-OSXPQSLW.js";
41
+ import "../chunk-YNMP647F.js";
42
+ import "../chunk-3OBZ55SX.js";
41
43
  import "../chunk-3B232XG4.js";
42
- import "../chunk-P6GTPKE5.js";
43
- import "../chunk-7ZMOP5LS.js";
44
- import "../chunk-PBFGJFGC.js";
44
+ import "../chunk-DHDIKVRT.js";
45
+ import "../chunk-TS5WKTFB.js";
46
+ import "../chunk-UV6IH6HK.js";
45
47
  import "../chunk-HNCM3D7Y.js";
46
- import "../chunk-DABWCAXS.js";
47
- import "../chunk-ZFNBATE3.js";
48
- import "../chunk-N2Q3KYWM.js";
48
+ import "../chunk-EUOWCVU6.js";
49
+ import "../chunk-OXMOKQPW.js";
50
+ import "../chunk-3DZSHRXE.js";
49
51
  import "../chunk-OYBUJIC3.js";
50
- import "../chunk-ISE55FOR.js";
52
+ import "../chunk-2AI7VYPN.js";
51
53
  import "../chunk-K44MW7JJ.js";
52
54
  import "../chunk-7OHXF5GW.js";
53
- import "../chunk-ATWOXI52.js";
55
+ import "../chunk-HCYSGLY2.js";
54
56
  import "../chunk-R5FAEKXQ.js";
55
57
  import "../chunk-CQGTEGKL.js";
56
58
  import "../chunk-YLJ4XMA6.js";
@@ -0,0 +1,56 @@
1
+ import {
2
+ createWebSocketServer,
3
+ signalMcpReady
4
+ } from "./chunk-DYIDDGMN.js";
5
+ import "./chunk-35GQEIH2.js";
6
+ import "./chunk-2OMXXCJJ.js";
7
+ import "./chunk-EVVWDRM5.js";
8
+ import "./chunk-X24XN2M2.js";
9
+ import "./chunk-Y3BSBKHY.js";
10
+ import "./chunk-J7GAZGZT.js";
11
+ import "./chunk-JSONBGSY.js";
12
+ import "./chunk-ZRCRGPGT.js";
13
+ import "./chunk-VUIXQ6X4.js";
14
+ import "./chunk-7ET46SNE.js";
15
+ import "./chunk-EHFIUXWZ.js";
16
+ import "./chunk-DQTXXHD2.js";
17
+ import "./chunk-I72ACQ6R.js";
18
+ import "./chunk-JE7LW7Y6.js";
19
+ import "./chunk-OAN4BXEW.js";
20
+ import "./chunk-25DAVVTP.js";
21
+ import "./chunk-64N4CZFT.js";
22
+ import "./chunk-CGCEAKG5.js";
23
+ import "./chunk-JURM3RPZ.js";
24
+ import "./chunk-VJNA5AOB.js";
25
+ import "./chunk-AYCB32NI.js";
26
+ import "./chunk-JKRMMNUR.js";
27
+ import "./chunk-X3FHIDLT.js";
28
+ import "./chunk-JHA2SPCU.js";
29
+ import "./chunk-OSXPQSLW.js";
30
+ import "./chunk-P57IBMK4.js";
31
+ import "./chunk-LCLH6ZUL.js";
32
+ import "./chunk-6QZVAOSA.js";
33
+ import "./chunk-CYQUM42E.js";
34
+ import "./chunk-OA2FURC3.js";
35
+ import "./chunk-J2GP3J3X.js";
36
+ import "./chunk-3B232XG4.js";
37
+ import "./chunk-DHDIKVRT.js";
38
+ import "./chunk-TS5WKTFB.js";
39
+ import "./chunk-UV6IH6HK.js";
40
+ import "./chunk-HNCM3D7Y.js";
41
+ import "./chunk-EUOWCVU6.js";
42
+ import "./chunk-OXMOKQPW.js";
43
+ import "./chunk-3DZSHRXE.js";
44
+ import "./chunk-OYBUJIC3.js";
45
+ import "./chunk-2AI7VYPN.js";
46
+ import "./chunk-K44MW7JJ.js";
47
+ import "./chunk-7OHXF5GW.js";
48
+ import "./chunk-HCYSGLY2.js";
49
+ import "./chunk-R5FAEKXQ.js";
50
+ import "./chunk-CQGTEGKL.js";
51
+ import "./chunk-YLJ4XMA6.js";
52
+ export {
53
+ createWebSocketServer,
54
+ signalMcpReady
55
+ };
56
+ //# sourceMappingURL=server-RPKVKMDD.js.map
@@ -2,21 +2,21 @@ import {
2
2
  createTasksService,
3
3
  isTaskConflictError,
4
4
  isTaskGateError
5
- } from "./chunk-H6YIVK67.js";
6
- import "./chunk-JQMQ4DGC.js";
7
- import "./chunk-K2QKX4ZJ.js";
8
- import "./chunk-J2GP3J3X.js";
5
+ } from "./chunk-JSONBGSY.js";
9
6
  import "./chunk-OSXPQSLW.js";
7
+ import "./chunk-CYQUM42E.js";
8
+ import "./chunk-OA2FURC3.js";
9
+ import "./chunk-J2GP3J3X.js";
10
10
  import "./chunk-3B232XG4.js";
11
- import "./chunk-P6GTPKE5.js";
12
- import "./chunk-7ZMOP5LS.js";
13
- import "./chunk-PBFGJFGC.js";
11
+ import "./chunk-DHDIKVRT.js";
12
+ import "./chunk-TS5WKTFB.js";
13
+ import "./chunk-UV6IH6HK.js";
14
14
  import "./chunk-HNCM3D7Y.js";
15
- import "./chunk-DABWCAXS.js";
16
- import "./chunk-ZFNBATE3.js";
17
- import "./chunk-N2Q3KYWM.js";
15
+ import "./chunk-EUOWCVU6.js";
16
+ import "./chunk-OXMOKQPW.js";
17
+ import "./chunk-3DZSHRXE.js";
18
18
  import "./chunk-OYBUJIC3.js";
19
- import "./chunk-ISE55FOR.js";
19
+ import "./chunk-2AI7VYPN.js";
20
20
  import "./chunk-K44MW7JJ.js";
21
21
  import "./chunk-YLJ4XMA6.js";
22
22
  export {
@@ -24,4 +24,4 @@ export {
24
24
  isTaskConflictError,
25
25
  isTaskGateError
26
26
  };
27
- //# sourceMappingURL=service-INQWTYY2.js.map
27
+ //# sourceMappingURL=service-7TLOSFAO.js.map
@@ -3,12 +3,12 @@ import {
3
3
  getAllSessionOverrides,
4
4
  getSessionDisabledServers,
5
5
  setSessionDisabledServers
6
- } from "./chunk-7YP4O4XE.js";
7
- import "./chunk-AQBRI7TM.js";
8
- import "./chunk-KBESUA3W.js";
6
+ } from "./chunk-ZRCRGPGT.js";
7
+ import "./chunk-X3FHIDLT.js";
8
+ import "./chunk-JHA2SPCU.js";
9
9
  import "./chunk-OSXPQSLW.js";
10
10
  import "./chunk-3B232XG4.js";
11
- import "./chunk-N2Q3KYWM.js";
11
+ import "./chunk-3DZSHRXE.js";
12
12
  import "./chunk-OYBUJIC3.js";
13
13
  import "./chunk-K44MW7JJ.js";
14
14
  import "./chunk-CQGTEGKL.js";
@@ -19,4 +19,4 @@ export {
19
19
  getSessionDisabledServers,
20
20
  setSessionDisabledServers
21
21
  };
22
- //# sourceMappingURL=session-overrides-4WAD3X5Q.js.map
22
+ //# sourceMappingURL=session-overrides-U573CU2V.js.map
@@ -0,0 +1,10 @@
1
+ import {
2
+ SESSION_STATUS_SCHEMA_VERSION,
3
+ projectSessionStatus
4
+ } from "./chunk-T3S5MTMD.js";
5
+ import "./chunk-YLJ4XMA6.js";
6
+ export {
7
+ SESSION_STATUS_SCHEMA_VERSION,
8
+ projectSessionStatus
9
+ };
10
+ //# sourceMappingURL=session-status-UFO5IFI7.js.map
@@ -27,11 +27,11 @@ import {
27
27
  updateSessionRunning,
28
28
  updateSessionWorkdir,
29
29
  updateWorkflowExecutionStatus
30
- } from "./chunk-AQBRI7TM.js";
31
- import "./chunk-KBESUA3W.js";
30
+ } from "./chunk-X3FHIDLT.js";
31
+ import "./chunk-JHA2SPCU.js";
32
32
  import "./chunk-OSXPQSLW.js";
33
33
  import "./chunk-3B232XG4.js";
34
- import "./chunk-N2Q3KYWM.js";
34
+ import "./chunk-3DZSHRXE.js";
35
35
  import "./chunk-OYBUJIC3.js";
36
36
  import "./chunk-K44MW7JJ.js";
37
37
  import "./chunk-CQGTEGKL.js";
@@ -66,4 +66,4 @@ export {
66
66
  updateSessionWorkdir,
67
67
  updateWorkflowExecutionStatus
68
68
  };
69
- //# sourceMappingURL=sessions-D7VRCHQY.js.map
69
+ //# sourceMappingURL=sessions-LUVWWRFO.js.map
@@ -6,7 +6,7 @@ import {
6
6
  getMaxVisibleItems,
7
7
  getSetting,
8
8
  setSetting
9
- } from "./chunk-N2Q3KYWM.js";
9
+ } from "./chunk-3DZSHRXE.js";
10
10
  import "./chunk-OYBUJIC3.js";
11
11
  import "./chunk-K44MW7JJ.js";
12
12
  import "./chunk-YLJ4XMA6.js";
@@ -19,4 +19,4 @@ export {
19
19
  getSetting,
20
20
  setSetting
21
21
  };
22
- //# sourceMappingURL=settings-VOWWO4VG.js.map
22
+ //# sourceMappingURL=settings-LMAMF2X7.js.map
@@ -1,6 +1,6 @@
1
- import { a as Message, S as SessionStats } from '../types-PAKlAzp9.js';
2
- export { A as Attachment, C as CallStatsDataPoint, b as Config, c as ContextState, d as ContextWindow, e as Criterion, f as CriterionAttempt, g as CriterionStatus, h as CriterionValidation, D as DangerLevel, i as Diagnostic, E as EditContextEdit, j as EditContextLine, k as EditContextRegion, l as ElementData, m as ExecutionState, F as FileReadEntry, I as InjectedFile, L as LLMCallStats, n as LlmBackend, o as MessageRole, p as MessageSegment, q as MessageStats, r as MetadataEntry, M as ModelConfig, s as ModelSessionStats, P as PreparingToolCall, t as Project, u as ProjectTask, v as ProjectTaskCounts, w as ProjectTaskSettings, x as Provider, y as ProviderBackend, R as RecentUserPrompt, z as Session, B as SessionMetadata, G as SessionMode, H as SessionPhase, J as SessionSummary, K as StatsDataPoint, N as StatsIdentity, O as TaskActor, Q as TaskAuditEntry, U as TaskGateConfig, V as TaskGateValue, W as TaskRunState, X as TaskStatus, Y as Todo, T as ToolCall, Z as ToolMode, _ as ToolName, $ as ToolResult, a0 as UserStepChoice, a1 as ValidationResult, a2 as WorkflowExecution, a3 as WorkflowExecutionStatus, a4 as WorkflowLaunchScope, a5 as WorkflowParameter, a6 as WorkflowScope } from '../types-PAKlAzp9.js';
3
- export { A as AgentEvent, a as AskAnswerPayload, b as AskUserEvent, B as BackgroundProcess, c as BackgroundProcessExitedPayload, d as BackgroundProcessOutputPayload, e as BackgroundProcessRemovedPayload, f as BackgroundProcessStartedPayload, g as BackgroundProcessStatus, C as ChatAskUserPayload, h as ChatDeltaPayload, i as ChatDonePayload, j as ChatErrorPayload, k as ChatFormatRetryPayload, l as ChatLLMRetryFailedPayload, m as ChatLLMRetryNowPayload, n as ChatLLMRetryPayload, o as ChatMessagePayload, p as ChatMessageUpdatedPayload, q as ChatPathConfirmationPayload, r as ChatProgressPayload, s as ChatRetryPayload, t as ChatStatsPayload, u as ChatThinkingPayload, v as ChatTodoPayload, w as ChatToolCallPayload, x as ChatToolOutputPayload, y as ChatToolPreparingPayload, z as ChatToolResultPayload, D as ChatVisionFallbackPayload, E as ChoiceOption, F as ClientMessage, G as ClientMessageType, H as ContextCompactionEvent, I as ContextPreviewPayload, J as ContextStatePayload, K as CriteriaUpdatedPayload, L as DevServerOutputPayload, M as DevServerStatePayload, N as DiffLine, O as ErrorPayload, P as GitDiffFile, Q as GitStatusPayload, R as LogLine, S as LspDiagnosticsPayload, T as MetadataUpdatedPayload, U as ModeChangedPayload, V as PathConfirmPayload, W as PathConfirmationReason, X as PendingPathConfirmationPayload, Y as PendingQuestionPayload, Z as PhaseChangedPayload, _ as ProjectDeletedPayload, $ as ProjectListPayload, a0 as ProjectStatePayload, a1 as ProviderChangedPayload, a2 as QueueAddedEvent, a3 as QueueCancelledEvent, a4 as QueueDrainedEvent, a5 as QueueEvent, a6 as QueueEventType, a7 as QueueStatePayload, a8 as QueuedMessage, a9 as ServerMessage, aa as ServerMessageType, ab as SessionCreatedPayload, ac as SessionListPayload, ad as SessionLoadPayload, ae as SessionNameGeneratedPayload, af as SessionRunningPayload, ag as SessionStatePayload, ah as TaskCompletedPayload, ai as TasksUpdatePayload, aj as WorkflowWaitingPayload, ak as createClientMessage, al as createServerMessage, am as isClientMessage, an as isServerMessage } from '../protocol-DMneA8mx.js';
1
+ import { a as Message, S as SessionStats } from '../types-BIkpxjaj.js';
2
+ export { A as Attachment, C as CallStatsDataPoint, b as Config, c as ContextState, d as ContextWindow, e as Criterion, f as CriterionAttempt, g as CriterionStatus, h as CriterionValidation, D as DangerLevel, i as Diagnostic, E as EditContextEdit, j as EditContextLine, k as EditContextRegion, l as ElementData, m as ExecutionState, F as FileReadEntry, I as InjectedFile, L as LLMCallStats, n as LlmBackend, o as MessageRole, p as MessageSegment, q as MessageStats, r as MetadataEntry, M as ModelConfig, s as ModelSessionStats, P as PreparingToolCall, t as Project, u as ProjectTask, v as ProjectTaskCounts, w as ProjectTaskSettings, x as Provider, y as ProviderBackend, R as RecentUserPrompt, z as Session, B as SessionMetadata, G as SessionMode, H as SessionPhase, J as SessionSummary, K as StatsDataPoint, N as StatsIdentity, O as TaskActor, Q as TaskAuditEntry, U as TaskGateConfig, V as TaskGateValue, W as TaskRunState, X as TaskStatus, Y as Todo, T as ToolCall, Z as ToolMode, _ as ToolName, $ as ToolResult, a0 as UserStepChoice, a1 as ValidationResult, a2 as WorkflowExecution, a3 as WorkflowExecutionStatus, a4 as WorkflowLaunchScope, a5 as WorkflowParameter, a6 as WorkflowScope } from '../types-BIkpxjaj.js';
3
+ export { A as AgentEvent, a as AskAnswerPayload, b as AskUserEvent, B as BackgroundProcess, c as BackgroundProcessExitedPayload, d as BackgroundProcessOutputPayload, e as BackgroundProcessRemovedPayload, f as BackgroundProcessStartedPayload, g as BackgroundProcessStatus, C as ChatAskUserPayload, h as ChatDeltaPayload, i as ChatDonePayload, j as ChatErrorPayload, k as ChatFormatRetryPayload, l as ChatLLMRetryFailedPayload, m as ChatLLMRetryNowPayload, n as ChatLLMRetryPayload, o as ChatMessagePayload, p as ChatMessageUpdatedPayload, q as ChatPathConfirmationPayload, r as ChatProgressPayload, s as ChatRetryPayload, t as ChatStatsPayload, u as ChatThinkingPayload, v as ChatTodoPayload, w as ChatToolCallPayload, x as ChatToolOutputPayload, y as ChatToolPreparingPayload, z as ChatToolResultPayload, D as ChatVisionFallbackPayload, E as ChoiceOption, F as ClientMessage, G as ClientMessageType, H as ContextCompactionEvent, I as ContextPreviewPayload, J as ContextStatePayload, K as CriteriaUpdatedPayload, L as DevServerOutputPayload, M as DevServerStatePayload, N as DiffLine, O as ErrorPayload, P as GitDiffFile, Q as GitStatusPayload, R as LogLine, S as LspDiagnosticsPayload, T as MetadataUpdatedPayload, U as ModeChangedPayload, V as PathConfirmPayload, W as PathConfirmationReason, X as PendingPathConfirmationPayload, Y as PendingQuestionPayload, Z as PhaseChangedPayload, _ as ProjectDeletedPayload, $ as ProjectListPayload, a0 as ProjectStatePayload, a1 as ProviderChangedPayload, a2 as QueueAddedEvent, a3 as QueueCancelledEvent, a4 as QueueDrainedEvent, a5 as QueueEvent, a6 as QueueEventType, a7 as QueueStatePayload, a8 as QueuedMessage, a9 as ServerMessage, aa as ServerMessageType, ab as SessionCreatedPayload, ac as SessionListPayload, ad as SessionLoadPayload, ae as SessionNameGeneratedPayload, af as SessionRunningPayload, ag as SessionStatePayload, ah as TaskCompletedPayload, ai as TasksUpdatePayload, aj as WorkflowWaitingPayload, ak as createClientMessage, al as createServerMessage, am as isClientMessage, an as isServerMessage } from '../protocol-BMUoqwYH.js';
4
4
 
5
5
  /**
6
6
  * Session stats computation - aggregates response-level MessageStats from
@@ -6,7 +6,7 @@ import {
6
6
  createServerMessage,
7
7
  isClientMessage,
8
8
  isServerMessage
9
- } from "../chunk-ATWOXI52.js";
9
+ } from "../chunk-HCYSGLY2.js";
10
10
  import "../chunk-YLJ4XMA6.js";
11
11
  export {
12
12
  computeSessionStats,
@@ -2,7 +2,7 @@
2
2
  name: browser
3
3
  description: Interactive browser control via playwright-cli commands (open, snapshot, click, fill, screenshot, etc.)
4
4
  metadata:
5
- version: 1.1.0
5
+ version: 1.2.0
6
6
  openfox:
7
7
  displayName: Browser
8
8
  ---
@@ -38,6 +38,25 @@ npx -y @playwright/cli screenshot
38
38
  npx -y @playwright/cli close
39
39
  ```
40
40
 
41
+ ## Local files
42
+
43
+ `@playwright/cli` cannot open `file://` URLs — `open file:///path/to/index.html` will not work. To inspect a local HTML file, serve it over HTTP from a background process, then open the URL:
44
+
45
+ ```bash
46
+ # Serve the current directory (default port 3000)
47
+ npx -y serve
48
+ # Serve a specific folder on a custom port
49
+ npx -y serve ./dist -p 8080
50
+ ```
51
+
52
+ Launch it with the `background_process` tool (not `run_command`, which would block until the server exits), then open the address in the browser:
53
+
54
+ ```bash
55
+ npx -y @playwright/cli open http://localhost:3000
56
+ ```
57
+
58
+ Stop the background process when you're done with it.
59
+
41
60
  ## Cleaning up
42
61
 
43
62
  Closing the browser is part of the workflow, not an afterthought: Chromium can leave orphaned processes behind (a known upstream quirk) that keep burning CPU. If you suspect a leftover browser, reclaim it:
@@ -3,23 +3,23 @@ import {
3
3
  getTaskSettings,
4
4
  isTaskConflictError,
5
5
  isTaskGateError
6
- } from "./chunk-H6YIVK67.js";
7
- import "./chunk-JQMQ4DGC.js";
8
- import "./chunk-K2QKX4ZJ.js";
9
- import "./chunk-J2GP3J3X.js";
6
+ } from "./chunk-JSONBGSY.js";
10
7
  import "./chunk-OSXPQSLW.js";
8
+ import "./chunk-CYQUM42E.js";
9
+ import "./chunk-OA2FURC3.js";
10
+ import "./chunk-J2GP3J3X.js";
11
11
  import {
12
12
  getProject
13
13
  } from "./chunk-3B232XG4.js";
14
- import "./chunk-P6GTPKE5.js";
15
- import "./chunk-7ZMOP5LS.js";
16
- import "./chunk-PBFGJFGC.js";
14
+ import "./chunk-DHDIKVRT.js";
15
+ import "./chunk-TS5WKTFB.js";
16
+ import "./chunk-UV6IH6HK.js";
17
17
  import "./chunk-HNCM3D7Y.js";
18
- import "./chunk-DABWCAXS.js";
19
- import "./chunk-ZFNBATE3.js";
20
- import "./chunk-N2Q3KYWM.js";
18
+ import "./chunk-EUOWCVU6.js";
19
+ import "./chunk-OXMOKQPW.js";
20
+ import "./chunk-3DZSHRXE.js";
21
21
  import "./chunk-OYBUJIC3.js";
22
- import "./chunk-ISE55FOR.js";
22
+ import "./chunk-2AI7VYPN.js";
23
23
  import "./chunk-K44MW7JJ.js";
24
24
  import "./chunk-YLJ4XMA6.js";
25
25
 
@@ -217,4 +217,4 @@ function registerTaskRoutes(router, tasksService) {
217
217
  export {
218
218
  registerTaskRoutes
219
219
  };
220
- //# sourceMappingURL=tasks-SE3DOPVP.js.map
220
+ //# sourceMappingURL=tasks-FA6Z52H2.js.map
@@ -10,55 +10,55 @@ import {
10
10
  setTasksService,
11
11
  stepDoneTool,
12
12
  validateToolAction
13
- } from "./chunk-L24A6GZ7.js";
14
- import "./chunk-ZIL6VKLU.js";
15
- import "./chunk-6LX43YRA.js";
16
- import "./chunk-GIJUWPRQ.js";
13
+ } from "./chunk-X24XN2M2.js";
14
+ import "./chunk-Y3BSBKHY.js";
15
+ import "./chunk-J7GAZGZT.js";
16
+ import "./chunk-JSONBGSY.js";
17
+ import "./chunk-ZRCRGPGT.js";
18
+ import "./chunk-7ET46SNE.js";
17
19
  import "./chunk-EHFIUXWZ.js";
18
- import "./chunk-RV5G7QQU.js";
20
+ import "./chunk-DQTXXHD2.js";
19
21
  import "./chunk-I72ACQ6R.js";
20
22
  import "./chunk-JE7LW7Y6.js";
21
23
  import "./chunk-OAN4BXEW.js";
22
- import "./chunk-Y3BSBKHY.js";
23
- import "./chunk-J7GAZGZT.js";
24
- import "./chunk-H6YIVK67.js";
25
- import "./chunk-7YP4O4XE.js";
26
- import {
27
- PathAccessDeniedError,
28
- cancelPathConfirmationsForSession,
29
- getConfirmationSessionId,
30
- providePathConfirmation,
31
- requestPathAccess
32
- } from "./chunk-26WS7AH6.js";
33
- import "./chunk-YJD5A375.js";
34
- import "./chunk-ZIYETXOW.js";
35
- import "./chunk-AQBRI7TM.js";
36
- import "./chunk-567L5OJ6.js";
37
- import "./chunk-66MG44TF.js";
24
+ import "./chunk-64N4CZFT.js";
25
+ import "./chunk-CGCEAKG5.js";
38
26
  import {
39
27
  AskUserInterrupt,
40
28
  cancelQuestionsForSession,
41
29
  getPendingQuestionsForSession,
42
30
  provideAnswer
43
31
  } from "./chunk-JURM3RPZ.js";
32
+ import {
33
+ PathAccessDeniedError,
34
+ cancelPathConfirmationsForSession,
35
+ getConfirmationSessionId,
36
+ providePathConfirmation,
37
+ requestPathAccess
38
+ } from "./chunk-VJNA5AOB.js";
39
+ import "./chunk-AYCB32NI.js";
40
+ import "./chunk-JKRMMNUR.js";
41
+ import "./chunk-X3FHIDLT.js";
42
+ import "./chunk-JHA2SPCU.js";
43
+ import "./chunk-OSXPQSLW.js";
44
+ import "./chunk-P57IBMK4.js";
44
45
  import "./chunk-LCLH6ZUL.js";
45
- import "./chunk-JQMQ4DGC.js";
46
- import "./chunk-K2QKX4ZJ.js";
46
+ import "./chunk-6QZVAOSA.js";
47
+ import "./chunk-CYQUM42E.js";
48
+ import "./chunk-OA2FURC3.js";
47
49
  import "./chunk-J2GP3J3X.js";
48
- import "./chunk-KBESUA3W.js";
49
- import "./chunk-OSXPQSLW.js";
50
50
  import "./chunk-3B232XG4.js";
51
- import "./chunk-P6GTPKE5.js";
52
- import "./chunk-7ZMOP5LS.js";
53
- import "./chunk-PBFGJFGC.js";
51
+ import "./chunk-DHDIKVRT.js";
52
+ import "./chunk-TS5WKTFB.js";
53
+ import "./chunk-UV6IH6HK.js";
54
54
  import "./chunk-HNCM3D7Y.js";
55
- import "./chunk-DABWCAXS.js";
56
- import "./chunk-ZFNBATE3.js";
57
- import "./chunk-N2Q3KYWM.js";
55
+ import "./chunk-EUOWCVU6.js";
56
+ import "./chunk-OXMOKQPW.js";
57
+ import "./chunk-3DZSHRXE.js";
58
58
  import "./chunk-OYBUJIC3.js";
59
- import "./chunk-ISE55FOR.js";
59
+ import "./chunk-2AI7VYPN.js";
60
60
  import "./chunk-K44MW7JJ.js";
61
- import "./chunk-ATWOXI52.js";
61
+ import "./chunk-HCYSGLY2.js";
62
62
  import "./chunk-R5FAEKXQ.js";
63
63
  import "./chunk-CQGTEGKL.js";
64
64
  import "./chunk-YLJ4XMA6.js";
@@ -84,4 +84,4 @@ export {
84
84
  stepDoneTool,
85
85
  validateToolAction
86
86
  };
87
- //# sourceMappingURL=tools-6XUSIJN2.js.map
87
+ //# sourceMappingURL=tools-SSPC3UQZ.js.map
@@ -537,9 +537,9 @@ interface Diagnostic {
537
537
  code?: string | number;
538
538
  }
539
539
  /** Supported LLM inference backends */
540
- type LlmBackend = 'vllm' | 'sglang' | 'ollama' | 'llamacpp' | 'lmstudio' | 'opencode-go' | 'unknown';
540
+ type LlmBackend = 'vllm' | 'sglang' | 'ollama' | 'llamacpp' | 'lmstudio' | 'opencode-go' | 'openai' | 'anthropic' | 'unknown';
541
541
  /** Extended backend type including cloud providers */
542
- type ProviderBackend = LlmBackend | 'openai' | 'anthropic';
542
+ type ProviderBackend = LlmBackend;
543
543
  /** Model configuration with context window */
544
544
  interface ModelConfig {
545
545
  id: string;
@@ -555,6 +555,15 @@ interface ModelConfig {
555
555
  * Takes precedence over `thinkingLevel` as the model default and is never
556
556
  * clamped to the preset list — the escape hatch for provider-specific values. */
557
557
  reasoningEffortOverride?: string;
558
+ /** Modes a merged model exposes, each mapping a level to the concrete
559
+ * provider model ID to send (e.g. OmniRoute exposes the same model as
560
+ * "gemini-3.6-flash-low/-medium/-high"). When present, the active effort
561
+ * selects the corresponding apiModelId at request time. */
562
+ modes?: Array<{
563
+ level: string;
564
+ apiModelId: string;
565
+ name?: string;
566
+ }>;
558
567
  contextWindow: number;
559
568
  source: 'backend' | 'user' | 'default';
560
569
  selected?: boolean;