@orion-agents/orion-code 0.1.2 → 0.1.4

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 (237) hide show
  1. package/README.md +96 -3
  2. package/README.zh-CN.md +109 -4
  3. package/dist/commands/index.d.ts.map +1 -1
  4. package/dist/commands/index.js +168 -54
  5. package/dist/commands/index.js.map +1 -1
  6. package/dist/commands/types.d.ts +3 -1
  7. package/dist/commands/types.d.ts.map +1 -1
  8. package/dist/commands/types.js.map +1 -1
  9. package/dist/framework/query.d.ts +3 -0
  10. package/dist/framework/query.d.ts.map +1 -1
  11. package/dist/framework/query.js +1 -0
  12. package/dist/framework/query.js.map +1 -1
  13. package/dist/framework/tool-scheduler.d.ts +61 -1
  14. package/dist/framework/tool-scheduler.d.ts.map +1 -1
  15. package/dist/framework/tool-scheduler.js +165 -47
  16. package/dist/framework/tool-scheduler.js.map +1 -1
  17. package/dist/framework/tool.d.ts +9 -0
  18. package/dist/framework/tool.d.ts.map +1 -1
  19. package/dist/framework/tool.js +2 -0
  20. package/dist/framework/tool.js.map +1 -1
  21. package/dist/ink-ui/screens/ReplScreen.d.ts +2 -1
  22. package/dist/ink-ui/screens/ReplScreen.d.ts.map +1 -1
  23. package/dist/ink-ui/screens/ReplScreen.js +65 -0
  24. package/dist/ink-ui/screens/ReplScreen.js.map +1 -1
  25. package/dist/memory/embeddings.d.ts.map +1 -1
  26. package/dist/memory/embeddings.js +3 -2
  27. package/dist/memory/embeddings.js.map +1 -1
  28. package/dist/memory/semantic-search.d.ts.map +1 -1
  29. package/dist/memory/semantic-search.js +2 -1
  30. package/dist/memory/semantic-search.js.map +1 -1
  31. package/dist/memory/vector-store.d.ts.map +1 -1
  32. package/dist/memory/vector-store.js +7 -3
  33. package/dist/memory/vector-store.js.map +1 -1
  34. package/dist/migration/migrate.d.ts.map +1 -1
  35. package/dist/migration/migrate.js +7 -11
  36. package/dist/migration/migrate.js.map +1 -1
  37. package/dist/print-ui/launch.d.ts +2 -1
  38. package/dist/print-ui/launch.d.ts.map +1 -1
  39. package/dist/print-ui/launch.js +7 -0
  40. package/dist/print-ui/launch.js.map +1 -1
  41. package/dist/runtime/agent-runtime-controller.d.ts +1 -0
  42. package/dist/runtime/agent-runtime-controller.d.ts.map +1 -1
  43. package/dist/runtime/agent-runtime-controller.js +24 -3
  44. package/dist/runtime/agent-runtime-controller.js.map +1 -1
  45. package/dist/runtime/agent-runtime-protocol.d.ts +16 -1
  46. package/dist/runtime/agent-runtime-protocol.d.ts.map +1 -1
  47. package/dist/runtime/agent-runtime-protocol.js +12 -0
  48. package/dist/runtime/agent-runtime-protocol.js.map +1 -1
  49. package/dist/runtime/chat-controller.d.ts +6 -0
  50. package/dist/runtime/chat-controller.d.ts.map +1 -1
  51. package/dist/runtime/chat-controller.js +65 -2
  52. package/dist/runtime/chat-controller.js.map +1 -1
  53. package/dist/runtime/goals/tools.d.ts.map +1 -1
  54. package/dist/runtime/goals/tools.js +14 -14
  55. package/dist/runtime/goals/tools.js.map +1 -1
  56. package/dist/runtime/goals/types.d.ts +6 -0
  57. package/dist/runtime/goals/types.d.ts.map +1 -1
  58. package/dist/runtime/goals/types.js.map +1 -1
  59. package/dist/runtime/model-coordinator.d.ts.map +1 -1
  60. package/dist/runtime/model-coordinator.js.map +1 -1
  61. package/dist/runtime/subagents/child-executor-guard.d.ts.map +1 -1
  62. package/dist/runtime/subagents/child-executor-guard.js +4 -0
  63. package/dist/runtime/subagents/child-executor-guard.js.map +1 -1
  64. package/dist/runtime/subagents/index.d.ts +10 -3
  65. package/dist/runtime/subagents/index.d.ts.map +1 -1
  66. package/dist/runtime/subagents/index.js +24 -1
  67. package/dist/runtime/subagents/index.js.map +1 -1
  68. package/dist/runtime/subagents/provider-gate.d.ts.map +1 -1
  69. package/dist/runtime/subagents/provider-gate.js +0 -1
  70. package/dist/runtime/subagents/provider-gate.js.map +1 -1
  71. package/dist/runtime/subagents/research-artifact.d.ts +94 -0
  72. package/dist/runtime/subagents/research-artifact.d.ts.map +1 -0
  73. package/dist/runtime/subagents/research-artifact.js +164 -0
  74. package/dist/runtime/subagents/research-artifact.js.map +1 -0
  75. package/dist/runtime/subagents/research-citation.d.ts +66 -0
  76. package/dist/runtime/subagents/research-citation.d.ts.map +1 -0
  77. package/dist/runtime/subagents/research-citation.js +185 -0
  78. package/dist/runtime/subagents/research-citation.js.map +1 -0
  79. package/dist/runtime/subagents/research-contract.d.ts +69 -0
  80. package/dist/runtime/subagents/research-contract.d.ts.map +1 -0
  81. package/dist/runtime/subagents/research-contract.js +232 -0
  82. package/dist/runtime/subagents/research-contract.js.map +1 -0
  83. package/dist/runtime/subagents/research-quality.d.ts +47 -0
  84. package/dist/runtime/subagents/research-quality.d.ts.map +1 -0
  85. package/dist/runtime/subagents/research-quality.js +125 -0
  86. package/dist/runtime/subagents/research-quality.js.map +1 -0
  87. package/dist/runtime/subagents/research-renderer.d.ts +79 -0
  88. package/dist/runtime/subagents/research-renderer.d.ts.map +1 -0
  89. package/dist/runtime/subagents/research-renderer.js +154 -0
  90. package/dist/runtime/subagents/research-renderer.js.map +1 -0
  91. package/dist/runtime/subagents/research-types.d.ts +105 -0
  92. package/dist/runtime/subagents/research-types.d.ts.map +1 -0
  93. package/dist/runtime/subagents/research-types.js +16 -0
  94. package/dist/runtime/subagents/research-types.js.map +1 -0
  95. package/dist/runtime/subagents/runtime-integration.d.ts +1 -1
  96. package/dist/runtime/subagents/runtime-integration.d.ts.map +1 -1
  97. package/dist/runtime/subagents/runtime-integration.js.map +1 -1
  98. package/dist/runtime/subagents/supervisor.d.ts +1 -1
  99. package/dist/runtime/subagents/supervisor.d.ts.map +1 -1
  100. package/dist/runtime/subagents/supervisor.js +1 -1
  101. package/dist/runtime/subagents/supervisor.js.map +1 -1
  102. package/dist/runtime/subagents/web-research-adapter.d.ts +83 -0
  103. package/dist/runtime/subagents/web-research-adapter.d.ts.map +1 -0
  104. package/dist/runtime/subagents/web-research-adapter.js +262 -0
  105. package/dist/runtime/subagents/web-research-adapter.js.map +1 -0
  106. package/dist/runtime/turn-controller.d.ts.map +1 -1
  107. package/dist/runtime/turn-controller.js +3 -1
  108. package/dist/runtime/turn-controller.js.map +1 -1
  109. package/dist/runtime/ui-events.d.ts +21 -0
  110. package/dist/runtime/ui-events.d.ts.map +1 -1
  111. package/dist/runtime/ui-events.js.map +1 -1
  112. package/dist/services/auth/auth.d.ts.map +1 -1
  113. package/dist/services/auth/auth.js +17 -4
  114. package/dist/services/auth/auth.js.map +1 -1
  115. package/dist/services/concurrent-sessions.d.ts.map +1 -1
  116. package/dist/services/concurrent-sessions.js +33 -17
  117. package/dist/services/concurrent-sessions.js.map +1 -1
  118. package/dist/services/config-dir.d.ts.map +1 -1
  119. package/dist/services/config-dir.js +19 -5
  120. package/dist/services/config-dir.js.map +1 -1
  121. package/dist/services/config.d.ts.map +1 -1
  122. package/dist/services/config.js +2 -1
  123. package/dist/services/config.js.map +1 -1
  124. package/dist/services/global-config.d.ts +31 -0
  125. package/dist/services/global-config.d.ts.map +1 -1
  126. package/dist/services/global-config.js.map +1 -1
  127. package/dist/services/goal-storage.d.ts.map +1 -1
  128. package/dist/services/goal-storage.js +22 -8
  129. package/dist/services/goal-storage.js.map +1 -1
  130. package/dist/services/llm.d.ts +17 -0
  131. package/dist/services/llm.d.ts.map +1 -1
  132. package/dist/services/llm.js +88 -31
  133. package/dist/services/llm.js.map +1 -1
  134. package/dist/services/model-catalog.d.ts +2 -0
  135. package/dist/services/model-catalog.d.ts.map +1 -1
  136. package/dist/services/model-catalog.js +25 -15
  137. package/dist/services/model-catalog.js.map +1 -1
  138. package/dist/services/model-context.d.ts.map +1 -1
  139. package/dist/services/model-context.js +36 -0
  140. package/dist/services/model-context.js.map +1 -1
  141. package/dist/services/model-registry.d.ts.map +1 -1
  142. package/dist/services/model-registry.js +32 -0
  143. package/dist/services/model-registry.js.map +1 -1
  144. package/dist/services/provider-resilience/coordinator.d.ts +1 -1
  145. package/dist/services/provider-resilience/coordinator.d.ts.map +1 -1
  146. package/dist/services/provider-resilience/coordinator.js +4 -4
  147. package/dist/services/provider-resilience/coordinator.js.map +1 -1
  148. package/dist/services/provider-resilience/error-classifier.js +20 -8
  149. package/dist/services/provider-resilience/error-classifier.js.map +1 -1
  150. package/dist/services/provider-resilience/stream-recovery.d.ts +1 -1
  151. package/dist/services/provider-resilience/stream-recovery.d.ts.map +1 -1
  152. package/dist/services/provider-resilience/stream-recovery.js +1 -1
  153. package/dist/services/provider-resilience/stream-recovery.js.map +1 -1
  154. package/dist/services/session-storage.d.ts.map +1 -1
  155. package/dist/services/session-storage.js +45 -14
  156. package/dist/services/session-storage.js.map +1 -1
  157. package/dist/services/storage-maintenance.d.ts.map +1 -1
  158. package/dist/services/storage-maintenance.js +44 -9
  159. package/dist/services/storage-maintenance.js.map +1 -1
  160. package/dist/services/task-manager.d.ts +3 -3
  161. package/dist/services/task-manager.d.ts.map +1 -1
  162. package/dist/services/tool-allowlist.d.ts +100 -0
  163. package/dist/services/tool-allowlist.d.ts.map +1 -0
  164. package/dist/services/tool-allowlist.js +250 -0
  165. package/dist/services/tool-allowlist.js.map +1 -0
  166. package/dist/services/web-search-adapters.d.ts.map +1 -1
  167. package/dist/services/web-search-adapters.js +48 -18
  168. package/dist/services/web-search-adapters.js.map +1 -1
  169. package/dist/services/web-search-mcp.d.ts.map +1 -1
  170. package/dist/services/web-search-mcp.js +27 -11
  171. package/dist/services/web-search-mcp.js.map +1 -1
  172. package/dist/services/yaml-config.d.ts.map +1 -1
  173. package/dist/services/yaml-config.js +2 -1
  174. package/dist/services/yaml-config.js.map +1 -1
  175. package/dist/skills/loader.d.ts.map +1 -1
  176. package/dist/skills/loader.js +3 -2
  177. package/dist/skills/loader.js.map +1 -1
  178. package/dist/terminal-ui/launch.d.ts +22 -2
  179. package/dist/terminal-ui/launch.d.ts.map +1 -1
  180. package/dist/terminal-ui/launch.js +150 -1
  181. package/dist/terminal-ui/launch.js.map +1 -1
  182. package/dist/terminal-ui/raw-editor.js.map +1 -1
  183. package/dist/tools/bash_security.d.ts +50 -18
  184. package/dist/tools/bash_security.d.ts.map +1 -1
  185. package/dist/tools/bash_security.js +394 -61
  186. package/dist/tools/bash_security.js.map +1 -1
  187. package/dist/tools/git.d.ts +4 -0
  188. package/dist/tools/git.d.ts.map +1 -1
  189. package/dist/tools/git.js +310 -3
  190. package/dist/tools/git.js.map +1 -1
  191. package/dist/tools/index.d.ts +1 -1
  192. package/dist/tools/index.d.ts.map +1 -1
  193. package/dist/tools/index.js +87 -25
  194. package/dist/tools/index.js.map +1 -1
  195. package/dist/tools/mcp.d.ts +8 -2
  196. package/dist/tools/mcp.d.ts.map +1 -1
  197. package/dist/tools/mcp.js +44 -23
  198. package/dist/tools/mcp.js.map +1 -1
  199. package/dist/tools/sandbox.d.ts +139 -0
  200. package/dist/tools/sandbox.d.ts.map +1 -0
  201. package/dist/tools/sandbox.js +485 -0
  202. package/dist/tools/sandbox.js.map +1 -0
  203. package/dist/tools/web.d.ts.map +1 -1
  204. package/dist/tools/web.js +113 -42
  205. package/dist/tools/web.js.map +1 -1
  206. package/dist/tui-core/frame.js.map +1 -1
  207. package/dist/tui-ui/launch.d.ts.map +1 -1
  208. package/dist/tui-ui/launch.js +46 -8
  209. package/dist/tui-ui/launch.js.map +1 -1
  210. package/dist/tui-ui/layout.d.ts.map +1 -1
  211. package/dist/tui-ui/layout.js +62 -0
  212. package/dist/tui-ui/layout.js.map +1 -1
  213. package/dist/tui-ui/runner.d.ts +6 -0
  214. package/dist/tui-ui/runner.d.ts.map +1 -1
  215. package/dist/tui-ui/runner.js +81 -1
  216. package/dist/tui-ui/runner.js.map +1 -1
  217. package/dist/tui-ui/state.d.ts +19 -1
  218. package/dist/tui-ui/state.d.ts.map +1 -1
  219. package/dist/tui-ui/state.js +35 -7
  220. package/dist/tui-ui/state.js.map +1 -1
  221. package/dist/tui-ui/terminal-image.d.ts +3 -13
  222. package/dist/tui-ui/terminal-image.d.ts.map +1 -1
  223. package/dist/tui-ui/terminal-image.js +5 -160
  224. package/dist/tui-ui/terminal-image.js.map +1 -1
  225. package/dist/utils/debug-log.d.ts +52 -0
  226. package/dist/utils/debug-log.d.ts.map +1 -0
  227. package/dist/utils/debug-log.js +91 -0
  228. package/dist/utils/debug-log.js.map +1 -0
  229. package/dist/utils/errors.d.ts +25 -0
  230. package/dist/utils/errors.d.ts.map +1 -0
  231. package/dist/utils/errors.js +47 -0
  232. package/dist/utils/errors.js.map +1 -0
  233. package/dist/utils/mask.d.ts +28 -0
  234. package/dist/utils/mask.d.ts.map +1 -0
  235. package/dist/utils/mask.js +54 -0
  236. package/dist/utils/mask.js.map +1 -0
  237. package/package.json +2 -1
