@qduc/term2 0.24.0 → 0.25.0

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 (309) hide show
  1. package/dist/agent.d.ts +3 -0
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +2 -1
  4. package/dist/agent.js.map +1 -1
  5. package/dist/app.d.ts +10 -0
  6. package/dist/app.d.ts.map +1 -1
  7. package/dist/app.js +33 -6
  8. package/dist/app.js.map +1 -1
  9. package/dist/cli.js +43 -1
  10. package/dist/cli.js.map +1 -1
  11. package/dist/commands/mcp-login-command.d.ts +24 -0
  12. package/dist/commands/mcp-login-command.d.ts.map +1 -0
  13. package/dist/commands/mcp-login-command.js +65 -0
  14. package/dist/commands/mcp-login-command.js.map +1 -0
  15. package/dist/commands/mcp-status-command.d.ts +19 -0
  16. package/dist/commands/mcp-status-command.d.ts.map +1 -0
  17. package/dist/commands/mcp-status-command.js +19 -0
  18. package/dist/commands/mcp-status-command.js.map +1 -0
  19. package/dist/components/input/ApplicationInputSurface.d.ts +4 -0
  20. package/dist/components/input/ApplicationInputSurface.d.ts.map +1 -1
  21. package/dist/components/input/ApplicationInputSurface.js +2 -0
  22. package/dist/components/input/ApplicationInputSurface.js.map +1 -1
  23. package/dist/components/input/McpMenuSession.d.ts +9 -0
  24. package/dist/components/input/McpMenuSession.d.ts.map +1 -0
  25. package/dist/components/input/McpMenuSession.js +370 -0
  26. package/dist/components/input/McpMenuSession.js.map +1 -0
  27. package/dist/components/input/ProviderMenuSession.d.ts.map +1 -1
  28. package/dist/components/input/ProviderMenuSession.js +0 -4
  29. package/dist/components/input/ProviderMenuSession.js.map +1 -1
  30. package/dist/components/input/SubagentPoolMenuSession.d.ts.map +1 -1
  31. package/dist/components/input/SubagentPoolMenuSession.js +0 -9
  32. package/dist/components/input/SubagentPoolMenuSession.js.map +1 -1
  33. package/dist/components/input/mcp-intent-host.d.ts +10 -0
  34. package/dist/components/input/mcp-intent-host.d.ts.map +1 -0
  35. package/dist/components/input/mcp-intent-host.js +31 -0
  36. package/dist/components/input/mcp-intent-host.js.map +1 -0
  37. package/dist/components/input/menu-bindings.d.ts +69 -0
  38. package/dist/components/input/menu-bindings.d.ts.map +1 -0
  39. package/dist/components/input/menu-bindings.js +110 -0
  40. package/dist/components/input/menu-bindings.js.map +1 -0
  41. package/dist/components/input/menu-controller.d.ts.map +1 -1
  42. package/dist/components/input/menu-controller.js +8 -5
  43. package/dist/components/input/menu-controller.js.map +1 -1
  44. package/dist/components/input/menu-registry.d.ts.map +1 -1
  45. package/dist/components/input/menu-registry.js +2 -0
  46. package/dist/components/input/menu-registry.js.map +1 -1
  47. package/dist/components/input/menu-types.d.ts +22 -7
  48. package/dist/components/input/menu-types.d.ts.map +1 -1
  49. package/dist/components/layout/BackgroundTasksPanel.d.ts +6 -0
  50. package/dist/components/layout/BackgroundTasksPanel.d.ts.map +1 -1
  51. package/dist/components/layout/BackgroundTasksPanel.js +58 -64
  52. package/dist/components/layout/BackgroundTasksPanel.js.map +1 -1
  53. package/dist/components/layout/BottomArea.d.ts +6 -1
  54. package/dist/components/layout/BottomArea.d.ts.map +1 -1
  55. package/dist/components/layout/BottomArea.js +9 -6
  56. package/dist/components/layout/BottomArea.js.map +1 -1
  57. package/dist/components/layout/StatusBar.d.ts.map +1 -1
  58. package/dist/components/layout/StatusBar.js +27 -18
  59. package/dist/components/layout/StatusBar.js.map +1 -1
  60. package/dist/components/menu/McpSelectionMenu.d.ts +15 -0
  61. package/dist/components/menu/McpSelectionMenu.d.ts.map +1 -0
  62. package/dist/components/menu/McpSelectionMenu.js +19 -0
  63. package/dist/components/menu/McpSelectionMenu.js.map +1 -0
  64. package/dist/components/menu/ModelSelectionMenu.d.ts.map +1 -1
  65. package/dist/components/menu/ModelSelectionMenu.js +16 -26
  66. package/dist/components/menu/ModelSelectionMenu.js.map +1 -1
  67. package/dist/components/menu/ProviderSelectionMenu.d.ts.map +1 -1
  68. package/dist/components/menu/ProviderSelectionMenu.js +8 -15
  69. package/dist/components/menu/ProviderSelectionMenu.js.map +1 -1
  70. package/dist/components/menu/SlashCommandMenu.d.ts.map +1 -1
  71. package/dist/components/menu/SlashCommandMenu.js +2 -5
  72. package/dist/components/menu/SlashCommandMenu.js.map +1 -1
  73. package/dist/components/menu/SubagentPoolSelectionMenu.d.ts.map +1 -1
  74. package/dist/components/menu/SubagentPoolSelectionMenu.js +6 -11
  75. package/dist/components/menu/SubagentPoolSelectionMenu.js.map +1 -1
  76. package/dist/components/message/command-message-helpers.d.ts +2 -2
  77. package/dist/components/message/command-message-helpers.d.ts.map +1 -1
  78. package/dist/components/prompt/ApprovalPrompt.d.ts.map +1 -1
  79. package/dist/components/prompt/ApprovalPrompt.js +3 -0
  80. package/dist/components/prompt/ApprovalPrompt.js.map +1 -1
  81. package/dist/contracts/conversation.d.ts +2 -0
  82. package/dist/contracts/conversation.d.ts.map +1 -1
  83. package/dist/contracts/conversation.js.map +1 -1
  84. package/dist/gateway/settings-rpc.d.ts +1 -0
  85. package/dist/gateway/settings-rpc.d.ts.map +1 -1
  86. package/dist/gateway/settings-rpc.js +1 -0
  87. package/dist/gateway/settings-rpc.js.map +1 -1
  88. package/dist/hooks/conversation-ui-reducer.d.ts +1 -1
  89. package/dist/hooks/conversation-ui-reducer.d.ts.map +1 -1
  90. package/dist/hooks/settings-completion-config.d.ts.map +1 -1
  91. package/dist/hooks/settings-completion-config.js +2 -1
  92. package/dist/hooks/settings-completion-config.js.map +1 -1
  93. package/dist/hooks/use-app-commands.d.ts +9 -1
  94. package/dist/hooks/use-app-commands.d.ts.map +1 -1
  95. package/dist/hooks/use-app-commands.js +14 -1
  96. package/dist/hooks/use-app-commands.js.map +1 -1
  97. package/dist/hooks/use-conversation.d.ts +1 -1
  98. package/dist/hooks/use-mcp-notices.d.ts +10 -0
  99. package/dist/hooks/use-mcp-notices.d.ts.map +1 -0
  100. package/dist/hooks/use-mcp-notices.js +47 -0
  101. package/dist/hooks/use-mcp-notices.js.map +1 -0
  102. package/dist/hooks/use-provider-selection.d.ts +1 -7
  103. package/dist/hooks/use-provider-selection.d.ts.map +1 -1
  104. package/dist/hooks/use-provider-selection.js +34 -87
  105. package/dist/hooks/use-provider-selection.js.map +1 -1
  106. package/dist/hooks/use-settings-value-completion.d.ts +3 -2
  107. package/dist/hooks/use-settings-value-completion.d.ts.map +1 -1
  108. package/dist/hooks/use-settings-value-completion.js +21 -3
  109. package/dist/hooks/use-settings-value-completion.js.map +1 -1
  110. package/dist/hooks/use-shell-mode.d.ts +1 -0
  111. package/dist/hooks/use-shell-mode.d.ts.map +1 -1
  112. package/dist/hooks/use-shell-mode.js +1 -0
  113. package/dist/hooks/use-shell-mode.js.map +1 -1
  114. package/dist/hooks/use-subagent-pool-selection.d.ts +2 -10
  115. package/dist/hooks/use-subagent-pool-selection.d.ts.map +1 -1
  116. package/dist/hooks/use-subagent-pool-selection.js +5 -62
  117. package/dist/hooks/use-subagent-pool-selection.js.map +1 -1
  118. package/dist/lib/agent-client.d.ts +1 -0
  119. package/dist/lib/agent-client.d.ts.map +1 -1
  120. package/dist/lib/agent-client.js +2 -0
  121. package/dist/lib/agent-client.js.map +1 -1
  122. package/dist/lib/agent-configuration.d.ts +4 -0
  123. package/dist/lib/agent-configuration.d.ts.map +1 -1
  124. package/dist/lib/agent-configuration.js +8 -0
  125. package/dist/lib/agent-configuration.js.map +1 -1
  126. package/dist/lib/agent-factory.d.ts +2 -0
  127. package/dist/lib/agent-factory.d.ts.map +1 -1
  128. package/dist/lib/agent-factory.js +1 -0
  129. package/dist/lib/agent-factory.js.map +1 -1
  130. package/dist/lib/oauth-loopback.d.ts +79 -0
  131. package/dist/lib/oauth-loopback.d.ts.map +1 -0
  132. package/dist/lib/oauth-loopback.js +221 -0
  133. package/dist/lib/oauth-loopback.js.map +1 -0
  134. package/dist/non-interactive.d.ts +2 -0
  135. package/dist/non-interactive.d.ts.map +1 -1
  136. package/dist/non-interactive.js +19 -0
  137. package/dist/non-interactive.js.map +1 -1
  138. package/dist/providers/codex.provider.d.ts.map +1 -1
  139. package/dist/providers/codex.provider.js +4 -3
  140. package/dist/providers/codex.provider.js.map +1 -1
  141. package/dist/providers/index.d.ts +1 -1
  142. package/dist/providers/index.d.ts.map +1 -1
  143. package/dist/providers/index.js +1 -1
  144. package/dist/providers/index.js.map +1 -1
  145. package/dist/providers/oauth-pkce.d.ts +5 -1
  146. package/dist/providers/oauth-pkce.d.ts.map +1 -1
  147. package/dist/providers/oauth-pkce.js +28 -208
  148. package/dist/providers/oauth-pkce.js.map +1 -1
  149. package/dist/providers/openai-responses-model.d.ts.map +1 -1
  150. package/dist/providers/openai-responses-model.js +5 -1
  151. package/dist/providers/openai-responses-model.js.map +1 -1
  152. package/dist/providers/openrouter-decisions.d.ts +15 -0
  153. package/dist/providers/openrouter-decisions.d.ts.map +1 -0
  154. package/dist/providers/openrouter-decisions.js +25 -0
  155. package/dist/providers/openrouter-decisions.js.map +1 -0
  156. package/dist/providers/provider-service.d.ts +3 -1
  157. package/dist/providers/provider-service.d.ts.map +1 -1
  158. package/dist/providers/provider-service.js +4 -1
  159. package/dist/providers/provider-service.js.map +1 -1
  160. package/dist/providers/registry.d.ts +0 -6
  161. package/dist/providers/registry.d.ts.map +1 -1
  162. package/dist/providers/registry.js +0 -25
  163. package/dist/providers/registry.js.map +1 -1
  164. package/dist/services/approval/decision-shadow.d.ts +15 -0
  165. package/dist/services/approval/decision-shadow.d.ts.map +1 -0
  166. package/dist/services/approval/decision-shadow.js +77 -0
  167. package/dist/services/approval/decision-shadow.js.map +1 -0
  168. package/dist/services/approval/non-interactive-approval-policy.d.ts +5 -0
  169. package/dist/services/approval/non-interactive-approval-policy.d.ts.map +1 -1
  170. package/dist/services/approval/non-interactive-approval-policy.js +14 -0
  171. package/dist/services/approval/non-interactive-approval-policy.js.map +1 -1
  172. package/dist/services/approval/shell-auto-approval-evaluator.d.ts +5 -1
  173. package/dist/services/approval/shell-auto-approval-evaluator.d.ts.map +1 -1
  174. package/dist/services/approval/shell-auto-approval-evaluator.js +80 -4
  175. package/dist/services/approval/shell-auto-approval-evaluator.js.map +1 -1
  176. package/dist/services/conversation/conversation-orchestrator.d.ts.map +1 -1
  177. package/dist/services/conversation/conversation-orchestrator.js +16 -2
  178. package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
  179. package/dist/services/conversation/conversation-orchestrator.types.d.ts +1 -1
  180. package/dist/services/conversation/conversation-orchestrator.types.d.ts.map +1 -1
  181. package/dist/services/conversation/session-browser.d.ts +4 -2
  182. package/dist/services/conversation/session-browser.d.ts.map +1 -1
  183. package/dist/services/conversation/session-browser.js +17 -6
  184. package/dist/services/conversation/session-browser.js.map +1 -1
  185. package/dist/services/conversation/session-index/session-index-database.d.ts.map +1 -1
  186. package/dist/services/conversation/session-index/session-index-database.js +24 -6
  187. package/dist/services/conversation/session-index/session-index-database.js.map +1 -1
  188. package/dist/services/mcp/mcp-config-controller.d.ts +32 -0
  189. package/dist/services/mcp/mcp-config-controller.d.ts.map +1 -0
  190. package/dist/services/mcp/mcp-config-controller.js +89 -0
  191. package/dist/services/mcp/mcp-config-controller.js.map +1 -0
  192. package/dist/services/mcp/mcp-config.d.ts +61 -0
  193. package/dist/services/mcp/mcp-config.d.ts.map +1 -0
  194. package/dist/services/mcp/mcp-config.js +232 -0
  195. package/dist/services/mcp/mcp-config.js.map +1 -0
  196. package/dist/services/mcp/mcp-connection-manager.d.ts +126 -0
  197. package/dist/services/mcp/mcp-connection-manager.d.ts.map +1 -0
  198. package/dist/services/mcp/mcp-connection-manager.js +488 -0
  199. package/dist/services/mcp/mcp-connection-manager.js.map +1 -0
  200. package/dist/services/mcp/mcp-oauth-login.d.ts +79 -0
  201. package/dist/services/mcp/mcp-oauth-login.d.ts.map +1 -0
  202. package/dist/services/mcp/mcp-oauth-login.js +126 -0
  203. package/dist/services/mcp/mcp-oauth-login.js.map +1 -0
  204. package/dist/services/mcp/mcp-oauth-provider.d.ts +77 -0
  205. package/dist/services/mcp/mcp-oauth-provider.d.ts.map +1 -0
  206. package/dist/services/mcp/mcp-oauth-provider.js +121 -0
  207. package/dist/services/mcp/mcp-oauth-provider.js.map +1 -0
  208. package/dist/services/mcp/mcp-oauth-store.d.ts +106 -0
  209. package/dist/services/mcp/mcp-oauth-store.d.ts.map +1 -0
  210. package/dist/services/mcp/mcp-oauth-store.js +278 -0
  211. package/dist/services/mcp/mcp-oauth-store.js.map +1 -0
  212. package/dist/services/mcp/mcp-status.d.ts +41 -0
  213. package/dist/services/mcp/mcp-status.d.ts.map +1 -0
  214. package/dist/services/mcp/mcp-status.js +69 -0
  215. package/dist/services/mcp/mcp-status.js.map +1 -0
  216. package/dist/services/mcp/mcp-stdio-launcher.d.ts +26 -0
  217. package/dist/services/mcp/mcp-stdio-launcher.d.ts.map +1 -0
  218. package/dist/services/mcp/mcp-stdio-launcher.js +8 -0
  219. package/dist/services/mcp/mcp-stdio-launcher.js.map +1 -0
  220. package/dist/services/mcp/mcp-tool-source.d.ts +77 -0
  221. package/dist/services/mcp/mcp-tool-source.d.ts.map +1 -0
  222. package/dist/services/mcp/mcp-tool-source.js +10 -0
  223. package/dist/services/mcp/mcp-tool-source.js.map +1 -0
  224. package/dist/services/mcp/test-fixtures/fake-authorization-server.d.ts +25 -0
  225. package/dist/services/mcp/test-fixtures/fake-authorization-server.d.ts.map +1 -0
  226. package/dist/services/mcp/test-fixtures/fake-authorization-server.js +147 -0
  227. package/dist/services/mcp/test-fixtures/fake-authorization-server.js.map +1 -0
  228. package/dist/services/mcp/test-fixtures/protected-mcp-server.d.ts +29 -0
  229. package/dist/services/mcp/test-fixtures/protected-mcp-server.d.ts.map +1 -0
  230. package/dist/services/mcp/test-fixtures/protected-mcp-server.js +87 -0
  231. package/dist/services/mcp/test-fixtures/protected-mcp-server.js.map +1 -0
  232. package/dist/services/mcp/turn-stable-mcp-tool-source.d.ts +19 -0
  233. package/dist/services/mcp/turn-stable-mcp-tool-source.d.ts.map +1 -0
  234. package/dist/services/mcp/turn-stable-mcp-tool-source.js +37 -0
  235. package/dist/services/mcp/turn-stable-mcp-tool-source.js.map +1 -0
  236. package/dist/services/models/decision-model-listing.d.ts +26 -0
  237. package/dist/services/models/decision-model-listing.d.ts.map +1 -0
  238. package/dist/services/models/decision-model-listing.js +61 -0
  239. package/dist/services/models/decision-model-listing.js.map +1 -0
  240. package/dist/services/models/model-catalog-session.d.ts +6 -1
  241. package/dist/services/models/model-catalog-session.d.ts.map +1 -1
  242. package/dist/services/models/model-catalog-session.js +9 -8
  243. package/dist/services/models/model-catalog-session.js.map +1 -1
  244. package/dist/services/profiles/registry.d.ts +1 -1
  245. package/dist/services/profiles/registry.d.ts.map +1 -1
  246. package/dist/services/profiles/registry.js +2 -1
  247. package/dist/services/profiles/registry.js.map +1 -1
  248. package/dist/services/providers/provider-management-session.d.ts +0 -1
  249. package/dist/services/providers/provider-management-session.d.ts.map +1 -1
  250. package/dist/services/providers/provider-management-session.js +0 -3
  251. package/dist/services/providers/provider-management-session.js.map +1 -1
  252. package/dist/services/settings/settings-merger.d.ts.map +1 -1
  253. package/dist/services/settings/settings-merger.js +0 -2
  254. package/dist/services/settings/settings-merger.js.map +1 -1
  255. package/dist/services/settings/settings-schema.d.ts +8 -3
  256. package/dist/services/settings/settings-schema.d.ts.map +1 -1
  257. package/dist/services/settings/settings-schema.js +16 -8
  258. package/dist/services/settings/settings-schema.js.map +1 -1
  259. package/dist/services/settings/settings-sources.d.ts +2 -0
  260. package/dist/services/settings/settings-sources.d.ts.map +1 -1
  261. package/dist/services/settings/settings-sources.js +2 -0
  262. package/dist/services/settings/settings-sources.js.map +1 -1
  263. package/dist/services/settings/settings-ui-metadata.d.ts.map +1 -1
  264. package/dist/services/settings/settings-ui-metadata.js +0 -1
  265. package/dist/services/settings/settings-ui-metadata.js.map +1 -1
  266. package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts +2 -2
  267. package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts.map +1 -1
  268. package/dist/services/settings/test-helpers/settings-consumer-inventory.js +2 -1
  269. package/dist/services/settings/test-helpers/settings-consumer-inventory.js.map +1 -1
  270. package/dist/services/shell/shell-interaction-session.d.ts +2 -0
  271. package/dist/services/shell/shell-interaction-session.d.ts.map +1 -1
  272. package/dist/services/shell/shell-interaction-session.js +11 -2
  273. package/dist/services/shell/shell-interaction-session.js.map +1 -1
  274. package/dist/services/subagents/mentor-runner.d.ts.map +1 -1
  275. package/dist/services/subagents/mentor-runner.js +6 -8
  276. package/dist/services/subagents/mentor-runner.js.map +1 -1
  277. package/dist/services/subagents/subagent-notification-store.js.map +1 -1
  278. package/dist/tools/memory/memory-tools.d.ts.map +1 -1
  279. package/dist/tools/memory/memory-tools.js +3 -1
  280. package/dist/tools/memory/memory-tools.js.map +1 -1
  281. package/dist/tools/session-browser/session-browser-tools.d.ts +1 -1
  282. package/dist/tools/session-browser/session-browser-tools.d.ts.map +1 -1
  283. package/dist/tools/session-browser/session-browser-tools.js +4 -3
  284. package/dist/tools/session-browser/session-browser-tools.js.map +1 -1
  285. package/dist/tools/system/run-code/mcp-script-surface.d.ts +28 -0
  286. package/dist/tools/system/run-code/mcp-script-surface.d.ts.map +1 -0
  287. package/dist/tools/system/run-code/mcp-script-surface.js +165 -0
  288. package/dist/tools/system/run-code/mcp-script-surface.js.map +1 -0
  289. package/dist/tools/system/run-code/run-code-runtime.d.ts.map +1 -1
  290. package/dist/tools/system/run-code/run-code-runtime.js +13 -1
  291. package/dist/tools/system/run-code/run-code-runtime.js.map +1 -1
  292. package/dist/tools/system/run-code/run-code.d.ts +3 -0
  293. package/dist/tools/system/run-code/run-code.d.ts.map +1 -1
  294. package/dist/tools/system/run-code/run-code.js +32 -4
  295. package/dist/tools/system/run-code/run-code.js.map +1 -1
  296. package/dist/utils/ai/provider-credentials.d.ts +8 -0
  297. package/dist/utils/ai/provider-credentials.d.ts.map +1 -1
  298. package/dist/utils/ai/provider-credentials.js +18 -0
  299. package/dist/utils/ai/provider-credentials.js.map +1 -1
  300. package/dist/utils/conversation/conversation-event-handler.js.map +1 -1
  301. package/dist/utils/conversation/conversation-utils.d.ts +1 -5
  302. package/dist/utils/conversation/conversation-utils.d.ts.map +1 -1
  303. package/dist/utils/conversation/conversation-utils.js +4 -1
  304. package/dist/utils/conversation/conversation-utils.js.map +1 -1
  305. package/dist/utils/value-suggestions.d.ts +14 -0
  306. package/dist/utils/value-suggestions.d.ts.map +1 -1
  307. package/dist/utils/value-suggestions.js +31 -0
  308. package/dist/utils/value-suggestions.js.map +1 -1
  309. package/package.json +3 -1
