@akon-labs/nexus-cli 0.1.9 → 0.1.10

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 (320) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/LICENSE +1 -0
  3. package/README.md +3 -2
  4. package/dist/app-bridge.bundle.js +67 -0
  5. package/dist/cli.js +20263 -2158
  6. package/dist/core/agent-session.d.ts.map +1 -1
  7. package/dist/core/agent-session.js +1 -1
  8. package/dist/core/agent-session.js.map +1 -1
  9. package/dist/core/auto-model.d.ts +1 -1
  10. package/dist/core/auto-model.d.ts.map +1 -1
  11. package/dist/core/auto-model.js +1 -1
  12. package/dist/core/auto-model.js.map +1 -1
  13. package/dist/core/model-resolver.d.ts +2 -2
  14. package/dist/core/model-resolver.d.ts.map +1 -1
  15. package/dist/core/model-resolver.js +3 -3
  16. package/dist/core/model-resolver.js.map +1 -1
  17. package/dist/core/package-manager.d.ts +15 -0
  18. package/dist/core/package-manager.d.ts.map +1 -1
  19. package/dist/core/package-manager.js +50 -0
  20. package/dist/core/package-manager.js.map +1 -1
  21. package/dist/core/sdk.d.ts.map +1 -1
  22. package/dist/core/sdk.js +1 -1
  23. package/dist/core/sdk.js.map +1 -1
  24. package/dist/core/slash-commands.d.ts.map +1 -1
  25. package/dist/core/slash-commands.js +3 -3
  26. package/dist/core/slash-commands.js.map +1 -1
  27. package/dist/core/system-prompt.d.ts.map +1 -1
  28. package/dist/core/system-prompt.js +1 -1
  29. package/dist/core/system-prompt.js.map +1 -1
  30. package/dist/core/tools/index.d.ts +1 -1
  31. package/dist/core/tools/index.d.ts.map +1 -1
  32. package/dist/core/tools/index.js +5 -5
  33. package/dist/core/tools/index.js.map +1 -1
  34. package/dist/core/tools/websearch.d.ts.map +1 -1
  35. package/dist/core/tools/websearch.js +3 -3
  36. package/dist/core/tools/websearch.js.map +1 -1
  37. package/dist/extensions/gitnexus/gateway.d.ts +6 -6
  38. package/dist/extensions/gitnexus/gateway.d.ts.map +1 -1
  39. package/dist/extensions/gitnexus/gateway.js +4 -4
  40. package/dist/extensions/gitnexus/gateway.js.map +1 -1
  41. package/dist/extensions/gitnexus/index.d.ts.map +1 -1
  42. package/dist/extensions/gitnexus/index.js +4 -2
  43. package/dist/extensions/gitnexus/index.js.map +1 -1
  44. package/dist/extensions/mcp/abort.d.ts +3 -0
  45. package/dist/extensions/mcp/abort.d.ts.map +1 -0
  46. package/dist/extensions/mcp/abort.js +41 -0
  47. package/dist/extensions/mcp/abort.js.map +1 -0
  48. package/dist/extensions/mcp/agent-dir.d.ts +6 -0
  49. package/dist/extensions/mcp/agent-dir.d.ts.map +1 -0
  50. package/dist/extensions/mcp/agent-dir.js +18 -0
  51. package/dist/extensions/mcp/agent-dir.js.map +1 -0
  52. package/dist/extensions/mcp/agent-plugin-loader.d.ts +9 -0
  53. package/dist/extensions/mcp/agent-plugin-loader.d.ts.map +1 -0
  54. package/dist/extensions/mcp/agent-plugin-loader.js +384 -0
  55. package/dist/extensions/mcp/agent-plugin-loader.js.map +1 -0
  56. package/dist/extensions/mcp/app-bridge.bundle.js +67 -0
  57. package/dist/extensions/mcp/commands.d.ts +27 -0
  58. package/dist/extensions/mcp/commands.d.ts.map +1 -0
  59. package/dist/extensions/mcp/commands.js +629 -0
  60. package/dist/extensions/mcp/commands.js.map +1 -0
  61. package/dist/extensions/mcp/config.d.ts +121 -38
  62. package/dist/extensions/mcp/config.d.ts.map +1 -1
  63. package/dist/extensions/mcp/config.js +1030 -70
  64. package/dist/extensions/mcp/config.js.map +1 -1
  65. package/dist/extensions/mcp/consent-manager.d.ts +14 -0
  66. package/dist/extensions/mcp/consent-manager.d.ts.map +1 -0
  67. package/dist/extensions/mcp/consent-manager.js +60 -0
  68. package/dist/extensions/mcp/consent-manager.js.map +1 -0
  69. package/dist/extensions/mcp/direct-tools.d.ts +11 -0
  70. package/dist/extensions/mcp/direct-tools.d.ts.map +1 -0
  71. package/dist/extensions/mcp/direct-tools.js +562 -0
  72. package/dist/extensions/mcp/direct-tools.js.map +1 -0
  73. package/dist/extensions/mcp/elicitation-handler.d.ts +18 -0
  74. package/dist/extensions/mcp/elicitation-handler.d.ts.map +1 -0
  75. package/dist/extensions/mcp/elicitation-handler.js +320 -0
  76. package/dist/extensions/mcp/elicitation-handler.js.map +1 -0
  77. package/dist/extensions/mcp/error-signal.d.ts +16 -0
  78. package/dist/extensions/mcp/error-signal.d.ts.map +1 -0
  79. package/dist/extensions/mcp/error-signal.js +22 -0
  80. package/dist/extensions/mcp/error-signal.js.map +1 -0
  81. package/dist/extensions/mcp/errors.d.ts +104 -0
  82. package/dist/extensions/mcp/errors.d.ts.map +1 -0
  83. package/dist/extensions/mcp/errors.js +171 -0
  84. package/dist/extensions/mcp/errors.js.map +1 -0
  85. package/dist/extensions/mcp/glimpse-ui.d.ts +10 -0
  86. package/dist/extensions/mcp/glimpse-ui.d.ts.map +1 -0
  87. package/dist/extensions/mcp/glimpse-ui.js +67 -0
  88. package/dist/extensions/mcp/glimpse-ui.js.map +1 -0
  89. package/dist/extensions/mcp/host-html-template.d.ts +17 -0
  90. package/dist/extensions/mcp/host-html-template.d.ts.map +1 -0
  91. package/dist/extensions/mcp/host-html-template.js +442 -0
  92. package/dist/extensions/mcp/host-html-template.js.map +1 -0
  93. package/dist/extensions/mcp/index.d.ts +20 -15
  94. package/dist/extensions/mcp/index.d.ts.map +1 -1
  95. package/dist/extensions/mcp/index.js +1064 -82
  96. package/dist/extensions/mcp/index.js.map +1 -1
  97. package/dist/extensions/mcp/init.d.ts +28 -0
  98. package/dist/extensions/mcp/init.d.ts.map +1 -0
  99. package/dist/extensions/mcp/init.js +631 -0
  100. package/dist/extensions/mcp/init.js.map +1 -0
  101. package/dist/extensions/mcp/json-schema-validator.d.ts +3 -0
  102. package/dist/extensions/mcp/json-schema-validator.d.ts.map +1 -0
  103. package/dist/extensions/mcp/json-schema-validator.js +53 -0
  104. package/dist/extensions/mcp/json-schema-validator.js.map +1 -0
  105. package/dist/extensions/mcp/lifecycle.d.ts +56 -0
  106. package/dist/extensions/mcp/lifecycle.d.ts.map +1 -0
  107. package/dist/extensions/mcp/lifecycle.js +395 -0
  108. package/dist/extensions/mcp/lifecycle.js.map +1 -0
  109. package/dist/extensions/mcp/logger.d.ts +52 -0
  110. package/dist/extensions/mcp/logger.d.ts.map +1 -0
  111. package/dist/extensions/mcp/logger.js +134 -0
  112. package/dist/extensions/mcp/logger.js.map +1 -0
  113. package/dist/extensions/mcp/mcp-auth-flow.d.ts +117 -0
  114. package/dist/extensions/mcp/mcp-auth-flow.d.ts.map +1 -0
  115. package/dist/extensions/mcp/mcp-auth-flow.js +869 -0
  116. package/dist/extensions/mcp/mcp-auth-flow.js.map +1 -0
  117. package/dist/extensions/mcp/mcp-auth.d.ts +162 -0
  118. package/dist/extensions/mcp/mcp-auth.d.ts.map +1 -0
  119. package/dist/extensions/mcp/mcp-auth.js +897 -0
  120. package/dist/extensions/mcp/mcp-auth.js.map +1 -0
  121. package/dist/extensions/mcp/mcp-bearer-store.d.ts +25 -0
  122. package/dist/extensions/mcp/mcp-bearer-store.d.ts.map +1 -0
  123. package/dist/extensions/mcp/mcp-bearer-store.js +350 -0
  124. package/dist/extensions/mcp/mcp-bearer-store.js.map +1 -0
  125. package/dist/extensions/mcp/mcp-callback-server.d.ts +54 -0
  126. package/dist/extensions/mcp/mcp-callback-server.d.ts.map +1 -0
  127. package/dist/extensions/mcp/mcp-callback-server.js +454 -0
  128. package/dist/extensions/mcp/mcp-callback-server.js.map +1 -0
  129. package/dist/extensions/mcp/mcp-code.d.ts +48 -0
  130. package/dist/extensions/mcp/mcp-code.d.ts.map +1 -0
  131. package/dist/extensions/mcp/mcp-code.js +358 -0
  132. package/dist/extensions/mcp/mcp-code.js.map +1 -0
  133. package/dist/extensions/mcp/mcp-keyring-helper.cjs +89 -0
  134. package/dist/extensions/mcp/mcp-oauth-provider.d.ts +135 -0
  135. package/dist/extensions/mcp/mcp-oauth-provider.d.ts.map +1 -0
  136. package/dist/extensions/mcp/mcp-oauth-provider.js +491 -0
  137. package/dist/extensions/mcp/mcp-oauth-provider.js.map +1 -0
  138. package/dist/extensions/mcp/mcp-output-guard.d.ts +59 -0
  139. package/dist/extensions/mcp/mcp-output-guard.d.ts.map +1 -0
  140. package/dist/extensions/mcp/mcp-output-guard.js +343 -0
  141. package/dist/extensions/mcp/mcp-output-guard.js.map +1 -0
  142. package/dist/extensions/mcp/mcp-panel.d.ts +71 -0
  143. package/dist/extensions/mcp/mcp-panel.d.ts.map +1 -0
  144. package/dist/extensions/mcp/mcp-panel.js +973 -0
  145. package/dist/extensions/mcp/mcp-panel.js.map +1 -0
  146. package/dist/extensions/mcp/mcp-probe.d.ts +7 -0
  147. package/dist/extensions/mcp/mcp-probe.d.ts.map +1 -0
  148. package/dist/extensions/mcp/mcp-probe.js +155 -0
  149. package/dist/extensions/mcp/mcp-probe.js.map +1 -0
  150. package/dist/extensions/mcp/mcp-script-worker.mjs +130 -0
  151. package/dist/extensions/mcp/mcp-setup-panel.d.ts +85 -0
  152. package/dist/extensions/mcp/mcp-setup-panel.d.ts.map +1 -0
  153. package/dist/extensions/mcp/mcp-setup-panel.js +618 -0
  154. package/dist/extensions/mcp/mcp-setup-panel.js.map +1 -0
  155. package/dist/extensions/mcp/mcp-status.d.ts +12 -0
  156. package/dist/extensions/mcp/mcp-status.d.ts.map +1 -0
  157. package/dist/extensions/mcp/mcp-status.js +98 -0
  158. package/dist/extensions/mcp/mcp-status.js.map +1 -0
  159. package/dist/extensions/mcp/mcp-trace.d.ts +95 -0
  160. package/dist/extensions/mcp/mcp-trace.d.ts.map +1 -0
  161. package/dist/extensions/mcp/mcp-trace.js +252 -0
  162. package/dist/extensions/mcp/mcp-trace.js.map +1 -0
  163. package/dist/extensions/mcp/metadata-cache.d.ts +20 -0
  164. package/dist/extensions/mcp/metadata-cache.d.ts.map +1 -0
  165. package/dist/extensions/mcp/metadata-cache.js +318 -0
  166. package/dist/extensions/mcp/metadata-cache.js.map +1 -0
  167. package/dist/extensions/mcp/npx-resolver.d.ts +7 -0
  168. package/dist/extensions/mcp/npx-resolver.d.ts.map +1 -0
  169. package/dist/extensions/mcp/npx-resolver.js +505 -0
  170. package/dist/extensions/mcp/npx-resolver.js.map +1 -0
  171. package/dist/extensions/mcp/oauth.d.ts +21 -0
  172. package/dist/extensions/mcp/oauth.d.ts.map +1 -0
  173. package/dist/extensions/mcp/oauth.js +15 -0
  174. package/dist/extensions/mcp/oauth.js.map +1 -0
  175. package/dist/extensions/mcp/onboarding-state.d.ts +13 -0
  176. package/dist/extensions/mcp/onboarding-state.d.ts.map +1 -0
  177. package/dist/extensions/mcp/onboarding-state.js +65 -0
  178. package/dist/extensions/mcp/onboarding-state.js.map +1 -0
  179. package/dist/extensions/mcp/package-mcp-loader.d.ts +3 -0
  180. package/dist/extensions/mcp/package-mcp-loader.d.ts.map +1 -0
  181. package/dist/extensions/mcp/package-mcp-loader.js +170 -0
  182. package/dist/extensions/mcp/package-mcp-loader.js.map +1 -0
  183. package/dist/extensions/mcp/panel-keys.d.ts +21 -0
  184. package/dist/extensions/mcp/panel-keys.d.ts.map +1 -0
  185. package/dist/extensions/mcp/panel-keys.js +29 -0
  186. package/dist/extensions/mcp/panel-keys.js.map +1 -0
  187. package/dist/extensions/mcp/prompts.d.ts +63 -0
  188. package/dist/extensions/mcp/prompts.d.ts.map +1 -0
  189. package/dist/extensions/mcp/prompts.js +297 -0
  190. package/dist/extensions/mcp/prompts.js.map +1 -0
  191. package/dist/extensions/mcp/proxy-modes.d.ts +15 -0
  192. package/dist/extensions/mcp/proxy-modes.d.ts.map +1 -0
  193. package/dist/extensions/mcp/proxy-modes.js +1421 -0
  194. package/dist/extensions/mcp/proxy-modes.js.map +1 -0
  195. package/dist/extensions/mcp/request-headers-command.d.ts +11 -0
  196. package/dist/extensions/mcp/request-headers-command.d.ts.map +1 -0
  197. package/dist/extensions/mcp/request-headers-command.js +334 -0
  198. package/dist/extensions/mcp/request-headers-command.js.map +1 -0
  199. package/dist/extensions/mcp/resource-tools.d.ts +2 -0
  200. package/dist/extensions/mcp/resource-tools.d.ts.map +1 -0
  201. package/dist/extensions/mcp/resource-tools.js +15 -0
  202. package/dist/extensions/mcp/resource-tools.js.map +1 -0
  203. package/dist/extensions/mcp/runtime-owner.d.ts +14 -0
  204. package/dist/extensions/mcp/runtime-owner.d.ts.map +1 -0
  205. package/dist/extensions/mcp/runtime-owner.js +84 -0
  206. package/dist/extensions/mcp/runtime-owner.js.map +1 -0
  207. package/dist/extensions/mcp/sampling-handler.d.ts +18 -0
  208. package/dist/extensions/mcp/sampling-handler.d.ts.map +1 -0
  209. package/dist/extensions/mcp/sampling-handler.js +229 -0
  210. package/dist/extensions/mcp/sampling-handler.js.map +1 -0
  211. package/dist/extensions/mcp/search-ranking.d.ts +25 -0
  212. package/dist/extensions/mcp/search-ranking.d.ts.map +1 -0
  213. package/dist/extensions/mcp/search-ranking.js +234 -0
  214. package/dist/extensions/mcp/search-ranking.js.map +1 -0
  215. package/dist/extensions/mcp/server-manager.d.ts +116 -0
  216. package/dist/extensions/mcp/server-manager.d.ts.map +1 -0
  217. package/dist/extensions/mcp/server-manager.js +1052 -0
  218. package/dist/extensions/mcp/server-manager.js.map +1 -0
  219. package/dist/extensions/mcp/session-recovery.d.ts +27 -0
  220. package/dist/extensions/mcp/session-recovery.d.ts.map +1 -0
  221. package/dist/extensions/mcp/session-recovery.js +140 -0
  222. package/dist/extensions/mcp/session-recovery.js.map +1 -0
  223. package/dist/extensions/mcp/skills/mcp-scripting/SKILL.md +38 -0
  224. package/dist/extensions/mcp/state.d.ts +62 -0
  225. package/dist/extensions/mcp/state.d.ts.map +1 -0
  226. package/dist/extensions/mcp/state.js +2 -0
  227. package/dist/extensions/mcp/state.js.map +1 -0
  228. package/dist/extensions/mcp/tool-approval.d.ts +11 -0
  229. package/dist/extensions/mcp/tool-approval.d.ts.map +1 -0
  230. package/dist/extensions/mcp/tool-approval.js +156 -0
  231. package/dist/extensions/mcp/tool-approval.js.map +1 -0
  232. package/dist/extensions/mcp/tool-metadata.d.ts +11 -0
  233. package/dist/extensions/mcp/tool-metadata.d.ts.map +1 -0
  234. package/dist/extensions/mcp/tool-metadata.js +264 -0
  235. package/dist/extensions/mcp/tool-metadata.js.map +1 -0
  236. package/dist/extensions/mcp/tool-registrar.d.ts +21 -0
  237. package/dist/extensions/mcp/tool-registrar.d.ts.map +1 -0
  238. package/dist/extensions/mcp/tool-registrar.js +229 -0
  239. package/dist/extensions/mcp/tool-registrar.js.map +1 -0
  240. package/dist/extensions/mcp/tool-result-renderer.d.ts +83 -0
  241. package/dist/extensions/mcp/tool-result-renderer.d.ts.map +1 -0
  242. package/dist/extensions/mcp/tool-result-renderer.js +345 -0
  243. package/dist/extensions/mcp/tool-result-renderer.js.map +1 -0
  244. package/dist/extensions/mcp/ts-shape.d.ts +3 -0
  245. package/dist/extensions/mcp/ts-shape.d.ts.map +1 -0
  246. package/dist/extensions/mcp/ts-shape.js +160 -0
  247. package/dist/extensions/mcp/ts-shape.js.map +1 -0
  248. package/dist/extensions/mcp/types.d.ts +521 -0
  249. package/dist/extensions/mcp/types.d.ts.map +1 -0
  250. package/dist/extensions/mcp/types.js +294 -0
  251. package/dist/extensions/mcp/types.js.map +1 -0
  252. package/dist/extensions/mcp/ui-app-bridge-helpers.d.ts +7 -0
  253. package/dist/extensions/mcp/ui-app-bridge-helpers.d.ts.map +1 -0
  254. package/dist/extensions/mcp/ui-app-bridge-helpers.js +37 -0
  255. package/dist/extensions/mcp/ui-app-bridge-helpers.js.map +1 -0
  256. package/dist/extensions/mcp/ui-resource-handler.d.ts +18 -0
  257. package/dist/extensions/mcp/ui-resource-handler.d.ts.map +1 -0
  258. package/dist/extensions/mcp/ui-resource-handler.js +210 -0
  259. package/dist/extensions/mcp/ui-resource-handler.js.map +1 -0
  260. package/dist/extensions/mcp/ui-server.d.ts +52 -0
  261. package/dist/extensions/mcp/ui-server.d.ts.map +1 -0
  262. package/dist/extensions/mcp/ui-server.js +740 -0
  263. package/dist/extensions/mcp/ui-server.js.map +1 -0
  264. package/dist/extensions/mcp/ui-session.d.ts +40 -0
  265. package/dist/extensions/mcp/ui-session.d.ts.map +1 -0
  266. package/dist/extensions/mcp/ui-session.js +477 -0
  267. package/dist/extensions/mcp/ui-session.js.map +1 -0
  268. package/dist/extensions/mcp/ui-stream-types.d.ts +105 -0
  269. package/dist/extensions/mcp/ui-stream-types.d.ts.map +1 -0
  270. package/dist/extensions/mcp/ui-stream-types.js +61 -0
  271. package/dist/extensions/mcp/ui-stream-types.js.map +1 -0
  272. package/dist/extensions/mcp/ui-tool-visibility.d.ts +5 -0
  273. package/dist/extensions/mcp/ui-tool-visibility.d.ts.map +1 -0
  274. package/dist/extensions/mcp/ui-tool-visibility.js +27 -0
  275. package/dist/extensions/mcp/ui-tool-visibility.js.map +1 -0
  276. package/dist/extensions/mcp/unix-socket-transport.d.ts +15 -0
  277. package/dist/extensions/mcp/unix-socket-transport.d.ts.map +1 -0
  278. package/dist/extensions/mcp/unix-socket-transport.js +85 -0
  279. package/dist/extensions/mcp/unix-socket-transport.js.map +1 -0
  280. package/dist/extensions/mcp/utils.d.ts +32 -0
  281. package/dist/extensions/mcp/utils.d.ts.map +1 -0
  282. package/dist/extensions/mcp/utils.js +336 -0
  283. package/dist/extensions/mcp/utils.js.map +1 -0
  284. package/dist/extensions/subagent/index.d.ts +61 -1
  285. package/dist/extensions/subagent/index.d.ts.map +1 -1
  286. package/dist/extensions/subagent/index.js +177 -4
  287. package/dist/extensions/subagent/index.js.map +1 -1
  288. package/dist/extensions/web-access.d.ts.map +1 -1
  289. package/dist/extensions/web-access.js +1 -1
  290. package/dist/extensions/web-access.js.map +1 -1
  291. package/dist/index.d.ts +2 -0
  292. package/dist/index.d.ts.map +1 -1
  293. package/dist/index.js +20057 -1947
  294. package/dist/index.js.map +1 -1
  295. package/dist/mcp-keyring-helper.cjs +89 -0
  296. package/dist/mcp-script-worker.mjs +130 -0
  297. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  298. package/dist/modes/interactive/components/model-selector.js +1 -1
  299. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  300. package/dist/modes/interactive/components/response-separator.d.ts +1 -1
  301. package/dist/modes/interactive/components/response-separator.d.ts.map +1 -1
  302. package/dist/modes/interactive/components/response-separator.js +1 -1
  303. package/dist/modes/interactive/components/response-separator.js.map +1 -1
  304. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  305. package/dist/modes/interactive/interactive-mode.js +7 -5
  306. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  307. package/dist/rpc-entry.js +20263 -2158
  308. package/dist/skills/mcp-scripting/SKILL.md +38 -0
  309. package/dist/vendor/ai.js +280 -205
  310. package/docs/mcp.md +178 -0
  311. package/docs/pi-subagents.md +75 -0
  312. package/docs/quickstart.md +1 -1
  313. package/docs/usage.md +2 -1
  314. package/examples/extensions/pi-subagents-worker-policy.ts +86 -0
  315. package/npm-shrinkwrap.json +763 -6
  316. package/package.json +15 -4
  317. package/dist/extensions/mcp/client.d.ts +0 -86
  318. package/dist/extensions/mcp/client.d.ts.map +0 -1
  319. package/dist/extensions/mcp/client.js +0 -275
  320. package/dist/extensions/mcp/client.js.map +0 -1