@@ -9,6 +9,8 @@
9
9
  * Output: execution results in original call order
10
10
  */
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.resolveAskPermission = resolveAskPermission;
13
+ exports.resolveEffectivePermission = resolveEffectivePermission;
12
14
  exports.prepareToolCalls = prepareToolCalls;
13
15
  exports.executeToolCalls = executeToolCalls;
14
16
  exports.inspectSchedule = inspectSchedule;
@@ -27,6 +29,84 @@ function parseToolArgs(tc) {
27
29
  return {};
28
30
  }
29
31
  }
32
+ /**
33
+ * Resolve an `ask` permission against the permission mode.
34
+ *
35
+ * Historically this logic was inlined as `permissionMode === 'default'`, which meant
36
+ * every non-default mode (plan / acceptEdits / auto) silently skipped confirmation and
37
+ * executed the tool. That defeated plan mode's read-only guarantee and widened
38
+ * acceptEdits from "auto-accept file edits" to "auto-accept everything".
39
+ */
40
+ function resolveAskPermission(permissionMode, tool, args) {
41
+ switch (permissionMode) {
42
+ case 'plan':
43
+ return 'block';
44
+ case 'auto':
45
+ return 'allow';
46
+ case 'acceptEdits':
47
+ return tool?.isFileEdit?.(args) === true ? 'allow' : 'confirm';
48
+ default:
49
+ return 'confirm';
50
+ }
51
+ }
52
+ /**
53
+ * Resolve the tool policy, project allowlist and permission mode into one decision.
54
+ *
55
+ * Precedence (most restrictive first, see services/tool-allowlist for the contract):
56
+ * 1. tool `checkPermissions() === 'deny'` — never overridable by config
57
+ * 2. allowlist `deny:` rule — project can always tighten
58
+ * 3. neither the tool nor a rule asks — plain allow
59
+ * 4. plan mode — read-only, block anything that asks
60
+ * 5. allowlist `ask:` rule — explicit escalation beats auto / acceptEdits
61
+ * 6. allowlist `allow:` rule — only for non-destructive tools
62
+ * 7. permission mode (auto / acceptEdits)
63
+ * 8. otherwise confirm
64
+ */
65
+ function resolveEffectivePermission(input) {
66
+ const { toolName, tool, args, permission, permissionMode, allowlist } = input;
67
+ if (permission?.behavior === 'deny') {
68
+ return {
69
+ outcome: 'deny',
70
+ source: 'tool_policy',
71
+ reason: permission.reason || 'Permission denied',
72
+ };
73
+ }
74
+ if (allowlist?.effect === 'deny') {
75
+ return {
76
+ outcome: 'deny',
77
+ source: 'allowlist_deny',
78
+ reason: `Tool ${toolName} is denied by project allowedTools rule "${allowlist.rule}"`,
79
+ };
80
+ }
81
+ const asks = permission?.behavior === 'ask' || allowlist?.effect === 'ask';
82
+ if (!asks)
83
+ return { outcome: 'allow' };
84
+ const reason = permission?.behavior === 'ask'
85
+ ? permission.reason
86
+ : `Confirmation required by project allowedTools rule "${allowlist?.rule}"`;
87
+ if (permissionMode === 'plan') {
88
+ return { outcome: 'block', source: 'plan_mode', reason };
89
+ }
90
+ if (allowlist?.effect === 'ask') {
91
+ return { outcome: 'confirm', reason };
92
+ }
93
+ if (allowlist?.effect === 'allow' && tool?.isDestructive?.(args) !== true) {
94
+ return {
95
+ outcome: 'allow',
96
+ source: 'allowlist_allow',
97
+ reason: `Auto-approved by project allowedTools rule "${allowlist.rule}"`,
98
+ };
99
+ }
100
+ const modeResolution = resolveAskPermission(permissionMode, tool, args);
101
+ if (modeResolution === 'allow') {
102
+ return {
103
+ outcome: 'allow',
104
+ source: permissionMode === 'auto' ? 'mode_auto' : 'mode_accept_edits',
105
+ reason,
106
+ };
107
+ }
108
+ return { outcome: 'confirm', reason };
109
+ }
30
110
  /**
31
111
  * Prepare tool calls: parse args, check drift, check permissions, determine concurrency.
32
112
  * Re-serializes tc.function.arguments to ensure valid JSON.
@@ -46,14 +126,20 @@ function prepareToolCalls(options) {
46
126
  const permission = tool?.checkPermissions && options.toolContext
47
127
  ? tool.checkPermissions(args, options.toolContext)
48
128
  : undefined;
129
+ const allowlist = options.toolAllowlist?.(tc.function.name, args);
130
+ const effective = resolveEffectivePermission({
131
+ toolName: tc.function.name,
132
+ tool,
133
+ args,
134
+ permission,
135
+ permissionMode: options.permissionMode,
136
+ allowlist,
137
+ });
49
138
  const confirmation = options.toolConfirmation ?? 'ask';
50
- const needsInteractiveConfirmation = permission?.behavior === 'ask' &&
51
- options.permissionMode === 'default' &&
52
- confirmation === 'ask' &&
53
- Boolean(options.confirmToolUse);
139
+ const needsInteractiveConfirmation = effective.outcome === 'confirm' && confirmation === 'ask' && Boolean(options.confirmToolUse);
54
140
  const canRunConcurrently = tool?.isConcurrencySafe?.(args) === true &&
55
141
  drift?.status !== 'block' &&
56
- permission?.behavior !== 'deny' &&
142
+ effective.outcome !== 'deny' &&
57
143
  !needsInteractiveConfirmation;
58
144
  preparedCalls.push({
59
145
  index: i,
@@ -63,6 +149,7 @@ function prepareToolCalls(options) {
63
149
  attemptId,
64
150
  drift,
65
151
  permission,
152
+ allowlist,
66
153
  canRunConcurrently,
67
154
  });
68
155
  }
@@ -123,7 +210,7 @@ function failedExecution(prepared, err) {
123
210
  }
124
211
  function executePreparedTool(prepared, toolExecutor, abortSignal, confirmToolUse, permissionMode, toolConfirmation, harnessBlockedResult) {
125
212
  const start = Date.now();
126
- const { tc, args, drift, permission } = prepared;
213
+ const { tc, args, tool, drift, permission, allowlist } = prepared;
127
214
  let permissionDecision;
128
215
  const exec = async () => {
129
216
  try {
@@ -148,65 +235,96 @@ function executePreparedTool(prepared, toolExecutor, abortSignal, confirmToolUse
148
235
  ? harnessBlockedResult(drift)
149
236
  : JSON.stringify({ success: false, error: 'Blocked by Context Harness' });
150
237
  }
151
- if (permission?.behavior === 'deny') {
238
+ // Resolve tool policy + project allowlist + permission mode in one place.
239
+ // Previously the `ask` branch was gated on `permissionMode === 'default'`, so
240
+ // plan / acceptEdits / auto fell through to exec() and bypassed confirmation.
241
+ const effective = resolveEffectivePermission({
242
+ toolName: tc.function.name,
243
+ tool,
244
+ args,
245
+ permission,
246
+ permissionMode,
247
+ allowlist,
248
+ });
249
+ if (effective.outcome === 'deny') {
152
250
  permissionDecision = {
153
251
  behavior: 'deny',
154
252
  approved: false,
155
- source: 'tool_policy',
156
- reason: permission.reason || 'Permission denied',
253
+ source: effective.source ?? 'tool_policy',
254
+ reason: effective.reason || 'Permission denied',
255
+ };
256
+ return JSON.stringify({
257
+ success: false,
258
+ error: effective.reason || 'Permission denied',
259
+ });
260
+ }
261
+ if (effective.outcome === 'block') {
262
+ permissionDecision = {
263
+ behavior: 'ask',
264
+ approved: false,
265
+ source: effective.source ?? 'plan_mode',
266
+ reason: effective.reason,
157
267
  };
158
268
  return JSON.stringify({
159
269
  success: false,
160
- error: permission.reason || 'Permission denied',
270
+ error: `Tool ${tc.function.name} requires confirmation and is blocked in plan mode (read-only).`,
161
271
  });
162
272
  }
163
- if (permission?.behavior === 'ask' && permissionMode === 'default') {
164
- const confirmation = toolConfirmation ?? 'ask';
165
- if (confirmation === 'allow') {
273
+ if (effective.outcome === 'allow') {
274
+ if (effective.source) {
166
275
  permissionDecision = {
167
276
  behavior: 'ask',
168
277
  approved: true,
169
- source: 'config_allow',
170
- reason: permission.reason,
171
- };
172
- return exec();
173
- }
174
- if (confirmToolUse && confirmation === 'ask') {
175
- const permissionStart = Date.now();
176
- const approved = await confirmToolUse({
177
- name: tc.function.name,
178
- args,
179
- reason: permission.reason,
180
- abortSignal,
181
- });
182
- permissionDecision = {
183
- behavior: 'ask',
184
- approved,
185
- source: 'user',
186
- reason: permission.reason,
187
- duration: Date.now() - permissionStart,
278
+ source: effective.source,
279
+ reason: effective.reason,
188
280
  };
189
- return approved
190
- ? await exec()
191
- : JSON.stringify({
192
- success: false,
193
- error: `Tool ${tc.function.name} requires user confirmation and was denied by user.`,
194
- });
195
281
  }
282
+ return exec();
283
+ }
284
+ const confirmation = toolConfirmation ?? 'ask';
285
+ if (confirmation === 'allow') {
196
286
  permissionDecision = {
197
287
  behavior: 'ask',
198
- approved: false,
199
- source: confirmation === 'deny' ? 'config_deny' : 'missing_confirmation',
200
- reason: permission.reason,
288
+ approved: true,
289
+ source: 'config_allow',
290
+ reason: effective.reason,
201
291
  };
202
- return JSON.stringify({
203
- success: false,
204
- error: confirmation === 'deny'
205
- ? `Tool ${tc.function.name} requires user confirmation and was denied by toolConfirmation=deny.`
206
- : `Tool ${tc.function.name} requires user confirmation.`,
292
+ return exec();
293
+ }
294
+ if (confirmToolUse && confirmation === 'ask') {
295
+ const permissionStart = Date.now();
296
+ const approved = await confirmToolUse({
297
+ name: tc.function.name,
298
+ args,
299
+ reason: effective.reason,
300
+ abortSignal,
207
301
  });
302
+ permissionDecision = {
303
+ behavior: 'ask',
304
+ approved,
305
+ source: 'user',
306
+ reason: effective.reason,
307
+ duration: Date.now() - permissionStart,
308
+ };
309
+ return approved
310
+ ? await exec()
311
+ : JSON.stringify({
312
+ success: false,
313
+ error: `Tool ${tc.function.name} requires user confirmation and was denied by user.`,
314
+ });
208
315
  }
209
- return exec();
316
+ permissionDecision = {
317
+ behavior: 'ask',
318
+ approved: false,
319
+ source: confirmation === 'deny' ? 'config_deny' : 'missing_confirmation',
320
+ reason: effective.reason,
321
+ };
322
+ return JSON.stringify({
323
+ success: false,
324
+ error: confirmation === 'deny'
325
+ ? `Tool ${tc.function.name} requires user confirmation and was denied by toolConfirmation=deny.`
326
+ : `Tool ${tc.function.name} requires user confirmation.`,
327
+ });
210
328
  };
211
329
  return run().then(result => {
212
330
  const duration = Date.now() - start;
@@ -1 +1 @@
1
- {"version":3,"file":"tool-scheduler.js","sourceRoot":"","sources":["../../src/framework/tool-scheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-scheduler.js","sourceRoot":"","sources":["../../src/framework/tool-scheduler.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAoJH,oDAeC;AA+BD,gEA4DC;AAMD,4CAkDC;AAyOD,4CA6EC;AAUD,0CAWC;AA9nBD,6DAI8B;AA+G9B,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E,SAAS,aAAa,CAAC,EAAkB;IACvC,MAAM,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC;IAC5C,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAUD;;;;;;;GAOG;AACH,SAAgB,oBAAoB,CAClC,cAAkC,EAClC,IAA+B,EAC/B,IAA6B;IAE7B,QAAQ,cAAc,EAAE,CAAC;QACvB,KAAK,MAAM;YACT,OAAO,OAAO,CAAC;QACjB,KAAK,MAAM;YACT,OAAO,OAAO,CAAC;QACjB,KAAK,aAAa;YAChB,OAAO,IAAI,EAAE,UAAU,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QACjE;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAkBD;;;;;;;;;;;;GAYG;AACH,SAAgB,0BAA0B,CAAC,KAO1C;IACC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAE9E,IAAI,UAAU,EAAE,QAAQ,KAAK,MAAM,EAAE,CAAC;QACpC,OAAO;YACL,OAAO,EAAE,MAAM;YACf,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,UAAU,CAAC,MAAM,IAAI,mBAAmB;SACjD,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;QACjC,OAAO;YACL,OAAO,EAAE,MAAM;YACf,MAAM,EAAE,gBAAgB;YACxB,MAAM,EAAE,QAAQ,QAAQ,4CAA4C,SAAS,CAAC,IAAI,GAAG;SACtF,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,UAAU,EAAE,QAAQ,KAAK,KAAK,IAAI,SAAS,EAAE,MAAM,KAAK,KAAK,CAAC;IAC3E,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAEvC,MAAM,MAAM,GACV,UAAU,EAAE,QAAQ,KAAK,KAAK;QAC5B,CAAC,CAAC,UAAU,CAAC,MAAM;QACnB,CAAC,CAAC,uDAAuD,SAAS,EAAE,IAAI,GAAG,CAAC;IAEhF,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;QAC9B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IAC3D,CAAC;IAED,IAAI,SAAS,EAAE,MAAM,KAAK,KAAK,EAAE,CAAC;QAChC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IACxC,CAAC;IAED,IAAI,SAAS,EAAE,MAAM,KAAK,OAAO,IAAI,IAAI,EAAE,aAAa,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1E,OAAO;YACL,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,iBAAiB;YACzB,MAAM,EAAE,+CAA+C,SAAS,CAAC,IAAI,GAAG;SACzE,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,oBAAoB,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACxE,IAAI,cAAc,KAAK,OAAO,EAAE,CAAC;QAC/B,OAAO;YACL,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,mBAAmB;YACrE,MAAM;SACP,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,OAA6B;IAC5D,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IACrC,MAAM,aAAa,GAAuB,EAAE,CAAC;IAE7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;QAC/B,sDAAsD;QACtD,EAAE,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAE7C,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC;QAC3E,OAAO,CAAC,gBAAgB,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5E,MAAM,UAAU,GACd,IAAI,EAAE,gBAAgB,IAAI,OAAO,CAAC,WAAW;YAC3C,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC;YAClD,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,0BAA0B,CAAC;YAC3C,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI;YAC1B,IAAI;YACJ,IAAI;YACJ,UAAU;YACV,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,SAAS;SACV,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,OAAO,CAAC,gBAAgB,IAAI,KAAK,CAAC;QACvD,MAAM,4BAA4B,GAChC,SAAS,CAAC,OAAO,KAAK,SAAS,IAAI,YAAY,KAAK,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC/F,MAAM,kBAAkB,GACtB,IAAI,EAAE,iBAAiB,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI;YACxC,KAAK,EAAE,MAAM,KAAK,OAAO;YACzB,SAAS,CAAC,OAAO,KAAK,MAAM;YAC5B,CAAC,4BAA4B,CAAC;QAEhC,aAAa,CAAC,IAAI,CAAC;YACjB,KAAK,EAAE,CAAC;YACR,EAAE;YACF,IAAI;YACJ,IAAI;YACJ,SAAS;YACT,KAAK;YACL,UAAU;YACV,SAAS;YACT,kBAAkB;SACnB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,OAAO,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,CAAC;AACjF,CAAC;AAED,SAAS,eAAe,CACtB,MAAc;IAYd,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC;QACxC,MAAM,WAAW,GAAG,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5F,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QACvF,OAAO;YACL,OAAO;YACP,KAAK,EAAE,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YAClE,OAAO,EAAE,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACxE,WAAW;YACX,WAAW;YACX,iBAAiB,EAAE,IAAA,4CAAuB,EAAC,MAAM,CAAC,iBAAiB,CAAC;gBAClE,CAAC,CAAC,MAAM,CAAC,iBAAiB;gBAC1B,CAAC,CAAC,SAAS;YACb,cAAc,EAAE,OAAO,CAAC,CAAC,CAAE,SAAmB,CAAC,CAAC,CAAE,QAAkB;YACpE,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,eAAe;SACrE,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC;YAC9C,cAAc,EAAE,SAAkB;SACnC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,QAA0B,EAAE,GAAY;IAC/D,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;QAC5B,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,yBAAyB,OAAO,EAAE;KAC1C,CAAC,CAAC;IACH,OAAO;QACL,QAAQ;QACR,MAAM;QACN,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,yBAAyB,OAAO,EAAE;QACzC,cAAc,EAAE,QAAQ;QACxB,aAAa,EAAE,OAAO;KACvB,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,QAA0B,EAC1B,YAAkD,EAClD,WAAyB,EACzB,cAAuD,EACvD,cAAuB,EACvB,gBAAyB,EACzB,oBAAmE;IAEnE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC;IAClE,IAAI,kBAAsD,CAAC;IAE3D,MAAM,IAAI,GAAG,KAAK,IAAqB,EAAE;QACvC,IAAI,CAAC;YACH,OAAO,MAAM,YAAY,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,yBAAyB,GAAG,CAAC,OAAO,EAAE;aAC9C,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,KAAK,IAAqB,EAAE;QACtC,IAAI,KAAK,EAAE,MAAM,KAAK,OAAO,EAAE,CAAC;YAC9B,kBAAkB,GAAG;gBACnB,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,aAAa;gBACrB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,4BAA4B;aACrD,CAAC;YACF,OAAO,oBAAoB;gBACzB,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC;gBAC7B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC,CAAC;QAC9E,CAAC;QACD,0EAA0E;QAC1E,8EAA8E;QAC9E,8EAA8E;QAC9E,MAAM,SAAS,GAAG,0BAA0B,CAAC;YAC3C,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI;YAC1B,IAAI;YACJ,IAAI;YACJ,UAAU;YACV,cAAc;YACd,SAAS;SACV,CAAC,CAAC;QAEH,IAAI,SAAS,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YACjC,kBAAkB,GAAG;gBACnB,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,aAAa;gBACzC,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,mBAAmB;aAChD,CAAC;YACF,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,SAAS,CAAC,MAAM,IAAI,mBAAmB;aAC/C,CAAC,CAAC;QACL,CAAC;QAED,IAAI,SAAS,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YAClC,kBAAkB,GAAG;gBACnB,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,WAAW;gBACvC,MAAM,EAAE,SAAS,CAAC,MAAM;aACzB,CAAC;YACF,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,iEAAiE;aACjG,CAAC,CAAC;QACL,CAAC;QAED,IAAI,SAAS,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YAClC,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;gBACrB,kBAAkB,GAAG;oBACnB,QAAQ,EAAE,KAAK;oBACf,QAAQ,EAAE,IAAI;oBACd,MAAM,EAAE,SAAS,CAAC,MAAM;oBACxB,MAAM,EAAE,SAAS,CAAC,MAAM;iBACzB,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,MAAM,YAAY,GAAG,gBAAgB,IAAI,KAAK,CAAC;QAC/C,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;YAC7B,kBAAkB,GAAG;gBACnB,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,cAAc;gBACtB,MAAM,EAAE,SAAS,CAAC,MAAM;aACzB,CAAC;YACF,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QACD,IAAI,cAAc,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;YAC7C,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;gBACpC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI;gBACtB,IAAI;gBACJ,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,WAAW;aACZ,CAAC,CAAC;YACH,kBAAkB,GAAG;gBACnB,QAAQ,EAAE,KAAK;gBACf,QAAQ;gBACR,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe;aACvC,CAAC;YACF,OAAO,QAAQ;gBACb,CAAC,CAAC,MAAM,IAAI,EAAE;gBACd,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;oBACb,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,qDAAqD;iBACrF,CAAC,CAAC;QACT,CAAC;QACD,kBAAkB,GAAG;YACnB,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,sBAAsB;YACxE,MAAM,EAAE,SAAS,CAAC,MAAM;SACzB,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,OAAO,EAAE,KAAK;YACd,KAAK,EACH,YAAY,KAAK,MAAM;gBACrB,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,sEAAsE;gBAChG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,8BAA8B;SAC7D,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACpC,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACvC,IACE,MAAM,CAAC,iBAAiB;YACxB,CAAC,IAAA,uDAAkC,EAAC;gBAClC,SAAS,EAAE,MAAM,CAAC,iBAAiB;gBACnC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI;gBACtB,IAAI;gBACJ,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC,EACF,CAAC;YACD,MAAM,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACvC,CAAC;QACD,OAAO;YACL,QAAQ;YACR,MAAM;YACN,QAAQ;YACR,kBAAkB;YAClB,GAAG,MAAM;SACV,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACI,KAAK,SAAS,CAAC,CAAC,gBAAgB,CACrC,aAAiC,EACjC,OAQC;IAED,IAAI,aAAa,GAAuB,EAAE,CAAC;IAC3C,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,oBAAoB,IAAI,CAAC,CAAC,CAAC;IAE5E,MAAM,gBAAgB,GAAG,KAAK,EAAE,KAAyB,EAA+B,EAAE;QACxF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACf,mBAAmB,CACjB,IAAI,EACJ,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,gBAAgB,EACxB,OAAO,CAAC,oBAAoB,CAC7B,CACF,CACF,CAAC;QACF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CACnC,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAC5F,CAAC;IACJ,CAAC,CAAC;IAEF,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;QACrC,IAAI,QAAQ,CAAC,kBAAkB,EAAE,CAAC;YAChC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7B,IAAI,aAAa,CAAC,MAAM,IAAI,oBAAoB,EAAE,CAAC;gBACjD,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,aAAa,CAAC,CAAC;gBAC5D,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAClE,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;oBACrC,MAAM,QAAQ,CAAC;gBACjB,CAAC;gBACD,aAAa,GAAG,EAAE,CAAC;YACrB,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,aAAa,CAAC,CAAC;YAC5D,2CAA2C;YAC3C,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClE,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;gBACrC,MAAM,QAAQ,CAAC;YACjB,CAAC;YACD,aAAa,GAAG,EAAE,CAAC;QACrB,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CACxC,QAAQ,EACR,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,gBAAgB,EACxB,OAAO,CAAC,oBAAoB,CAC7B,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/C,MAAM,QAAQ,CAAC;IACjB,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,aAAa,CAAC,CAAC;QAC5D,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClE,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACrC,MAAM,QAAQ,CAAC;QACjB,CAAC;IACH,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,oCAAoC;AACpC,+EAA+E;AAE/E;;;GAGG;AACH,SAAgB,eAAe,CAAC,aAAiC;IAC/D,MAAM,QAAQ,GAAuB,EAAE,CAAC;IACxC,MAAM,MAAM,GAAuB,EAAE,CAAC;IACtC,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC"}
@@ -11,6 +11,9 @@ export interface ToolInputJSONSchemaProperty {
11
11
  properties?: Record<string, ToolInputJSONSchemaProperty>;
12
12
  required?: string[];
13
13
  items?: ToolInputJSONSchemaProperty;
14
+ /** Array bound, sent to the provider so it can cap generated arguments. */
15
+ maxItems?: number;
16
+ minItems?: number;
14
17
  }
