@ashx-j/lunr-dev 0.2.13-dev.8.1 → 0.2.19-dev.10.1

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 (484) hide show
  1. package/CHANGELOG.md +60 -1
  2. package/README.md +7 -1
  3. package/dist/builtin-extensions/ashxj-thinking.d.ts +1 -0
  4. package/dist/builtin-extensions/ashxj-thinking.d.ts.map +1 -1
  5. package/dist/builtin-extensions/ashxj-thinking.js +44 -19
  6. package/dist/builtin-extensions/ashxj-thinking.js.map +1 -1
  7. package/dist/builtin-extensions/ashxj-tui.d.ts +14 -0
  8. package/dist/builtin-extensions/ashxj-tui.d.ts.map +1 -1
  9. package/dist/builtin-extensions/ashxj-tui.js +37 -3
  10. package/dist/builtin-extensions/ashxj-tui.js.map +1 -1
  11. package/dist/builtin-extensions/index.d.ts +1 -15
  12. package/dist/builtin-extensions/index.d.ts.map +1 -1
  13. package/dist/builtin-extensions/index.js +8 -21
  14. package/dist/builtin-extensions/index.js.map +1 -1
  15. package/dist/builtin-extensions/lunr-computer-use.d.ts +3 -0
  16. package/dist/builtin-extensions/lunr-computer-use.d.ts.map +1 -0
  17. package/dist/builtin-extensions/lunr-computer-use.js +157 -0
  18. package/dist/builtin-extensions/lunr-computer-use.js.map +1 -0
  19. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.d.ts.map +1 -1
  20. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.js +6 -2
  21. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.js.map +1 -1
  22. package/dist/builtin-extensions/pi-lsp-extension/src/index.d.ts +4 -0
  23. package/dist/builtin-extensions/pi-lsp-extension/src/index.d.ts.map +1 -1
  24. package/dist/builtin-extensions/pi-lsp-extension/src/index.js +172 -171
  25. package/dist/builtin-extensions/pi-lsp-extension/src/index.js.map +1 -1
  26. package/dist/builtin-extensions/pi-lsp-extension/src/runtime.d.ts +50 -0
  27. package/dist/builtin-extensions/pi-lsp-extension/src/runtime.d.ts.map +1 -0
  28. package/dist/builtin-extensions/pi-lsp-extension/src/runtime.js +131 -0
  29. package/dist/builtin-extensions/pi-lsp-extension/src/runtime.js.map +1 -0
  30. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.d.ts +7 -0
  31. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.d.ts.map +1 -0
  32. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.js +211 -0
  33. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.js.map +1 -0
  34. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.d.ts +0 -5
  35. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.d.ts.map +1 -1
  36. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.js +0 -202
  37. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.js.map +1 -1
  38. package/dist/builtin-extensions/pi-mcp-adapter/index.d.ts.map +1 -1
  39. package/dist/builtin-extensions/pi-mcp-adapter/index.js +276 -109
  40. package/dist/builtin-extensions/pi-mcp-adapter/index.js.map +1 -1
  41. package/dist/builtin-extensions/pi-mcp-adapter/init.d.ts +4 -1
  42. package/dist/builtin-extensions/pi-mcp-adapter/init.d.ts.map +1 -1
  43. package/dist/builtin-extensions/pi-mcp-adapter/init.js +10 -3
  44. package/dist/builtin-extensions/pi-mcp-adapter/init.js.map +1 -1
  45. package/dist/builtin-extensions/pi-mcp-adapter/metadata-cache.d.ts.map +1 -1
  46. package/dist/builtin-extensions/pi-mcp-adapter/metadata-cache.js +6 -1
  47. package/dist/builtin-extensions/pi-mcp-adapter/metadata-cache.js.map +1 -1
  48. package/dist/builtin-extensions/pi-mcp-adapter/server-manager.d.ts +6 -1
  49. package/dist/builtin-extensions/pi-mcp-adapter/server-manager.d.ts.map +1 -1
  50. package/dist/builtin-extensions/pi-mcp-adapter/server-manager.js +33 -8
  51. package/dist/builtin-extensions/pi-mcp-adapter/server-manager.js.map +1 -1
  52. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.d.ts.map +1 -1
  53. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.js +2 -1
  54. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.js.map +1 -1
  55. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.d.ts +1 -1
  56. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.d.ts.map +1 -1
  57. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.js +1 -1
  58. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.js.map +1 -1
  59. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts +1 -1
  60. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
  61. package/dist/builtin-extensions/pi-subagents/src/extension/index.js +68 -15
  62. package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
  63. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts.map +1 -1
  64. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js +6 -2
  65. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js.map +1 -1
  66. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.d.ts +1 -1
  67. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.d.ts.map +1 -1
  68. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js +5 -2
  69. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js.map +1 -1
  70. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.d.ts +10 -0
  71. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.d.ts.map +1 -0
  72. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.js +38 -0
  73. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.js.map +1 -0
  74. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
  75. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js +3 -16
  76. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
  77. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts +1 -1
  78. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts.map +1 -1
  79. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js +2 -0
  80. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js.map +1 -1
  81. package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.d.ts.map +1 -1
  82. package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.js +1 -1
  83. package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.js.map +1 -1
  84. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts +1 -1
  85. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts.map +1 -1
  86. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js +1 -1
  87. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js.map +1 -1
  88. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +2 -1
  89. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
  90. package/dist/builtin-extensions/pi-subagents/src/tui/render.js +72 -31
  91. package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
  92. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.d.ts +1 -1
  93. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.d.ts.map +1 -1
  94. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.js +2 -1
  95. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.js.map +1 -1
  96. package/dist/builtin-extensions/pi-web-access/extract.d.ts.map +1 -1
  97. package/dist/builtin-extensions/pi-web-access/extract.js +105 -54
  98. package/dist/builtin-extensions/pi-web-access/extract.js.map +1 -1
  99. package/dist/builtin-extensions/pi-web-access/gemini-search.d.ts +1 -1
  100. package/dist/builtin-extensions/pi-web-access/gemini-search.d.ts.map +1 -1
  101. package/dist/builtin-extensions/pi-web-access/gemini-search.js +82 -65
  102. package/dist/builtin-extensions/pi-web-access/gemini-search.js.map +1 -1
  103. package/dist/builtin-extensions/pi-web-access/github-extract.d.ts.map +1 -1
  104. package/dist/builtin-extensions/pi-web-access/github-extract.js +2 -0
  105. package/dist/builtin-extensions/pi-web-access/github-extract.js.map +1 -1
  106. package/dist/builtin-extensions/pi-web-access/index.d.ts.map +1 -1
  107. package/dist/builtin-extensions/pi-web-access/index.js +259 -168
  108. package/dist/builtin-extensions/pi-web-access/index.js.map +1 -1
  109. package/dist/builtin-extensions/pi-web-access/lazy.d.ts +18 -0
  110. package/dist/builtin-extensions/pi-web-access/lazy.d.ts.map +1 -0
  111. package/dist/builtin-extensions/pi-web-access/lazy.js +19 -0
  112. package/dist/builtin-extensions/pi-web-access/lazy.js.map +1 -0
  113. package/dist/builtin-extensions/pi-web-access/session-cleanup.d.ts +6 -0
  114. package/dist/builtin-extensions/pi-web-access/session-cleanup.d.ts.map +1 -0
  115. package/dist/builtin-extensions/pi-web-access/session-cleanup.js +17 -0
  116. package/dist/builtin-extensions/pi-web-access/session-cleanup.js.map +1 -0
  117. package/dist/catalog/publication.json +12 -12
  118. package/dist/cli-runtime.d.ts +3 -0
  119. package/dist/cli-runtime.d.ts.map +1 -0
  120. package/dist/cli-runtime.js +73 -0
  121. package/dist/cli-runtime.js.map +1 -0
  122. package/dist/cli.d.ts.map +1 -1
  123. package/dist/cli.js +14 -53
  124. package/dist/cli.js.map +1 -1
  125. package/dist/config.d.ts +1 -0
  126. package/dist/config.d.ts.map +1 -1
  127. package/dist/config.js +1 -0
  128. package/dist/config.js.map +1 -1
  129. package/dist/core/agent-session-services.d.ts.map +1 -1
  130. package/dist/core/agent-session-services.js +1 -1
  131. package/dist/core/agent-session-services.js.map +1 -1
  132. package/dist/core/agent-session.d.ts +3 -0
  133. package/dist/core/agent-session.d.ts.map +1 -1
  134. package/dist/core/agent-session.js +56 -12
  135. package/dist/core/agent-session.js.map +1 -1
  136. package/dist/core/compaction/compaction.d.ts.map +1 -1
  137. package/dist/core/compaction/compaction.js +10 -5
  138. package/dist/core/compaction/compaction.js.map +1 -1
  139. package/dist/core/computer-use/adapter.d.ts +23 -0
  140. package/dist/core/computer-use/adapter.d.ts.map +1 -0
  141. package/dist/core/computer-use/adapter.js +116 -0
  142. package/dist/core/computer-use/adapter.js.map +1 -0
  143. package/dist/core/computer-use/lease.d.ts +18 -0
  144. package/dist/core/computer-use/lease.d.ts.map +1 -0
  145. package/dist/core/computer-use/lease.js +129 -0
  146. package/dist/core/computer-use/lease.js.map +1 -0
  147. package/dist/core/computer-use/macos-runtime.d.ts +14 -0
  148. package/dist/core/computer-use/macos-runtime.d.ts.map +1 -0
  149. package/dist/core/computer-use/macos-runtime.js +148 -0
  150. package/dist/core/computer-use/macos-runtime.js.map +1 -0
  151. package/dist/core/computer-use/policy.d.ts +19 -0
  152. package/dist/core/computer-use/policy.d.ts.map +1 -0
  153. package/dist/core/computer-use/policy.js +66 -0
  154. package/dist/core/computer-use/policy.js.map +1 -0
  155. package/dist/core/computer-use/release.generated.d.ts +31 -0
  156. package/dist/core/computer-use/release.generated.d.ts.map +1 -0
  157. package/dist/core/computer-use/release.generated.js +36 -0
  158. package/dist/core/computer-use/release.generated.js.map +1 -0
  159. package/dist/core/computer-use/runtime.d.ts +13 -0
  160. package/dist/core/computer-use/runtime.d.ts.map +1 -0
  161. package/dist/core/computer-use/runtime.js +158 -0
  162. package/dist/core/computer-use/runtime.js.map +1 -0
  163. package/dist/core/computer-use/schemas.d.ts +88 -0
  164. package/dist/core/computer-use/schemas.d.ts.map +1 -0
  165. package/dist/core/computer-use/schemas.js +80 -0
  166. package/dist/core/computer-use/schemas.js.map +1 -0
  167. package/dist/core/computer-use/windows-desktop.d.ts +3 -0
  168. package/dist/core/computer-use/windows-desktop.d.ts.map +1 -0
  169. package/dist/core/computer-use/windows-desktop.js +48 -0
  170. package/dist/core/computer-use/windows-desktop.js.map +1 -0
  171. package/dist/core/computer-use/workflow.d.ts +24 -0
  172. package/dist/core/computer-use/workflow.d.ts.map +1 -0
  173. package/dist/core/computer-use/workflow.js +330 -0
  174. package/dist/core/computer-use/workflow.js.map +1 -0
  175. package/dist/core/extensions/host-static.d.ts.map +1 -1
  176. package/dist/core/extensions/host-static.js +34 -12
  177. package/dist/core/extensions/host-static.js.map +1 -1
  178. package/dist/core/extensions/loader.d.ts +1 -2
  179. package/dist/core/extensions/loader.d.ts.map +1 -1
  180. package/dist/core/extensions/loader.js +10 -64
  181. package/dist/core/extensions/loader.js.map +1 -1
  182. package/dist/core/extensions/types.d.ts +2 -2
  183. package/dist/core/extensions/types.d.ts.map +1 -1
  184. package/dist/core/extensions/types.js.map +1 -1
  185. package/dist/core/footer-data-provider.d.ts.map +1 -1
  186. package/dist/core/footer-data-provider.js +2 -0
  187. package/dist/core/footer-data-provider.js.map +1 -1
  188. package/dist/core/keybindings.d.ts +2 -2
  189. package/dist/core/keybindings.d.ts.map +1 -1
  190. package/dist/core/keybindings.js +2 -2
  191. package/dist/core/keybindings.js.map +1 -1
  192. package/dist/core/model-runtime.d.ts +0 -3
  193. package/dist/core/model-runtime.d.ts.map +1 -1
  194. package/dist/core/model-runtime.js +1 -10
  195. package/dist/core/model-runtime.js.map +1 -1
  196. package/dist/core/package-manager.d.ts.map +1 -1
  197. package/dist/core/package-manager.js +1 -1
  198. package/dist/core/package-manager.js.map +1 -1
  199. package/dist/core/permissions.d.ts +1 -3
  200. package/dist/core/permissions.d.ts.map +1 -1
  201. package/dist/core/permissions.js +33 -25
  202. package/dist/core/permissions.js.map +1 -1
  203. package/dist/core/plan-mode.d.ts.map +1 -1
  204. package/dist/core/plan-mode.js +9 -0
  205. package/dist/core/plan-mode.js.map +1 -1
  206. package/dist/core/rollback.d.ts.map +1 -1
  207. package/dist/core/rollback.js +13 -90
  208. package/dist/core/rollback.js.map +1 -1
  209. package/dist/core/sdk.d.ts +1 -1
  210. package/dist/core/sdk.d.ts.map +1 -1
  211. package/dist/core/sdk.js +1 -1
  212. package/dist/core/sdk.js.map +1 -1
  213. package/dist/core/session-manager.d.ts +0 -1
  214. package/dist/core/session-manager.d.ts.map +1 -1
  215. package/dist/core/session-manager.js +21 -79
  216. package/dist/core/session-manager.js.map +1 -1
  217. package/dist/core/settings-manager.d.ts +6 -0
  218. package/dist/core/settings-manager.d.ts.map +1 -1
  219. package/dist/core/settings-manager.js +19 -0
  220. package/dist/core/settings-manager.js.map +1 -1
  221. package/dist/core/slash-commands.d.ts.map +1 -1
  222. package/dist/core/slash-commands.js +0 -1
  223. package/dist/core/slash-commands.js.map +1 -1
  224. package/dist/core/timings.d.ts +2 -1
  225. package/dist/core/timings.d.ts.map +1 -1
  226. package/dist/core/timings.js +17 -2
  227. package/dist/core/timings.js.map +1 -1
  228. package/dist/dev-cli.js +0 -0
  229. package/dist/gateway/agent-bridge.d.ts +6 -1
  230. package/dist/gateway/agent-bridge.d.ts.map +1 -1
  231. package/dist/gateway/agent-bridge.js +23 -6
  232. package/dist/gateway/agent-bridge.js.map +1 -1
  233. package/dist/gateway/commands.d.ts +1 -1
  234. package/dist/gateway/commands.d.ts.map +1 -1
  235. package/dist/gateway/commands.js +1 -18
  236. package/dist/gateway/commands.js.map +1 -1
  237. package/dist/gateway/cron.d.ts +1 -1
  238. package/dist/gateway/cron.d.ts.map +1 -1
  239. package/dist/gateway/cron.js +23 -7
  240. package/dist/gateway/cron.js.map +1 -1
  241. package/dist/main.d.ts +2 -2
  242. package/dist/main.d.ts.map +1 -1
  243. package/dist/main.js +57 -48
  244. package/dist/main.js.map +1 -1
  245. package/dist/modes/interactive/components/footer.d.ts +4 -2
  246. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  247. package/dist/modes/interactive/components/footer.js +23 -32
  248. package/dist/modes/interactive/components/footer.js.map +1 -1
  249. package/dist/modes/interactive/components/processes-selector.d.ts +2 -3
  250. package/dist/modes/interactive/components/processes-selector.d.ts.map +1 -1
  251. package/dist/modes/interactive/components/processes-selector.js +5 -10
  252. package/dist/modes/interactive/components/processes-selector.js.map +1 -1
  253. package/dist/modes/interactive/components/settings-selector.d.ts +4 -0
  254. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  255. package/dist/modes/interactive/components/settings-selector.js +20 -0
  256. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  257. package/dist/modes/interactive/interactive-mode.d.ts +12 -21
  258. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  259. package/dist/modes/interactive/interactive-mode.js +138 -152
  260. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  261. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  262. package/dist/modes/interactive/theme/theme.js +95 -84
  263. package/dist/modes/interactive/theme/theme.js.map +1 -1
  264. package/dist/modes/interactive/thinking-level-slash.d.ts +4 -0
  265. package/dist/modes/interactive/thinking-level-slash.d.ts.map +1 -0
  266. package/dist/modes/interactive/thinking-level-slash.js +23 -0
  267. package/dist/modes/interactive/thinking-level-slash.js.map +1 -0
  268. package/dist/node-runtime/adapter-AZMY335J.js +279 -0
  269. package/dist/node-runtime/agent-session-services-RSGP5GDN.js +39 -0
  270. package/dist/node-runtime/benchmark-request-UC7PD3V3.js +57 -0
  271. package/dist/node-runtime/brave-UWDA3I22.js +143 -0
  272. package/dist/node-runtime/builtin-extensions-7STLFW3A.js +29 -0
  273. package/dist/node-runtime/chunk-2IDTZAG5.js +1415 -0
  274. package/dist/node-runtime/chunk-3GHXVUAK.js +21 -0
  275. package/dist/node-runtime/chunk-3RCWXWAY.js +466 -0
  276. package/dist/node-runtime/chunk-3WFAEVKS.js +115 -0
  277. package/dist/node-runtime/chunk-3X3KZKMI.js +49 -0
  278. package/dist/node-runtime/chunk-4HXHDDCF.js +16 -0
  279. package/dist/node-runtime/chunk-4SJWFTUP.js +24 -0
  280. package/dist/node-runtime/chunk-4ZWGEEAS.js +69 -0
  281. package/dist/node-runtime/chunk-53YJI7JU.js +137 -0
  282. package/dist/node-runtime/chunk-5NWQCSKR.js +19218 -0
  283. package/dist/node-runtime/chunk-5OLJGVCB.js +68 -0
  284. package/dist/node-runtime/chunk-5Q45AVQG.js +108 -0
  285. package/dist/node-runtime/chunk-5SQDLSZJ.js +949 -0
  286. package/dist/node-runtime/chunk-6SPPH4FY.js +1269 -0
  287. package/dist/node-runtime/chunk-6UB6NKA3.js +860 -0
  288. package/dist/node-runtime/chunk-7AFOFSDY.js +105 -0
  289. package/dist/node-runtime/chunk-7N3YHTYF.js +26 -0
  290. package/dist/node-runtime/chunk-ARC4KOTI.js +11178 -0
  291. package/dist/node-runtime/chunk-AUXVGBO4.js +19 -0
  292. package/dist/node-runtime/chunk-AY6CAJSL.js +30 -0
  293. package/dist/node-runtime/chunk-BHO7O6E5.js +296 -0
  294. package/dist/node-runtime/chunk-BI3DHYCN.js +8845 -0
  295. package/dist/node-runtime/chunk-BKAZ6BKX.js +2185 -0
  296. package/dist/node-runtime/chunk-BR7YDUKA.js +109 -0
  297. package/dist/node-runtime/chunk-BRJX2PRC.js +53 -0
  298. package/dist/node-runtime/chunk-C4O2RSQQ.js +37 -0
  299. package/dist/node-runtime/chunk-CCZJ3PYY.js +17 -0
  300. package/dist/node-runtime/chunk-CGBXPL3E.js +1171 -0
  301. package/dist/node-runtime/chunk-CH6OL6P2.js +295 -0
  302. package/dist/node-runtime/chunk-CJECDQKP.js +19 -0
  303. package/dist/node-runtime/chunk-DAPBPCBP.js +53 -0
  304. package/dist/node-runtime/chunk-DDGMHUOW.js +305 -0
  305. package/dist/node-runtime/chunk-DMMTJQMQ.js +43 -0
  306. package/dist/node-runtime/chunk-DVGWF6A2.js +1180 -0
  307. package/dist/node-runtime/chunk-EH2LJQPM.js +64 -0
  308. package/dist/node-runtime/chunk-EHMBW7FA.js +772 -0
  309. package/dist/node-runtime/chunk-FLYMHKCS.js +966 -0
  310. package/dist/node-runtime/chunk-FVDOXRUD.js +96 -0
  311. package/dist/node-runtime/chunk-GZQHMEWL.js +126 -0
  312. package/dist/node-runtime/chunk-H2EOZYMP.js +57 -0
  313. package/dist/node-runtime/chunk-HQCKFM2O.js +56 -0
  314. package/dist/node-runtime/chunk-HRS4HMDX.js +610 -0
  315. package/dist/node-runtime/chunk-HYHJIRDW.js +19 -0
  316. package/dist/node-runtime/chunk-I6R76AG7.js +22 -0
  317. package/dist/node-runtime/chunk-ISQDQIZN.js +296 -0
  318. package/dist/node-runtime/chunk-J7QGQD45.js +24921 -0
  319. package/dist/node-runtime/chunk-JHYKXIMM.js +378 -0
  320. package/dist/node-runtime/chunk-JT6YCS5B.js +5648 -0
  321. package/dist/node-runtime/chunk-JZHEUQRL.js +180 -0
  322. package/dist/node-runtime/chunk-K72NVGUB.js +2834 -0
  323. package/dist/node-runtime/chunk-KKSIVROT.js +88 -0
  324. package/dist/node-runtime/chunk-LCACDWHJ.js +1743 -0
  325. package/dist/node-runtime/chunk-LTXUQJI4.js +173 -0
  326. package/dist/node-runtime/chunk-LWJXTA6Z.js +6814 -0
  327. package/dist/node-runtime/chunk-M3LZLQW2.js +98 -0
  328. package/dist/node-runtime/chunk-MGSB2C3M.js +46 -0
  329. package/dist/node-runtime/chunk-MGWCVY6Y.js +47 -0
  330. package/dist/node-runtime/chunk-MJQDX3BA.js +72 -0
  331. package/dist/node-runtime/chunk-MUMMMTW4.js +8392 -0
  332. package/dist/node-runtime/chunk-MX3GJNXJ.js +986 -0
  333. package/dist/node-runtime/chunk-NUIFPZWX.js +209 -0
  334. package/dist/node-runtime/chunk-OBMWP3I5.js +68 -0
  335. package/dist/node-runtime/chunk-OR4L3IB2.js +42 -0
  336. package/dist/node-runtime/chunk-OTT6JMPU.js +807 -0
  337. package/dist/node-runtime/chunk-PCIGF2XK.js +250 -0
  338. package/dist/node-runtime/chunk-PL6JKXWI.js +3622 -0
  339. package/dist/node-runtime/chunk-PVCDKGR6.js +55 -0
  340. package/dist/node-runtime/chunk-Q4Q6D4IY.js +364 -0
  341. package/dist/node-runtime/chunk-Q5ZU2VRT.js +83 -0
  342. package/dist/node-runtime/chunk-QFWG2RVL.js +5477 -0
  343. package/dist/node-runtime/chunk-RQ2Q5IYR.js +72 -0
  344. package/dist/node-runtime/chunk-RQ5DNUNG.js +429 -0
  345. package/dist/node-runtime/chunk-RRIZE6QQ.js +17 -0
  346. package/dist/node-runtime/chunk-SN6G4OU6.js +4753 -0
  347. package/dist/node-runtime/chunk-SWSN6HAB.js +53 -0
  348. package/dist/node-runtime/chunk-T5GM5BFH.js +7558 -0
  349. package/dist/node-runtime/chunk-TAP7QTUT.js +1346 -0
  350. package/dist/node-runtime/chunk-U6C7VTR5.js +2033 -0
  351. package/dist/node-runtime/chunk-URD2SLIT.js +1019 -0
  352. package/dist/node-runtime/chunk-VRB2IYGG.js +53 -0
  353. package/dist/node-runtime/chunk-W3CVH5RX.js +62 -0
  354. package/dist/node-runtime/chunk-W7S2REEG.js +9478 -0
  355. package/dist/node-runtime/chunk-XBWPBZBN.js +125 -0
  356. package/dist/node-runtime/chunk-XTHQ7XR7.js +509 -0
  357. package/dist/node-runtime/chunk-ZCHMJ34K.js +130 -0
  358. package/dist/node-runtime/chunk-ZRDIMBEQ.js +651 -0
  359. package/dist/node-runtime/chunk-ZSEZY3II.js +247 -0
  360. package/dist/node-runtime/cli-runtime.js +81 -0
  361. package/dist/node-runtime/clipboard-OZ63BBC6.js +12 -0
  362. package/dist/node-runtime/clipboard-image-7QR6GXVA.js +13 -0
  363. package/dist/node-runtime/command-6UXQ6XZN.js +13 -0
  364. package/dist/node-runtime/commands-LGR5VT5X.js +293 -0
  365. package/dist/node-runtime/config-FMEOZSWE.js +77 -0
  366. package/dist/node-runtime/curator-server-XCM43VEF.js +3816 -0
  367. package/dist/node-runtime/customize-XEXL2DGQ.js +12 -0
  368. package/dist/node-runtime/direct-tool-executor-TDJS7TBD.js +191 -0
  369. package/dist/node-runtime/exa-LL64QZR2.js +329 -0
  370. package/dist/node-runtime/export-html-E4DT6ZJQ.js +150 -0
  371. package/dist/node-runtime/extension-input-RV5N6APL.js +14 -0
  372. package/dist/node-runtime/extension-selector-CPD5LWDD.js +14 -0
  373. package/dist/node-runtime/extract-IUCVZCWC.js +17 -0
  374. package/dist/node-runtime/file-sync-HCOP2QVF.js +117 -0
  375. package/dist/node-runtime/gateway-3OLC4GQN.js +2139 -0
  376. package/dist/node-runtime/gemini-api-QE7ANVDZ.js +29 -0
  377. package/dist/node-runtime/gemini-search-NCIDF7NE.js +330 -0
  378. package/dist/node-runtime/gemini-url-context-OKIN7AIP.js +103 -0
  379. package/dist/node-runtime/gemini-web-MM446SEH.js +14 -0
  380. package/dist/node-runtime/github-extract-F64RZOEA.js +619 -0
  381. package/dist/node-runtime/goal-CZQ7FFQJ.js +1831 -0
  382. package/dist/node-runtime/image-resize-6ZPBFMWW.js +11 -0
  383. package/dist/node-runtime/index.js +863 -0
  384. package/dist/node-runtime/init-EKE277AG.js +30 -0
  385. package/dist/node-runtime/install-cli-TH7IJJQQ.js +308 -0
  386. package/dist/node-runtime/interactive-mode-S5M26CQ7.js +59 -0
  387. package/dist/node-runtime/interactive-view-N6F4KUIT.js +247 -0
  388. package/dist/node-runtime/lsp-manager-3ASUSO4T.js +1104 -0
  389. package/dist/node-runtime/lunr-computer-use-4X3KUNF4.js +206 -0
  390. package/dist/node-runtime/lunr-cron-KKBOGAEF.js +274 -0
  391. package/dist/node-runtime/main.js +57 -0
  392. package/dist/node-runtime/mcp-auth-flow-YL6RWPYG.js +33 -0
  393. package/dist/node-runtime/mcp-panel-IIGMXQGP.js +501 -0
  394. package/dist/node-runtime/mcp-setup-panel-FEK7663I.js +355 -0
  395. package/dist/node-runtime/memory-cap-3S4XRLNP.js +20 -0
  396. package/dist/node-runtime/model-tiers-NJLHUEGK.js +20 -0
  397. package/dist/node-runtime/openai-search-B3MSNCQA.js +288 -0
  398. package/dist/node-runtime/package-manager-cli-C4EJOO5Q.js +751 -0
  399. package/dist/node-runtime/parallel-AI2MNSCU.js +265 -0
  400. package/dist/node-runtime/parser-manager-TQHWYDH7.js +152 -0
  401. package/dist/node-runtime/pdf-extract-IPE6H4HP.js +57 -0
  402. package/dist/node-runtime/perplexity-QVJW3I35.js +12 -0
  403. package/dist/node-runtime/pi-intercom-EEMBGQID.js +2215 -0
  404. package/dist/node-runtime/pi-mcp-adapter-DPTJGAAL.js +428 -0
  405. package/dist/node-runtime/pi-ollama-cloud-4VZRMULP.js +1440 -0
  406. package/dist/node-runtime/pi-prompt-template-model-4QT4LLXF.js +3946 -0
  407. package/dist/node-runtime/pi-subagents-VKCLYIBY.js +6050 -0
  408. package/dist/node-runtime/pi-web-access-BV6DSZOP.js +1867 -0
  409. package/dist/node-runtime/print-mode-VWIRFDAC.js +12 -0
  410. package/dist/node-runtime/proxy-modes-R64LU6WZ.js +688 -0
  411. package/dist/node-runtime/rpc-entry.js +65 -0
  412. package/dist/node-runtime/rpc-mode-SJNSOA4G.js +13 -0
  413. package/dist/node-runtime/runtime-3SB5ATHQ.js +21 -0
  414. package/dist/node-runtime/runtime-bridges-UJ5WJJLN.js +14 -0
  415. package/dist/node-runtime/session-manager-QEMZBMTM.js +33 -0
  416. package/dist/node-runtime/session-selector-URVJLOTK.js +14 -0
  417. package/dist/node-runtime/settings-manager-K6IPIQTI.js +23 -0
  418. package/dist/node-runtime/src-GPFAU3N6.js +2427 -0
  419. package/dist/node-runtime/subagent-executor-EFLTO32A.js +8501 -0
  420. package/dist/node-runtime/summary-review-YSMXKITO.js +228 -0
  421. package/dist/node-runtime/tavily-WEZFVFP7.js +154 -0
  422. package/dist/node-runtime/timings-UAD5BEAS.js +16 -0
  423. package/dist/node-runtime/tool-renderer-MV5O452K.js +204 -0
  424. package/dist/node-runtime/update-cli-I6OVDRPL.js +75 -0
  425. package/dist/node-runtime/v4-5MNC3H7G.js +424 -0
  426. package/dist/node-runtime/video-extract-ETA5RA7U.js +304 -0
  427. package/dist/node-runtime/workflow-SA34S4VX.js +325 -0
  428. package/dist/node-runtime/workspace-index-6DBXSTJ6.js +163 -0
  429. package/dist/node-runtime/youtube-extract-SRVGNN26.js +264 -0
  430. package/dist/rpc.d.ts +3 -0
  431. package/dist/rpc.d.ts.map +1 -0
  432. package/dist/rpc.js +18 -0
  433. package/dist/rpc.js.map +1 -0
  434. package/dist/startup/benchmark-request.d.ts +3 -0
  435. package/dist/startup/benchmark-request.d.ts.map +1 -0
  436. package/dist/startup/benchmark-request.js +65 -0
  437. package/dist/startup/benchmark-request.js.map +1 -0
  438. package/dist/startup/{interactive-shell.d.ts → interactive-view.d.ts} +18 -18
  439. package/dist/startup/interactive-view.d.ts.map +1 -0
  440. package/dist/startup/{interactive-shell.js → interactive-view.js} +119 -52
  441. package/dist/startup/interactive-view.js.map +1 -0
  442. package/dist/startup/launch-routing.d.ts.map +1 -1
  443. package/dist/startup/launch-routing.js +9 -10
  444. package/dist/startup/launch-routing.js.map +1 -1
  445. package/dist/startup/startup-milestones.d.ts +1 -1
  446. package/dist/startup/startup-milestones.d.ts.map +1 -1
  447. package/dist/startup/startup-milestones.js +3 -2
  448. package/dist/startup/startup-milestones.js.map +1 -1
  449. package/dist/utils/await-with-abort.d.ts +2 -0
  450. package/dist/utils/await-with-abort.d.ts.map +1 -0
  451. package/dist/utils/await-with-abort.js +19 -0
  452. package/dist/utils/await-with-abort.js.map +1 -0
  453. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  454. package/dist/utils/syntax-highlight.js +10 -4
  455. package/dist/utils/syntax-highlight.js.map +1 -1
  456. package/docs/compaction.md +5 -3
  457. package/docs/computer-use.md +277 -0
  458. package/docs/development.md +5 -33
  459. package/docs/features.md +2 -3
  460. package/docs/interactive-startup.md +105 -0
  461. package/docs/keybindings.md +2 -2
  462. package/docs/terminal-setup.md +1 -1
  463. package/docs/usage.md +1 -2
  464. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  465. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  466. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  467. package/examples/extensions/gondolin/package-lock.json +2 -2
  468. package/examples/extensions/gondolin/package.json +1 -1
  469. package/examples/extensions/hidden-thinking-label.ts +1 -1
  470. package/examples/extensions/sandbox/package-lock.json +2 -2
  471. package/examples/extensions/sandbox/package.json +1 -1
  472. package/examples/extensions/with-deps/package-lock.json +2 -2
  473. package/examples/extensions/with-deps/package.json +1 -1
  474. package/install-lock/package-lock.json +3827 -0
  475. package/install-lock/package.json +18 -0
  476. package/native/computer-use/LICENSE.md +21 -0
  477. package/npm-shrinkwrap.json +3808 -0
  478. package/package.json +30 -24
  479. package/dist/core/swarm.d.ts +0 -23
  480. package/dist/core/swarm.d.ts.map +0 -1
  481. package/dist/core/swarm.js +0 -45
  482. package/dist/core/swarm.js.map +0 -1
  483. package/dist/startup/interactive-shell.d.ts.map +0 -1
  484. package/dist/startup/interactive-shell.js.map +0 -1
