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