@@ -0,0 +1,147 @@
1
+ import crypto from 'node:crypto';
2
+ import { createServer } from 'node:http';
3
+ function listen(server) {
4
+ return new Promise((resolve, reject) => {
5
+ server.once('error', reject);
6
+ server.listen(0, '127.0.0.1', () => {
7
+ server.off('error', reject);
8
+ resolve(server.address().port);
9
+ });
10
+ });
11
+ }
12
+ async function readBody(req) {
13
+ const chunks = [];
14
+ for await (const chunk of req)
15
+ chunks.push(Buffer.from(chunk));
16
+ return Buffer.concat(chunks).toString('utf8');
17
+ }
18
+ function sendJson(res, status, body) {
19
+ const payload = JSON.stringify(body);
20
+ res.writeHead(status, { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(payload) });
21
+ res.end(payload);
22
+ }
23
+ function sendError(res, status, error, description) {
24
+ sendJson(res, status, { error, error_description: description });
25
+ }
26
+ const s256 = (verifier) => crypto.createHash('sha256').update(verifier).digest('base64url');
27
+ export async function startFakeAuthorizationServer() {
28
+ const codes = new Map();
29
+ const knownRefreshTokens = new Set();
30
+ const state = {
31
+ issuer: '',
32
+ issuedAccessTokens: [],
33
+ refreshGrants: [],
34
+ registeredClientIds: [],
35
+ refusedTokenRequests: 0,
36
+ stop: () => new Promise((resolve) => server.close(() => resolve())),
37
+ };
38
+ const issueTokens = () => {
39
+ const accessToken = `at-${crypto.randomUUID()}`;
40
+ const refreshToken = `rt-${crypto.randomUUID()}`;
41
+ state.issuedAccessTokens.push(accessToken);
42
+ knownRefreshTokens.add(refreshToken);
43
+ return { access_token: accessToken, refresh_token: refreshToken, token_type: 'Bearer', expires_in: 3600 };
44
+ };
45
+ const handleAuthorize = (url, res) => {
46
+ const redirectUri = url.searchParams.get('redirect_uri');
47
+ const codeChallenge = url.searchParams.get('code_challenge');
48
+ const clientId = url.searchParams.get('client_id');
49
+ if (url.searchParams.get('response_type') !== 'code') {
50
+ return sendError(res, 400, 'unsupported_response_type', 'only the code response type is supported');
51
+ }
52
+ if (url.searchParams.get('code_challenge_method') !== 'S256') {
53
+ return sendError(res, 400, 'invalid_request', 'code_challenge_method must be S256');
54
+ }
55
+ if (!codeChallenge || !redirectUri || !clientId) {
56
+ return sendError(res, 400, 'invalid_request', 'client_id, redirect_uri and code_challenge are required');
57
+ }
58
+ const code = `code-${crypto.randomUUID()}`;
59
+ codes.set(code, { clientId, redirectUri, codeChallenge });
60
+ const location = new URL(redirectUri);
61
+ location.searchParams.set('code', code);
62
+ const clientState = url.searchParams.get('state');
63
+ if (clientState)
64
+ location.searchParams.set('state', clientState);
65
+ // The user is never asked to consent: this server approves every request.
66
+ res.writeHead(302, { Location: location.href });
67
+ res.end();
68
+ };
69
+ const handleToken = async (req, res) => {
70
+ const params = new URLSearchParams(await readBody(req));
71
+ const grantType = params.get('grant_type');
72
+ if (grantType === 'authorization_code') {
73
+ const code = params.get('code') ?? '';
74
+ const pending = codes.get(code);
75
+ // Single use: a replayed code must not mint a second token set.
76
+ codes.delete(code);
77
+ const verifier = params.get('code_verifier') ?? '';
78
+ if (!pending)
79
+ return refuse(res, 'unknown or already-used authorization code');
80
+ if (pending.redirectUri !== params.get('redirect_uri'))
81
+ return refuse(res, 'redirect_uri does not match');
82
+ if (pending.clientId !== params.get('client_id'))
83
+ return refuse(res, 'client_id does not match');
84
+ if (pending.codeChallenge !== s256(verifier)) {
85
+ return refuse(res, 'code_verifier does not match the S256 challenge');
86
+ }
87
+ return sendJson(res, 200, issueTokens());
88
+ }
89
+ if (grantType === 'refresh_token') {
90
+ const presented = params.get('refresh_token') ?? '';
91
+ if (!knownRefreshTokens.has(presented))
92
+ return refuse(res, 'unknown refresh token');
93
+ state.refreshGrants.push(presented);
94
+ // Rotation: the presented refresh token is spent by this grant.
95
+ knownRefreshTokens.delete(presented);
96
+ return sendJson(res, 200, issueTokens());
97
+ }
98
+ return sendError(res, 400, 'unsupported_grant_type', `unsupported grant_type: ${grantType ?? '(missing)'}`);
99
+ };
100
+ const refuse = (res, reason) => {
101
+ state.refusedTokenRequests += 1;
102
+ sendError(res, 400, 'invalid_grant', reason);
103
+ };
104
+ const server = createServer(async (req, res) => {
105
+ const url = new URL(req.url ?? '/', state.issuer || 'http://127.0.0.1');
106
+ try {
107
+ if (req.method === 'GET' && url.pathname === '/.well-known/oauth-authorization-server') {
108
+ return sendJson(res, 200, {
109
+ issuer: state.issuer,
110
+ authorization_endpoint: `${state.issuer}/authorize`,
111
+ token_endpoint: `${state.issuer}/token`,
112
+ registration_endpoint: `${state.issuer}/register`,
113
+ response_types_supported: ['code'],
114
+ grant_types_supported: ['authorization_code', 'refresh_token'],
115
+ code_challenge_methods_supported: ['S256'],
116
+ token_endpoint_auth_methods_supported: ['none'],
117
+ scopes_supported: ['mcp'],
118
+ });
119
+ }
120
+ if (req.method === 'GET' && url.pathname === '/authorize')
121
+ return handleAuthorize(url, res);
122
+ if (req.method === 'POST' && url.pathname === '/token')
123
+ return await handleToken(req, res);
124
+ if (req.method === 'POST' && url.pathname === '/register') {
125
+ // RFC 7591: the response carries the client id plus the metadata that
126
+ // was registered, which the client validates against its own request.
127
+ const metadata = JSON.parse((await readBody(req)) || '{}');
128
+ const clientId = `dcr-${state.registeredClientIds.length + 1}`;
129
+ state.registeredClientIds.push(clientId);
130
+ return sendJson(res, 201, {
131
+ ...metadata,
132
+ client_id: clientId,
133
+ token_endpoint_auth_method: 'none',
134
+ client_id_issued_at: Math.floor(Date.now() / 1000),
135
+ });
136
+ }
137
+ sendJson(res, 404, { error: 'not_found', path: url.pathname });
138
+ }
139
+ catch (error) {
140
+ sendJson(res, 500, { error: 'server_error', error_description: String(error) });
141
+ }
142
+ });
143
+ const port = await listen(server);
144
+ state.issuer = `http://127.0.0.1:${port}`;
145
+ return state;
146
+ }
147
+ //# sourceMappingURL=fake-authorization-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fake-authorization-server.js","sourceRoot":"","sources":["../../../../source/services/mcp/test-fixtures/fake-authorization-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * An MCP server that requires a bearer token and publishes RFC 9728 protected
3
+ * resource metadata pointing at its authorization server — the shape a client
4
+ * hits when it connects to an OAuth-protected remote server.
5
+ *
6
+ * Serving goes through the real v2 SDK handler, so a test that reaches a tool
7
+ * here has done the actual MCP handshake over Streamable HTTP.
8
+ */
9
+ export type ProtectedMcpServerOptions = {
10
+ /** The authorization server's issuer identifier. */
11
+ authorizationServerUrl: string;
12
+ /** Returns the auth info for a token, or null when the token is not valid. */
13
+ verifyToken: (token: string) => Promise<{
14
+ clientId: string;
15
+ scopes: string[];
16
+ expiresAt: number;
17
+ } | null>;
18
+ };
19
+ export type ProtectedMcpServer = {
20
+ /** Base URL of the MCP endpoint. */
21
+ url: string;
22
+ /** RFC 9728 metadata URL advertised in the 401 challenge. */
23
+ resourceMetadataUrl: string;
24
+ /** Every HTTP request the fixture has seen, including refused ones. */
25
+ requestCount: () => number;
26
+ stop: () => Promise<void>;
27
+ };
28
+ export declare function startProtectedMcpServer(options: ProtectedMcpServerOptions): Promise<ProtectedMcpServer>;
29
+ //# sourceMappingURL=protected-mcp-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protected-mcp-server.d.ts","sourceRoot":"","sources":["../../../../source/services/mcp/test-fixtures/protected-mcp-server.ts"],"names":[],"mappings":"AAYA;;;;;;;GAOG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,oDAAoD;IACpD,sBAAsB,EAAE,MAAM,CAAC;IAC/B,8EAA8E;IAC9E,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;CAC3G,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,6DAA6D;IAC7D,mBAAmB,EAAE,MAAM,CAAC;IAC5B,uEAAuE;IACvE,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B,CAAC;AA+BF,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA6D7G"}
@@ -0,0 +1,87 @@
1
+ import { createServer } from 'node:http';
2
+ import { McpServer, OAuthError, OAuthErrorCode, createMcpHandler, getOAuthProtectedResourceMetadataUrl, oauthMetadataResponse, requireBearerAuth, } from '@modelcontextprotocol/server';
3
+ function listen(server) {
4
+ return new Promise((resolve, reject) => {
5
+ server.once('error', reject);
6
+ server.listen(0, '127.0.0.1', () => {
7
+ server.off('error', reject);
8
+ resolve(server.address().port);
9
+ });
10
+ });
11
+ }
12
+ async function toResponse(res, response) {
13
+ res.writeHead(response.status, Object.fromEntries(response.headers));
14
+ if (response.body) {
15
+ for await (const chunk of response.body)
16
+ res.write(chunk);
17
+ }
18
+ res.end();
19
+ }
20
+ /** Builds one `Request` and lets each gate read from it. */
21
+ async function asRequest(req, url) {
22
+ const chunks = [];
23
+ for await (const chunk of req)
24
+ chunks.push(Buffer.from(chunk));
25
+ return new Request(url, {
26
+ method: req.method,
27
+ headers: req.headers,
28
+ ...(chunks.length ? { body: Buffer.concat(chunks) } : {}),
29
+ });
30
+ }
31
+ export async function startProtectedMcpServer(options) {
32
+ let origin = '';
33
+ let requests = 0;
34
+ const resourceUrl = () => `${origin}/mcp`;
35
+ const resourceMetadataUrl = () => getOAuthProtectedResourceMetadataUrl(new URL(resourceUrl()));
36
+ const mcp = new McpServer({ name: 'protected-fixture', version: '1.0.0' });
37
+ mcp.registerTool('echo', { description: 'reports that the server is reachable' }, async () => ({
38
+ content: [{ type: 'text', text: 'echo' }],
39
+ }));
40
+ const handler = createMcpHandler(() => mcp);
41
+ const verifier = {
42
+ verifyAccessToken: async (token) => {
43
+ const verified = await options.verifyToken(token);
44
+ if (!verified)
45
+ throw new OAuthError(OAuthErrorCode.InvalidToken, 'Unknown access token');
46
+ return { token, clientId: verified.clientId, scopes: verified.scopes, expiresAt: verified.expiresAt };
47
+ },
48
+ };
49
+ // Rebuilt per request because the challenge must advertise the metadata URL of
50
+ // the port the server actually bound, which is only known after `listen`.
51
+ const gate = (request) => requireBearerAuth({ verifier, resourceMetadataUrl: resourceMetadataUrl() })(request);
52
+ const server = createServer(async (req, res) => {
53
+ requests += 1;
54
+ const request = await asRequest(req, `http://${req.headers.host}${req.url}`);
55
+ // The protected-resource document is what an unauthenticated client reads to
56
+ // find the authorization server; it must not require a token itself.
57
+ const metadata = oauthMetadataResponse(request, {
58
+ oauthMetadata: {
59
+ issuer: options.authorizationServerUrl,
60
+ authorization_endpoint: `${options.authorizationServerUrl}/authorize`,
61
+ token_endpoint: `${options.authorizationServerUrl}/token`,
62
+ registration_endpoint: `${options.authorizationServerUrl}/register`,
63
+ response_types_supported: ['code'],
64
+ grant_types_supported: ['authorization_code', 'refresh_token'],
65
+ code_challenge_methods_supported: ['S256'],
66
+ },
67
+ resourceServerUrl: new URL(resourceUrl()),
68
+ resourceName: 'protected-fixture',
69
+ scopesSupported: ['mcp'],
70
+ });
71
+ if (metadata)
72
+ return toResponse(res, metadata);
73
+ const auth = await gate(request);
74
+ if (auth instanceof Response)
75
+ return toResponse(res, auth);
76
+ return toResponse(res, await handler.fetch(request, { authInfo: auth }));
77
+ });
78
+ const port = await listen(server);
79
+ origin = `http://127.0.0.1:${port}`;
80
+ return {
81
+ url: resourceUrl(),
82
+ resourceMetadataUrl: resourceMetadataUrl(),
83
+ requestCount: () => requests,
84
+ stop: () => new Promise((resolve) => server.close(() => resolve())),
85
+ };
86
+ }
87
+ //# sourceMappingURL=protected-mcp-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protected-mcp-server.js","sourceRoot":"","sources":["../../../../source/services/mcp/test-fixtures/protected-mcp-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { McpCallOptions, McpCallResult, McpServerSnapshot, McpToolSource } from './mcp-tool-source.js';
2
+ /**
3
+ * Keeps the catalog used to describe an agent stable until the caller starts
4
+ * the next turn. Calls deliberately remain live so a server can recover while
5
+ * a prompt is in flight.
6
+ */
7
+ export declare class TurnStableMcpToolSource implements McpToolSource {
8
+ private readonly live;
9
+ private catalog;
10
+ private pending;
11
+ private readonly unsubscribe;
12
+ constructor(live: McpToolSource);
13
+ beginTurn(): void;
14
+ snapshot(): readonly McpServerSnapshot[];
15
+ callTool(server: string, tool: string, args: Record<string, unknown>, options: McpCallOptions): Promise<McpCallResult>;
16
+ onCatalogChanged(listener: () => void): () => void;
17
+ dispose(): void;
18
+ }
19
+ //# sourceMappingURL=turn-stable-mcp-tool-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-stable-mcp-tool-source.d.ts","sourceRoot":"","sources":["../../../source/services/mcp/turn-stable-mcp-tool-source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE5G;;;;GAIG;AACH,qBAAa,uBAAwB,YAAW,aAAa;IAK/C,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJjC,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IAEzC,YAA6B,IAAI,EAAE,aAAa,EAK/C;IAED,SAAS,IAAI,IAAI,CAKhB;IAED,QAAQ,IAAI,SAAS,iBAAiB,EAAE,CAEvC;IAED,QAAQ,CACN,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,aAAa,CAAC,CAExB;IAED,gBAAgB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAEjD;IAED,OAAO,IAAI,IAAI,CAEd;CACF"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Keeps the catalog used to describe an agent stable until the caller starts
3
+ * the next turn. Calls deliberately remain live so a server can recover while
4
+ * a prompt is in flight.
5
+ */
6
+ export class TurnStableMcpToolSource {
7
+ live;
8
+ catalog;
9
+ pending = false;
10
+ unsubscribe;
11
+ constructor(live) {
12
+ this.live = live;
13
+ this.catalog = live.snapshot();
14
+ this.unsubscribe = live.onCatalogChanged(() => {
15
+ this.pending = true;
16
+ });
17
+ }
18
+ beginTurn() {
19
+ if (this.pending) {
20
+ this.catalog = this.live.snapshot();
21
+ this.pending = false;
22
+ }
23
+ }
24
+ snapshot() {
25
+ return this.catalog;
26
+ }
27
+ callTool(server, tool, args, options) {
28
+ return this.live.callTool(server, tool, args, options);
29
+ }
30
+ onCatalogChanged(listener) {
31
+ return this.live.onCatalogChanged(listener);
32
+ }
33
+ dispose() {
34
+ this.unsubscribe();
35
+ }
36
+ }
37
+ //# sourceMappingURL=turn-stable-mcp-tool-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-stable-mcp-tool-source.js","sourceRoot":"","sources":["../../../source/services/mcp/turn-stable-mcp-tool-source.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,OAAO,uBAAuB;IAKL,IAAI;IAJzB,OAAO,CAA+B;IACtC,OAAO,GAAG,KAAK,CAAC;IACP,WAAW,CAAa;IAEzC,YAA6B,IAAmB;oBAAnB,IAAI;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE;YAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS;QACP,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,QAAQ,CACN,MAAc,EACd,IAAY,EACZ,IAA6B,EAC7B,OAAuB;QAEvB,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,gBAAgB,CAAC,QAAoB;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO;QACL,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;CACF"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Listing of OpenRouter models served by the alpha Decisions endpoint
3
+ * (`output_modalities` contains `decisions`). Chat models on
4
+ * `/api/v1/chat/completions` are NOT valid here: the Decisions endpoint only
5
+ * answers typed questions about a state, so the catalog filter — not the
6
+ * chat-model catalog — defines what `agent.autoApproveDecisionShadowModel`
7
+ * may be set to. The endpoint is public and needs no API key.
8
+ */
9
+ export type DecisionModelInfo = {
10
+ id: string;
11
+ name?: string;
12
+ };
13
+ export declare function clearDecisionModelListCache(): void;
14
+ /**
15
+ * Fetch the decisions-capable model list. Returns the cached list within the
16
+ * TTL; returns null on fetch, HTTP, or payload failure without caching the
17
+ * failure, so a later open of the picker retries.
18
+ */
19
+ export declare function fetchDecisionModels(opts?: {
20
+ fetchImpl?: typeof fetch;
21
+ ttlMs?: number;
22
+ now?: () => number;
23
+ }): Promise<DecisionModelInfo[] | null>;
24
+ /** The one setting whose picker is populated from the decisions catalog. */
25
+ export declare function isDecisionShadowModelKey(key: string): boolean;
26
+ //# sourceMappingURL=decision-model-listing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decision-model-listing.d.ts","sourceRoot":"","sources":["../../../source/services/models/decision-model-listing.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAOF,wBAAgB,2BAA2B,IAAI,IAAI,CAElD;AAgBD;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,CAAC,EAAE;IAC/C,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,CA2BtC;AAED,4EAA4E;AAC5E,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE7D"}
@@ -0,0 +1,61 @@
1
+ import { SETTING_KEYS } from '../settings/settings-schema.js';
2
+ const DECISION_MODELS_URL = 'https://openrouter.ai/api/v1/models?output_modalities=decisions';
3
+ const DEFAULT_TTL_MS = 60 * 60 * 1000;
4
+ let cache;
5
+ export function clearDecisionModelListCache() {
6
+ cache = undefined;
7
+ }
8
+ function parseDecisionModels(payload) {
9
+ if (typeof payload !== 'object' || payload === null)
10
+ return null;
11
+ const data = payload.data;
12
+ if (!Array.isArray(data))
13
+ return null;
14
+ const models = [];
15
+ for (const entry of data) {
16
+ if (typeof entry !== 'object' || entry === null)
17
+ continue;
18
+ const { id, name } = entry;
19
+ if (typeof id !== 'string' || id.length === 0)
20
+ continue;
21
+ models.push({ id, ...(typeof name === 'string' && name.length > 0 ? { name } : {}) });
22
+ }
23
+ return models;
24
+ }
25
+ /**
26
+ * Fetch the decisions-capable model list. Returns the cached list within the
27
+ * TTL; returns null on fetch, HTTP, or payload failure without caching the
28
+ * failure, so a later open of the picker retries.
29
+ */
30
+ export async function fetchDecisionModels(opts) {
31
+ const fetchImpl = opts?.fetchImpl ?? fetch;
32
+ const ttlMs = opts?.ttlMs ?? DEFAULT_TTL_MS;
33
+ const now = opts?.now ?? Date.now;
34
+ if (cache) {
35
+ const age = now() - cache.timestamp;
36
+ if (age >= 0 && age < ttlMs) {
37
+ return cache.models;
38
+ }
39
+ cache = undefined;
40
+ }
41
+ let payload;
42
+ try {
43
+ const response = await fetchImpl(DECISION_MODELS_URL);
44
+ if (!response.ok)
45
+ return null;
46
+ payload = await response.json();
47
+ }
48
+ catch {
49
+ return null;
50
+ }
51
+ const models = parseDecisionModels(payload);
52
+ if (models === null)
53
+ return null;
54
+ cache = { models, timestamp: now() };
55
+ return models;
56
+ }
57
+ /** The one setting whose picker is populated from the decisions catalog. */
58
+ export function isDecisionShadowModelKey(key) {
59
+ return key === SETTING_KEYS.AGENT_AUTO_APPROVE_DECISION_SHADOW_MODEL;
60
+ }
61
+ //# sourceMappingURL=decision-model-listing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decision-model-listing.js","sourceRoot":"","sources":["../../../source/services/models/decision-model-listing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAgB9D,MAAM,mBAAmB,GAAG,iEAAiE,CAAC;AAC9F,MAAM,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEtC,IAAI,KAAqE,CAAC;AAE1E,MAAM,UAAU,2BAA2B;IACzC,KAAK,GAAG,SAAS,CAAC;AACpB,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAgB;IAC3C,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjE,MAAM,IAAI,GAAI,OAA8B,CAAC,IAAI,CAAC;IAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;QACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;YAAE,SAAS;QAC1D,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,KAAyC,CAAC;QAC/D,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACxD,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAIzC;IACC,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,KAAK,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,cAAc,CAAC;IAC5C,MAAM,GAAG,GAAG,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IAElC,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,GAAG,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC;QACpC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,KAAK,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC,MAAM,CAAC;QACtB,CAAC;QACD,KAAK,GAAG,SAAS,CAAC;IACpB,CAAC;IAED,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,mBAAmB,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QAC9B,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAEjC,KAAK,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC;IACrC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,wBAAwB,CAAC,GAAW;IAClD,OAAO,GAAG,KAAK,YAAY,CAAC,wCAAwC,CAAC;AACvE,CAAC"}
@@ -1,7 +1,12 @@
1
1
  import { type ModelInfo } from '../model-service.js';