@@ -0,0 +1,688 @@
1
+ import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
2
+ import {
3
+ guardMcpOutput,
4
+ guardedMcpDetails,
5
+ maybeStartUiSession,
6
+ resolveMcpOutputGuardOptions,
7
+ resolveMcpResultContent,
8
+ transformMcpContent
9
+ } from "./chunk-6SPPH4FY.js";
10
+ import {
11
+ buildToolMetadata,
12
+ findToolByName,
13
+ formatSchema,
14
+ getFailureAgeSeconds,
15
+ getToolNames,
16
+ lazyConnect,
17
+ updateMetadataCache,
18
+ updateServerMetadata,
19
+ updateStatusBar
20
+ } from "./chunk-BKAZ6BKX.js";
21
+ import {
22
+ abortable,
23
+ formatAuthRequiredMessage,
24
+ throwIfAborted,
25
+ truncateAtWord
26
+ } from "./chunk-EHMBW7FA.js";
27
+ import {
28
+ getServerPrefix,
29
+ parseUiPromptHandoff
30
+ } from "./chunk-ARC4KOTI.js";
31
+ import "./chunk-LWJXTA6Z.js";
32
+ import {
33
+ authenticate,
34
+ completeAuthFromInput,
35
+ startAuth,
36
+ supportsOAuth
37
+ } from "./chunk-U6C7VTR5.js";
38
+ import "./chunk-4HXHDDCF.js";
39
+ import {
40
+ UrlElicitationRequiredError
41
+ } from "./chunk-2IDTZAG5.js";
42
+ import "./chunk-BI3DHYCN.js";
43
+ import "./chunk-Q4Q6D4IY.js";
44
+ import "./chunk-BRJX2PRC.js";
45
+
46
+ // packages/coding-agent/dist/builtin-extensions/pi-mcp-adapter/proxy-modes.js
47
+ import { checkSync } from "recheck";
48
+ var MAX_REGEX_SEARCH_QUERY_LENGTH = 256, REGEX_SAFETY_CHECK_PARAMS = {
49
+ attackTimeout: 50,
50
+ incubationTimeout: 50,
51
+ timeout: 250
52
+ };
53
+ function getAuthRequiredMessage(state, serverName, defaultMessage = `Server "${serverName}" requires OAuth authentication. Run mcp({ action: "auth-start", server: "${serverName}" }) to get a browser URL, or /mcp-auth ${serverName} in an interactive local session.`) {
54
+ return formatAuthRequiredMessage(state.config, serverName, defaultMessage);
55
+ }
56
+ function getAuthFailedMessage(state, serverName, message) {
57
+ return state.config.settings?.authRequiredMessage ? `OAuth authentication failed for "${serverName}": ${message}. ${getAuthRequiredMessage(state, serverName)}` : `OAuth authentication failed for "${serverName}": ${message}. Run mcp({ action: "auth-start", server: "${serverName}" }) to get a browser URL, or /mcp-auth ${serverName} in an interactive local session.`;
58
+ }
59
+ function getRedirectPort(authorizationUrl) {
60
+ try {
61
+ let redirectUri = new URL(authorizationUrl).searchParams.get("redirect_uri");
62
+ if (!redirectUri)
63
+ return;
64
+ let port = Number.parseInt(new URL(redirectUri).port, 10);
65
+ return Number.isInteger(port) ? port : void 0;
66
+ } catch {
67
+ return;
68
+ }
69
+ }
70
+ function formatManualAuthInstructions(serverName, authorizationUrl) {
71
+ let port = getRedirectPort(authorizationUrl), portNote = port ? `
72
+ The redirect URL will use local port ${port}. On a remote server it is expected for that localhost page to fail locally; copy the address bar URL anyway.` : "";
73
+ return [
74
+ `MCP OAuth required for "${serverName}".`,
75
+ "",
76
+ "Open this URL in your local browser:",
77
+ "",
78
+ authorizationUrl,
79
+ "",
80
+ "After approving, copy the full redirected localhost URL from your browser address bar and send it back with:",
81
+ `mcp({ action: "auth-complete", server: "${serverName}", args: '{"redirectUrl":"PASTE_REDIRECT_URL_HERE"}' })`,
82
+ "",
83
+ 'You can also pass just the `code` query parameter as `args: \'{"code":"PASTE_CODE_HERE"}\'`.',
84
+ portNote.trimEnd()
85
+ ].filter(Boolean).join(`
86
+ `);
87
+ }
88
+ async function attemptAutoAuth(state, serverName) {
89
+ if (state.config.settings?.autoAuth !== !0)
90
+ return { status: "skipped" };
91
+ let definition = state.config.mcpServers[serverName];
92
+ if (!definition || !supportsOAuth(definition) || !definition.url)
93
+ return { status: "skipped" };
94
+ let grantType = definition.oauth ? definition.oauth.grantType ?? "authorization_code" : "authorization_code";
95
+ if (!state.ui && grantType !== "client_credentials")
96
+ return {
97
+ status: "failed",
98
+ message: getAuthRequiredMessage(state, serverName, `Server "${serverName}" requires OAuth authentication. Run mcp({ action: "auth-start", server: "${serverName}" }) to get a browser URL, or /mcp-auth ${serverName} in an interactive local session.`)
99
+ };
100
+ try {
101
+ return await authenticate(serverName, definition.url, definition), { status: "success" };
102
+ } catch (error) {
103
+ let message = error instanceof Error ? error.message : String(error);
104
+ return {
105
+ status: "failed",
106
+ message: getAuthFailedMessage(state, serverName, message)
107
+ };
108
+ }
109
+ }
110
+ function executeUiMessages(state) {
111
+ let sessions = state.completedUiSessions;
112
+ if (sessions.length === 0)
113
+ return {
114
+ content: [{ type: "text", text: "No UI session messages available." }],
115
+ details: { sessions: 0 }
116
+ };
117
+ let output = [];
118
+ output.push(`UI Session Messages (${sessions.length} session${sessions.length > 1 ? "s" : ""}):
119
+ `);
120
+ let allPrompts = [], allIntents = sessions.flatMap((session) => session.messages.intents), parsedHandoffs = [];
121
+ for (let session of sessions) {
122
+ let timestamp = session.completedAt.toLocaleTimeString();
123
+ output.push(`
124
+ ## ${session.serverName} / ${session.toolName} (${timestamp}, ${session.reason})`);
125
+ let plainPrompts = [];
126
+ for (let prompt of session.messages.prompts) {
127
+ allPrompts.push(prompt);
128
+ let handoff = parseUiPromptHandoff(prompt);
129
+ handoff ? parsedHandoffs.push(handoff) : plainPrompts.push(prompt);
130
+ }
131
+ if (plainPrompts.length > 0) {
132
+ output.push(`
133
+ ### Prompts:`);
134
+ for (let prompt of plainPrompts)
135
+ output.push(`- ${prompt}`);
136
+ }
137
+ let intentsForSession = [
138
+ ...session.messages.intents,
139
+ ...session.messages.prompts.map((prompt) => parseUiPromptHandoff(prompt)).filter((handoff) => !!handoff).map((handoff) => ({ intent: handoff.intent, params: handoff.params }))
140
+ ];
141
+ if (intentsForSession.length > 0) {
142
+ output.push(`
143
+ ### Intents:`);
144
+ for (let intent of intentsForSession) {
145
+ let params = intent.params ? ` (${JSON.stringify(intent.params)})` : "";
146
+ output.push(`- ${intent.intent}${params}`);
147
+ }
148
+ }
149
+ if (session.messages.notifications.length > 0) {
150
+ output.push(`
151
+ ### Notifications:`);
152
+ for (let notification of session.messages.notifications)
153
+ output.push(`- ${notification}`);
154
+ }
155
+ }
156
+ let count = sessions.length;
157
+ return state.completedUiSessions = [], {
158
+ content: [{ type: "text", text: output.join(`
159
+ `) }],
160
+ details: {
161
+ sessions: count,
162
+ prompts: allPrompts,
163
+ intents: [...allIntents, ...parsedHandoffs.map(({ intent, params }) => ({ intent, params }))],
164
+ handoffs: parsedHandoffs,
165
+ cleared: !0
166
+ }
167
+ };
168
+ }
169
+ function executeStatus(state) {
170
+ let servers = [];
171
+ for (let name of Object.keys(state.config.mcpServers)) {
172
+ let connection = state.manager.getConnection(name), metadata = state.toolMetadata.get(name), toolCount = metadata?.length ?? 0, failedAgo = getFailureAgeSeconds(state, name), status = "not connected";
173
+ connection?.status === "connected" ? status = "connected" : connection?.status === "needs-auth" ? status = "needs-auth" : failedAgo !== null ? status = "failed" : metadata !== void 0 && (status = "cached"), servers.push({ name, status, toolCount, failedAgo });
174
+ }
175
+ let totalTools = servers.reduce((sum, s) => sum + s.toolCount, 0), connectedCount = servers.filter((s) => s.status === "connected").length, text = `MCP: ${connectedCount}/${servers.length} servers, ${totalTools} tools
176
+
177
+ `;
178
+ for (let server of servers) {
179
+ if (server.status === "connected") {
180
+ text += `\u2713 ${server.name} (${server.toolCount} tools)
181
+ `;
182
+ continue;
183
+ }
184
+ if (server.status === "needs-auth") {
185
+ text += `\u26A0 ${server.name} (needs auth)
186
+ `;
187
+ continue;
188
+ }
189
+ if (server.status === "cached") {
190
+ text += `\u25CB ${server.name} (${server.toolCount} tools, cached)
191
+ `;
192
+ continue;
193
+ }
194
+ if (server.status === "failed") {
195
+ text += `\u2717 ${server.name} (failed ${server.failedAgo ?? 0}s ago)
196
+ `;
197
+ continue;
198
+ }
199
+ text += `\u25CB ${server.name} (not connected)
200
+ `;
201
+ }
202
+ return servers.length > 0 && (text += `
203
+ mcp({ server: "name" }) to list tools, mcp({ search: "..." }) to search`), {
204
+ content: [{ type: "text", text: text.trim() }],
205
+ details: { mode: "status", servers, totalTools, connectedCount }
206
+ };
207
+ }
208
+ async function executeAuthStart(state, serverName) {
209
+ let definition = state.config.mcpServers[serverName];
210
+ if (!definition)
211
+ return {
212
+ content: [{ type: "text", text: `Server "${serverName}" not found. Use mcp({}) to see available servers.` }],
213
+ details: { mode: "auth-start", error: "not_found", server: serverName }
214
+ };
215
+ if (!definition.url || !supportsOAuth(definition))
216
+ return {
217
+ content: [{ type: "text", text: `Server "${serverName}" is not configured for OAuth over HTTP.` }],
218
+ details: { mode: "auth-start", error: "oauth_not_supported", server: serverName }
219
+ };
220
+ try {
221
+ let { authorizationUrl } = await startAuth(serverName, definition.url, definition);
222
+ return authorizationUrl ? {
223
+ content: [{ type: "text", text: formatManualAuthInstructions(serverName, authorizationUrl) }],
224
+ details: { mode: "auth-start", server: serverName, authorizationUrl }
225
+ } : {
226
+ content: [{ type: "text", text: `OAuth authentication successful for "${serverName}".` }],
227
+ details: { mode: "auth-start", server: serverName, authenticated: !0 }
228
+ };
229
+ } catch (error) {
230
+ let message = error instanceof Error ? error.message : String(error);
231
+ return {
232
+ content: [{ type: "text", text: `Failed to start OAuth for "${serverName}": ${message}` }],
233
+ details: { mode: "auth-start", error: "auth_start_failed", server: serverName, message }
234
+ };
235
+ }
236
+ }
237
+ async function executeAuthComplete(state, serverName, input) {
238
+ if (!state.config.mcpServers[serverName])
239
+ return {
240
+ content: [{ type: "text", text: `Server "${serverName}" not found. Use mcp({}) to see available servers.` }],
241
+ details: { mode: "auth-complete", error: "not_found", server: serverName }
242
+ };
243
+ try {
244
+ let status = await completeAuthFromInput(serverName, input);
245
+ return status !== "authenticated" ? {
246
+ content: [{ type: "text", text: `OAuth authentication did not complete for "${serverName}".` }],
247
+ details: { mode: "auth-complete", error: "not_authenticated", server: serverName, status }
248
+ } : (await state.manager.close(serverName), state.failureTracker.delete(serverName), updateStatusBar(state), {
249
+ content: [{ type: "text", text: `OAuth authentication successful for "${serverName}". Run mcp({ connect: "${serverName}" }) to connect with the new token.` }],
250
+ details: { mode: "auth-complete", server: serverName, authenticated: !0 }
251
+ });
252
+ } catch (error) {
253
+ let message = error instanceof Error ? error.message : String(error);
254
+ return {
255
+ content: [{ type: "text", text: `Failed to complete OAuth for "${serverName}": ${message}` }],
256
+ details: { mode: "auth-complete", error: "auth_complete_failed", server: serverName, message }
257
+ };
258
+ }
259
+ }
260
+ function executeDescribe(state, toolName) {
261
+ let serverName, toolMeta;
262
+ for (let [server, metadata] of state.toolMetadata.entries()) {
263
+ let found = findToolByName(metadata, toolName);
264
+ if (found) {
265
+ serverName = server, toolMeta = found;
266
+ break;
267
+ }
268
+ }
269
+ if (!serverName || !toolMeta)
270
+ return {
271
+ content: [{ type: "text", text: `Tool "${toolName}" not found. Use mcp({ search: "..." }) to search.` }],
272
+ details: { mode: "describe", error: "tool_not_found", requestedTool: toolName }
273
+ };
274
+ let text = `${toolMeta.name}
275
+ `;
276
+ return text += `Server: ${serverName}
277
+ `, toolMeta.resourceUri && (text += `Type: Resource (reads from ${toolMeta.resourceUri})
278
+ `), text += `
279
+ ${toolMeta.description || "(no description)"}
280
+ `, toolMeta.inputSchema && !toolMeta.resourceUri ? text += `
281
+ Parameters:
282
+ ${formatSchema(toolMeta.inputSchema)}` : toolMeta.resourceUri ? text += `
283
+ No parameters required (resource tool).` : text += `
284
+ No parameters defined.`, {
285
+ content: [{ type: "text", text: text.trim() }],
286
+ details: { mode: "describe", tool: toolMeta, server: serverName }
287
+ };
288
+ }
289
+ function executeSearch(state, query, regex, server, includeSchemas) {
290
+ let showSchemas = includeSchemas !== !1, matches = [], pattern;
291
+ try {
292
+ if (regex) {
293
+ if (query.length > MAX_REGEX_SEARCH_QUERY_LENGTH)
294
+ return {
295
+ content: [{ type: "text", text: `Regex query is too long; maximum length is ${MAX_REGEX_SEARCH_QUERY_LENGTH} characters.` }],
296
+ details: { mode: "search", error: "query_too_long", query, maxLength: MAX_REGEX_SEARCH_QUERY_LENGTH }
297
+ };
298
+ pattern = new RegExp(query, "i");
299
+ let safety;
300
+ try {
301
+ safety = checkSync(query, "i", REGEX_SAFETY_CHECK_PARAMS);
302
+ } catch (error) {
303
+ let message = error instanceof Error ? error.message : String(error);
304
+ return {
305
+ content: [{ type: "text", text: "Regex query rejected because safety analysis failed." }],
306
+ details: { mode: "search", error: "unsafe_pattern", query, reason: message }
307
+ };
308
+ }
309
+ if (safety.status !== "safe")
310
+ return {
311
+ content: [{ type: "text", text: `Regex query rejected as unsafe (${safety.status}).` }],
312
+ details: { mode: "search", error: "unsafe_pattern", query, safetyStatus: safety.status }
313
+ };
314
+ } else {
315
+ let terms = query.trim().split(/\s+/).filter((t) => t.length > 0);
316
+ if (terms.length === 0)
317
+ return {
318
+ content: [{ type: "text", text: "Search query cannot be empty" }],
319
+ details: { mode: "search", error: "empty_query" }
320
+ };
321
+ let escaped = terms.map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"));
322
+ pattern = new RegExp(escaped.join("|"), "i");
323
+ }
324
+ } catch {
325
+ return {
326
+ content: [{ type: "text", text: `Invalid regex: ${query}` }],
327
+ details: { mode: "search", error: "invalid_pattern", query }
328
+ };
329
+ }
330
+ for (let [serverName, metadata] of state.toolMetadata.entries())
331
+ if (!(server && serverName !== server))
332
+ for (let tool of metadata)
333
+ (pattern.test(tool.name) || pattern.test(tool.description)) && matches.push({
334
+ server: serverName,
335
+ tool
336
+ });
337
+ let totalCount = matches.length;
338
+ if (totalCount === 0)
339
+ return {
340
+ content: [{ type: "text", text: server ? `No tools matching "${query}" in "${server}"` : `No tools matching "${query}"` }],
341
+ details: { mode: "search", matches: [], count: 0, query }
342
+ };
343
+ let text = `Found ${totalCount} tool${totalCount === 1 ? "" : "s"} matching "${query}":
344
+
345
+ `;
346
+ for (let match of matches)
347
+ showSchemas ? (text += `${match.tool.name}
348
+ `, text += ` ${match.tool.description || "(no description)"}
349
+ `, match.tool.inputSchema && !match.tool.resourceUri ? text += `
350
+ Parameters:
351
+ ${formatSchema(match.tool.inputSchema, " ")}
352
+ ` : match.tool.resourceUri && (text += ` No parameters (resource tool).
353
+ `), text += `
354
+ `) : (text += `- ${match.tool.name}`, match.tool.description && (text += ` - ${truncateAtWord(match.tool.description, 50)}`), text += `
355
+ `);
356
+ return {
357
+ content: [{ type: "text", text: text.trim() }],
358
+ details: {
359
+ mode: "search",
360
+ matches: matches.map((m) => ({ server: m.server, tool: m.tool.name })),
361
+ count: totalCount,
362
+ query
363
+ }
364
+ };
365
+ }
366
+ function executeList(state, server) {
367
+ if (!state.config.mcpServers[server])
368
+ return {
369
+ content: [{ type: "text", text: `Server "${server}" not found. Use mcp({}) to see available servers.` }],
370
+ details: { mode: "list", server, tools: [], count: 0, error: "not_found" }
371
+ };
372
+ let metadata = state.toolMetadata.get(server), toolNames = metadata?.map((m) => m.name) ?? [], connection = state.manager.getConnection(server);
373
+ if (toolNames.length === 0)
374
+ return connection?.status === "connected" ? {
375
+ content: [{ type: "text", text: `Server "${server}" has no tools.` }],
376
+ details: { mode: "list", server, tools: [], count: 0 }
377
+ } : metadata !== void 0 ? {
378
+ content: [{ type: "text", text: `Server "${server}" has no cached tools (not connected).` }],
379
+ details: { mode: "list", server, tools: [], count: 0, cached: !0 }
380
+ } : {
381
+ content: [{ type: "text", text: `Server "${server}" is configured but not connected. Use mcp({ connect: "${server}" }) or /mcp reconnect ${server} to retry.` }],
382
+ details: { mode: "list", server, tools: [], count: 0, error: "not_connected" }
383
+ };
384
+ let cachedNote = connection?.status === "connected" ? "" : " (not connected, cached)", text = `${server} (${toolNames.length} tools${cachedNote}):
385
+
386
+ `, descMap = /* @__PURE__ */ new Map();
387
+ if (metadata)
388
+ for (let m of metadata)
389
+ descMap.set(m.name, m.description);
390
+ for (let tool of toolNames) {
391
+ let desc = descMap.get(tool) ?? "", truncated = truncateAtWord(desc, 50);
392
+ text += `- ${tool}`, truncated && (text += ` - ${truncated}`), text += `
393
+ `;
394
+ }
395
+ return {
396
+ content: [{ type: "text", text: text.trim() }],
397
+ details: { mode: "list", server, tools: toolNames, count: toolNames.length }
398
+ };
399
+ }
400
+ async function executeConnect(state, serverName, signal) {
401
+ throwIfAborted(signal);
402
+ let definition = state.config.mcpServers[serverName];
403
+ if (!definition)
404
+ return {
405
+ content: [{ type: "text", text: `Server "${serverName}" not found. Use mcp({}) to see available servers.` }],
406
+ details: { mode: "connect", error: "not_found", server: serverName }
407
+ };
408
+ try {
409
+ state.ui && state.ui.setStatus("mcp", `MCP: connecting to ${serverName}...`);
410
+ let connection = await state.manager.connect(serverName, definition, signal);
411
+ if (connection.status === "needs-auth") {
412
+ let autoAuth = await attemptAutoAuth(state, serverName);
413
+ if (autoAuth.status === "failed")
414
+ return {
415
+ content: [{ type: "text", text: autoAuth.message }],
416
+ details: { mode: "connect", error: "auth_required", server: serverName, message: autoAuth.message }
417
+ };
418
+ if (autoAuth.status === "success" && (await state.manager.close(serverName), connection = await state.manager.connect(serverName, definition, signal)), connection.status === "needs-auth") {
419
+ let message = getAuthRequiredMessage(state, serverName);
420
+ return {
421
+ content: [{ type: "text", text: message }],
422
+ details: { mode: "connect", error: "auth_required", server: serverName, message }
423
+ };
424
+ }
425
+ }
426
+ let prefix = state.config.settings?.toolPrefix ?? "server", { metadata } = buildToolMetadata(connection.tools, connection.resources, definition, serverName, prefix);
427
+ return state.toolMetadata.set(serverName, metadata), updateMetadataCache(state, serverName), state.failureTracker.delete(serverName), updateStatusBar(state), executeList(state, serverName);
428
+ } catch (error) {
429
+ signal?.aborted || state.failureTracker.set(serverName, Date.now()), updateStatusBar(state);
430
+ let message = error instanceof Error ? error.message : String(error);
431
+ return {
432
+ content: [{ type: "text", text: `Failed to connect to "${serverName}": ${message}` }],
433
+ details: { mode: "connect", error: signal?.aborted ? "aborted" : "connect_failed", server: serverName, message }
434
+ };
435
+ }
436
+ }
437
+ async function executeCall(state, toolName, args, serverOverride, getPiTools, signal) {
438
+ throwIfAborted(signal);
439
+ let serverName = serverOverride, toolMeta, autoAuthAttempted = !1, prefixMode = state.config.settings?.toolPrefix ?? "server";
440
+ if (serverName && !state.config.mcpServers[serverName])
441
+ return {
442
+ content: [{ type: "text", text: `Server "${serverName}" not found. Use mcp({}) to see available servers.` }],
443
+ details: { mode: "call", error: "server_not_found", server: serverName }
444
+ };
445
+ if (serverName)
446
+ toolMeta = findToolByName(state.toolMetadata.get(serverName), toolName);
447
+ else
448
+ for (let [server, metadata] of state.toolMetadata.entries()) {
449
+ let found = findToolByName(metadata, toolName);
450
+ if (found) {
451
+ serverName = server, toolMeta = found;
452
+ break;
453
+ }
454
+ }
455
+ if (serverName && !toolMeta)
456
+ if (await lazyConnect(state, serverName, signal))
457
+ toolMeta = findToolByName(state.toolMetadata.get(serverName), toolName);
458
+ else {
459
+ if (state.manager.getConnection(serverName)?.status === "needs-auth") {
460
+ if (!autoAuthAttempted) {
461
+ autoAuthAttempted = !0;
462
+ let autoAuth = await attemptAutoAuth(state, serverName);
463
+ if (autoAuth.status === "failed")
464
+ return {
465
+ content: [{ type: "text", text: autoAuth.message }],
466
+ details: { mode: "call", error: "auth_required", server: serverName, message: autoAuth.message }
467
+ };
468
+ if (autoAuth.status === "success" && (await state.manager.close(serverName), state.failureTracker.delete(serverName), await lazyConnect(state, serverName, signal) && (toolMeta = findToolByName(state.toolMetadata.get(serverName), toolName), !toolMeta)))
469
+ return {
470
+ content: [{ type: "text", text: `Tool "${toolName}" not found on "${serverName}" after reconnect.` }],
471
+ details: { mode: "call", error: "tool_not_found_after_reconnect", requestedTool: toolName }
472
+ };
473
+ }
474
+ if (!toolMeta && state.manager.getConnection(serverName)?.status === "needs-auth") {
475
+ let message = getAuthRequiredMessage(state, serverName);
476
+ return {
477
+ content: [{ type: "text", text: message }],
478
+ details: { mode: "call", error: "auth_required", server: serverName, message }
479
+ };
480
+ }
481
+ }
482
+ if (!toolMeta) {
483
+ let failedAgo = getFailureAgeSeconds(state, serverName);
484
+ if (failedAgo !== null)
485
+ return {
486
+ content: [{ type: "text", text: `Server "${serverName}" not available (last failed ${failedAgo}s ago)` }],
487
+ details: { mode: "call", error: "server_backoff", server: serverName }
488
+ };
489
+ }
490
+ }
491
+ let prefixMatchedServer;
492
+ if (!serverName && !toolMeta && prefixMode !== "none") {
493
+ let candidates = Object.keys(state.config.mcpServers).map((name) => ({ name, prefix: getServerPrefix(name, prefixMode) })).filter((c) => c.prefix && toolName.startsWith(c.prefix + "_")).sort((a, b) => b.prefix.length - a.prefix.length);
494
+ for (let { name: configuredServer } of candidates) {
495
+ let existingConnection = state.manager.getConnection(configuredServer);
496
+ if (getFailureAgeSeconds(state, configuredServer) !== null && existingConnection?.status !== "needs-auth")
497
+ continue;
498
+ let connected = await lazyConnect(state, configuredServer, signal);
499
+ if (!connected && state.manager.getConnection(configuredServer)?.status === "needs-auth" && !autoAuthAttempted) {
500
+ autoAuthAttempted = !0;
501
+ let autoAuth = await attemptAutoAuth(state, configuredServer);
502
+ if (autoAuth.status === "failed")
503
+ return {
504
+ content: [{ type: "text", text: autoAuth.message }],
505
+ details: { mode: "call", error: "auth_required", server: configuredServer, message: autoAuth.message }
506
+ };
507
+ autoAuth.status === "success" && (await state.manager.close(configuredServer), state.failureTracker.delete(configuredServer), connected = await lazyConnect(state, configuredServer, signal));
508
+ }
509
+ if (connected && (prefixMatchedServer || (prefixMatchedServer = configuredServer), toolMeta = findToolByName(state.toolMetadata.get(configuredServer), toolName), toolMeta)) {
510
+ serverName = configuredServer;
511
+ break;
512
+ }
513
+ }
514
+ }
515
+ if (!serverName || !toolMeta) {
516
+ if (serverOverride ? void 0 : getPiTools?.().find((tool) => tool.name === toolName && tool.name !== "mcp"))
517
+ return {
518
+ content: [{ type: "text", text: `"${toolName}" is a native Pi tool. Call ${toolName} directly instead of using mcp({ tool: "${toolName}" }).` }],
519
+ details: { mode: "call", error: "native_tool", requestedTool: toolName }
520
+ };
521
+ let hintServer = serverName ?? prefixMatchedServer, available = hintServer ? getToolNames(state, hintServer) : [], msg = `Tool "${toolName}" not found.`;
522
+ return available.length > 0 ? msg += ` Server "${hintServer}" has: ${available.join(", ")}` : msg += ' Use mcp({ search: "..." }) to search.', {
523
+ content: [{ type: "text", text: msg }],
524
+ details: { mode: "call", error: "tool_not_found", requestedTool: toolName, hintServer }
525
+ };
526
+ }
527
+ let connection = state.manager.getConnection(serverName);
528
+ if (connection?.status === "needs-auth") {
529
+ if (!autoAuthAttempted) {
530
+ autoAuthAttempted = !0;
531
+ let autoAuth = await attemptAutoAuth(state, serverName);
532
+ if (autoAuth.status === "failed")
533
+ return {
534
+ content: [{ type: "text", text: autoAuth.message }],
535
+ details: { mode: "call", error: "auth_required", server: serverName, message: autoAuth.message }
536
+ };
537
+ autoAuth.status === "success" && (await state.manager.close(serverName), state.failureTracker.delete(serverName), connection = state.manager.getConnection(serverName));
538
+ }
539
+ if (connection?.status === "needs-auth") {
540
+ let message = getAuthRequiredMessage(state, serverName);
541
+ return {
542
+ content: [{ type: "text", text: message }],
543
+ details: { mode: "call", error: "auth_required", server: serverName, message }
544
+ };
545
+ }
546
+ }
547
+ if (!connection || connection.status !== "connected") {
548
+ let failedAgo = getFailureAgeSeconds(state, serverName);
549
+ if (failedAgo !== null)
550
+ return {
551
+ content: [{ type: "text", text: `Server "${serverName}" not available (last failed ${failedAgo}s ago)` }],
552
+ details: { mode: "call", error: "server_backoff", server: serverName }
553
+ };
554
+ let definition = state.config.mcpServers[serverName];
555
+ if (!definition)
556
+ return {
557
+ content: [{ type: "text", text: `Server "${serverName}" not connected` }],
558
+ details: { mode: "call", error: "server_not_connected", server: serverName }
559
+ };
560
+ try {
561
+ if (state.ui && state.ui.setStatus("mcp", `MCP: connecting to ${serverName}...`), connection = await state.manager.connect(serverName, definition, signal), connection.status === "needs-auth") {
562
+ if (!autoAuthAttempted) {
563
+ autoAuthAttempted = !0;
564
+ let autoAuth = await attemptAutoAuth(state, serverName);
565
+ if (autoAuth.status === "failed")
566
+ return {
567
+ content: [{ type: "text", text: autoAuth.message }],
568
+ details: { mode: "call", error: "auth_required", server: serverName, message: autoAuth.message }
569
+ };
570
+ autoAuth.status === "success" && (await state.manager.close(serverName), connection = await state.manager.connect(serverName, definition, signal));
571
+ }
572
+ if (connection.status === "needs-auth") {
573
+ let message = getAuthRequiredMessage(state, serverName);
574
+ return {
575
+ content: [{ type: "text", text: message }],
576
+ details: { mode: "call", error: "auth_required", server: serverName, message }
577
+ };
578
+ }
579
+ }
580
+ if (state.failureTracker.delete(serverName), updateServerMetadata(state, serverName), updateMetadataCache(state, serverName), updateStatusBar(state), toolMeta = findToolByName(state.toolMetadata.get(serverName), toolName), !toolMeta) {
581
+ let available = getToolNames(state, serverName), hint = available.length > 0 ? `Available tools on "${serverName}": ${available.join(", ")}` : `Server "${serverName}" has no tools.`;
582
+ return {
583
+ content: [{ type: "text", text: `Tool "${toolName}" not found on "${serverName}" after reconnect. ${hint}` }],
584
+ details: { mode: "call", error: "tool_not_found_after_reconnect", requestedTool: toolName }
585
+ };
586
+ }
587
+ } catch (error) {
588
+ signal?.aborted || state.failureTracker.set(serverName, Date.now()), updateStatusBar(state);
589
+ let message = error instanceof Error ? error.message : String(error);
590
+ return {
591
+ content: [{ type: "text", text: `Failed to connect to "${serverName}": ${message}` }],
592
+ details: { mode: "call", error: signal?.aborted ? "aborted" : "connect_failed", message }
593
+ };
594
+ }
595
+ }
596
+ let uiSession = null, requestOptions = state.manager.getRequestOptions?.(serverName, signal) ?? (signal ? { signal } : void 0), outputGuardOptions = resolveMcpOutputGuardOptions(state.config.settings);
597
+ try {
598
+ if (state.manager.touch(serverName), state.manager.incrementInFlight(serverName), toolMeta.resourceUri) {
599
+ let content2 = ((await connection.client.readResource({ uri: toolMeta.resourceUri }, requestOptions)).contents ?? []).map((c) => ({
600
+ type: "text",
601
+ text: "text" in c ? c.text : "blob" in c ? `[Binary data: ${c.mimeType ?? "unknown"}]` : JSON.stringify(c)
602
+ })), guarded2 = await guardMcpOutput(content2.length > 0 ? content2 : [{ type: "text", text: "(empty resource)" }], outputGuardOptions);
603
+ return {
604
+ content: guarded2.content,
605
+ details: { mode: "call", resourceUri: toolMeta.resourceUri, server: serverName, ...guardedMcpDetails(guarded2) }
606
+ };
607
+ }
608
+ uiSession = toolMeta.uiResourceUri ? await maybeStartUiSession(state, {
609
+ serverName,
610
+ toolName: toolMeta.originalName,
611
+ toolArgs: args ?? {},
612
+ uiResourceUri: toolMeta.uiResourceUri,
613
+ streamMode: toolMeta.uiStreamMode
614
+ }) : null;
615
+ let resultPromise = connection.client.callTool({
616
+ name: toolMeta.originalName,
617
+ arguments: args ?? {},
618
+ _meta: uiSession?.requestMeta
619
+ }, void 0, requestOptions);
620
+ if (toolMeta.uiResourceUri) {
621
+ let result2 = await abortable(resultPromise, signal);
622
+ if (uiSession?.sendToolResult(result2), result2.isError) {
623
+ let mcpContent = result2.content ?? [], content3 = transformMcpContent(mcpContent), outputContent3 = content3.length > 0 ? content3 : [{ type: "text", text: "(empty result)" }], schemaText = toolMeta.inputSchema ? `
624
+
625
+ Expected parameters:
626
+ ${formatSchema(toolMeta.inputSchema)}` : "", guarded3 = await guardMcpOutput(outputContent3, { ...outputGuardOptions, prefix: "Error: ", suffix: schemaText, emptyTextFallback: "Tool execution failed", rawMcpResult: result2 });
627
+ return {
628
+ content: guarded3.content,
629
+ details: { mode: "call", error: "tool_error", ...guardedMcpDetails(guarded3) }
630
+ };
631
+ }
632
+ let content2 = resolveMcpResultContent(result2), outputContent2 = content2.length > 0 ? content2 : [{ type: "text", text: "(empty result)" }], uiMessage = uiSession?.reused ? "Updated the open UI." : "\u{1F4FA} Interactive UI is now open in your browser. I'll respond to your prompts and intents as you interact with it.", guarded2 = await guardMcpOutput(outputContent2, { ...outputGuardOptions, suffix: `
633
+
634
+ ${uiMessage}`, rawMcpResult: result2 });
635
+ return {
636
+ content: guarded2.content,
637
+ details: { mode: "call", ...guardedMcpDetails(guarded2), server: serverName, tool: toolMeta.originalName, uiOpen: !0 }
638
+ };
639
+ }
640
+ let result = await abortable(resultPromise, signal);
641
+ if (result.isError) {
642
+ let mcpContent = result.content ?? [], content2 = transformMcpContent(mcpContent), outputContent2 = content2.length > 0 ? content2 : [{ type: "text", text: "(empty result)" }], schemaText = toolMeta.inputSchema ? `
643
+
644
+ Expected parameters:
645
+ ${formatSchema(toolMeta.inputSchema)}` : "", guarded2 = await guardMcpOutput(outputContent2, { ...outputGuardOptions, prefix: "Error: ", suffix: schemaText, emptyTextFallback: "Tool execution failed", rawMcpResult: result });
646
+ return {
647
+ content: guarded2.content,
648
+ details: { mode: "call", error: "tool_error", ...guardedMcpDetails(guarded2) }
649
+ };
650
+ }
651
+ let content = resolveMcpResultContent(result), outputContent = content.length > 0 ? content : [{ type: "text", text: "(empty result)" }], guarded = await guardMcpOutput(outputContent, { ...outputGuardOptions, rawMcpResult: result });
652
+ return {
653
+ content: guarded.content,
654
+ details: { mode: "call", ...guardedMcpDetails(guarded), server: serverName, tool: toolMeta.originalName }
655
+ };
656
+ } catch (error) {
657
+ if (error instanceof UrlElicitationRequiredError) {
658
+ let action = await state.manager.handleUrlElicitationRequired(serverName, error), message2 = action === "accept" ? "The original MCP tool did not run. Complete the opened browser interaction, then retry the tool." : `The URL interaction was ${action === "decline" ? "declined" : "cancelled"}.`;
659
+ return uiSession?.sendToolCancelled(message2), {
660
+ content: [{ type: "text", text: message2 }],
661
+ details: { mode: "call", error: "url_elicitation_required", server: serverName, action }
662
+ };
663
+ }
664
+ let message = error instanceof Error ? error.message : String(error);
665
+ uiSession?.sendToolCancelled(message);
666
+ let schemaText = toolMeta.inputSchema ? `
667
+
668
+ Expected parameters:
669
+ ${formatSchema(toolMeta.inputSchema)}` : "", guarded = await guardMcpOutput([{ type: "text", text: message }], { ...outputGuardOptions, prefix: "Failed to call tool: ", suffix: schemaText });
670
+ return {
671
+ content: guarded.content,
672
+ details: { mode: "call", error: "call_failed", message: guarded.outputGuard ? "output truncated; see outputGuard.fullOutputPath" : message, ...guardedMcpDetails(guarded) }
673
+ };
674
+ } finally {
675
+ uiSession?.reused && uiSession.close(), state.manager.decrementInFlight(serverName), state.manager.touch(serverName);
676
+ }
677
+ }
678
+ export {
679
+ executeAuthComplete,
680
+ executeAuthStart,
681
+ executeCall,
682
+ executeConnect,
683
+ executeDescribe,
684
+ executeList,
685
+ executeSearch,
686
+ executeStatus,
687
+ executeUiMessages
688
+ };