15
18
  export interface ToolInputJSONSchema {
16
19
  type: 'object';
@@ -80,6 +83,12 @@ export interface OrionCodeTool {
80
83
  isReadOnly?(args: Record<string, unknown>): boolean;
81
84
  /** Is this a potentially destructive operation */
82
85
  isDestructive?(args: Record<string, unknown>): boolean;
86
+ /**
87
+ * Does this tool mutate local workspace files?
88
+ * Used by permission mode `acceptEdits` to auto-approve file edits while
89
+ * still confirming other side-effecting tools (bash / network / git / MCP).
90
+ */
91
+ isFileEdit?(args: Record<string, unknown>): boolean;
83
92
  /** User-facing name for display */
84
93
  userFacingName?(args: Record<string, unknown>): string;
85
94
  /** Compact summary for tool result display */
@@ -1 +1 @@
1
- {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/framework/tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/framework/tool.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@ const TOOL_DEFAULTS = {
16
16
  isConcurrencySafe: () => false,
17
17
  isReadOnly: () => false,
18
18
  isDestructive: () => false,
19
+ isFileEdit: () => false,
19
20
  checkPermissions: () => ({ behavior: 'allow' }),
20
21
  };
21
22
  /**
@@ -35,6 +36,7 @@ function buildTool(def) {
35
36
  isConcurrencySafe: TOOL_DEFAULTS.isConcurrencySafe,
36
37
  isReadOnly: TOOL_DEFAULTS.isReadOnly,
37
38
  isDestructive: TOOL_DEFAULTS.isDestructive,
39
+ isFileEdit: TOOL_DEFAULTS.isFileEdit,
38
40
  checkPermissions: TOOL_DEFAULTS.checkPermissions,
39
41
  ...def,
40
42
  };
@@ -1 +1 @@
1
- {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/framework/tool.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAoIH,8BAQC;AAOD,oCASC;AAGD,sCAEC;AArDD,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,sDAAsD;AACtD,MAAM,aAAa,GAAG;IACpB,iBAAiB,EAAE,GAAG,EAAE,CAAC,KAAK;IAC9B,UAAU,EAAE,GAAG,EAAE,CAAC,KAAK;IACvB,aAAa,EAAE,GAAG,EAAE,CAAC,KAAK;IAC1B,gBAAgB,EAAE,GAAqB,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;CAClE,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,SAAgB,SAAS,CAAC,GAAkB;IAC1C,OAAO;QACL,iBAAiB,EAAE,aAAa,CAAC,iBAAiB;QAClD,UAAU,EAAE,aAAa,CAAC,UAAU;QACpC,aAAa,EAAE,aAAa,CAAC,aAAa;QAC1C,gBAAgB,EAAE,aAAa,CAAC,gBAAgB;QAChD,GAAG,GAAG;KACP,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,iEAAiE;AACjE,SAAgB,YAAY,CAAC,IAAmB;IAC9C,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B;KACF,CAAC;AACJ,CAAC;AAED,0DAA0D;AAC1D,SAAgB,aAAa,CAAC,KAAsB;IAClD,OAAO,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/framework/tool.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AA8IH,8BASC;AAOD,oCASC;AAGD,sCAEC;AAvDD,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,sDAAsD;AACtD,MAAM,aAAa,GAAG;IACpB,iBAAiB,EAAE,GAAG,EAAE,CAAC,KAAK;IAC9B,UAAU,EAAE,GAAG,EAAE,CAAC,KAAK;IACvB,aAAa,EAAE,GAAG,EAAE,CAAC,KAAK;IAC1B,UAAU,EAAE,GAAG,EAAE,CAAC,KAAK;IACvB,gBAAgB,EAAE,GAAqB,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;CAClE,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,SAAgB,SAAS,CAAC,GAAkB;IAC1C,OAAO;QACL,iBAAiB,EAAE,aAAa,CAAC,iBAAiB;QAClD,UAAU,EAAE,aAAa,CAAC,UAAU;QACpC,aAAa,EAAE,aAAa,CAAC,aAAa;QAC1C,UAAU,EAAE,aAAa,CAAC,UAAU;QACpC,gBAAgB,EAAE,aAAa,CAAC,gBAAgB;QAChD,GAAG,GAAG;KACP,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,iEAAiE;AACjE,SAAgB,YAAY,CAAC,IAAmB;IAC9C,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B;KACF,CAAC;AACJ,CAAC;AAED,0DAA0D;AAC1D,SAAgB,aAAa,CAAC,KAAsB;IAClD,OAAO,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACjC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { type SelectListItem } from '../components/SelectList';
2
2
  import type { NativeCursorController } from '../runtime/native-cursor';
3
- import type { OpenHorseUiRuntime, SessionPickerRequest, ToolPermissionRequest, EditPreviewRequest } from '../types';
3
+ import type { OpenHorseUiRuntime, SessionPickerRequest, ModelPickerRequest, ToolPermissionRequest, EditPreviewRequest } from '../types';
4
4
  export declare function visibleCommandItems(input: string): SelectListItem[];
5
5
  export declare function getFileQuery(input: string): {
6
6
  base: string;
@@ -8,6 +8,7 @@ export declare function getFileQuery(input: string): {
8
8
  } | null;
9
9
  export declare function visibleFileItems(cwd: string, input: string): SelectListItem[];
10
10
  export declare function sessionItems(request: SessionPickerRequest): SelectListItem[];
11
+ export declare function modelItems(request: ModelPickerRequest): SelectListItem[];
11
12
  export declare function permissionItems(request: ToolPermissionRequest): SelectListItem[];
12
13
  export declare function editPreviewTitle(request: EditPreviewRequest): string;
13
14
  export declare function editPreviewItems(request: EditPreviewRequest): SelectListItem[];
@@ -1 +1 @@
1
- {"version":3,"file":"ReplScreen.d.ts","sourceRoot":"","sources":["../../../src/ink-ui/screens/ReplScreen.tsx"],"names":[],"mappings":"AAwBA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAO3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAQvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,qBAAqB,EAAuD,kBAAkB,EAAuB,MAAM,UAAU,CAAC;AAqB9L,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE,CAUnE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAElF;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE,CAa7E;AAMD,wBAAgB,YAAY,CAAC,OAAO,EAAE,oBAAoB,GAAG,cAAc,EAAE,CAW5E;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,qBAAqB,GAAG,cAAc,EAAE,CAMhF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAEpE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,GAAG,cAAc,EAAE,CAM9E;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ1D;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAIxE;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,gBAAgB,EAAE,sBAAsB,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAe,EAAE,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CA6lBvG"}
1
+ {"version":3,"file":"ReplScreen.d.ts","sourceRoot":"","sources":["../../../src/ink-ui/screens/ReplScreen.tsx"],"names":[],"mappings":"AAwBA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAO3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAQvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,qBAAqB,EAAuD,kBAAkB,EAAuB,MAAM,UAAU,CAAC;AAsBlN,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE,CAUnE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAElF;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE,CAa7E;AAMD,wBAAgB,YAAY,CAAC,OAAO,EAAE,oBAAoB,GAAG,cAAc,EAAE,CAW5E;AAQD,wBAAgB,UAAU,CAAC,OAAO,EAAE,kBAAkB,GAAG,cAAc,EAAE,CAkBxE;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,qBAAqB,GAAG,cAAc,EAAE,CAMhF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAEpE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,GAAG,cAAc,EAAE,CAM9E;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ1D;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAIxE;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,gBAAgB,EAAE,sBAAsB,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAe,EAAE,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CA+oBvG"}
@@ -37,6 +37,7 @@ exports.visibleCommandItems = visibleCommandItems;
37
37
  exports.getFileQuery = getFileQuery;
38
38
  exports.visibleFileItems = visibleFileItems;
39
39
  exports.sessionItems = sessionItems;
40
+ exports.modelItems = modelItems;
40
41
  exports.permissionItems = permissionItems;
41
42
  exports.editPreviewTitle = editPreviewTitle;
42
43
  exports.editPreviewItems = editPreviewItems;
@@ -113,6 +114,31 @@ function sessionItems(request) {
113
114
  ].filter(Boolean).join(' '),
114
115
  }));
115
116
  }
117
+ function formatModelTokenLabel(tokens) {
118
+ if (tokens >= 1000000)
119
+ return `${tokens / 1000000}M ctx`;
120
+ if (tokens >= 1000)
121
+ return `${Math.round(tokens / 1000)}K ctx`;
122
+ return `${tokens} ctx`;
123
+ }
124
+ function modelItems(request) {
125
+ const current = (request.currentModel ?? '').toLowerCase();
126
+ return request.models.map(model => {
127
+ const alias = model.alias ? ` (${model.alias})` : '';
128
+ const isCurrent = Boolean(current) &&
129
+ (model.name.toLowerCase() === current ||
130
+ (model.alias ? model.alias.toLowerCase() === current : false));
131
+ const context = model.contextWindow ? formatModelTokenLabel(model.contextWindow) : '';
132
+ const output = model.maxOutputTokens
133
+ ? formatModelTokenLabel(model.maxOutputTokens).replace('ctx', 'out')
134
+ : '';
135
+ return {
136
+ value: model.name,
137
+ label: `${model.name}${alias}${isCurrent ? ' (current)' : ''}`,
138
+ description: [model.provider, context, output].filter(Boolean).join(' '),
139
+ };
140
+ });
141
+ }
116
142
  function permissionItems(request) {
117
143
  return (0, ui_view_model_1.createPermissionDecisionPickerState)(request).visibleItems.map(item => ({
118
144
  value: item.value,
@@ -206,6 +232,7 @@ function ReplScreen({ runtime, cursorController, resizeEpoch = 0 }) {
206
232
  },
207
233
  setStatus: setStatusMessage,
208
234
  showSessionPicker: request => setOverlay({ type: 'sessions', selectedIndex: 0, request }),
235
+ showModelPicker: request => setOverlay({ type: 'model', selectedIndex: 0, request }),
209
236
  showEditPreview: request => setOverlay({ type: 'edit', selectedIndex: 0, request }),
210
237
  showPermissionRequest: request => setOverlay({ type: 'permission', selectedIndex: 0, request }),
211
238
  setProcessing,
@@ -355,6 +382,16 @@ function ReplScreen({ runtime, cursorController, resizeEpoch = 0 }) {
355
382
  void shutdown();
356
383
  }
357
384
  }, [agentController, shutdown]);
385
+ const selectModel = (0, react_1.useCallback)((request, index) => {
386
+ const model = request.models[index];
387
+ if (!model)
388
+ return;
389
+ setOverlay(null);
390
+ const result = agentController.handle({ type: 'submit', text: `/model ${model.name}`, source: 'composer' });
391
+ if (result.type === 'exit_requested') {
392
+ void shutdown();
393
+ }
394
+ }, [agentController, shutdown]);
358
395
  (0, ink_1.useInput)((value, key) => {
359
396
  const isReturn = key?.return || value === '\r' || value === '\n';
360
397
  if (key?.ctrl && value === 'c') {
@@ -461,6 +498,33 @@ function ReplScreen({ runtime, cursorController, resizeEpoch = 0 }) {
461
498
  return;
462
499
  }
463
500
  }
501
+ if (overlay?.type === 'model') {
502
+ const total = overlay.request.models.length;
503
+ if (key?.escape) {
504
+ setOverlay(null);
505
+ return;
506
+ }
507
+ if (key?.upArrow) {
508
+ setOverlay({ ...overlay, selectedIndex: Math.max(0, overlay.selectedIndex - 1) });
509
+ return;
510
+ }
511
+ if (key?.downArrow) {
512
+ setOverlay({ ...overlay, selectedIndex: Math.min(Math.max(0, total - 1), overlay.selectedIndex + 1) });
513
+ return;
514
+ }
515
+ if (key?.pageUp) {
516
+ setOverlay({ ...overlay, selectedIndex: Math.max(0, overlay.selectedIndex - 10) });
517
+ return;
518
+ }
519
+ if (key?.pageDown) {
520
+ setOverlay({ ...overlay, selectedIndex: Math.min(Math.max(0, total - 1), overlay.selectedIndex + 10) });
521
+ return;
522
+ }
523
+ if (isReturn) {
524
+ selectModel(overlay.request, overlay.selectedIndex);
525
+ return;
526
+ }
527
+ }
464
528
  if (overlay?.type === 'edit') {
465
529
  const total = overlay.request.candidates.length;
466
530
  if (key?.escape || isReturn) {
@@ -605,6 +669,7 @@ function ReplScreen({ runtime, cursorController, resizeEpoch = 0 }) {
605
669
  overlay?.type === 'commands' ? (react_1.default.createElement(SelectList_1.SelectList, { title: `Commands ${input.slice(1) ? `"${input.slice(1)}"` : ''}`, items: commandItems, selectedIndex: overlay.selectedIndex, maxVisibleItems: maxOverlayItems, footer: "\u2191\u2193 navigate Tab complete Enter select Esc cancel", width: layoutWidth })) : null,
606
670
  overlay?.type === 'files' ? (react_1.default.createElement(SelectList_1.SelectList, { title: "Files", items: fileItems, selectedIndex: overlay.selectedIndex, maxVisibleItems: maxOverlayItems, footer: "\u2191\u2193 navigate Tab/Enter complete Esc cancel", width: layoutWidth })) : null,
607
671
  overlay?.type === 'sessions' ? (react_1.default.createElement(SelectList_1.SelectList, { title: overlay.request.title, items: sessionItems(overlay.request), selectedIndex: overlay.selectedIndex, maxVisibleItems: Math.min(overlay.request.maxVisibleItems ?? maxOverlayItems, maxOverlayItems), footer: "\u2191\u2193 scroll PgUp/PgDn Enter resume Esc cancel", width: layoutWidth })) : null,
672
+ overlay?.type === 'model' ? (react_1.default.createElement(SelectList_1.SelectList, { title: overlay.request.title ?? 'Switch Model', items: modelItems(overlay.request), selectedIndex: overlay.selectedIndex, maxVisibleItems: Math.min(overlay.request.maxVisibleItems ?? maxOverlayItems, maxOverlayItems), footer: "\u2191\u2193 scroll PgUp/PgDn Enter switch Esc cancel", width: layoutWidth })) : null,
608
673
  overlay?.type === 'edit' ? (react_1.default.createElement(SelectList_1.SelectList, { title: editPreviewTitle(overlay.request), items: editPreviewItems(overlay.request), selectedIndex: overlay.selectedIndex, maxVisibleItems: maxOverlayItems, footer: "\u2191\u2193 scroll PgUp/PgDn Enter/Esc close", width: layoutWidth })) : null,
609
674
  overlay?.type === 'permission' ? (react_1.default.createElement(SelectList_1.SelectList, { title: "Tool Permission", items: permissionItems(overlay.request), selectedIndex: overlay.selectedIndex, maxVisibleItems: 2, footer: "\u2191\u2193 choose Enter select y allow n/Esc deny", width: layoutWidth })) : null,
610
675
  overlay?.type === 'shortcuts' ? (react_1.default.createElement(ink_1.Box, { width: layoutWidth, borderStyle: "single", borderColor: "gray", paddingX: 1, flexDirection: "column" },