2
2
  import type { ILoggingService, ISettingsService } from '../service-interfaces.js';
3
3
  export type ModelFetcher = (provider: string) => Promise<ModelInfo[]>;
4
- /** Provider ids that have credentials, ordered by providerOrder (then registry order). */
4
+ /**
5
+ * Provider ids the model pickers and catalog listings may show, in registry
6
+ * order: credential-available providers minus the ones the user disabled via
7
+ * provider management (agent.disabledProviders). This is the single seam —
8
+ * every picker and listing composes its provider set through here.
9
+ */
5
10
  export declare const orderedProviderIds: (settingsService: ISettingsService, providerIds: string[]) => string[];
6
11
  /** Owns model-catalog traversal, per-open caching, failed-provider suppression, and stale loads. */
7
12
  export declare class ModelCatalogSession {
@@ -1 +1 @@
1
- {"version":3,"file":"model-catalog-session.d.ts","sourceRoot":"","sources":["../../../source/services/models/model-catalog-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEnF,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGlF,MAAM,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;AAEtE,0FAA0F;AAC1F,eAAO,MAAM,kBAAkB,oBAAqB,gBAAgB,eAAe,MAAM,EAAE,KAAG,MAAM,EAInG,CAAC;AAEF,oGAAoG;AACpG,qBAAa,mBAAmB;;IAS9B,YAAY,IAAI,EAAE;QAChB,eAAe,EAAE,gBAAgB,CAAC;QAClC,cAAc,EAAE,eAAe,CAAC;QAChC,OAAO,CAAC,EAAE,YAAY,CAAC;QACvB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,EAIA;IAED,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,SAAS,CAEnD;IAEK,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;QAAC,MAAM,EAAE,SAAS,EAAE,CAAA;KAAE,CAAC,CAmBlG;IAED,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAE3D;IAED,KAAK,IAAI,IAAI,CAGZ;IAED,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAE9B;IAED,gFAAgF;IAChF,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAKjC;IAED,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAQnF;IAED,KAAK,IAAI,IAAI,CAIZ;CACF"}
1
+ {"version":3,"file":"model-catalog-session.d.ts","sourceRoot":"","sources":["../../../source/services/models/model-catalog-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEnF,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGlF,MAAM,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;AAEtE;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,oBAAqB,gBAAgB,eAAe,MAAM,EAAE,KAAG,MAAM,EACY,CAAC;AAEjH,oGAAoG;AACpG,qBAAa,mBAAmB;;IAS9B,YAAY,IAAI,EAAE;QAChB,eAAe,EAAE,gBAAgB,CAAC;QAClC,cAAc,EAAE,eAAe,CAAC;QAChC,OAAO,CAAC,EAAE,YAAY,CAAC;QACvB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,EAIA;IAED,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,SAAS,CAEnD;IAEK,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;QAAC,MAAM,EAAE,SAAS,EAAE,CAAA;KAAE,CAAC,CAmBlG;IAED,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAE3D;IAED,KAAK,IAAI,IAAI,CAGZ;IAED,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAE9B;IAED,gFAAgF;IAChF,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAKjC;IAED,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAQnF;IAED,KAAK,IAAI,IAAI,CAIZ;CACF"}
@@ -1,12 +1,13 @@
1
1
  import { clearModelCache, fetchModels } from '../model-service.js';
2
- import { getProviderIds, sortProvidersByOrder } from '../../providers/index.js';
3
- import { getAvailableProviderIds } from '../../utils/ai/provider-credentials.js';
4
- /** Provider ids that have credentials, ordered by providerOrder (then registry order). */
5
- export const orderedProviderIds = (settingsService, providerIds) => {
6
- const ids = getAvailableProviderIds(settingsService, providerIds);
7
- const order = settingsService.getDynamic('providerOrder') ?? [];
8
- return order.length > 0 ? sortProvidersByOrder(ids, order) : ids;
9
- };
2
+ import { getProviderIds } from '../../providers/index.js';
3
+ import { getAvailableProviderIds, isProviderDisabled } from '../../utils/ai/provider-credentials.js';
4
+ /**
5
+ * Provider ids the model pickers and catalog listings may show, in registry
6
+ * order: credential-available providers minus the ones the user disabled via
7
+ * provider management (agent.disabledProviders). This is the single seam —
8
+ * every picker and listing composes its provider set through here.
9
+ */
10
+ export const orderedProviderIds = (settingsService, providerIds) => getAvailableProviderIds(settingsService, providerIds).filter((id) => !isProviderDisabled(settingsService, id));
10
11
  /** Owns model-catalog traversal, per-open caching, failed-provider suppression, and stale loads. */
11
12
  export class ModelCatalogSession {
12
13
  #settingsService;
@@ -1 +1 @@
1
- {"version":3,"file":"model-catalog-session.js","sourceRoot":"","sources":["../../../source/services/models/model-catalog-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-catalog-session.js","sourceRoot":"","sources":["../../../source/services/models/model-catalog-session.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { BlockKind, EnforcementPolicyDefinition, IntegrationDefinition, ProfileDefinition, ProfileRegistry, RegisteredBlock } from './types.js';
2
2
  /** Stable source kinds owned by the application. Profile data cannot invent one. */
3
3
  export declare const BUILTIN_CONTEXT_SOURCES: readonly ['environment', 'workspace', 'project-instructions', 'skills-catalog', 'memory', 'session-browser', 'repository-guidance', 'profile-document'];
4
- export declare const BUILTIN_TOOL_CAPABILITIES: readonly ['filesystem-read-workspace', 'filesystem-read-external', 'filesystem-write', 'shell', 'web', 'memory', 'sessions', 'skills', 'mentor', 'subagents', 'background-tasks', 'user-interaction', 'code-context'];
4
+ export declare const BUILTIN_TOOL_CAPABILITIES: readonly ['filesystem-read-workspace', 'filesystem-read-external', 'filesystem-write', 'shell', 'web', 'memory', 'sessions', 'skills', 'mentor', 'subagents', 'background-tasks', 'user-interaction', 'code-context', 'mcp'];
5
5
  export declare const BUILTIN_ENFORCEMENT_POLICIES: readonly ['builtin:enforcement/normal', 'builtin:enforcement/plan-read-only'];
6
6
  export declare const BUILTIN_INTEGRATIONS: readonly ['builtin:integration/mentor', 'builtin:integration/async-subagents', 'builtin:integration/background-task-control'];
7
7
  export declare const builtinBlocks: readonly RegisteredBlock[];
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../source/services/profiles/registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EAET,2BAA2B,EAC3B,qBAAqB,EAErB,iBAAiB,EACjB,eAAe,EACf,eAAe,EAEhB,MAAM,YAAY,CAAC;AAKpB,oFAAoF;AACpF,eAAO,MAAM,uBAAuB,YAClC,aAAa,EACb,WAAW,EACX,sBAAsB,EACtB,gBAAgB,EAChB,QAAQ,EACR,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,CACV,CAAC;AAEX,eAAO,MAAM,yBAAyB,YACpC,2BAA2B,EAC3B,0BAA0B,EAC1B,kBAAkB,EAClB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,CACN,CAAC;AAEX,eAAO,MAAM,4BAA4B,YACvC,4BAA4B,EAC5B,oCAAoC,CAC5B,CAAC;AAEX,eAAO,MAAM,oBAAoB,YAC/B,4BAA4B,EAC5B,qCAAqC,EACrC,6CAA6C,CACrC,CAAC;AA4BX,eAAO,MAAM,aAAa,EAAE,SAAS,eAAe,EAqBnD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,SAAS,2BAA2B,EAQjE,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,SAAS,qBAAqB,EAI/D,CAAC;AAWF,eAAO,MAAM,eAAe,EAAE,SAAS,iBAAiB,EA6CvD,CAAC;AAKF,eAAO,MAAM,sBAAsB,EAAE,eAKpC,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,sCAAgC,CAAC;AAElE,eAAO,MAAM,sBAAsB,UAAW,MAAM,KAAG,OACS,CAAC;AACjE,eAAO,MAAM,uBAAuB,UAAW,MAAM,KAAG,OACU,CAAC;AACnE,eAAO,MAAM,kBAAkB,UAAW,MAAM,KAAG,KAAK,IAAI,SACyD,CAAC"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../source/services/profiles/registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EAET,2BAA2B,EAC3B,qBAAqB,EAErB,iBAAiB,EACjB,eAAe,EACf,eAAe,EAEhB,MAAM,YAAY,CAAC;AAKpB,oFAAoF;AACpF,eAAO,MAAM,uBAAuB,YAClC,aAAa,EACb,WAAW,EACX,sBAAsB,EACtB,gBAAgB,EAChB,QAAQ,EACR,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,CACV,CAAC;AAEX,eAAO,MAAM,yBAAyB,YACpC,2BAA2B,EAC3B,0BAA0B,EAC1B,kBAAkB,EAClB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,KAAK,CACG,CAAC;AAEX,eAAO,MAAM,4BAA4B,YACvC,4BAA4B,EAC5B,oCAAoC,CAC5B,CAAC;AAEX,eAAO,MAAM,oBAAoB,YAC/B,4BAA4B,EAC5B,qCAAqC,EACrC,6CAA6C,CACrC,CAAC;AA4BX,eAAO,MAAM,aAAa,EAAE,SAAS,eAAe,EAqBnD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,SAAS,2BAA2B,EAQjE,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,SAAS,qBAAqB,EAI/D,CAAC;AAWF,eAAO,MAAM,eAAe,EAAE,SAAS,iBAAiB,EA6CvD,CAAC;AAKF,eAAO,MAAM,sBAAsB,EAAE,eAKpC,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,sCAAgC,CAAC;AAElE,eAAO,MAAM,sBAAsB,UAAW,MAAM,KAAG,OACS,CAAC;AACjE,eAAO,MAAM,uBAAuB,UAAW,MAAM,KAAG,OACU,CAAC;AACnE,eAAO,MAAM,kBAAkB,UAAW,MAAM,KAAG,KAAK,IAAI,SACyD,CAAC"}
@@ -26,6 +26,7 @@ export const BUILTIN_TOOL_CAPABILITIES = [
26
26
  'background-tasks',
27
27
  'user-interaction',
28
28
  'code-context',
29
+ 'mcp',
29
30
  ];
30
31
  export const BUILTIN_ENFORCEMENT_POLICIES = [
31
32
  'builtin:enforcement/normal',
@@ -85,7 +86,7 @@ export const builtinPolicies = [
85
86
  {
86
87
  id: BUILTIN_ENFORCEMENT_POLICIES[1],
87
88
  kind: 'enforcement',
88
- denials: ['filesystem-mutation', 'shell-mutation', 'delegated-write', 'unknown-delegated-role'],
89
+ denials: ['filesystem-mutation', 'shell-mutation', 'mcp', 'delegated-write', 'unknown-delegated-role'],
89
90
  handoffRestriction: 'plan-read-only',
90
91
  },
91
92
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../source/services/profiles/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../source/services/profiles/registry.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,5 @@ export declare class ProviderManagementSession {
7
7
  list(): ProviderSelectionItem[];
8
8
  save(draft: CustomProviderDraft, editingOriginalName: string | null): SaveProviderResult;
9
9
  delete(providerId: string): void;
10
- saveOrder(providerIds: readonly string[]): void;
11
10
  }
12
11
  //# sourceMappingURL=provider-management-session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider-management-session.d.ts","sourceRoot":"","sources":["../../../source/services/providers/provider-management-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAIL,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACxB,MAAM,qCAAqC,CAAC;AAE7C,wFAAwF;AACxF,qBAAa,yBAAyB;;IAGpC,YAAY,QAAQ,EAAE,gBAAgB,EAErC;IAED,IAAI,IAAI,qBAAqB,EAAE,CAE9B;IAED,IAAI,CAAC,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,GAAG,IAAI,GAAG,kBAAkB,CAEvF;IAED,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAE/B;IAED,SAAS,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAE9C;CACF"}
1
+ {"version":3,"file":"provider-management-session.d.ts","sourceRoot":"","sources":["../../../source/services/providers/provider-management-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAIL,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACxB,MAAM,qCAAqC,CAAC;AAE7C,wFAAwF;AACxF,qBAAa,yBAAyB;;IAGpC,YAAY,QAAQ,EAAE,gBAAgB,EAErC;IAED,IAAI,IAAI,qBAAqB,EAAE,CAE9B;IAED,IAAI,CAAC,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,GAAG,IAAI,GAAG,kBAAkB,CAEvF;IAED,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAE/B;CACF"}
@@ -14,8 +14,5 @@ export class ProviderManagementSession {
14
14
  delete(providerId) {
15
15
  deleteCustomProvider(this.#settings, providerId);
16
16
  }
17
- saveOrder(providerIds) {
18
- this.#settings.setPersistent('providerOrder', [...providerIds]);
19
- }
20
17
  }
21
18
  //# sourceMappingURL=provider-management-session.js.map