@@ -0,0 +1,521 @@
1
+ import type { ImageContent, TextContent } from "@earendil-works/pi-ai";
2
+ import type { ListPromptsResult, ListResourcesResult, ListToolsResult, ContentBlock as McpContentBlock, Transport as McpTransport } from "@modelcontextprotocol/client";
3
+ import type { UiStreamMode } from "./ui-stream-types.ts";
4
+ import type { UiToolVisibility } from "./ui-tool-visibility.ts";
5
+ export type Transport = McpTransport;
6
+ /** Versioned shared-event-bus channel for read-only MCP runtime snapshots. */
7
+ export declare const MCP_STATUS_EVENT = "nexus-mcp/status/v1";
8
+ export declare const MCP_STATUS_SNAPSHOT_VERSION: 1;
9
+ export type McpServerRuntimeStatus = "connected" | "cached" | "failed" | "needs-auth" | "not-connected" | "disabled";
10
+ export interface McpServerStatusSnapshot {
11
+ readonly name: string;
12
+ readonly status: McpServerRuntimeStatus;
13
+ readonly toolCount: number;
14
+ readonly resourceCount?: number;
15
+ readonly failedAgoSeconds?: number;
16
+ readonly disabled: boolean;
17
+ }
18
+ export interface McpStatusSnapshot {
19
+ readonly version: typeof MCP_STATUS_SNAPSHOT_VERSION;
20
+ readonly servers: ReadonlyArray<McpServerStatusSnapshot>;
21
+ readonly totalTools: number;
22
+ readonly totalResources: number;
23
+ readonly connectedCount: number;
24
+ readonly disabledCount: number;
25
+ }
26
+ export type ImportKind = "cursor" | "claude-code" | "claude-desktop" | "codex" | "opencode" | "windsurf" | "vscode";
27
+ type SdkTool = ListToolsResult["tools"][number];
28
+ type SdkResource = ListResourcesResult["resources"][number];
29
+ type SdkPrompt = ListPromptsResult["prompts"][number];
30
+ type SdkPromptArgument = NonNullable<SdkPrompt["arguments"]>[number];
31
+ export interface McpTool {
32
+ name: SdkTool["name"];
33
+ title?: SdkTool["title"];
34
+ description?: SdkTool["description"];
35
+ inputSchema?: SdkTool["inputSchema"];
36
+ _meta?: SdkTool["_meta"];
37
+ }
38
+ export interface McpResource {
39
+ uri: SdkResource["uri"];
40
+ name: SdkResource["name"];
41
+ description?: SdkResource["description"];
42
+ mimeType?: SdkResource["mimeType"];
43
+ _meta?: SdkResource["_meta"];
44
+ }
45
+ export interface McpPromptArgument {
46
+ name: SdkPromptArgument["name"];
47
+ description?: SdkPromptArgument["description"];
48
+ required?: SdkPromptArgument["required"];
49
+ }
50
+ export interface McpPrompt {
51
+ name: SdkPrompt["name"];
52
+ title?: SdkPrompt["title"];
53
+ description?: SdkPrompt["description"];
54
+ arguments?: SdkPrompt["arguments"];
55
+ _meta?: SdkPrompt["_meta"];
56
+ }
57
+ export interface UiResourceMeta {
58
+ csp?: UiResourceCsp;
59
+ permissions?: UiResourcePermissions;
60
+ domain?: string;
61
+ prefersBorder?: boolean;
62
+ }
63
+ export interface UiResourceContent {
64
+ uri: string;
65
+ html: string;
66
+ mimeType?: string;
67
+ meta: UiResourceMeta;
68
+ }
69
+ export interface UiProxyRequestBody<TParams> {
70
+ token: string;
71
+ params: TParams;
72
+ }
73
+ export interface UiProxyResult<T = Record<string, unknown>> {
74
+ ok: boolean;
75
+ result?: T;
76
+ error?: string;
77
+ }
78
+ export interface UiResourceCsp {
79
+ resourceDomains?: string[];
80
+ connectDomains?: string[];
81
+ frameDomains?: string[];
82
+ baseUriDomains?: string[];
83
+ }
84
+ export interface UiResourcePermissions {
85
+ camera?: Record<string, never>;
86
+ microphone?: Record<string, never>;
87
+ geolocation?: Record<string, never>;
88
+ clipboardWrite?: Record<string, never>;
89
+ }
90
+ export interface UiToolInfo {
91
+ id?: string | number;
92
+ tool: {
93
+ name: string;
94
+ description?: string;
95
+ inputSchema?: unknown;
96
+ };
97
+ }
98
+ export interface UiHostContext {
99
+ toolInfo?: UiToolInfo;
100
+ theme?: "light" | "dark";
101
+ styles?: Record<string, unknown>;
102
+ displayMode?: UiDisplayMode;
103
+ availableDisplayModes?: UiDisplayMode[];
104
+ containerDimensions?: {
105
+ width?: number;
106
+ maxWidth?: number;
107
+ height?: number;
108
+ maxHeight?: number;
109
+ };
110
+ [key: string]: unknown;
111
+ }
112
+ export type UiDisplayMode = "inline" | "fullscreen" | "pip";
113
+ export { getUiStreamHostContext, getVisualizationStreamEnvelope, SERVER_STREAM_RESULT_PATCH_METHOD, type ServerStreamResultPatchNotification, serverStreamResultPatchNotificationSchema, UI_STREAM_HOST_CONTEXT_KEY, UI_STREAM_REQUEST_META_KEY, UI_STREAM_RESULT_PATCH_METHOD, UI_STREAM_STRUCTURED_CONTENT_KEY, type UiStreamCallToolResult, type UiStreamHostContext, type UiStreamMode, type UiStreamResultPatchNotification, type UiStreamSummary, uiStreamCallToolResultSchema, uiStreamHostContextSchema, uiStreamModeSchema, uiStreamResultPatchNotificationSchema, type VisualizationStreamEnvelope, type VisualizationStreamFrameType, type VisualizationStreamPhase, type VisualizationStreamStatus, visualizationStreamEnvelopeSchema, visualizationStreamFrameTypeSchema, visualizationStreamPhaseSchema, visualizationStreamStatusSchema, } from "./ui-stream-types.ts";
114
+ export interface UiMessageParams {
115
+ role?: string;
116
+ content?: unknown[];
117
+ type?: "prompt" | "notify" | "intent" | "message";
118
+ message?: string;
119
+ prompt?: string;
120
+ intent?: string;
121
+ params?: Record<string, unknown>;
122
+ [key: string]: unknown;
123
+ }
124
+ /**
125
+ * Extract prompt text from either legacy MCP UI message shapes or native AppBridge user messages.
126
+ */
127
+ export declare function extractUiPromptText(params: UiMessageParams): string | undefined;
128
+ /**
129
+ * Structured UI handoff recovered from a canonical prompt envelope.
130
+ */
131
+ export interface UiPromptHandoff {
132
+ intent: string;
133
+ params: Record<string, unknown>;
134
+ raw: string;
135
+ }
136
+ /**
137
+ * Parse a canonical named UI handoff encoded as `intent\n{json}`.
138
+ */
139
+ export declare function parseUiPromptHandoff(prompt: string): UiPromptHandoff | undefined;
140
+ /**
141
+ * Accumulated messages from a UI session.
142
+ * Collected during the session and available when it ends.
143
+ */
144
+ export interface UiSessionMessages {
145
+ prompts: string[];
146
+ notifications: string[];
147
+ intents: Array<{
148
+ intent: string;
149
+ params?: Record<string, unknown>;
150
+ }>;
151
+ contexts: UiModelContextUpdate[];
152
+ }
153
+ export interface UiModelContextUpdate {
154
+ summary: string;
155
+ truncated: boolean;
156
+ payload?: Record<string, unknown>;
157
+ }
158
+ export interface UiModelContextParams {
159
+ content?: McpContentBlock[];
160
+ structuredContent?: Record<string, unknown>;
161
+ }
162
+ export declare function createUiModelContextUpdate(params: UiModelContextParams, maxChars?: number): UiModelContextUpdate | undefined;
163
+ export interface UiOpenLinkResult {
164
+ isError?: boolean;
165
+ [key: string]: unknown;
166
+ }
167
+ export interface UiDisplayModeRequest {
168
+ mode?: UiDisplayMode;
169
+ }
170
+ export interface UiDisplayModeResult {
171
+ mode: UiDisplayMode;
172
+ [key: string]: unknown;
173
+ }
174
+ export interface McpContent {
175
+ type: "text" | "image" | "audio" | "resource" | "resource_link";
176
+ text?: string;
177
+ data?: string;
178
+ mimeType?: string;
179
+ resource?: {
180
+ uri: string;
181
+ text?: string;
182
+ blob?: string;
183
+ };
184
+ uri?: string;
185
+ name?: string;
186
+ description?: string;
187
+ }
188
+ export type ContentBlock = TextContent | ImageContent;
189
+ export interface OAuthConfig {
190
+ /** OAuth grant type (defaults to authorization_code) */
191
+ grantType?: "authorization_code" | "client_credentials";
192
+ /** Pre-registered client ID (optional, dynamic registration used if not provided) */
193
+ clientId?: string;
194
+ /** Client secret for confidential clients */
195
+ clientSecret?: string;
196
+ /** Requested OAuth scopes */
197
+ scope?: string;
198
+ /** Extra authorization URL parameters for provider-specific extensions. Flow-owned parameters cannot be overridden. */
199
+ authorizationParams?: Record<string, string>;
200
+ /** Exact authorization-code redirect URI for pre-registered clients */
201
+ redirectUri?: string;
202
+ /** Client display name for dynamic registration */
203
+ clientName?: string;
204
+ /** Client homepage URI for dynamic registration */
205
+ clientUri?: string;
206
+ /** Client logo URL for dynamic registration; shown on consent screens */
207
+ logoUri?: string;
208
+ /** Security-weakening escape hatch for known-misconfigured authorization servers. */
209
+ skipIssuerMetadataValidation?: boolean;
210
+ }
211
+ /**
212
+ * Trusted executable invoked for every outbound HTTP request. The adapter
213
+ * writes a versioned JSON request envelope to stdin and expects a JSON object
214
+ * containing headers on stdout. This is intended for caller-bound signing
215
+ * schemes whose headers depend on the exact request body.
216
+ */
217
+ export interface HttpRequestHeadersCommand {
218
+ command: string;
219
+ args?: string[];
220
+ env?: Record<string, string>;
221
+ timeoutMs?: number;
222
+ }
223
+ export interface ServerEntry {
224
+ command?: string;
225
+ args?: string[];
226
+ /** Explicit rmcp-mux Unix-domain socket path. Mutually exclusive with command and url. */
227
+ socket?: string;
228
+ env?: Record<string, string>;
229
+ cwd?: string;
230
+ url?: string;
231
+ headers?: Record<string, string>;
232
+ /** Add or replace HTTP headers by running a trusted command for each request. */
233
+ requestHeadersCommand?: HttpRequestHeadersCommand;
234
+ /**
235
+ * Authentication type:
236
+ * - 'oauth' - Use OAuth 2.1 (auto-discovers endpoints, supports dynamic client registration)
237
+ * - 'bearer' - Use static Bearer token
238
+ * - false - Disable authentication
239
+ * If not specified and url is present, OAuth will be auto-detected unless custom headers are configured
240
+ */
241
+ auth?: "oauth" | "bearer" | false;
242
+ bearerToken?: string;
243
+ bearerTokenEnv?: string;
244
+ /** Read a static bearer token from the adapter-owned OS credential store. */
245
+ bearerTokenStore?: true;
246
+ /**
247
+ * OAuth configuration (optional).
248
+ * If not provided, the SDK will attempt dynamic client registration.
249
+ * Set to false to explicitly disable OAuth for this server.
250
+ */
251
+ oauth?: OAuthConfig | false;
252
+ lifecycle?: "keep-alive" | "lazy" | "lazy-keep-alive" | "eager";
253
+ idleTimeout?: number;
254
+ requestTimeoutMs?: number;
255
+ exposeResources?: boolean;
256
+ directTools?: boolean | string[];
257
+ toolPrefix?: ToolPrefix;
258
+ includeTools?: string[];
259
+ excludeTools?: string[];
260
+ /**
261
+ * Extra search keywords per tool, keyed by original name, prefixed name, or
262
+ * glob (same matching rules as includeTools/excludeTools). Keywords boost
263
+ * mcp({ search }) ranking only — they never appear in tool schemas,
264
+ * describe output, or the metadata cache.
265
+ */
266
+ searchKeywords?: Record<string, string[]>;
267
+ approveTools?: boolean | string[];
268
+ debug?: boolean;
269
+ /** Enable metadata-only JSONL protocol tracing for this server. */
270
+ trace?: boolean;
271
+ /** Force a specific HTTP MCP transport. Used by Agent Plugins, whose `type` declares the transport and forbids client fallback. */
272
+ httpTransport?: "streamable-http" | "sse";
273
+ /** Client-managed persistent data directory for Agent Plugin stdio servers. */
274
+ pluginDataDir?: string;
275
+ /** Treat env values as already resolved literals. Used for Agent Plugin env rules. */
276
+ literalEnv?: boolean;
277
+ /**
278
+ * MCP protocol era negotiation for this server. Defaults to `"legacy"`
279
+ * (byte-equivalent to pre-2026 behavior — no `versionNegotiation` is sent).
280
+ * `"auto"` offers the SDK's default 2026-07-28+ modern versions with
281
+ * legacy fallback; `"2026-07-28"` pins the connection to that revision
282
+ * with no fallback. `auto` and `2026-07-28` must be set explicitly.
283
+ */
284
+ protocolVersion?: "legacy" | "auto" | "2026-07-28";
285
+ disabled?: boolean;
286
+ }
287
+ /** Only the literal boolean `true` disables a server. */
288
+ export declare function isServerDisabled(definition: ServerEntry | undefined): boolean;
289
+ export interface McpOutputGuardSettings {
290
+ /** Maximum inline MCP text output bytes before truncation/spill-to-disk. Defaults to 51200 (50 KiB). */
291
+ maxBytes?: number;
292
+ /** Maximum inline MCP text output lines before truncation/spill-to-disk. Defaults to 2000. */
293
+ maxLines?: number;
294
+ /** Maximum details.mcpResult JSON bytes kept raw; larger results are summarized and spilled to disk. Defaults to 16384 (16 KiB). */
295
+ detailsMaxBytes?: number;
296
+ }
297
+ export type ToolPrefix = "server" | "none" | "short" | "mcp";
298
+ export type HostConfigDiscovery = "off" | "prompt" | "on";
299
+ export type McpFooterStatus = "full" | "compact" | "off";
300
+ export interface McpTraceSettings {
301
+ /** Enable tracing for all servers unless a server sets trace to false. */
302
+ enabled?: boolean;
303
+ /** JSONL destination; relative paths are resolved from the session cwd. */
304
+ file?: string;
305
+ /** Maximum per-session trace file size in bytes. */
306
+ maxBytes?: number;
307
+ /** Maximum events retained in the per-session trace file. */
308
+ maxEvents?: number;
309
+ }
310
+ export declare const MCP_TOOL_APPROVAL_REQUEST_EVENT: "nexus-mcp:tool-approval-request";
311
+ export type McpToolApprovalOrigin = "proxy" | "direct" | "script" | "resource" | "iframe";
312
+ export type McpToolApprovalDecision = "allow_once" | "allow_for_session" | "deny" | "abstain";
313
+ export type McpToolApprovalHandler = () => McpToolApprovalDecision | Promise<McpToolApprovalDecision>;
314
+ export interface McpToolApprovalRequest {
315
+ requestId: string;
316
+ serverName: string;
317
+ originalToolName: string;
318
+ prefixedToolName: string;
319
+ args: Record<string, unknown>;
320
+ origin: McpToolApprovalOrigin;
321
+ signal?: AbortSignal;
322
+ claim(handler: McpToolApprovalHandler): boolean;
323
+ }
324
+ export interface McpSettings {
325
+ toolPrefix?: ToolPrefix;
326
+ /** Show the plug prefix in MCP status and connection text (default: true). Set to false to disable it. */
327
+ showStatusIcon?: boolean;
328
+ /** Footer status verbosity: full details, compact connected/enabled count, or no footer status. Defaults to full. */
329
+ mcpFooterStatus?: McpFooterStatus;
330
+ /** Show successful startup connection notifications. Defaults to true. */
331
+ notifyOnStartupConnect?: boolean;
332
+ /** Discover detected host-specific MCP configs only when explicitly enabled. */
333
+ hostConfigDiscovery?: HostConfigDiscovery;
334
+ /** Agent Plugin package directories to load MCP servers from. */
335
+ agentPluginPaths?: string[];
336
+ idleTimeout?: number;
337
+ requestTimeoutMs?: number;
338
+ directTools?: boolean;
339
+ /** Show the advisory when 75 or more direct tools resolve. Defaults to true. */
340
+ warnOnLargeDirectTools?: boolean;
341
+ /** Register the trusted MCP-only JavaScript scripting tool. Defaults to true; set false to hide it. */
342
+ scriptMode?: boolean;
343
+ /** Render MCP tool results as compact self-rendered rows by default, or as the legacy boxed row. */
344
+ toolResultRendering?: "compact" | "boxed";
345
+ /** Number of result text lines to show before expansion. Supports 1, 2, or 3. Defaults to 1 in compact mode and 3 in boxed mode. */
346
+ collapsedResultLines?: 1 | 2 | 3;
347
+ /** Default approval gate for matching tools/resources; per-server settings override it. */
348
+ approveTools?: boolean | string[];
349
+ disableProxyTool?: boolean;
350
+ /** Freeze direct-tool registration after the initial sync. Automatic metadata updates
351
+ * (reconnects, lazy-connect, tool-list-changed) won't rebuild the system prompt,
352
+ * preserving the prompt-cache prefix. The agent rediscovers explicitly via
353
+ * mcp({ connect: "server" }). Default: false. */
354
+ freezeDirectTools?: boolean;
355
+ autoAuth?: boolean;
356
+ sampling?: boolean;
357
+ samplingAutoApprove?: boolean;
358
+ elicitation?: boolean;
359
+ /**
360
+ * Guard oversized MCP tool/resource output before it is returned to the model.
361
+ * Defaults to true (50 KiB / 2,000 lines inline text, 16 KiB details.mcpResult).
362
+ * Set to false to restore raw MCP output behavior, or pass an object to tune
363
+ * the limits. Env kill switch: MCP_OUTPUT_GUARD=0.
364
+ */
365
+ outputGuard?: boolean | McpOutputGuardSettings;
366
+ /**
367
+ * Opt-in metadata-only MCP protocol tracing. Payloads, prompts, tool
368
+ * arguments/results, authorization data, and URLs are never persisted.
369
+ */
370
+ trace?: McpTraceSettings;
371
+ /**
372
+ * Message returned in tool results when a server needs (re-)authentication.
373
+ * "${server}" is substituted with the server name. Defaults to a TUI
374
+ * instruction when unset.
375
+ */
376
+ authRequiredMessage?: string;
377
+ /**
378
+ * Legacy OAuth tokens.json import directory.
379
+ * Relative paths are resolved from the project root (cwd).
380
+ * Takes precedence over the agent's mcp-oauth/ legacy import directory but
381
+ * can still be overridden by the MCP_OAUTH_DIR env variable.
382
+ *
383
+ * Persistent OAuth credentials are stored in the operating system credential
384
+ * store, not this directory. Existing plaintext tokens.json files found here
385
+ * are imported once and removed.
386
+ */
387
+ oauthDir?: string;
388
+ }
389
+ export interface McpConfig {
390
+ mcpServers: Record<string, ServerEntry>;
391
+ imports?: ImportKind[];
392
+ settings?: McpSettings;
393
+ }
394
+ export interface McpAdapterOptions {
395
+ config?: McpConfig;
396
+ configPath?: string;
397
+ }
398
+ export type ServerDefinition = ServerEntry;
399
+ export interface ToolMetadata {
400
+ name: string;
401
+ originalName: string;
402
+ description: string;
403
+ resourceUri?: string;
404
+ uiResourceUri?: string;
405
+ uiVisibility?: UiToolVisibility[];
406
+ inputSchema?: unknown;
407
+ uiStreamMode?: UiStreamMode;
408
+ }
409
+ export interface PromptMetadata {
410
+ serverName: string;
411
+ originalName: string;
412
+ commandName: string;
413
+ title?: string;
414
+ description: string;
415
+ arguments: McpPromptArgument[];
416
+ }
417
+ export interface DirectToolSpec {
418
+ serverName: string;
419
+ originalName: string;
420
+ prefixedName: string;
421
+ description: string;
422
+ inputSchema?: unknown;
423
+ resourceUri?: string;
424
+ uiResourceUri?: string;
425
+ uiStreamMode?: UiStreamMode;
426
+ }
427
+ export interface ServerProvenance {
428
+ path: string;
429
+ kind: "user" | "project" | "import";
430
+ importKind?: string;
431
+ }
432
+ export interface McpAuthResult {
433
+ ok: boolean;
434
+ message?: string;
435
+ }
436
+ export interface CachedTool {
437
+ name: string;
438
+ description?: string;
439
+ inputSchema?: unknown;
440
+ uiResourceUri?: string;
441
+ uiVisibility?: UiToolVisibility[];
442
+ uiStreamMode?: "eager" | "stream-first";
443
+ }
444
+ export interface CachedResource {
445
+ uri: string;
446
+ name: string;
447
+ description?: string;
448
+ }
449
+ export interface CachedPrompt {
450
+ name: string;
451
+ title?: string;
452
+ description?: string;
453
+ arguments?: {
454
+ name: string;
455
+ description?: string;
456
+ required?: boolean;
457
+ }[];
458
+ }
459
+ export interface ServerCacheEntry {
460
+ configHash: string;
461
+ tools: CachedTool[];
462
+ resources: CachedResource[];
463
+ prompts?: CachedPrompt[];
464
+ instructions?: string;
465
+ cachedAt: number;
466
+ }
467
+ export interface MetadataCache {
468
+ version: number;
469
+ servers: Record<string, ServerCacheEntry>;
470
+ }
471
+ export interface McpPanelCallbacks {
472
+ reconnect: (serverName: string) => Promise<boolean>;
473
+ canAuthenticate: (serverName: string) => boolean;
474
+ authenticate: (serverName: string) => Promise<McpAuthResult>;
475
+ getConnectionStatus: (serverName: string) => "connected" | "idle" | "failed" | "needs-auth" | "disabled";
476
+ getFailureMessage?: (serverName: string) => string | null;
477
+ refreshCacheAfterReconnect: (serverName: string) => ServerCacheEntry | null;
478
+ }
479
+ export interface McpPanelResult {
480
+ changes: Map<string, true | string[] | false>;
481
+ cancelled: boolean;
482
+ }
483
+ export declare function getServerPrefix(serverName: string, mode: ToolPrefix): string;
484
+ /**
485
+ * Format a tool name with server prefix.
486
+ */
487
+ export declare function formatToolName(toolName: string, serverName: string, prefix: ToolPrefix): string;
488
+ export declare function resolveToolPrefix(definition?: Pick<ServerEntry, "toolPrefix">, globalPrefix?: ToolPrefix): ToolPrefix;
489
+ /**
490
+ * Resolve a configured MCP server name from a prefixed tool name.
491
+ *
492
+ * When the proxy tool is addressed with a fully-qualified name such as
493
+ * `searxng_searxng_web_search`, downstream policy systems (for example a
494
+ * permission gate) need to recover the owning server so they can evaluate
495
+ * server-scoped rules against the bare server name. This performs the inverse
496
+ * of {@link getServerPrefix}: it finds the longest configured server prefix
497
+ * that the tool name starts with and returns that server's name.
498
+ *
499
+ * @param toolName - the tool name as passed to the proxy `mcp({ tool })` call.
500
+ * @param serverNames - the configured MCP server names (keys of `mcpServers`).
501
+ * @param prefix - the active tool-prefix mode.
502
+ * @returns the resolved server name, or `undefined` when no prefix matches or
503
+ * the prefix mode is `"none"`.
504
+ */
505
+ export declare function resolveServerFromToolName(toolName: string, serverNames: Iterable<string>, prefix: ToolPrefix): string | undefined;
506
+ export declare function sanitizePromptName(name: string): string;
507
+ export declare function formatPromptCommandName(promptName: string, serverName: string, prefix: ToolPrefix): string;
508
+ export declare function getToolNameCandidates(toolName: string, serverName: string, prefix: ToolPrefix, includeLegacy?: boolean): Set<string>;
509
+ export interface ToolSelectorCandidateIndex {
510
+ readonly allCurrentCandidates: ReadonlySet<string>;
511
+ readonly matchingCountByPattern: Map<string, number>;
512
+ readonly matcherByPattern: Map<string, RegExp>;
513
+ readonly additionalCurrentCandidatesByToolName?: ReadonlyMap<string, ReadonlySet<string>>;
514
+ }
515
+ export declare function createToolSelectorCandidateIndex(allCurrentCandidates: Set<string>, additionalCurrentCandidatesByToolName?: ReadonlyMap<string, ReadonlySet<string>>): ToolSelectorCandidateIndex;
516
+ export declare function matchesToolPattern(candidates: Set<string>, patterns?: unknown): boolean;
517
+ export type ToolSelectorCandidateContext = Set<string> | ToolSelectorCandidateIndex;
518
+ export declare function isToolIncluded(toolName: string, serverName: string, prefix: ToolPrefix, includeTools?: unknown, otherCurrentCandidates?: ToolSelectorCandidateContext): boolean;
519
+ export declare function isToolExcluded(toolName: string, serverName: string, prefix: ToolPrefix, excludeTools?: unknown, otherCurrentCandidates?: ToolSelectorCandidateContext): boolean;
520
+ export declare function isToolAllowed(toolName: string, serverName: string, prefix: ToolPrefix, includeTools?: unknown, excludeTools?: unknown, otherCurrentCandidates?: ToolSelectorCandidateContext): boolean;
521
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/extensions/mcp/types.ts"],"names":[],"mappings":"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","sourcesContent":["// types.ts - Core type definitions\n\nimport type { ImageContent, TextContent } from \"@earendil-works/pi-ai\";\nimport type {\n\tListPromptsResult,\n\tListResourcesResult,\n\tListToolsResult,\n\tContentBlock as McpContentBlock,\n\tTransport as McpTransport,\n} from \"@modelcontextprotocol/client\";\nimport type { UiStreamMode } from \"./ui-stream-types.ts\";\nimport type { UiToolVisibility } from \"./ui-tool-visibility.ts\";\n\nexport type Transport = McpTransport;\n\n/** Versioned shared-event-bus channel for read-only MCP runtime snapshots. */\nexport const MCP_STATUS_EVENT = \"nexus-mcp/status/v1\";\n\nexport const MCP_STATUS_SNAPSHOT_VERSION = 1 as const;\n\nexport type McpServerRuntimeStatus = \"connected\" | \"cached\" | \"failed\" | \"needs-auth\" | \"not-connected\" | \"disabled\";\n\nexport interface McpServerStatusSnapshot {\n\treadonly name: string;\n\treadonly status: McpServerRuntimeStatus;\n\treadonly toolCount: number;\n\treadonly resourceCount?: number;\n\treadonly failedAgoSeconds?: number;\n\treadonly disabled: boolean;\n}\n\nexport interface McpStatusSnapshot {\n\treadonly version: typeof MCP_STATUS_SNAPSHOT_VERSION;\n\treadonly servers: ReadonlyArray<McpServerStatusSnapshot>;\n\treadonly totalTools: number;\n\treadonly totalResources: number;\n\treadonly connectedCount: number;\n\treadonly disabledCount: number;\n}\n\n// Import sources for config\nexport type ImportKind = \"cursor\" | \"claude-code\" | \"claude-desktop\" | \"codex\" | \"opencode\" | \"windsurf\" | \"vscode\";\n\ntype SdkTool = ListToolsResult[\"tools\"][number];\ntype SdkResource = ListResourcesResult[\"resources\"][number];\ntype SdkPrompt = ListPromptsResult[\"prompts\"][number];\ntype SdkPromptArgument = NonNullable<SdkPrompt[\"arguments\"]>[number];\n\n// MCP wire definitions derive their field types from the installed SDK while\n// retaining the adapter's deliberately smaller public surface.\nexport interface McpTool {\n\tname: SdkTool[\"name\"];\n\ttitle?: SdkTool[\"title\"];\n\tdescription?: SdkTool[\"description\"];\n\tinputSchema?: SdkTool[\"inputSchema\"]; // JSON Schema\n\t_meta?: SdkTool[\"_meta\"];\n}\n\nexport interface McpResource {\n\turi: SdkResource[\"uri\"];\n\tname: SdkResource[\"name\"];\n\tdescription?: SdkResource[\"description\"];\n\tmimeType?: SdkResource[\"mimeType\"];\n\t_meta?: SdkResource[\"_meta\"];\n}\n\nexport interface McpPromptArgument {\n\tname: SdkPromptArgument[\"name\"];\n\tdescription?: SdkPromptArgument[\"description\"];\n\trequired?: SdkPromptArgument[\"required\"];\n}\n\nexport interface McpPrompt {\n\tname: SdkPrompt[\"name\"];\n\ttitle?: SdkPrompt[\"title\"];\n\tdescription?: SdkPrompt[\"description\"];\n\targuments?: SdkPrompt[\"arguments\"];\n\t_meta?: SdkPrompt[\"_meta\"];\n}\n\nexport interface UiResourceMeta {\n\tcsp?: UiResourceCsp;\n\tpermissions?: UiResourcePermissions;\n\tdomain?: string;\n\tprefersBorder?: boolean;\n}\n\nexport interface UiResourceContent {\n\turi: string;\n\thtml: string;\n\tmimeType?: string;\n\tmeta: UiResourceMeta;\n}\n\nexport interface UiProxyRequestBody<TParams> {\n\ttoken: string;\n\tparams: TParams;\n}\n\nexport interface UiProxyResult<T = Record<string, unknown>> {\n\tok: boolean;\n\tresult?: T;\n\terror?: string;\n}\n\nexport interface UiResourceCsp {\n\tresourceDomains?: string[];\n\tconnectDomains?: string[];\n\tframeDomains?: string[];\n\tbaseUriDomains?: string[];\n}\n\nexport interface UiResourcePermissions {\n\tcamera?: Record<string, never>;\n\tmicrophone?: Record<string, never>;\n\tgeolocation?: Record<string, never>;\n\tclipboardWrite?: Record<string, never>;\n}\n\nexport interface UiToolInfo {\n\tid?: string | number;\n\ttool: {\n\t\tname: string;\n\t\tdescription?: string;\n\t\tinputSchema?: unknown;\n\t};\n}\n\nexport interface UiHostContext {\n\ttoolInfo?: UiToolInfo;\n\ttheme?: \"light\" | \"dark\";\n\tstyles?: Record<string, unknown>;\n\tdisplayMode?: UiDisplayMode;\n\tavailableDisplayModes?: UiDisplayMode[];\n\tcontainerDimensions?: {\n\t\twidth?: number;\n\t\tmaxWidth?: number;\n\t\theight?: number;\n\t\tmaxHeight?: number;\n\t};\n\t[key: string]: unknown;\n}\n\nexport type UiDisplayMode = \"inline\" | \"fullscreen\" | \"pip\";\n\n// Re-export stream types from the shared lightweight module.\n// This allows the example package to import stream schemas without pulling the full types.ts dependency graph.\nexport {\n\tgetUiStreamHostContext,\n\tgetVisualizationStreamEnvelope,\n\tSERVER_STREAM_RESULT_PATCH_METHOD,\n\ttype ServerStreamResultPatchNotification,\n\tserverStreamResultPatchNotificationSchema,\n\tUI_STREAM_HOST_CONTEXT_KEY,\n\tUI_STREAM_REQUEST_META_KEY,\n\tUI_STREAM_RESULT_PATCH_METHOD,\n\tUI_STREAM_STRUCTURED_CONTENT_KEY,\n\ttype UiStreamCallToolResult,\n\ttype UiStreamHostContext,\n\ttype UiStreamMode,\n\ttype UiStreamResultPatchNotification,\n\ttype UiStreamSummary,\n\tuiStreamCallToolResultSchema,\n\tuiStreamHostContextSchema,\n\tuiStreamModeSchema,\n\tuiStreamResultPatchNotificationSchema,\n\ttype VisualizationStreamEnvelope,\n\ttype VisualizationStreamFrameType,\n\ttype VisualizationStreamPhase,\n\ttype VisualizationStreamStatus,\n\tvisualizationStreamEnvelopeSchema,\n\tvisualizationStreamFrameTypeSchema,\n\tvisualizationStreamPhaseSchema,\n\tvisualizationStreamStatusSchema,\n} from \"./ui-stream-types.ts\";\n\nexport interface UiMessageParams {\n\trole?: string;\n\tcontent?: unknown[];\n\ttype?: \"prompt\" | \"notify\" | \"intent\" | \"message\";\n\tmessage?: string;\n\tprompt?: string;\n\tintent?: string;\n\tparams?: Record<string, unknown>;\n\t[key: string]: unknown;\n}\n\n/**\n * Extract prompt text from either legacy MCP UI message shapes or native AppBridge user messages.\n */\nexport function extractUiPromptText(params: UiMessageParams): string | undefined {\n\tif (params.type === \"prompt\" || params.prompt) {\n\t\tconst prompt = params.prompt ?? String(params.message ?? \"\");\n\t\treturn prompt || undefined;\n\t}\n\n\tif (params.role === \"user\" && Array.isArray(params.content)) {\n\t\tconst text = params.content\n\t\t\t.map((block) =>\n\t\t\t\tblock && typeof block === \"object\" && \"text\" in block\n\t\t\t\t\t? String((block as { text?: unknown }).text ?? \"\")\n\t\t\t\t\t: \"\",\n\t\t\t)\n\t\t\t.filter(Boolean)\n\t\t\t.join(\"\\n\\n\");\n\t\treturn text || undefined;\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Structured UI handoff recovered from a canonical prompt envelope.\n */\nexport interface UiPromptHandoff {\n\tintent: string;\n\tparams: Record<string, unknown>;\n\traw: string;\n}\n\n/**\n * Parse a canonical named UI handoff encoded as `intent\\n{json}`.\n */\nexport function parseUiPromptHandoff(prompt: string): UiPromptHandoff | undefined {\n\tconst newlineIndex = prompt.indexOf(\"\\n\");\n\tif (newlineIndex <= 0) {\n\t\treturn undefined;\n\t}\n\n\tconst intent = prompt.slice(0, newlineIndex).trim();\n\tconst payloadText = prompt.slice(newlineIndex + 1).trim();\n\tif (!intent || !payloadText) {\n\t\treturn undefined;\n\t}\n\n\tif (!/^[A-Za-z][A-Za-z0-9_-]*$/.test(intent)) {\n\t\treturn undefined;\n\t}\n\n\ttry {\n\t\tconst parsed = JSON.parse(payloadText);\n\t\tif (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn {\n\t\t\tintent,\n\t\t\tparams: parsed as Record<string, unknown>,\n\t\t\traw: prompt,\n\t\t};\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\n/**\n * Accumulated messages from a UI session.\n * Collected during the session and available when it ends.\n */\nexport interface UiSessionMessages {\n\tprompts: string[];\n\tnotifications: string[];\n\tintents: Array<{ intent: string; params?: Record<string, unknown> }>;\n\tcontexts: UiModelContextUpdate[];\n}\n\nexport interface UiModelContextUpdate {\n\tsummary: string;\n\ttruncated: boolean;\n\tpayload?: Record<string, unknown>;\n}\n\nexport interface UiModelContextParams {\n\tcontent?: McpContentBlock[];\n\tstructuredContent?: Record<string, unknown>;\n}\n\nexport function createUiModelContextUpdate(\n\tparams: UiModelContextParams,\n\tmaxChars = 12_000,\n): UiModelContextUpdate | undefined {\n\tconst payload = Object.fromEntries(Object.entries(params).filter(([, value]) => value !== undefined));\n\tif (Object.keys(payload).length === 0) return undefined;\n\n\tconst serialized = JSON.stringify(payload);\n\tif (serialized.length <= maxChars) {\n\t\treturn { payload, summary: serialized, truncated: false };\n\t}\n\n\treturn {\n\t\tsummary: `${serialized.slice(0, Math.max(0, maxChars - 1))}…`,\n\t\ttruncated: true,\n\t};\n}\n\nexport interface UiOpenLinkResult {\n\tisError?: boolean;\n\t[key: string]: unknown;\n}\n\nexport interface UiDisplayModeRequest {\n\tmode?: UiDisplayMode;\n}\n\nexport interface UiDisplayModeResult {\n\tmode: UiDisplayMode;\n\t[key: string]: unknown;\n}\n\n// Content types from MCP\nexport interface McpContent {\n\ttype: \"text\" | \"image\" | \"audio\" | \"resource\" | \"resource_link\";\n\ttext?: string;\n\tdata?: string;\n\tmimeType?: string;\n\tresource?: {\n\t\turi: string;\n\t\ttext?: string;\n\t\tblob?: string;\n\t};\n\turi?: string;\n\tname?: string;\n\tdescription?: string;\n}\n\n// Nexus content block type\nexport type ContentBlock = TextContent | ImageContent;\n\n// OAuth configuration (SDK handles auto-discovery and dynamic registration)\nexport interface OAuthConfig {\n\t/** OAuth grant type (defaults to authorization_code) */\n\tgrantType?: \"authorization_code\" | \"client_credentials\";\n\t/** Pre-registered client ID (optional, dynamic registration used if not provided) */\n\tclientId?: string;\n\t/** Client secret for confidential clients */\n\tclientSecret?: string;\n\t/** Requested OAuth scopes */\n\tscope?: string;\n\t/** Extra authorization URL parameters for provider-specific extensions. Flow-owned parameters cannot be overridden. */\n\tauthorizationParams?: Record<string, string>;\n\t/** Exact authorization-code redirect URI for pre-registered clients */\n\tredirectUri?: string;\n\t/** Client display name for dynamic registration */\n\tclientName?: string;\n\t/** Client homepage URI for dynamic registration */\n\tclientUri?: string;\n\t/** Client logo URL for dynamic registration; shown on consent screens */\n\tlogoUri?: string;\n\t/** Security-weakening escape hatch for known-misconfigured authorization servers. */\n\tskipIssuerMetadataValidation?: boolean;\n}\n\n/**\n * Trusted executable invoked for every outbound HTTP request. The adapter\n * writes a versioned JSON request envelope to stdin and expects a JSON object\n * containing headers on stdout. This is intended for caller-bound signing\n * schemes whose headers depend on the exact request body.\n */\nexport interface HttpRequestHeadersCommand {\n\tcommand: string;\n\targs?: string[];\n\tenv?: Record<string, string>;\n\ttimeoutMs?: number;\n}\n\n// Server configuration\nexport interface ServerEntry {\n\tcommand?: string;\n\targs?: string[];\n\t/** Explicit rmcp-mux Unix-domain socket path. Mutually exclusive with command and url. */\n\tsocket?: string;\n\tenv?: Record<string, string>;\n\tcwd?: string;\n\t// HTTP fields\n\turl?: string;\n\theaders?: Record<string, string>;\n\t/** Add or replace HTTP headers by running a trusted command for each request. */\n\trequestHeadersCommand?: HttpRequestHeadersCommand;\n\t/**\n\t * Authentication type:\n\t * - 'oauth' - Use OAuth 2.1 (auto-discovers endpoints, supports dynamic client registration)\n\t * - 'bearer' - Use static Bearer token\n\t * - false - Disable authentication\n\t * If not specified and url is present, OAuth will be auto-detected unless custom headers are configured\n\t */\n\tauth?: \"oauth\" | \"bearer\" | false;\n\tbearerToken?: string;\n\tbearerTokenEnv?: string;\n\t/** Read a static bearer token from the adapter-owned OS credential store. */\n\tbearerTokenStore?: true;\n\t/**\n\t * OAuth configuration (optional).\n\t * If not provided, the SDK will attempt dynamic client registration.\n\t * Set to false to explicitly disable OAuth for this server.\n\t */\n\toauth?: OAuthConfig | false;\n\tlifecycle?: \"keep-alive\" | \"lazy\" | \"lazy-keep-alive\" | \"eager\";\n\tidleTimeout?: number; // minutes, overrides global setting\n\trequestTimeoutMs?: number; // milliseconds, overrides global request timeout when > 0\n\t// Resource handling\n\texposeResources?: boolean;\n\t// Direct tool registration\n\tdirectTools?: boolean | string[];\n\t// Override settings.toolPrefix for this server.\n\ttoolPrefix?: ToolPrefix;\n\t// Include/exclude specific MCP tools/resources by original or prefixed name\n\tincludeTools?: string[];\n\texcludeTools?: string[];\n\t/**\n\t * Extra search keywords per tool, keyed by original name, prefixed name, or\n\t * glob (same matching rules as includeTools/excludeTools). Keywords boost\n\t * mcp({ search }) ranking only — they never appear in tool schemas,\n\t * describe output, or the metadata cache.\n\t */\n\tsearchKeywords?: Record<string, string[]>;\n\t// Require interactive approval before calling matching MCP tools/resources.\n\tapproveTools?: boolean | string[];\n\t// Debug\n\tdebug?: boolean; // Show server stderr (default: false)\n\t/** Enable metadata-only JSONL protocol tracing for this server. */\n\ttrace?: boolean;\n\t/** Force a specific HTTP MCP transport. Used by Agent Plugins, whose `type` declares the transport and forbids client fallback. */\n\thttpTransport?: \"streamable-http\" | \"sse\";\n\t/** Client-managed persistent data directory for Agent Plugin stdio servers. */\n\tpluginDataDir?: string;\n\t/** Treat env values as already resolved literals. Used for Agent Plugin env rules. */\n\tliteralEnv?: boolean;\n\t/**\n\t * MCP protocol era negotiation for this server. Defaults to `\"legacy\"`\n\t * (byte-equivalent to pre-2026 behavior — no `versionNegotiation` is sent).\n\t * `\"auto\"` offers the SDK's default 2026-07-28+ modern versions with\n\t * legacy fallback; `\"2026-07-28\"` pins the connection to that revision\n\t * with no fallback. `auto` and `2026-07-28` must be set explicitly.\n\t */\n\tprotocolVersion?: \"legacy\" | \"auto\" | \"2026-07-28\";\n\t// Keep configuration visible without allowing connections or execution.\n\tdisabled?: boolean;\n}\n\n/** Only the literal boolean `true` disables a server. */\nexport function isServerDisabled(definition: ServerEntry | undefined): boolean {\n\treturn definition?.disabled === true;\n}\n\n// Output guard tuning (settings.outputGuard object form)\nexport interface McpOutputGuardSettings {\n\t/** Maximum inline MCP text output bytes before truncation/spill-to-disk. Defaults to 51200 (50 KiB). */\n\tmaxBytes?: number;\n\t/** Maximum inline MCP text output lines before truncation/spill-to-disk. Defaults to 2000. */\n\tmaxLines?: number;\n\t/** Maximum details.mcpResult JSON bytes kept raw; larger results are summarized and spilled to disk. Defaults to 16384 (16 KiB). */\n\tdetailsMaxBytes?: number;\n}\n\n// Settings\nexport type ToolPrefix = \"server\" | \"none\" | \"short\" | \"mcp\";\nexport type HostConfigDiscovery = \"off\" | \"prompt\" | \"on\";\nexport type McpFooterStatus = \"full\" | \"compact\" | \"off\";\n\nexport interface McpTraceSettings {\n\t/** Enable tracing for all servers unless a server sets trace to false. */\n\tenabled?: boolean;\n\t/** JSONL destination; relative paths are resolved from the session cwd. */\n\tfile?: string;\n\t/** Maximum per-session trace file size in bytes. */\n\tmaxBytes?: number;\n\t/** Maximum events retained in the per-session trace file. */\n\tmaxEvents?: number;\n}\n\nexport const MCP_TOOL_APPROVAL_REQUEST_EVENT = \"nexus-mcp:tool-approval-request\" as const;\n\nexport type McpToolApprovalOrigin = \"proxy\" | \"direct\" | \"script\" | \"resource\" | \"iframe\";\nexport type McpToolApprovalDecision = \"allow_once\" | \"allow_for_session\" | \"deny\" | \"abstain\";\nexport type McpToolApprovalHandler = () => McpToolApprovalDecision | Promise<McpToolApprovalDecision>;\n\nexport interface McpToolApprovalRequest {\n\trequestId: string;\n\tserverName: string;\n\toriginalToolName: string;\n\tprefixedToolName: string;\n\targs: Record<string, unknown>;\n\torigin: McpToolApprovalOrigin;\n\tsignal?: AbortSignal;\n\tclaim(handler: McpToolApprovalHandler): boolean;\n}\n\nexport interface McpSettings {\n\ttoolPrefix?: ToolPrefix;\n\t/** Show the plug prefix in MCP status and connection text (default: true). Set to false to disable it. */\n\tshowStatusIcon?: boolean;\n\t/** Footer status verbosity: full details, compact connected/enabled count, or no footer status. Defaults to full. */\n\tmcpFooterStatus?: McpFooterStatus;\n\t/** Show successful startup connection notifications. Defaults to true. */\n\tnotifyOnStartupConnect?: boolean;\n\t/** Discover detected host-specific MCP configs only when explicitly enabled. */\n\thostConfigDiscovery?: HostConfigDiscovery;\n\t/** Agent Plugin package directories to load MCP servers from. */\n\tagentPluginPaths?: string[];\n\tidleTimeout?: number; // minutes, default 10, 0 to disable\n\trequestTimeoutMs?: number; // milliseconds, overrides the SDK request timeout when > 0\n\tdirectTools?: boolean;\n\t/** Show the advisory when 75 or more direct tools resolve. Defaults to true. */\n\twarnOnLargeDirectTools?: boolean;\n\t/** Register the trusted MCP-only JavaScript scripting tool. Defaults to true; set false to hide it. */\n\tscriptMode?: boolean;\n\t/** Render MCP tool results as compact self-rendered rows by default, or as the legacy boxed row. */\n\ttoolResultRendering?: \"compact\" | \"boxed\";\n\t/** Number of result text lines to show before expansion. Supports 1, 2, or 3. Defaults to 1 in compact mode and 3 in boxed mode. */\n\tcollapsedResultLines?: 1 | 2 | 3;\n\t/** Default approval gate for matching tools/resources; per-server settings override it. */\n\tapproveTools?: boolean | string[];\n\tdisableProxyTool?: boolean;\n\t/** Freeze direct-tool registration after the initial sync. Automatic metadata updates\n\t * (reconnects, lazy-connect, tool-list-changed) won't rebuild the system prompt,\n\t * preserving the prompt-cache prefix. The agent rediscovers explicitly via\n\t * mcp({ connect: \"server\" }). Default: false. */\n\tfreezeDirectTools?: boolean;\n\tautoAuth?: boolean;\n\tsampling?: boolean;\n\tsamplingAutoApprove?: boolean;\n\telicitation?: boolean;\n\t/**\n\t * Guard oversized MCP tool/resource output before it is returned to the model.\n\t * Defaults to true (50 KiB / 2,000 lines inline text, 16 KiB details.mcpResult).\n\t * Set to false to restore raw MCP output behavior, or pass an object to tune\n\t * the limits. Env kill switch: MCP_OUTPUT_GUARD=0.\n\t */\n\toutputGuard?: boolean | McpOutputGuardSettings;\n\t/**\n\t * Opt-in metadata-only MCP protocol tracing. Payloads, prompts, tool\n\t * arguments/results, authorization data, and URLs are never persisted.\n\t */\n\ttrace?: McpTraceSettings;\n\t/**\n\t * Message returned in tool results when a server needs (re-)authentication.\n\t * \"${server}\" is substituted with the server name. Defaults to a TUI\n\t * instruction when unset.\n\t */\n\tauthRequiredMessage?: string;\n\t/**\n\t * Legacy OAuth tokens.json import directory.\n\t * Relative paths are resolved from the project root (cwd).\n\t * Takes precedence over the agent's mcp-oauth/ legacy import directory but\n\t * can still be overridden by the MCP_OAUTH_DIR env variable.\n\t *\n\t * Persistent OAuth credentials are stored in the operating system credential\n\t * store, not this directory. Existing plaintext tokens.json files found here\n\t * are imported once and removed.\n\t */\n\toauthDir?: string;\n}\n\n// Root config\nexport interface McpConfig {\n\tmcpServers: Record<string, ServerEntry>;\n\timports?: ImportKind[];\n\tsettings?: McpSettings;\n}\n\nexport interface McpAdapterOptions {\n\tconfig?: McpConfig;\n\tconfigPath?: string;\n}\n\n// Alias for clarity\nexport type ServerDefinition = ServerEntry;\n\nexport interface ToolMetadata {\n\tname: string; // Prefixed tool name (e.g., \"xcodebuild_list_sims\")\n\toriginalName: string; // Original MCP tool name (e.g., \"list_sims\")\n\tdescription: string;\n\tresourceUri?: string; // For resource tools: the URI to read\n\tuiResourceUri?: string; // For app-enabled tools: the UI resource URI\n\tuiVisibility?: UiToolVisibility[];\n\tinputSchema?: unknown; // JSON Schema for parameters (stored for describe/errors)\n\tuiStreamMode?: UiStreamMode;\n}\n\nexport interface PromptMetadata {\n\tserverName: string;\n\toriginalName: string;\n\tcommandName: string;\n\ttitle?: string;\n\tdescription: string;\n\targuments: McpPromptArgument[];\n}\n\nexport interface DirectToolSpec {\n\tserverName: string;\n\toriginalName: string;\n\tprefixedName: string;\n\tdescription: string;\n\tinputSchema?: unknown;\n\tresourceUri?: string;\n\tuiResourceUri?: string;\n\tuiStreamMode?: UiStreamMode;\n}\n\nexport interface ServerProvenance {\n\tpath: string;\n\tkind: \"user\" | \"project\" | \"import\";\n\timportKind?: string;\n}\n\nexport interface McpAuthResult {\n\tok: boolean;\n\tmessage?: string;\n}\n\nexport interface CachedTool {\n\tname: string;\n\tdescription?: string;\n\tinputSchema?: unknown;\n\tuiResourceUri?: string;\n\tuiVisibility?: UiToolVisibility[];\n\tuiStreamMode?: \"eager\" | \"stream-first\";\n}\n\nexport interface CachedResource {\n\turi: string;\n\tname: string;\n\tdescription?: string;\n}\n\nexport interface CachedPrompt {\n\tname: string;\n\ttitle?: string;\n\tdescription?: string;\n\targuments?: { name: string; description?: string; required?: boolean }[];\n}\n\nexport interface ServerCacheEntry {\n\tconfigHash: string;\n\ttools: CachedTool[];\n\tresources: CachedResource[];\n\tprompts?: CachedPrompt[];\n\tinstructions?: string;\n\tcachedAt: number;\n}\n\nexport interface MetadataCache {\n\tversion: number;\n\tservers: Record<string, ServerCacheEntry>;\n}\n\nexport interface McpPanelCallbacks {\n\treconnect: (serverName: string) => Promise<boolean>;\n\tcanAuthenticate: (serverName: string) => boolean;\n\tauthenticate: (serverName: string) => Promise<McpAuthResult>;\n\tgetConnectionStatus: (serverName: string) => \"connected\" | \"idle\" | \"failed\" | \"needs-auth\" | \"disabled\";\n\tgetFailureMessage?: (serverName: string) => string | null;\n\trefreshCacheAfterReconnect: (serverName: string) => ServerCacheEntry | null;\n}\n\nexport interface McpPanelResult {\n\tchanges: Map<string, true | string[] | false>;\n\tcancelled: boolean;\n}\n\n/**\n * Get server prefix based on tool prefix mode.\n */\nfunction sanitizeServerPrefix(serverName: string, preserveProviderValid = true): string {\n\tconst validCharacters = preserveProviderValid ? /^[A-Za-z0-9_-]$/ : /^[A-Za-z0-9]$/;\n\treturn Array.from(serverName, (char) =>\n\t\tvalidCharacters.test(char) ? char : `_${char.codePointAt(0)!.toString(16)}_`,\n\t).join(\"\");\n}\n\nexport function getServerPrefix(serverName: string, mode: ToolPrefix): string {\n\tif (mode === \"none\") return \"\";\n\tif (mode === \"short\") {\n\t\tlet short = sanitizeServerPrefix(serverName.replace(/-?mcp$/i, \"\"));\n\t\tif (!short) short = \"mcp\";\n\t\treturn short;\n\t}\n\tif (mode === \"mcp\") return `mcp__${sanitizeServerPrefix(serverName)}`;\n\treturn sanitizeServerPrefix(serverName);\n}\n\n/**\n * Format a tool name with server prefix.\n */\nexport function formatToolName(toolName: string, serverName: string, prefix: ToolPrefix): string {\n\tconst p = getServerPrefix(serverName, prefix);\n\tconst sanitized = toolName.replace(/\\./g, \"_\");\n\treturn p ? `${p}_${sanitized}` : sanitized;\n}\n\nexport function resolveToolPrefix(definition?: Pick<ServerEntry, \"toolPrefix\">, globalPrefix?: ToolPrefix): ToolPrefix {\n\treturn definition?.toolPrefix ?? globalPrefix ?? \"server\";\n}\n\n/**\n * Resolve a configured MCP server name from a prefixed tool name.\n *\n * When the proxy tool is addressed with a fully-qualified name such as\n * `searxng_searxng_web_search`, downstream policy systems (for example a\n * permission gate) need to recover the owning server so they can evaluate\n * server-scoped rules against the bare server name. This performs the inverse\n * of {@link getServerPrefix}: it finds the longest configured server prefix\n * that the tool name starts with and returns that server's name.\n *\n * @param toolName - the tool name as passed to the proxy `mcp({ tool })` call.\n * @param serverNames - the configured MCP server names (keys of `mcpServers`).\n * @param prefix - the active tool-prefix mode.\n * @returns the resolved server name, or `undefined` when no prefix matches or\n * the prefix mode is `\"none\"`.\n */\nexport function resolveServerFromToolName(\n\ttoolName: string,\n\tserverNames: Iterable<string>,\n\tprefix: ToolPrefix,\n): string | undefined {\n\tif (prefix === \"none\") return undefined;\n\tconst candidates: { name: string; prefix: string }[] = [];\n\tfor (const name of serverNames) {\n\t\tconst p = getServerPrefix(name, prefix);\n\t\tif (p && toolName.startsWith(`${p}_`)) candidates.push({ name, prefix: p });\n\t}\n\tif (candidates.length === 0) return undefined;\n\tcandidates.sort((a, b) => b.prefix.length - a.prefix.length);\n\tconst best = candidates[0];\n\t// Fail safe: short mode can intentionally map names such as foo and foo-mcp\n\t// to the same prefix. Return undefined so a downstream permission gate uses\n\t// its existing wildcard path rather than enforcing a rule against the wrong server.\n\tif (candidates.some((c) => c.prefix === best!.prefix && c.name !== best!.name)) {\n\t\treturn undefined;\n\t}\n\treturn best?.name;\n}\n\nexport function sanitizePromptName(name: string): string {\n\tconst cleaned = name.replace(/[^A-Za-z0-9_-]+/g, \"_\").replace(/^[_-]+|[_-]+$/g, \"\");\n\tif (!cleaned) return \"prompt\";\n\treturn /^[0-9]/.test(cleaned) ? `_${cleaned}` : cleaned;\n}\n\nexport function formatPromptCommandName(promptName: string, serverName: string, prefix: ToolPrefix): string {\n\tconst serverPart = getServerPrefix(serverName, prefix) || sanitizeServerPrefix(serverName) || \"server\";\n\treturn `mcp__${serverPart}__${sanitizePromptName(promptName)}`;\n}\n\nfunction getLegacyServerPrefix(serverName: string, mode: ToolPrefix): string {\n\tif (mode === \"none\") return \"\";\n\tif (mode === \"short\") return sanitizeServerPrefix(serverName.replace(/-?mcp$/i, \"\"), false) || \"mcp\";\n\tif (mode === \"mcp\") return `mcp__${sanitizeServerPrefix(serverName, false)}`;\n\treturn sanitizeServerPrefix(serverName, false);\n}\n\nfunction formatLegacyToolName(toolName: string, serverName: string, prefix: ToolPrefix): string {\n\tconst serverPrefix = getLegacyServerPrefix(serverName, prefix);\n\tconst sanitizedToolName = toolName.replace(/[.-]/g, \"_\");\n\treturn serverPrefix ? `${serverPrefix}_${sanitizedToolName}` : sanitizedToolName;\n}\n\nexport function getToolNameCandidates(\n\ttoolName: string,\n\tserverName: string,\n\tprefix: ToolPrefix,\n\tincludeLegacy = true,\n): Set<string> {\n\tconst candidates = new Set<string>([\n\t\ttoolName,\n\t\tformatToolName(toolName, serverName, prefix),\n\t\tformatToolName(toolName, serverName, \"server\"),\n\t\tformatToolName(toolName, serverName, \"short\"),\n\t\tformatToolName(toolName, serverName, \"mcp\"),\n\t]);\n\tif (includeLegacy) {\n\t\tconst legacyToolName = toolName.replace(/-/g, \"_\");\n\t\tcandidates.add(legacyToolName);\n\t\tcandidates.add(formatToolName(legacyToolName, serverName, prefix));\n\t\tcandidates.add(formatToolName(legacyToolName, serverName, \"server\"));\n\t\tcandidates.add(formatToolName(legacyToolName, serverName, \"short\"));\n\t\tcandidates.add(formatToolName(legacyToolName, serverName, \"mcp\"));\n\t\tcandidates.add(formatLegacyToolName(toolName, serverName, prefix));\n\t\tcandidates.add(formatLegacyToolName(toolName, serverName, \"server\"));\n\t\tcandidates.add(formatLegacyToolName(toolName, serverName, \"short\"));\n\t\tcandidates.add(formatLegacyToolName(toolName, serverName, \"mcp\"));\n\t\tcandidates.add(formatToolName(toolName, serverName, prefix).replace(/-/g, \"_\"));\n\t\tcandidates.add(formatToolName(toolName, serverName, \"server\").replace(/-/g, \"_\"));\n\t\tcandidates.add(formatToolName(toolName, serverName, \"short\").replace(/-/g, \"_\"));\n\t\tcandidates.add(formatToolName(toolName, serverName, \"mcp\").replace(/-/g, \"_\"));\n\t}\n\treturn candidates;\n}\n\nfunction globToRegExp(pattern: string): RegExp {\n\tconst escaped = pattern\n\t\t.replace(/[.+^${}()|[\\]\\\\]/g, \"\\\\$&\")\n\t\t.replace(/\\*/g, \".*\")\n\t\t.replace(/\\?/g, \".\");\n\treturn new RegExp(`^${escaped}$`);\n}\n\nexport interface ToolSelectorCandidateIndex {\n\treadonly allCurrentCandidates: ReadonlySet<string>;\n\treadonly matchingCountByPattern: Map<string, number>;\n\treadonly matcherByPattern: Map<string, RegExp>;\n\treadonly additionalCurrentCandidatesByToolName?: ReadonlyMap<string, ReadonlySet<string>>;\n}\n\nexport function createToolSelectorCandidateIndex(\n\tallCurrentCandidates: Set<string>,\n\tadditionalCurrentCandidatesByToolName?: ReadonlyMap<string, ReadonlySet<string>>,\n): ToolSelectorCandidateIndex {\n\treturn {\n\t\tallCurrentCandidates,\n\t\tmatchingCountByPattern: new Map<string, number>(),\n\t\tmatcherByPattern: new Map<string, RegExp>(),\n\t\t...(additionalCurrentCandidatesByToolName ? { additionalCurrentCandidatesByToolName } : {}),\n\t};\n}\n\nexport function matchesToolPattern(candidates: Set<string>, patterns?: unknown): boolean {\n\tif (!Array.isArray(patterns) || patterns.length === 0) return false;\n\n\tfor (const pattern of patterns) {\n\t\tif (typeof pattern !== \"string\") continue;\n\t\tif (!pattern.includes(\"*\") && !pattern.includes(\"?\") && candidates.has(pattern)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (\n\t\t\t(pattern.includes(\"*\") || pattern.includes(\"?\")) &&\n\t\t\t[...candidates].some((candidate) => globToRegExp(pattern).test(candidate))\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nexport type ToolSelectorCandidateContext = Set<string> | ToolSelectorCandidateIndex;\n\nfunction indexHasOtherCurrentMatch(\n\tindex: ToolSelectorCandidateIndex,\n\ttoolName: string,\n\tcurrentCandidates: Set<string>,\n\tpattern: string,\n): boolean {\n\tconst additionalCandidates = index.additionalCurrentCandidatesByToolName?.get(toolName);\n\tconst hasCandidate = (candidate: string): boolean =>\n\t\tindex.allCurrentCandidates.has(candidate) || additionalCandidates?.has(candidate) === true;\n\tconst isGlob = pattern.includes(\"*\") || pattern.includes(\"?\");\n\tif (!isGlob) {\n\t\treturn hasCandidate(pattern) && !currentCandidates.has(pattern);\n\t}\n\n\tlet matcher = index.matcherByPattern.get(pattern);\n\tif (!matcher) {\n\t\tmatcher = globToRegExp(pattern);\n\t\tindex.matcherByPattern.set(pattern, matcher);\n\t}\n\tlet matchingCount = index.matchingCountByPattern.get(pattern);\n\tif (matchingCount === undefined) {\n\t\tmatchingCount = 0;\n\t\tfor (const candidate of index.allCurrentCandidates) {\n\t\t\tif (matcher.test(candidate)) matchingCount++;\n\t\t}\n\t\tindex.matchingCountByPattern.set(pattern, matchingCount);\n\t}\n\n\tlet totalMatchingCount = matchingCount;\n\tif (additionalCandidates) {\n\t\tfor (const candidate of additionalCandidates) {\n\t\t\tif (!index.allCurrentCandidates.has(candidate) && matcher.test(candidate)) totalMatchingCount++;\n\t\t}\n\t}\n\tif (totalMatchingCount === 0) return false;\n\n\tlet currentMatchingCount = 0;\n\tfor (const candidate of currentCandidates) {\n\t\tif (hasCandidate(candidate) && matcher.test(candidate)) currentMatchingCount++;\n\t}\n\treturn totalMatchingCount > currentMatchingCount;\n}\n\nfunction matchesToolSelector(\n\ttoolName: string,\n\tserverName: string,\n\tprefix: ToolPrefix,\n\tpatterns: unknown,\n\totherCurrentCandidates?: ToolSelectorCandidateContext,\n): boolean {\n\tif (!Array.isArray(patterns) || patterns.length === 0) return false;\n\tconst currentCandidates = getToolNameCandidates(toolName, serverName, prefix, false);\n\tif (matchesToolPattern(currentCandidates, patterns)) return true;\n\tif (!otherCurrentCandidates)\n\t\treturn matchesToolPattern(getToolNameCandidates(toolName, serverName, prefix), patterns);\n\tconst legacyCandidates = getToolNameCandidates(toolName, serverName, prefix);\n\tfor (const candidate of currentCandidates) legacyCandidates.delete(candidate);\n\treturn patterns.some((pattern) => {\n\t\tif (typeof pattern !== \"string\" || !matchesToolPattern(legacyCandidates, [pattern])) return false;\n\t\tconst hasCollision =\n\t\t\totherCurrentCandidates instanceof Set\n\t\t\t\t? matchesToolPattern(otherCurrentCandidates, [pattern])\n\t\t\t\t: indexHasOtherCurrentMatch(otherCurrentCandidates, toolName, currentCandidates, pattern);\n\t\treturn !hasCollision;\n\t});\n}\n\nexport function isToolIncluded(\n\ttoolName: string,\n\tserverName: string,\n\tprefix: ToolPrefix,\n\tincludeTools?: unknown,\n\totherCurrentCandidates?: ToolSelectorCandidateContext,\n): boolean {\n\tif (!Array.isArray(includeTools) || includeTools.length === 0) return true;\n\treturn matchesToolSelector(toolName, serverName, prefix, includeTools, otherCurrentCandidates);\n}\n\nexport function isToolExcluded(\n\ttoolName: string,\n\tserverName: string,\n\tprefix: ToolPrefix,\n\texcludeTools?: unknown,\n\totherCurrentCandidates?: ToolSelectorCandidateContext,\n): boolean {\n\treturn matchesToolSelector(toolName, serverName, prefix, excludeTools, otherCurrentCandidates);\n}\n\nexport function isToolAllowed(\n\ttoolName: string,\n\tserverName: string,\n\tprefix: ToolPrefix,\n\tincludeTools?: unknown,\n\texcludeTools?: unknown,\n\totherCurrentCandidates?: ToolSelectorCandidateContext,\n): boolean {\n\treturn (\n\t\tisToolIncluded(toolName, serverName, prefix, includeTools, otherCurrentCandidates) &&\n\t\t!isToolExcluded(toolName, serverName, prefix, excludeTools, otherCurrentCandidates)\n\t);\n}\n"]}