@maxmo74/pi-coding-agent 0.0.0-stage → 1.4.0-max.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1293) hide show
  1. package/CHANGELOG.md +6397 -0
  2. package/LICENSE +21 -0
  3. package/README.md +116 -2
  4. package/dist/bun/cli.d.ts +5 -0
  5. package/dist/bun/cli.d.ts.map +1 -0
  6. package/dist/bun/cli.js +5 -0
  7. package/dist/bun/cli.js.map +1 -0
  8. package/dist/bun/restore-sandbox-env.d.ts +17 -0
  9. package/dist/bun/restore-sandbox-env.d.ts.map +1 -0
  10. package/dist/bun/restore-sandbox-env.js +36 -0
  11. package/dist/bun/restore-sandbox-env.js.map +1 -0
  12. package/dist/bun/runtime-setup.d.ts +2 -0
  13. package/dist/bun/runtime-setup.d.ts.map +1 -0
  14. package/dist/bun/runtime-setup.js +12 -0
  15. package/dist/bun/runtime-setup.js.map +1 -0
  16. package/dist/bun/sandbox-env-setup.d.ts +2 -0
  17. package/dist/bun/sandbox-env-setup.d.ts.map +1 -0
  18. package/dist/bun/sandbox-env-setup.js +4 -0
  19. package/dist/bun/sandbox-env-setup.js.map +1 -0
  20. package/dist/bundle/chunks/anthropic-messages-KRX3GRGV.js +6 -0
  21. package/dist/bundle/chunks/anthropic.js +75 -0
  22. package/dist/bundle/chunks/azure-openai-responses-YWTDZRIJ.js +2 -0
  23. package/dist/bundle/chunks/bedrock-converse-stream.js +89 -0
  24. package/dist/bundle/chunks/chunk-4UNN5OGR.js +4 -0
  25. package/dist/bundle/chunks/chunk-5AGIVGSV.js +6 -0
  26. package/dist/bundle/chunks/chunk-6QGV3IWD.js +6 -0
  27. package/dist/bundle/chunks/chunk-7CBJINYJ.js +20 -0
  28. package/dist/bundle/chunks/chunk-7DDKXS2Q.js +2 -0
  29. package/dist/bundle/chunks/chunk-7ZC4UXSL.js +2 -0
  30. package/dist/bundle/chunks/chunk-AFNTYPTW.js +65 -0
  31. package/dist/bundle/chunks/chunk-BPHHHEET.js +9 -0
  32. package/dist/bundle/chunks/chunk-BSS6T6KQ.js +2 -0
  33. package/dist/bundle/chunks/chunk-CF5GWZHW.js +31 -0
  34. package/dist/bundle/chunks/chunk-CPKYLLPC.js +2 -0
  35. package/dist/bundle/chunks/chunk-FFMDRXC4.js +10 -0
  36. package/dist/bundle/chunks/chunk-HODJBMOY.js +9 -0
  37. package/dist/bundle/chunks/chunk-HQBQWHLD.js +7 -0
  38. package/dist/bundle/chunks/chunk-HQJBN2MC.js +2 -0
  39. package/dist/bundle/chunks/chunk-JXWJOIH4.js +2 -0
  40. package/dist/bundle/chunks/chunk-KFM2CJ7Q.js +4 -0
  41. package/dist/bundle/chunks/chunk-L2ZPNLYD.js +2 -0
  42. package/dist/bundle/chunks/chunk-LAMEVJ4W.js +132 -0
  43. package/dist/bundle/chunks/chunk-LPXNMA2W.js +2 -0
  44. package/dist/bundle/chunks/chunk-LVVZS2NO.js +12 -0
  45. package/dist/bundle/chunks/chunk-M3LEVT3X.js +2 -0
  46. package/dist/bundle/chunks/chunk-MTLO5CT7.js +2 -0
  47. package/dist/bundle/chunks/chunk-P7FPUEYA.js +2 -0
  48. package/dist/bundle/chunks/chunk-PGXDEOVV.js +2 -0
  49. package/dist/bundle/chunks/chunk-PJACZCIR.js +2 -0
  50. package/dist/bundle/chunks/chunk-PMRZO46Y.js +2 -0
  51. package/dist/bundle/chunks/chunk-PRRNXB7S.js +2 -0
  52. package/dist/bundle/chunks/chunk-QTM7S6TH.js +2 -0
  53. package/dist/bundle/chunks/chunk-RDZVAGPR.js +2 -0
  54. package/dist/bundle/chunks/chunk-RFUP4YGP.js +82 -0
  55. package/dist/bundle/chunks/chunk-TMTOQ7H7.js +2 -0
  56. package/dist/bundle/chunks/chunk-UKVNB6C4.js +2 -0
  57. package/dist/bundle/chunks/chunk-USJZMAIR.js +2 -0
  58. package/dist/bundle/chunks/chunk-UTB4DTYQ.js +2 -0
  59. package/dist/bundle/chunks/chunk-V4LJ5IY6.js +44 -0
  60. package/dist/bundle/chunks/chunk-XPUTTZLN.js +16 -0
  61. package/dist/bundle/chunks/chunk-YUEEC7J5.js +1237 -0
  62. package/dist/bundle/chunks/chunk-ZN2R65UF.js +2 -0
  63. package/dist/bundle/chunks/cli-QUXYJ5RR.js +51 -0
  64. package/dist/bundle/chunks/cloudflare-workers-ai-system-one-QPZQRBK5.js +2 -0
  65. package/dist/bundle/chunks/codemode-worker.js +478 -0
  66. package/dist/bundle/chunks/easter-egg-3d-RD5RBYI2.js +2 -0
  67. package/dist/bundle/chunks/execute-XTJDRV75.js +505 -0
  68. package/dist/bundle/chunks/github-copilot.js +2 -0
  69. package/dist/bundle/chunks/google-generative-ai-J3K3YPN3.js +2 -0
  70. package/dist/bundle/chunks/google-vertex-VFXOTBVP.js +2 -0
  71. package/dist/bundle/chunks/https-proxy-agent-LVOO5TPL.js +13 -0
  72. package/dist/bundle/chunks/image-resize-worker.js +2 -0
  73. package/dist/bundle/chunks/jiti-loader-GL4HJFAD.js +21 -0
  74. package/dist/bundle/chunks/jiti-static-loader-2RCDI6B4.js +2 -0
  75. package/dist/bundle/chunks/kimi-coding.js +2 -0
  76. package/dist/bundle/chunks/lib-4AVRLBHM.js +9 -0
  77. package/dist/bundle/chunks/llama-cpp-classify-4KFSGAMH.js +22 -0
  78. package/dist/bundle/chunks/meta.js +2 -0
  79. package/dist/bundle/chunks/mistral-conversations-C2QQGYVC.js +5 -0
  80. package/dist/bundle/chunks/multipart-parser-FMGQ7342.js +3 -0
  81. package/dist/bundle/chunks/node-AUOGOBCN.js +2 -0
  82. package/dist/bundle/chunks/node-KCMANYC2.js +16 -0
  83. package/dist/bundle/chunks/openai-chatgpt.js +75 -0
  84. package/dist/bundle/chunks/openai-codex-responses-H2UJSVV3.js +10 -0
  85. package/dist/bundle/chunks/openai-codex.js +75 -0
  86. package/dist/bundle/chunks/openai-completions-QPD4B26I.js +7 -0
  87. package/dist/bundle/chunks/openai-decisions-O6PHBSCB.js +5 -0
  88. package/dist/bundle/chunks/openai-responses-JOYMWKMB.js +4 -0
  89. package/dist/bundle/chunks/openrouter-images-4WG6OOLH.js +2 -0
  90. package/dist/bundle/chunks/openrouter.js +75 -0
  91. package/dist/bundle/chunks/pi-messages-EZXKVRR6.js +8 -0
  92. package/dist/bundle/chunks/radius.js +75 -0
  93. package/dist/bundle/chunks/runtime-YKR6KZPS.js +2 -0
  94. package/dist/bundle/chunks/src-QKGKDFSU.js +4 -0
  95. package/dist/bundle/chunks/typesafe-system-one-X3JT6ECA.js +2 -0
  96. package/dist/bundle/chunks/virtual-modules-DENBSTKO.js +2 -0
  97. package/dist/bundle/chunks/xai.js +2 -0
  98. package/dist/bundle/cli-runtime.js +3 -0
  99. package/dist/bundle/cli.js +5 -0
  100. package/dist/bundle/index.js +2 -0
  101. package/dist/bundle/rpc-entry.js +3 -0
  102. package/dist/cli/args.d.ts +62 -0
  103. package/dist/cli/args.d.ts.map +1 -0
  104. package/dist/cli/args.js +473 -0
  105. package/dist/cli/args.js.map +1 -0
  106. package/dist/cli/auth-check.d.ts +19 -0
  107. package/dist/cli/auth-check.d.ts.map +1 -0
  108. package/dist/cli/auth-check.js +50 -0
  109. package/dist/cli/auth-check.js.map +1 -0
  110. package/dist/cli/auth-command.d.ts +24 -0
  111. package/dist/cli/auth-command.d.ts.map +1 -0
  112. package/dist/cli/auth-command.js +103 -0
  113. package/dist/cli/auth-command.js.map +1 -0
  114. package/dist/cli/config-selector.d.ts +16 -0
  115. package/dist/cli/config-selector.d.ts.map +1 -0
  116. package/dist/cli/config-selector.js +32 -0
  117. package/dist/cli/config-selector.js.map +1 -0
  118. package/dist/cli/credential-print.d.ts +13 -0
  119. package/dist/cli/credential-print.d.ts.map +1 -0
  120. package/dist/cli/credential-print.js +76 -0
  121. package/dist/cli/credential-print.js.map +1 -0
  122. package/dist/cli/file-processor.d.ts +15 -0
  123. package/dist/cli/file-processor.d.ts.map +1 -0
  124. package/dist/cli/file-processor.js +71 -0
  125. package/dist/cli/file-processor.js.map +1 -0
  126. package/dist/cli/initial-message.d.ts +18 -0
  127. package/dist/cli/initial-message.d.ts.map +1 -0
  128. package/dist/cli/initial-message.js +22 -0
  129. package/dist/cli/initial-message.js.map +1 -0
  130. package/dist/cli/list-models.d.ts +9 -0
  131. package/dist/cli/list-models.d.ts.map +1 -0
  132. package/dist/cli/list-models.js +98 -0
  133. package/dist/cli/list-models.js.map +1 -0
  134. package/dist/cli/project-trust.d.ts +10 -0
  135. package/dist/cli/project-trust.d.ts.map +1 -0
  136. package/dist/cli/project-trust.js +48 -0
  137. package/dist/cli/project-trust.js.map +1 -0
  138. package/dist/cli/session-picker.d.ts +10 -0
  139. package/dist/cli/session-picker.d.ts.map +1 -0
  140. package/dist/cli/session-picker.js +36 -0
  141. package/dist/cli/session-picker.js.map +1 -0
  142. package/dist/cli/setup.d.ts +2 -0
  143. package/dist/cli/setup.d.ts.map +1 -0
  144. package/dist/cli/setup.js +12 -0
  145. package/dist/cli/setup.js.map +1 -0
  146. package/dist/cli/startup-ui.d.ts +20 -0
  147. package/dist/cli/startup-ui.d.ts.map +1 -0
  148. package/dist/cli/startup-ui.js +193 -0
  149. package/dist/cli/startup-ui.js.map +1 -0
  150. package/dist/cli.d.ts +3 -0
  151. package/dist/cli.d.ts.map +1 -0
  152. package/dist/cli.js +6 -0
  153. package/dist/cli.js.map +1 -0
  154. package/dist/config.d.ts +126 -0
  155. package/dist/config.d.ts.map +1 -0
  156. package/dist/config.js +534 -0
  157. package/dist/config.js.map +1 -0
  158. package/dist/core/agent-session-runtime.d.ts +120 -0
  159. package/dist/core/agent-session-runtime.d.ts.map +1 -0
  160. package/dist/core/agent-session-runtime.js +307 -0
  161. package/dist/core/agent-session-runtime.js.map +1 -0
  162. package/dist/core/agent-session-services.d.ts +86 -0
  163. package/dist/core/agent-session-services.d.ts.map +1 -0
  164. package/dist/core/agent-session-services.js +147 -0
  165. package/dist/core/agent-session-services.js.map +1 -0
  166. package/dist/core/agent-session.d.ts +940 -0
  167. package/dist/core/agent-session.d.ts.map +1 -0
  168. package/dist/core/agent-session.js +3654 -0
  169. package/dist/core/agent-session.js.map +1 -0
  170. package/dist/core/auth-guidance.d.ts +5 -0
  171. package/dist/core/auth-guidance.d.ts.map +1 -0
  172. package/dist/core/auth-guidance.js +21 -0
  173. package/dist/core/auth-guidance.js.map +1 -0
  174. package/dist/core/auth-storage.d.ts +72 -0
  175. package/dist/core/auth-storage.d.ts.map +1 -0
  176. package/dist/core/auth-storage.js +433 -0
  177. package/dist/core/auth-storage.js.map +1 -0
  178. package/dist/core/bash-executor.d.ts +32 -0
  179. package/dist/core/bash-executor.d.ts.map +1 -0
  180. package/dist/core/bash-executor.js +101 -0
  181. package/dist/core/bash-executor.js.map +1 -0
  182. package/dist/core/bug-report-upload.d.ts +12 -0
  183. package/dist/core/bug-report-upload.d.ts.map +1 -0
  184. package/dist/core/bug-report-upload.js +22 -0
  185. package/dist/core/bug-report-upload.js.map +1 -0
  186. package/dist/core/bug-report.d.ts +184 -0
  187. package/dist/core/bug-report.d.ts.map +1 -0
  188. package/dist/core/bug-report.js +292 -0
  189. package/dist/core/bug-report.js.map +1 -0
  190. package/dist/core/cache-stats.d.ts +49 -0
  191. package/dist/core/cache-stats.d.ts.map +1 -0
  192. package/dist/core/cache-stats.js +112 -0
  193. package/dist/core/cache-stats.js.map +1 -0
  194. package/dist/core/cache-warmer.d.ts +103 -0
  195. package/dist/core/cache-warmer.d.ts.map +1 -0
  196. package/dist/core/cache-warmer.js +356 -0
  197. package/dist/core/cache-warmer.js.map +1 -0
  198. package/dist/core/client-identity.d.ts +8 -0
  199. package/dist/core/client-identity.d.ts.map +1 -0
  200. package/dist/core/client-identity.js +15 -0
  201. package/dist/core/client-identity.js.map +1 -0
  202. package/dist/core/compaction/branch-summarization.d.ts +100 -0
  203. package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
  204. package/dist/core/compaction/branch-summarization.js +253 -0
  205. package/dist/core/compaction/branch-summarization.js.map +1 -0
  206. package/dist/core/compaction/compaction.d.ts +145 -0
  207. package/dist/core/compaction/compaction.d.ts.map +1 -0
  208. package/dist/core/compaction/compaction.js +749 -0
  209. package/dist/core/compaction/compaction.js.map +1 -0
  210. package/dist/core/compaction/index.d.ts +7 -0
  211. package/dist/core/compaction/index.d.ts.map +1 -0
  212. package/dist/core/compaction/index.js +7 -0
  213. package/dist/core/compaction/index.js.map +1 -0
  214. package/dist/core/compaction/utils.d.ts +45 -0
  215. package/dist/core/compaction/utils.d.ts.map +1 -0
  216. package/dist/core/compaction/utils.js +148 -0
  217. package/dist/core/compaction/utils.js.map +1 -0
  218. package/dist/core/crash-log.d.ts +27 -0
  219. package/dist/core/crash-log.d.ts.map +1 -0
  220. package/dist/core/crash-log.js +140 -0
  221. package/dist/core/crash-log.js.map +1 -0
  222. package/dist/core/defaults.d.ts +4 -0
  223. package/dist/core/defaults.d.ts.map +1 -0
  224. package/dist/core/defaults.js +11 -0
  225. package/dist/core/defaults.js.map +1 -0
  226. package/dist/core/diagnostics.d.ts +15 -0
  227. package/dist/core/diagnostics.d.ts.map +1 -0
  228. package/dist/core/diagnostics.js +2 -0
  229. package/dist/core/diagnostics.js.map +1 -0
  230. package/dist/core/event-bus.d.ts +9 -0
  231. package/dist/core/event-bus.d.ts.map +1 -0
  232. package/dist/core/event-bus.js +25 -0
  233. package/dist/core/event-bus.js.map +1 -0
  234. package/dist/core/exec.d.ts +37 -0
  235. package/dist/core/exec.d.ts.map +1 -0
  236. package/dist/core/exec.js +119 -0
  237. package/dist/core/exec.js.map +1 -0
  238. package/dist/core/experimental.d.ts +2 -0
  239. package/dist/core/experimental.d.ts.map +1 -0
  240. package/dist/core/experimental.js +4 -0
  241. package/dist/core/experimental.js.map +1 -0
  242. package/dist/core/export-html/ansi-to-html.d.ts +22 -0
  243. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
  244. package/dist/core/export-html/ansi-to-html.js +249 -0
  245. package/dist/core/export-html/ansi-to-html.js.map +1 -0
  246. package/dist/core/export-html/index.d.ts +37 -0
  247. package/dist/core/export-html/index.d.ts.map +1 -0
  248. package/dist/core/export-html/index.js +236 -0
  249. package/dist/core/export-html/index.js.map +1 -0
  250. package/dist/core/export-html/template.css +1085 -0
  251. package/dist/core/export-html/template.html +56 -0
  252. package/dist/core/export-html/template.js +2044 -0
  253. package/dist/core/export-html/tool-renderer.d.ts +34 -0
  254. package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
  255. package/dist/core/export-html/tool-renderer.js +110 -0
  256. package/dist/core/export-html/tool-renderer.js.map +1 -0
  257. package/dist/core/export-html/vendor/highlight.min.js +1213 -0
  258. package/dist/core/export-html/vendor/marked-cjk-friendly.min.js +6 -0
  259. package/dist/core/export-html/vendor/marked.min.js +79 -0
  260. package/dist/core/extensions/index.d.ts +12 -0
  261. package/dist/core/extensions/index.d.ts.map +1 -0
  262. package/dist/core/extensions/index.js +9 -0
  263. package/dist/core/extensions/index.js.map +1 -0
  264. package/dist/core/extensions/jiti-loader.d.ts +2 -0
  265. package/dist/core/extensions/jiti-loader.d.ts.map +1 -0
  266. package/dist/core/extensions/jiti-loader.js +4 -0
  267. package/dist/core/extensions/jiti-loader.js.map +1 -0
  268. package/dist/core/extensions/jiti-static-loader.d.ts +2 -0
  269. package/dist/core/extensions/jiti-static-loader.d.ts.map +1 -0
  270. package/dist/core/extensions/jiti-static-loader.js +4 -0
  271. package/dist/core/extensions/jiti-static-loader.js.map +1 -0
  272. package/dist/core/extensions/loader.d.ts +23 -0
  273. package/dist/core/extensions/loader.d.ts.map +1 -0
  274. package/dist/core/extensions/loader.js +704 -0
  275. package/dist/core/extensions/loader.js.map +1 -0
  276. package/dist/core/extensions/runner.d.ts +215 -0
  277. package/dist/core/extensions/runner.d.ts.map +1 -0
  278. package/dist/core/extensions/runner.js +1238 -0
  279. package/dist/core/extensions/runner.js.map +1 -0
  280. package/dist/core/extensions/types.d.ts +1769 -0
  281. package/dist/core/extensions/types.d.ts.map +1 -0
  282. package/dist/core/extensions/types.js +48 -0
  283. package/dist/core/extensions/types.js.map +1 -0
  284. package/dist/core/extensions/virtual-modules.d.ts +3 -0
  285. package/dist/core/extensions/virtual-modules.d.ts.map +1 -0
  286. package/dist/core/extensions/virtual-modules.js +41 -0
  287. package/dist/core/extensions/virtual-modules.js.map +1 -0
  288. package/dist/core/extensions/wrapper.d.ts +20 -0
  289. package/dist/core/extensions/wrapper.d.ts.map +1 -0
  290. package/dist/core/extensions/wrapper.js +22 -0
  291. package/dist/core/extensions/wrapper.js.map +1 -0
  292. package/dist/core/footer-data-provider.d.ts +64 -0
  293. package/dist/core/footer-data-provider.d.ts.map +1 -0
  294. package/dist/core/footer-data-provider.js +338 -0
  295. package/dist/core/footer-data-provider.js.map +1 -0
  296. package/dist/core/http-dispatcher.d.ts +22 -0
  297. package/dist/core/http-dispatcher.d.ts.map +1 -0
  298. package/dist/core/http-dispatcher.js +98 -0
  299. package/dist/core/http-dispatcher.js.map +1 -0
  300. package/dist/core/index.d.ts +14 -0
  301. package/dist/core/index.d.ts.map +1 -0
  302. package/dist/core/index.js +13 -0
  303. package/dist/core/index.js.map +1 -0
  304. package/dist/core/key-id-schema.d.ts +6 -0
  305. package/dist/core/key-id-schema.d.ts.map +1 -0
  306. package/dist/core/key-id-schema.js +16 -0
  307. package/dist/core/key-id-schema.js.map +1 -0
  308. package/dist/core/keybindings-schema.d.ts +4 -0
  309. package/dist/core/keybindings-schema.d.ts.map +1 -0
  310. package/dist/core/keybindings-schema.js +16 -0
  311. package/dist/core/keybindings-schema.js.map +1 -0
  312. package/dist/core/keybindings.d.ts +568 -0
  313. package/dist/core/keybindings.d.ts.map +1 -0
  314. package/dist/core/keybindings.js +328 -0
  315. package/dist/core/keybindings.js.map +1 -0
  316. package/dist/core/mcp-servers.d.ts +139 -0
  317. package/dist/core/mcp-servers.d.ts.map +1 -0
  318. package/dist/core/mcp-servers.js +232 -0
  319. package/dist/core/mcp-servers.js.map +1 -0
  320. package/dist/core/messages.d.ts +77 -0
  321. package/dist/core/messages.d.ts.map +1 -0
  322. package/dist/core/messages.js +124 -0
  323. package/dist/core/messages.js.map +1 -0
  324. package/dist/core/model-config.d.ts +2312 -0
  325. package/dist/core/model-config.d.ts.map +1 -0
  326. package/dist/core/model-config.js +168 -0
  327. package/dist/core/model-config.js.map +1 -0
  328. package/dist/core/model-registry.d.ts +63 -0
  329. package/dist/core/model-registry.d.ts.map +1 -0
  330. package/dist/core/model-registry.js +144 -0
  331. package/dist/core/model-registry.js.map +1 -0
  332. package/dist/core/model-resolver.d.ts +137 -0
  333. package/dist/core/model-resolver.d.ts.map +1 -0
  334. package/dist/core/model-resolver.js +491 -0
  335. package/dist/core/model-resolver.js.map +1 -0
  336. package/dist/core/model-runtime.d.ts +145 -0
  337. package/dist/core/model-runtime.d.ts.map +1 -0
  338. package/dist/core/model-runtime.js +767 -0
  339. package/dist/core/model-runtime.js.map +1 -0
  340. package/dist/core/models-store.d.ts +22 -0
  341. package/dist/core/models-store.d.ts.map +1 -0
  342. package/dist/core/models-store.js +115 -0
  343. package/dist/core/models-store.js.map +1 -0
  344. package/dist/core/nested-tool-calls.d.ts +103 -0
  345. package/dist/core/nested-tool-calls.d.ts.map +1 -0
  346. package/dist/core/nested-tool-calls.js +179 -0
  347. package/dist/core/nested-tool-calls.js.map +1 -0
  348. package/dist/core/output-guard.d.ts +7 -0
  349. package/dist/core/output-guard.d.ts.map +1 -0
  350. package/dist/core/output-guard.js +89 -0
  351. package/dist/core/output-guard.js.map +1 -0
  352. package/dist/core/package-manager.d.ts +226 -0
  353. package/dist/core/package-manager.d.ts.map +1 -0
  354. package/dist/core/package-manager.js +2275 -0
  355. package/dist/core/package-manager.js.map +1 -0
  356. package/dist/core/pi-manifest.d.ts +9 -0
  357. package/dist/core/pi-manifest.d.ts.map +1 -0
  358. package/dist/core/pi-manifest.js +30 -0
  359. package/dist/core/pi-manifest.js.map +1 -0
  360. package/dist/core/project-trust.d.ts +15 -0
  361. package/dist/core/project-trust.d.ts.map +1 -0
  362. package/dist/core/project-trust.js +60 -0
  363. package/dist/core/project-trust.js.map +1 -0
  364. package/dist/core/prompt-templates.d.ts +59 -0
  365. package/dist/core/prompt-templates.d.ts.map +1 -0
  366. package/dist/core/prompt-templates.js +267 -0
  367. package/dist/core/prompt-templates.js.map +1 -0
  368. package/dist/core/provider-composer.d.ts +81 -0
  369. package/dist/core/provider-composer.d.ts.map +1 -0
  370. package/dist/core/provider-composer.js +492 -0
  371. package/dist/core/provider-composer.js.map +1 -0
  372. package/dist/core/radius.d.ts +7 -0
  373. package/dist/core/radius.d.ts.map +1 -0
  374. package/dist/core/radius.js +10 -0
  375. package/dist/core/radius.js.map +1 -0
  376. package/dist/core/remote-catalog-provider.d.ts +23 -0
  377. package/dist/core/remote-catalog-provider.d.ts.map +1 -0
  378. package/dist/core/remote-catalog-provider.js +190 -0
  379. package/dist/core/remote-catalog-provider.js.map +1 -0
  380. package/dist/core/resolve-config-value.d.ts +30 -0
  381. package/dist/core/resolve-config-value.d.ts.map +1 -0
  382. package/dist/core/resolve-config-value.js +247 -0
  383. package/dist/core/resolve-config-value.js.map +1 -0
  384. package/dist/core/resource-loader.d.ts +232 -0
  385. package/dist/core/resource-loader.d.ts.map +1 -0
  386. package/dist/core/resource-loader.js +1026 -0
  387. package/dist/core/resource-loader.js.map +1 -0
  388. package/dist/core/runtime-credentials.d.ts +15 -0
  389. package/dist/core/runtime-credentials.d.ts.map +1 -0
  390. package/dist/core/runtime-credentials.js +39 -0
  391. package/dist/core/runtime-credentials.js.map +1 -0
  392. package/dist/core/sdk.d.ts +117 -0
  393. package/dist/core/sdk.d.ts.map +1 -0
  394. package/dist/core/sdk.js +329 -0
  395. package/dist/core/sdk.js.map +1 -0
  396. package/dist/core/session-cwd.d.ts +19 -0
  397. package/dist/core/session-cwd.d.ts.map +1 -0
  398. package/dist/core/session-cwd.js +38 -0
  399. package/dist/core/session-cwd.js.map +1 -0
  400. package/dist/core/session-delete.d.ts +8 -0
  401. package/dist/core/session-delete.d.ts.map +1 -0
  402. package/dist/core/session-delete.js +37 -0
  403. package/dist/core/session-delete.js.map +1 -0
  404. package/dist/core/session-export.d.ts +8 -0
  405. package/dist/core/session-export.d.ts.map +1 -0
  406. package/dist/core/session-export.js +33 -0
  407. package/dist/core/session-export.js.map +1 -0
  408. package/dist/core/session-manager.d.ts +422 -0
  409. package/dist/core/session-manager.d.ts.map +1 -0
  410. package/dist/core/session-manager.js +1568 -0
  411. package/dist/core/session-manager.js.map +1 -0
  412. package/dist/core/session-move.d.ts +3 -0
  413. package/dist/core/session-move.d.ts.map +1 -0
  414. package/dist/core/session-move.js +133 -0
  415. package/dist/core/session-move.js.map +1 -0
  416. package/dist/core/session-ownership.d.ts +13 -0
  417. package/dist/core/session-ownership.d.ts.map +1 -0
  418. package/dist/core/session-ownership.js +205 -0
  419. package/dist/core/session-ownership.js.map +1 -0
  420. package/dist/core/settings-defaults.d.ts +66 -0
  421. package/dist/core/settings-defaults.d.ts.map +1 -0
  422. package/dist/core/settings-defaults.js +67 -0
  423. package/dist/core/settings-defaults.js.map +1 -0
  424. package/dist/core/settings-diagnostics.d.ts +9 -0
  425. package/dist/core/settings-diagnostics.d.ts.map +1 -0
  426. package/dist/core/settings-diagnostics.js +21 -0
  427. package/dist/core/settings-diagnostics.js.map +1 -0
  428. package/dist/core/settings-manager.d.ts +253 -0
  429. package/dist/core/settings-manager.d.ts.map +1 -0
  430. package/dist/core/settings-manager.js +1154 -0
  431. package/dist/core/settings-manager.js.map +1 -0
  432. package/dist/core/settings-schema.d.ts +231 -0
  433. package/dist/core/settings-schema.d.ts.map +1 -0
  434. package/dist/core/settings-schema.js +294 -0
  435. package/dist/core/settings-schema.js.map +1 -0
  436. package/dist/core/skills.d.ts +63 -0
  437. package/dist/core/skills.d.ts.map +1 -0
  438. package/dist/core/skills.js +412 -0
  439. package/dist/core/skills.js.map +1 -0
  440. package/dist/core/slash-commands.d.ts +15 -0
  441. package/dist/core/slash-commands.d.ts.map +1 -0
  442. package/dist/core/slash-commands.js +28 -0
  443. package/dist/core/slash-commands.js.map +1 -0
  444. package/dist/core/source-info.d.ts +33 -0
  445. package/dist/core/source-info.d.ts.map +1 -0
  446. package/dist/core/source-info.js +43 -0
  447. package/dist/core/source-info.js.map +1 -0
  448. package/dist/core/system-prompt.d.ts +77 -0
  449. package/dist/core/system-prompt.d.ts.map +1 -0
  450. package/dist/core/system-prompt.js +152 -0
  451. package/dist/core/system-prompt.js.map +1 -0
  452. package/dist/core/telemetry.d.ts +3 -0
  453. package/dist/core/telemetry.d.ts.map +1 -0
  454. package/dist/core/telemetry.js +9 -0
  455. package/dist/core/telemetry.js.map +1 -0
  456. package/dist/core/timings.d.ts +10 -0
  457. package/dist/core/timings.d.ts.map +1 -0
  458. package/dist/core/timings.js +41 -0
  459. package/dist/core/timings.js.map +1 -0
  460. package/dist/core/tools/bash.d.ts +100 -0
  461. package/dist/core/tools/bash.d.ts.map +1 -0
  462. package/dist/core/tools/bash.js +333 -0
  463. package/dist/core/tools/bash.js.map +1 -0
  464. package/dist/core/tools/edit-diff.d.ts +101 -0
  465. package/dist/core/tools/edit-diff.d.ts.map +1 -0
  466. package/dist/core/tools/edit-diff.js +421 -0
  467. package/dist/core/tools/edit-diff.js.map +1 -0
  468. package/dist/core/tools/edit.d.ts +44 -0
  469. package/dist/core/tools/edit.d.ts.map +1 -0
  470. package/dist/core/tools/edit.js +147 -0
  471. package/dist/core/tools/edit.js.map +1 -0
  472. package/dist/core/tools/file-mutation-queue.d.ts +6 -0
  473. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
  474. package/dist/core/tools/file-mutation-queue.js +52 -0
  475. package/dist/core/tools/file-mutation-queue.js.map +1 -0
  476. package/dist/core/tools/find.d.ts +42 -0
  477. package/dist/core/tools/find.d.ts.map +1 -0
  478. package/dist/core/tools/find.js +251 -0
  479. package/dist/core/tools/find.js.map +1 -0
  480. package/dist/core/tools/grep.d.ts +41 -0
  481. package/dist/core/tools/grep.d.ts.map +1 -0
  482. package/dist/core/tools/grep.js +254 -0
  483. package/dist/core/tools/grep.js.map +1 -0
  484. package/dist/core/tools/index.d.ts +43 -0
  485. package/dist/core/tools/index.d.ts.map +1 -0
  486. package/dist/core/tools/index.js +129 -0
  487. package/dist/core/tools/index.js.map +1 -0
  488. package/dist/core/tools/ls.d.ts +41 -0
  489. package/dist/core/tools/ls.d.ts.map +1 -0
  490. package/dist/core/tools/ls.js +126 -0
  491. package/dist/core/tools/ls.js.map +1 -0
  492. package/dist/core/tools/output-accumulator.d.ts +63 -0
  493. package/dist/core/tools/output-accumulator.d.ts.map +1 -0
  494. package/dist/core/tools/output-accumulator.js +214 -0
  495. package/dist/core/tools/output-accumulator.js.map +1 -0
  496. package/dist/core/tools/path-utils.d.ts +10 -0
  497. package/dist/core/tools/path-utils.d.ts.map +1 -0
  498. package/dist/core/tools/path-utils.js +99 -0
  499. package/dist/core/tools/path-utils.js.map +1 -0
  500. package/dist/core/tools/powershell.d.ts +16 -0
  501. package/dist/core/tools/powershell.d.ts.map +1 -0
  502. package/dist/core/tools/powershell.js +39 -0
  503. package/dist/core/tools/powershell.js.map +1 -0
  504. package/dist/core/tools/read.d.ts +55 -0
  505. package/dist/core/tools/read.d.ts.map +1 -0
  506. package/dist/core/tools/read.js +186 -0
  507. package/dist/core/tools/read.js.map +1 -0
  508. package/dist/core/tools/render-utils.d.ts +50 -0
  509. package/dist/core/tools/render-utils.d.ts.map +1 -0
  510. package/dist/core/tools/render-utils.js +158 -0
  511. package/dist/core/tools/render-utils.js.map +1 -0
  512. package/dist/core/tools/renderers/bash.d.ts +12 -0
  513. package/dist/core/tools/renderers/bash.d.ts.map +1 -0
  514. package/dist/core/tools/renderers/bash.js +89 -0
  515. package/dist/core/tools/renderers/bash.js.map +1 -0
  516. package/dist/core/tools/renderers/edit.d.ts +23 -0
  517. package/dist/core/tools/renderers/edit.d.ts.map +1 -0
  518. package/dist/core/tools/renderers/edit.js +168 -0
  519. package/dist/core/tools/renderers/edit.js.map +1 -0
  520. package/dist/core/tools/renderers/find.d.ts +10 -0
  521. package/dist/core/tools/renderers/find.d.ts.map +1 -0
  522. package/dist/core/tools/renderers/find.js +64 -0
  523. package/dist/core/tools/renderers/find.js.map +1 -0
  524. package/dist/core/tools/renderers/grep.d.ts +10 -0
  525. package/dist/core/tools/renderers/grep.d.ts.map +1 -0
  526. package/dist/core/tools/renderers/grep.js +69 -0
  527. package/dist/core/tools/renderers/grep.js.map +1 -0
  528. package/dist/core/tools/renderers/index.d.ts +28 -0
  529. package/dist/core/tools/renderers/index.d.ts.map +1 -0
  530. package/dist/core/tools/renderers/index.js +47 -0
  531. package/dist/core/tools/renderers/index.js.map +1 -0
  532. package/dist/core/tools/renderers/ls.d.ts +10 -0
  533. package/dist/core/tools/renderers/ls.d.ts.map +1 -0
  534. package/dist/core/tools/renderers/ls.js +58 -0
  535. package/dist/core/tools/renderers/ls.js.map +1 -0
  536. package/dist/core/tools/renderers/read.d.ts +11 -0
  537. package/dist/core/tools/renderers/read.d.ts.map +1 -0
  538. package/dist/core/tools/renderers/read.js +126 -0
  539. package/dist/core/tools/renderers/read.js.map +1 -0
  540. package/dist/core/tools/renderers/write.d.ts +10 -0
  541. package/dist/core/tools/renderers/write.d.ts.map +1 -0
  542. package/dist/core/tools/renderers/write.js +153 -0
  543. package/dist/core/tools/renderers/write.js.map +1 -0
  544. package/dist/core/tools/tool-definition-wrapper.d.ts +16 -0
  545. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
  546. package/dist/core/tools/tool-definition-wrapper.js +38 -0
  547. package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
  548. package/dist/core/tools/truncate.d.ts +84 -0
  549. package/dist/core/tools/truncate.d.ts.map +1 -0
  550. package/dist/core/tools/truncate.js +244 -0
  551. package/dist/core/tools/truncate.js.map +1 -0
  552. package/dist/core/tools/write.d.ts +30 -0
  553. package/dist/core/tools/write.d.ts.map +1 -0
  554. package/dist/core/tools/write.js +61 -0
  555. package/dist/core/tools/write.js.map +1 -0
  556. package/dist/core/trust-manager.d.ts +36 -0
  557. package/dist/core/trust-manager.d.ts.map +1 -0
  558. package/dist/core/trust-manager.js +204 -0
  559. package/dist/core/trust-manager.js.map +1 -0
  560. package/dist/core/usage-totals.d.ts +21 -0
  561. package/dist/core/usage-totals.d.ts.map +1 -0
  562. package/dist/core/usage-totals.js +81 -0
  563. package/dist/core/usage-totals.js.map +1 -0
  564. package/dist/core/virtual-models.d.ts +117 -0
  565. package/dist/core/virtual-models.d.ts.map +1 -0
  566. package/dist/core/virtual-models.js +124 -0
  567. package/dist/core/virtual-models.js.map +1 -0
  568. package/dist/extensions/codemode/execute.d.ts +16 -0
  569. package/dist/extensions/codemode/execute.d.ts.map +1 -0
  570. package/dist/extensions/codemode/execute.js +740 -0
  571. package/dist/extensions/codemode/execute.js.map +1 -0
  572. package/dist/extensions/codemode/execute.lazy.d.ts +3 -0
  573. package/dist/extensions/codemode/execute.lazy.d.ts.map +1 -0
  574. package/dist/extensions/codemode/execute.lazy.js +3 -0
  575. package/dist/extensions/codemode/execute.lazy.js.map +1 -0
  576. package/dist/extensions/codemode/index.d.ts +21 -0
  577. package/dist/extensions/codemode/index.d.ts.map +1 -0
  578. package/dist/extensions/codemode/index.js +33 -0
  579. package/dist/extensions/codemode/index.js.map +1 -0
  580. package/dist/extensions/codemode/renderer.d.ts +12 -0
  581. package/dist/extensions/codemode/renderer.d.ts.map +1 -0
  582. package/dist/extensions/codemode/renderer.js +143 -0
  583. package/dist/extensions/codemode/renderer.js.map +1 -0
  584. package/dist/extensions/codemode/tool.d.ts +124 -0
  585. package/dist/extensions/codemode/tool.d.ts.map +1 -0
  586. package/dist/extensions/codemode/tool.js +313 -0
  587. package/dist/extensions/codemode/tool.js.map +1 -0
  588. package/dist/extensions/codemode/worker.d.ts +7 -0
  589. package/dist/extensions/codemode/worker.d.ts.map +1 -0
  590. package/dist/extensions/codemode/worker.js +7 -0
  591. package/dist/extensions/codemode/worker.js.map +1 -0
  592. package/dist/extensions/index.d.ts +3 -0
  593. package/dist/extensions/index.d.ts.map +1 -0
  594. package/dist/extensions/index.js +13 -0
  595. package/dist/extensions/index.js.map +1 -0
  596. package/dist/extensions/llama/client.d.ts +69 -0
  597. package/dist/extensions/llama/client.d.ts.map +1 -0
  598. package/dist/extensions/llama/client.js +313 -0
  599. package/dist/extensions/llama/client.js.map +1 -0
  600. package/dist/extensions/llama/huggingface.d.ts +23 -0
  601. package/dist/extensions/llama/huggingface.d.ts.map +1 -0
  602. package/dist/extensions/llama/huggingface.js +141 -0
  603. package/dist/extensions/llama/huggingface.js.map +1 -0
  604. package/dist/extensions/llama/index.d.ts +3 -0
  605. package/dist/extensions/llama/index.d.ts.map +1 -0
  606. package/dist/extensions/llama/index.js +219 -0
  607. package/dist/extensions/llama/index.js.map +1 -0
  608. package/dist/extensions/llama/provider.d.ts +12 -0
  609. package/dist/extensions/llama/provider.d.ts.map +1 -0
  610. package/dist/extensions/llama/provider.js +236 -0
  611. package/dist/extensions/llama/provider.js.map +1 -0
  612. package/dist/extensions/llama/ui.d.ts +42 -0
  613. package/dist/extensions/llama/ui.d.ts.map +1 -0
  614. package/dist/extensions/llama/ui.js +428 -0
  615. package/dist/extensions/llama/ui.js.map +1 -0
  616. package/dist/extensions/mcp/cli.d.ts +21 -0
  617. package/dist/extensions/mcp/cli.d.ts.map +1 -0
  618. package/dist/extensions/mcp/cli.js +494 -0
  619. package/dist/extensions/mcp/cli.js.map +1 -0
  620. package/dist/extensions/mcp/cli.lazy.d.ts +3 -0
  621. package/dist/extensions/mcp/cli.lazy.d.ts.map +1 -0
  622. package/dist/extensions/mcp/cli.lazy.js +3 -0
  623. package/dist/extensions/mcp/cli.lazy.js.map +1 -0
  624. package/dist/extensions/mcp/config.d.ts +84 -0
  625. package/dist/extensions/mcp/config.d.ts.map +1 -0
  626. package/dist/extensions/mcp/config.js +195 -0
  627. package/dist/extensions/mcp/config.js.map +1 -0
  628. package/dist/extensions/mcp/index.d.ts +79 -0
  629. package/dist/extensions/mcp/index.d.ts.map +1 -0
  630. package/dist/extensions/mcp/index.js +1205 -0
  631. package/dist/extensions/mcp/index.js.map +1 -0
  632. package/dist/extensions/mcp/log.d.ts +16 -0
  633. package/dist/extensions/mcp/log.d.ts.map +1 -0
  634. package/dist/extensions/mcp/log.js +66 -0
  635. package/dist/extensions/mcp/log.js.map +1 -0
  636. package/dist/extensions/mcp/oauth.d.ts +102 -0
  637. package/dist/extensions/mcp/oauth.d.ts.map +1 -0
  638. package/dist/extensions/mcp/oauth.js +428 -0
  639. package/dist/extensions/mcp/oauth.js.map +1 -0
  640. package/dist/extensions/mcp/resources.d.ts +36 -0
  641. package/dist/extensions/mcp/resources.d.ts.map +1 -0
  642. package/dist/extensions/mcp/resources.js +261 -0
  643. package/dist/extensions/mcp/resources.js.map +1 -0
  644. package/dist/extensions/mcp/runtime.d.ts +98 -0
  645. package/dist/extensions/mcp/runtime.d.ts.map +1 -0
  646. package/dist/extensions/mcp/runtime.js +378 -0
  647. package/dist/extensions/mcp/runtime.js.map +1 -0
  648. package/dist/extensions/mcp/runtime.lazy.d.ts +3 -0
  649. package/dist/extensions/mcp/runtime.lazy.d.ts.map +1 -0
  650. package/dist/extensions/mcp/runtime.lazy.js +3 -0
  651. package/dist/extensions/mcp/runtime.lazy.js.map +1 -0
  652. package/dist/extensions/mcp/tools.d.ts +86 -0
  653. package/dist/extensions/mcp/tools.d.ts.map +1 -0
  654. package/dist/extensions/mcp/tools.js +309 -0
  655. package/dist/extensions/mcp/tools.js.map +1 -0
  656. package/dist/extensions/mcp/ui.d.ts +61 -0
  657. package/dist/extensions/mcp/ui.d.ts.map +1 -0
  658. package/dist/extensions/mcp/ui.js +195 -0
  659. package/dist/extensions/mcp/ui.js.map +1 -0
  660. package/dist/extensions/tool-search/index.d.ts +12 -0
  661. package/dist/extensions/tool-search/index.d.ts.map +1 -0
  662. package/dist/extensions/tool-search/index.js +15 -0
  663. package/dist/extensions/tool-search/index.js.map +1 -0
  664. package/dist/extensions/tool-search/tool.d.ts +75 -0
  665. package/dist/extensions/tool-search/tool.d.ts.map +1 -0
  666. package/dist/extensions/tool-search/tool.js +210 -0
  667. package/dist/extensions/tool-search/tool.js.map +1 -0
  668. package/dist/index.d.ts +45 -0
  669. package/dist/index.d.ts.map +1 -0
  670. package/dist/index.js +54 -0
  671. package/dist/index.js.map +1 -0
  672. package/dist/main.d.ts +16 -0
  673. package/dist/main.d.ts.map +1 -0
  674. package/dist/main.js +836 -0
  675. package/dist/main.js.map +1 -0
  676. package/dist/migrations.d.ts +33 -0
  677. package/dist/migrations.d.ts.map +1 -0
  678. package/dist/migrations.js +282 -0
  679. package/dist/migrations.js.map +1 -0
  680. package/dist/modes/index.d.ts +10 -0
  681. package/dist/modes/index.d.ts.map +1 -0
  682. package/dist/modes/index.js +8 -0
  683. package/dist/modes/index.js.map +1 -0
  684. package/dist/modes/interactive/assets/clankolas.png +0 -0
  685. package/dist/modes/interactive/bug-report.d.ts +16 -0
  686. package/dist/modes/interactive/bug-report.d.ts.map +1 -0
  687. package/dist/modes/interactive/bug-report.js +210 -0
  688. package/dist/modes/interactive/bug-report.js.map +1 -0
  689. package/dist/modes/interactive/chat-viewport.d.ts +20 -0
  690. package/dist/modes/interactive/chat-viewport.d.ts.map +1 -0
  691. package/dist/modes/interactive/chat-viewport.js +28 -0
  692. package/dist/modes/interactive/chat-viewport.js.map +1 -0
  693. package/dist/modes/interactive/components/armin.d.ts +37 -0
  694. package/dist/modes/interactive/components/armin.d.ts.map +1 -0
  695. package/dist/modes/interactive/components/armin.js +335 -0
  696. package/dist/modes/interactive/components/armin.js.map +1 -0
  697. package/dist/modes/interactive/components/assistant-message.d.ts +28 -0
  698. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
  699. package/dist/modes/interactive/components/assistant-message.js +168 -0
  700. package/dist/modes/interactive/components/assistant-message.js.map +1 -0
  701. package/dist/modes/interactive/components/auth-url.d.ts +14 -0
  702. package/dist/modes/interactive/components/auth-url.d.ts.map +1 -0
  703. package/dist/modes/interactive/components/auth-url.js +37 -0
  704. package/dist/modes/interactive/components/auth-url.js.map +1 -0
  705. package/dist/modes/interactive/components/bash-execution.d.ts +38 -0
  706. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
  707. package/dist/modes/interactive/components/bash-execution.js +178 -0
  708. package/dist/modes/interactive/components/bash-execution.js.map +1 -0
  709. package/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
  710. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
  711. package/dist/modes/interactive/components/bordered-loader.js +54 -0
  712. package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
  713. package/dist/modes/interactive/components/branch-summary-message.d.ts +17 -0
  714. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
  715. package/dist/modes/interactive/components/branch-summary-message.js +54 -0
  716. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
  717. package/dist/modes/interactive/components/compaction-summary-message.d.ts +17 -0
  718. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
  719. package/dist/modes/interactive/components/compaction-summary-message.js +55 -0
  720. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
  721. package/dist/modes/interactive/components/config-selector.d.ts +102 -0
  722. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
  723. package/dist/modes/interactive/components/config-selector.js +771 -0
  724. package/dist/modes/interactive/components/config-selector.js.map +1 -0
  725. package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
  726. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
  727. package/dist/modes/interactive/components/countdown-timer.js +33 -0
  728. package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
  729. package/dist/modes/interactive/components/custom-editor.d.ts +30 -0
  730. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
  731. package/dist/modes/interactive/components/custom-editor.js +122 -0
  732. package/dist/modes/interactive/components/custom-editor.js.map +1 -0
  733. package/dist/modes/interactive/components/custom-entry.d.ts +21 -0
  734. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -0
  735. package/dist/modes/interactive/components/custom-entry.js +58 -0
  736. package/dist/modes/interactive/components/custom-entry.js.map +1 -0
  737. package/dist/modes/interactive/components/custom-message.d.ts +22 -0
  738. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
  739. package/dist/modes/interactive/components/custom-message.js +88 -0
  740. package/dist/modes/interactive/components/custom-message.js.map +1 -0
  741. package/dist/modes/interactive/components/diff.d.ts +12 -0
  742. package/dist/modes/interactive/components/diff.d.ts.map +1 -0
  743. package/dist/modes/interactive/components/diff.js +133 -0
  744. package/dist/modes/interactive/components/diff.js.map +1 -0
  745. package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
  746. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
  747. package/dist/modes/interactive/components/dynamic-border.js +21 -0
  748. package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
  749. package/dist/modes/interactive/components/earendil-announcement.d.ts +5 -0
  750. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -0
  751. package/dist/modes/interactive/components/earendil-announcement.js +40 -0
  752. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -0
  753. package/dist/modes/interactive/components/easter-egg-3d.d.ts +104 -0
  754. package/dist/modes/interactive/components/easter-egg-3d.d.ts.map +1 -0
  755. package/dist/modes/interactive/components/easter-egg-3d.js +1139 -0
  756. package/dist/modes/interactive/components/easter-egg-3d.js.map +1 -0
  757. package/dist/modes/interactive/components/easter-egg-3d.lazy.d.ts +6 -0
  758. package/dist/modes/interactive/components/easter-egg-3d.lazy.d.ts.map +1 -0
  759. package/dist/modes/interactive/components/easter-egg-3d.lazy.js +23 -0
  760. package/dist/modes/interactive/components/easter-egg-3d.lazy.js.map +1 -0
  761. package/dist/modes/interactive/components/extension-editor.d.ts +24 -0
  762. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
  763. package/dist/modes/interactive/components/extension-editor.js +103 -0
  764. package/dist/modes/interactive/components/extension-editor.js.map +1 -0
  765. package/dist/modes/interactive/components/extension-input.d.ts +25 -0
  766. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
  767. package/dist/modes/interactive/components/extension-input.js +67 -0
  768. package/dist/modes/interactive/components/extension-input.js.map +1 -0
  769. package/dist/modes/interactive/components/extension-selector.d.ts +27 -0
  770. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
  771. package/dist/modes/interactive/components/extension-selector.js +87 -0
  772. package/dist/modes/interactive/components/extension-selector.js.map +1 -0
  773. package/dist/modes/interactive/components/first-time-setup.d.ts +25 -0
  774. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
  775. package/dist/modes/interactive/components/first-time-setup.js +109 -0
  776. package/dist/modes/interactive/components/first-time-setup.js.map +1 -0
  777. package/dist/modes/interactive/components/footer.d.ts +39 -0
  778. package/dist/modes/interactive/components/footer.d.ts.map +1 -0
  779. package/dist/modes/interactive/components/footer.js +265 -0
  780. package/dist/modes/interactive/components/footer.js.map +1 -0
  781. package/dist/modes/interactive/components/index.d.ts +33 -0
  782. package/dist/modes/interactive/components/index.d.ts.map +1 -0
  783. package/dist/modes/interactive/components/index.js +34 -0
  784. package/dist/modes/interactive/components/index.js.map +1 -0
  785. package/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
  786. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
  787. package/dist/modes/interactive/components/keybinding-hints.js +36 -0
  788. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
  789. package/dist/modes/interactive/components/login-dialog.d.ts +59 -0
  790. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
  791. package/dist/modes/interactive/components/login-dialog.js +289 -0
  792. package/dist/modes/interactive/components/login-dialog.js.map +1 -0
  793. package/dist/modes/interactive/components/markdown-transform.d.ts +3 -0
  794. package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -0
  795. package/dist/modes/interactive/components/markdown-transform.js +19 -0
  796. package/dist/modes/interactive/components/markdown-transform.js.map +1 -0
  797. package/dist/modes/interactive/components/mermaid.d.ts +11 -0
  798. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -0
  799. package/dist/modes/interactive/components/mermaid.js +75 -0
  800. package/dist/modes/interactive/components/mermaid.js.map +1 -0
  801. package/dist/modes/interactive/components/model-selector.d.ts +61 -0
  802. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
  803. package/dist/modes/interactive/components/model-selector.js +372 -0
  804. package/dist/modes/interactive/components/model-selector.js.map +1 -0
  805. package/dist/modes/interactive/components/oauth-selector.d.ts +40 -0
  806. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
  807. package/dist/modes/interactive/components/oauth-selector.js +175 -0
  808. package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
  809. package/dist/modes/interactive/components/pi-logo.d.ts +19 -0
  810. package/dist/modes/interactive/components/pi-logo.d.ts.map +1 -0
  811. package/dist/modes/interactive/components/pi-logo.js +37 -0
  812. package/dist/modes/interactive/components/pi-logo.js.map +1 -0
  813. package/dist/modes/interactive/components/radius-login-selector.d.ts +15 -0
  814. package/dist/modes/interactive/components/radius-login-selector.d.ts.map +1 -0
  815. package/dist/modes/interactive/components/radius-login-selector.js +85 -0
  816. package/dist/modes/interactive/components/radius-login-selector.js.map +1 -0
  817. package/dist/modes/interactive/components/scoped-models-selector.d.ts +47 -0
  818. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
  819. package/dist/modes/interactive/components/scoped-models-selector.js +337 -0
  820. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
  821. package/dist/modes/interactive/components/session-selector-search.d.ts +27 -0
  822. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
  823. package/dist/modes/interactive/components/session-selector-search.js +219 -0
  824. package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
  825. package/dist/modes/interactive/components/session-selector.d.ts +104 -0
  826. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
  827. package/dist/modes/interactive/components/session-selector.js +932 -0
  828. package/dist/modes/interactive/components/session-selector.js.map +1 -0
  829. package/dist/modes/interactive/components/settings-selector.d.ts +98 -0
  830. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
  831. package/dist/modes/interactive/components/settings-selector.js +753 -0
  832. package/dist/modes/interactive/components/settings-selector.js.map +1 -0
  833. package/dist/modes/interactive/components/settings-submenu.d.ts +72 -0
  834. package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -0
  835. package/dist/modes/interactive/components/settings-submenu.js +167 -0
  836. package/dist/modes/interactive/components/settings-submenu.js.map +1 -0
  837. package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
  838. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
  839. package/dist/modes/interactive/components/show-images-selector.js +39 -0
  840. package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
  841. package/dist/modes/interactive/components/skill-invocation-message.d.ts +18 -0
  842. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
  843. package/dist/modes/interactive/components/skill-invocation-message.js +57 -0
  844. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
  845. package/dist/modes/interactive/components/status-indicator.d.ts +30 -0
  846. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -0
  847. package/dist/modes/interactive/components/status-indicator.js +67 -0
  848. package/dist/modes/interactive/components/status-indicator.js.map +1 -0
  849. package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
  850. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
  851. package/dist/modes/interactive/components/theme-selector.js +50 -0
  852. package/dist/modes/interactive/components/theme-selector.js.map +1 -0
  853. package/dist/modes/interactive/components/themed-text.d.ts +17 -0
  854. package/dist/modes/interactive/components/themed-text.d.ts.map +1 -0
  855. package/dist/modes/interactive/components/themed-text.js +29 -0
  856. package/dist/modes/interactive/components/themed-text.js.map +1 -0
  857. package/dist/modes/interactive/components/thinking-selector.d.ts +23 -0
  858. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
  859. package/dist/modes/interactive/components/thinking-selector.js +109 -0
  860. package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
  861. package/dist/modes/interactive/components/tool-execution.d.ts +79 -0
  862. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
  863. package/dist/modes/interactive/components/tool-execution.js +334 -0
  864. package/dist/modes/interactive/components/tool-execution.js.map +1 -0
  865. package/dist/modes/interactive/components/tree-selector.d.ts +95 -0
  866. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
  867. package/dist/modes/interactive/components/tree-selector.js +1250 -0
  868. package/dist/modes/interactive/components/tree-selector.js.map +1 -0
  869. package/dist/modes/interactive/components/trust-selector.d.ts +23 -0
  870. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -0
  871. package/dist/modes/interactive/components/trust-selector.js +91 -0
  872. package/dist/modes/interactive/components/trust-selector.js.map +1 -0
  873. package/dist/modes/interactive/components/user-message-selector.d.ts +31 -0
  874. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
  875. package/dist/modes/interactive/components/user-message-selector.js +122 -0
  876. package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
  877. package/dist/modes/interactive/components/user-message.d.ts +18 -0
  878. package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
  879. package/dist/modes/interactive/components/user-message.js +54 -0
  880. package/dist/modes/interactive/components/user-message.js.map +1 -0
  881. package/dist/modes/interactive/components/visual-truncate.d.ts +48 -0
  882. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
  883. package/dist/modes/interactive/components/visual-truncate.js +66 -0
  884. package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
  885. package/dist/modes/interactive/external-editor.d.ts +12 -0
  886. package/dist/modes/interactive/external-editor.d.ts.map +1 -0
  887. package/dist/modes/interactive/external-editor.js +38 -0
  888. package/dist/modes/interactive/external-editor.js.map +1 -0
  889. package/dist/modes/interactive/interactive-mode.d.ts +491 -0
  890. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
  891. package/dist/modes/interactive/interactive-mode.js +6060 -0
  892. package/dist/modes/interactive/interactive-mode.js.map +1 -0
  893. package/dist/modes/interactive/model-catalog-refresh.d.ts +7 -0
  894. package/dist/modes/interactive/model-catalog-refresh.d.ts.map +1 -0
  895. package/dist/modes/interactive/model-catalog-refresh.js +34 -0
  896. package/dist/modes/interactive/model-catalog-refresh.js.map +1 -0
  897. package/dist/modes/interactive/model-search.d.ts +22 -0
  898. package/dist/modes/interactive/model-search.d.ts.map +1 -0
  899. package/dist/modes/interactive/model-search.js +36 -0
  900. package/dist/modes/interactive/model-search.js.map +1 -0
  901. package/dist/modes/interactive/program-status-reporter.d.ts +34 -0
  902. package/dist/modes/interactive/program-status-reporter.d.ts.map +1 -0
  903. package/dist/modes/interactive/program-status-reporter.js +110 -0
  904. package/dist/modes/interactive/program-status-reporter.js.map +1 -0
  905. package/dist/modes/interactive/session-share.d.ts +18 -0
  906. package/dist/modes/interactive/session-share.d.ts.map +1 -0
  907. package/dist/modes/interactive/session-share.js +195 -0
  908. package/dist/modes/interactive/session-share.js.map +1 -0
  909. package/dist/modes/interactive/theme/dark.json +78 -0
  910. package/dist/modes/interactive/theme/light.json +78 -0
  911. package/dist/modes/interactive/theme/system-theme.d.ts +55 -0
  912. package/dist/modes/interactive/theme/system-theme.d.ts.map +1 -0
  913. package/dist/modes/interactive/theme/system-theme.js +546 -0
  914. package/dist/modes/interactive/theme/system-theme.js.map +1 -0
  915. package/dist/modes/interactive/theme/theme-controller.d.ts +81 -0
  916. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -0
  917. package/dist/modes/interactive/theme/theme-controller.js +210 -0
  918. package/dist/modes/interactive/theme/theme-controller.js.map +1 -0
  919. package/dist/modes/interactive/theme/theme-schema.d.ts +28 -0
  920. package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -0
  921. package/dist/modes/interactive/theme/theme-schema.js +105 -0
  922. package/dist/modes/interactive/theme/theme-schema.js.map +1 -0
  923. package/dist/modes/interactive/theme/theme-tokens.d.ts +257 -0
  924. package/dist/modes/interactive/theme/theme-tokens.d.ts.map +1 -0
  925. package/dist/modes/interactive/theme/theme-tokens.js +94 -0
  926. package/dist/modes/interactive/theme/theme-tokens.js.map +1 -0
  927. package/dist/modes/interactive/theme/theme.d.ts +155 -0
  928. package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
  929. package/dist/modes/interactive/theme/theme.js +905 -0
  930. package/dist/modes/interactive/theme/theme.js.map +1 -0
  931. package/dist/modes/interactive/tui-renderer.d.ts +22 -0
  932. package/dist/modes/interactive/tui-renderer.d.ts.map +1 -0
  933. package/dist/modes/interactive/tui-renderer.js +67 -0
  934. package/dist/modes/interactive/tui-renderer.js.map +1 -0
  935. package/dist/modes/json-event.d.ts +34 -0
  936. package/dist/modes/json-event.d.ts.map +1 -0
  937. package/dist/modes/json-event.js +29 -0
  938. package/dist/modes/json-event.js.map +1 -0
  939. package/dist/modes/print-mode.d.ts +28 -0
  940. package/dist/modes/print-mode.d.ts.map +1 -0
  941. package/dist/modes/print-mode.js +146 -0
  942. package/dist/modes/print-mode.js.map +1 -0
  943. package/dist/modes/rpc/jsonl.d.ts +17 -0
  944. package/dist/modes/rpc/jsonl.d.ts.map +1 -0
  945. package/dist/modes/rpc/jsonl.js +49 -0
  946. package/dist/modes/rpc/jsonl.js.map +1 -0
  947. package/dist/modes/rpc/rpc-client.d.ts +254 -0
  948. package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
  949. package/dist/modes/rpc/rpc-client.js +499 -0
  950. package/dist/modes/rpc/rpc-client.js.map +1 -0
  951. package/dist/modes/rpc/rpc-mode.d.ts +20 -0
  952. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
  953. package/dist/modes/rpc/rpc-mode.js +655 -0
  954. package/dist/modes/rpc/rpc-mode.js.map +1 -0
  955. package/dist/modes/rpc/rpc-types.d.ts +478 -0
  956. package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
  957. package/dist/modes/rpc/rpc-types.js +8 -0
  958. package/dist/modes/rpc/rpc-types.js.map +1 -0
  959. package/dist/package-manager-cli.d.ts +9 -0
  960. package/dist/package-manager-cli.d.ts.map +1 -0
  961. package/dist/package-manager-cli.js +1015 -0
  962. package/dist/package-manager-cli.js.map +1 -0
  963. package/dist/rpc-entry.d.ts +3 -0
  964. package/dist/rpc-entry.d.ts.map +1 -0
  965. package/dist/rpc-entry.js +11 -0
  966. package/dist/rpc-entry.js.map +1 -0
  967. package/dist/utils/abort.d.ts +5 -0
  968. package/dist/utils/abort.d.ts.map +1 -0
  969. package/dist/utils/abort.js +48 -0
  970. package/dist/utils/abort.js.map +1 -0
  971. package/dist/utils/ansi.d.ts +10 -0
  972. package/dist/utils/ansi.d.ts.map +1 -0
  973. package/dist/utils/ansi.js +74 -0
  974. package/dist/utils/ansi.js.map +1 -0
  975. package/dist/utils/changelog.d.ts +22 -0
  976. package/dist/utils/changelog.d.ts.map +1 -0
  977. package/dist/utils/changelog.js +165 -0
  978. package/dist/utils/changelog.js.map +1 -0
  979. package/dist/utils/child-process.d.ts +18 -0
  980. package/dist/utils/child-process.d.ts.map +1 -0
  981. package/dist/utils/child-process.js +106 -0
  982. package/dist/utils/child-process.js.map +1 -0
  983. package/dist/utils/clipboard-command.d.ts +7 -0
  984. package/dist/utils/clipboard-command.d.ts.map +1 -0
  985. package/dist/utils/clipboard-command.js +48 -0
  986. package/dist/utils/clipboard-command.js.map +1 -0
  987. package/dist/utils/clipboard-image.d.ts +11 -0
  988. package/dist/utils/clipboard-image.d.ts.map +1 -0
  989. package/dist/utils/clipboard-image.js +214 -0
  990. package/dist/utils/clipboard-image.js.map +1 -0
  991. package/dist/utils/clipboard.d.ts +6 -0
  992. package/dist/utils/clipboard.d.ts.map +1 -0
  993. package/dist/utils/clipboard.js +162 -0
  994. package/dist/utils/clipboard.js.map +1 -0
  995. package/dist/utils/deprecation.d.ts +4 -0
  996. package/dist/utils/deprecation.d.ts.map +1 -0
  997. package/dist/utils/deprecation.js +13 -0
  998. package/dist/utils/deprecation.js.map +1 -0
  999. package/dist/utils/exif-orientation.d.ts +5 -0
  1000. package/dist/utils/exif-orientation.d.ts.map +1 -0
  1001. package/dist/utils/exif-orientation.js +157 -0
  1002. package/dist/utils/exif-orientation.js.map +1 -0
  1003. package/dist/utils/frontmatter.d.ts +8 -0
  1004. package/dist/utils/frontmatter.d.ts.map +1 -0
  1005. package/dist/utils/frontmatter.js +27 -0
  1006. package/dist/utils/frontmatter.js.map +1 -0
  1007. package/dist/utils/fs-watch.d.ts +5 -0
  1008. package/dist/utils/fs-watch.d.ts.map +1 -0
  1009. package/dist/utils/fs-watch.js +25 -0
  1010. package/dist/utils/fs-watch.js.map +1 -0
  1011. package/dist/utils/git.d.ts +26 -0
  1012. package/dist/utils/git.d.ts.map +1 -0
  1013. package/dist/utils/git.js +195 -0
  1014. package/dist/utils/git.js.map +1 -0
  1015. package/dist/utils/html.d.ts +7 -0
  1016. package/dist/utils/html.d.ts.map +1 -0
  1017. package/dist/utils/html.js +40 -0
  1018. package/dist/utils/html.js.map +1 -0
  1019. package/dist/utils/image-convert.d.ts +22 -0
  1020. package/dist/utils/image-convert.d.ts.map +1 -0
  1021. package/dist/utils/image-convert.js +84 -0
  1022. package/dist/utils/image-convert.js.map +1 -0
  1023. package/dist/utils/image-process.d.ts +18 -0
  1024. package/dist/utils/image-process.d.ts.map +1 -0
  1025. package/dist/utils/image-process.js +83 -0
  1026. package/dist/utils/image-process.js.map +1 -0
  1027. package/dist/utils/image-resize-core.d.ts +42 -0
  1028. package/dist/utils/image-resize-core.d.ts.map +1 -0
  1029. package/dist/utils/image-resize-core.js +129 -0
  1030. package/dist/utils/image-resize-core.js.map +1 -0
  1031. package/dist/utils/image-resize-worker.d.ts +2 -0
  1032. package/dist/utils/image-resize-worker.d.ts.map +1 -0
  1033. package/dist/utils/image-resize-worker.js +32 -0
  1034. package/dist/utils/image-resize-worker.js.map +1 -0
  1035. package/dist/utils/image-resize.d.ts +16 -0
  1036. package/dist/utils/image-resize.d.ts.map +1 -0
  1037. package/dist/utils/image-resize.js +96 -0
  1038. package/dist/utils/image-resize.js.map +1 -0
  1039. package/dist/utils/json.d.ts +3 -0
  1040. package/dist/utils/json.d.ts.map +1 -0
  1041. package/dist/utils/json.js +7 -0
  1042. package/dist/utils/json.js.map +1 -0
  1043. package/dist/utils/management-http.d.ts +25 -0
  1044. package/dist/utils/management-http.d.ts.map +1 -0
  1045. package/dist/utils/management-http.js +54 -0
  1046. package/dist/utils/management-http.js.map +1 -0
  1047. package/dist/utils/mime.d.ts +3 -0
  1048. package/dist/utils/mime.d.ts.map +1 -0
  1049. package/dist/utils/mime.js +110 -0
  1050. package/dist/utils/mime.js.map +1 -0
  1051. package/dist/utils/open-browser.d.ts +9 -0
  1052. package/dist/utils/open-browser.d.ts.map +1 -0
  1053. package/dist/utils/open-browser.js +22 -0
  1054. package/dist/utils/open-browser.js.map +1 -0
  1055. package/dist/utils/output-files.d.ts +15 -0
  1056. package/dist/utils/output-files.d.ts.map +1 -0
  1057. package/dist/utils/output-files.js +30 -0
  1058. package/dist/utils/output-files.js.map +1 -0
  1059. package/dist/utils/paths.d.ts +34 -0
  1060. package/dist/utils/paths.d.ts.map +1 -0
  1061. package/dist/utils/paths.js +115 -0
  1062. package/dist/utils/paths.js.map +1 -0
  1063. package/dist/utils/photon.d.ts +21 -0
  1064. package/dist/utils/photon.d.ts.map +1 -0
  1065. package/dist/utils/photon.js +121 -0
  1066. package/dist/utils/photon.js.map +1 -0
  1067. package/dist/utils/pi-user-agent.d.ts +3 -0
  1068. package/dist/utils/pi-user-agent.d.ts.map +1 -0
  1069. package/dist/utils/pi-user-agent.js +6 -0
  1070. package/dist/utils/pi-user-agent.js.map +1 -0
  1071. package/dist/utils/shell.d.ts +32 -0
  1072. package/dist/utils/shell.d.ts.map +1 -0
  1073. package/dist/utils/shell.js +235 -0
  1074. package/dist/utils/shell.js.map +1 -0
  1075. package/dist/utils/sleep.d.ts +5 -0
  1076. package/dist/utils/sleep.d.ts.map +1 -0
  1077. package/dist/utils/sleep.js +17 -0
  1078. package/dist/utils/sleep.js.map +1 -0
  1079. package/dist/utils/syntax-highlight.d.ts +13 -0
  1080. package/dist/utils/syntax-highlight.d.ts.map +1 -0
  1081. package/dist/utils/syntax-highlight.js +184 -0
  1082. package/dist/utils/syntax-highlight.js.map +1 -0
  1083. package/dist/utils/text.d.ts +8 -0
  1084. package/dist/utils/text.d.ts.map +1 -0
  1085. package/dist/utils/text.js +9 -0
  1086. package/dist/utils/text.js.map +1 -0
  1087. package/dist/utils/tool-result-images.d.ts +21 -0
  1088. package/dist/utils/tool-result-images.d.ts.map +1 -0
  1089. package/dist/utils/tool-result-images.js +48 -0
  1090. package/dist/utils/tool-result-images.js.map +1 -0
  1091. package/dist/utils/tools-manager.d.ts +13 -0
  1092. package/dist/utils/tools-manager.d.ts.map +1 -0
  1093. package/dist/utils/tools-manager.js +339 -0
  1094. package/dist/utils/tools-manager.js.map +1 -0
  1095. package/dist/utils/version-check.d.ts +55 -0
  1096. package/dist/utils/version-check.d.ts.map +1 -0
  1097. package/dist/utils/version-check.js +143 -0
  1098. package/dist/utils/version-check.js.map +1 -0
  1099. package/dist/utils/windows-self-update.d.ts +3 -0
  1100. package/dist/utils/windows-self-update.d.ts.map +1 -0
  1101. package/dist/utils/windows-self-update.js +77 -0
  1102. package/dist/utils/windows-self-update.js.map +1 -0
  1103. package/dist/utils/wsl.d.ts +3 -0
  1104. package/dist/utils/wsl.d.ts.map +1 -0
  1105. package/dist/utils/wsl.js +15 -0
  1106. package/dist/utils/wsl.js.map +1 -0
  1107. package/dist/utils/zip.d.ts +7 -0
  1108. package/dist/utils/zip.d.ts.map +1 -0
  1109. package/dist/utils/zip.js +60 -0
  1110. package/dist/utils/zip.js.map +1 -0
  1111. package/docs/cli-integration.md +106 -0
  1112. package/docs/cli.md +333 -0
  1113. package/docs/codemode.md +230 -0
  1114. package/docs/compaction.md +463 -0
  1115. package/docs/configuration.md +47 -0
  1116. package/docs/containerization.md +183 -0
  1117. package/docs/custom-provider.md +227 -0
  1118. package/docs/docs.json +220 -0
  1119. package/docs/environment-variables.md +102 -0
  1120. package/docs/extensions.md +3333 -0
  1121. package/docs/how-pi-works.md +49 -0
  1122. package/docs/images/doom-extension.png +0 -0
  1123. package/docs/images/exy.png +0 -0
  1124. package/docs/images/interactive-mode.png +0 -0
  1125. package/docs/images/tree-view.png +0 -0
  1126. package/docs/index.md +39 -0
  1127. package/docs/json.md +226 -0
  1128. package/docs/keybindings.md +195 -0
  1129. package/docs/llama-cpp.md +132 -0
  1130. package/docs/mcp.md +272 -0
  1131. package/docs/message-types.md +279 -0
  1132. package/docs/models-configuration.md +196 -0
  1133. package/docs/models.md +225 -0
  1134. package/docs/nvidia-rtx-llama-cpp.md +96 -0
  1135. package/docs/packages.md +151 -0
  1136. package/docs/prompt-templates.md +59 -0
  1137. package/docs/providers.md +247 -0
  1138. package/docs/quickstart.md +140 -0
  1139. package/docs/rpc-commands.md +860 -0
  1140. package/docs/rpc-extension-ui.md +200 -0
  1141. package/docs/rpc.md +193 -0
  1142. package/docs/sdk.md +147 -0
  1143. package/docs/security.md +99 -0
  1144. package/docs/session-format.md +293 -0
  1145. package/docs/sessions.md +66 -0
  1146. package/docs/settings.md +172 -0
  1147. package/docs/shell-aliases.md +93 -0
  1148. package/docs/skills.md +93 -0
  1149. package/docs/slash-commands.md +61 -0
  1150. package/docs/terminal-setup.md +233 -0
  1151. package/docs/termux.md +117 -0
  1152. package/docs/themes.md +138 -0
  1153. package/docs/tmux.md +55 -0
  1154. package/docs/tui.md +197 -0
  1155. package/docs/usage.md +94 -0
  1156. package/docs/virtual-models.md +114 -0
  1157. package/docs/windows.md +81 -0
  1158. package/examples/README.md +36 -0
  1159. package/examples/extensions/README.md +214 -0
  1160. package/examples/extensions/auto-commit-on-exit.ts +49 -0
  1161. package/examples/extensions/bash-spawn-hook.ts +30 -0
  1162. package/examples/extensions/bookmark.ts +50 -0
  1163. package/examples/extensions/border-status-editor.ts +150 -0
  1164. package/examples/extensions/built-in-tool-renderer.ts +225 -0
  1165. package/examples/extensions/claude-rules.ts +86 -0
  1166. package/examples/extensions/commands.ts +72 -0
  1167. package/examples/extensions/confirm-destructive.ts +59 -0
  1168. package/examples/extensions/custom-compaction.ts +117 -0
  1169. package/examples/extensions/custom-footer.ts +64 -0
  1170. package/examples/extensions/custom-header.ts +73 -0
  1171. package/examples/extensions/custom-provider-anthropic/index.ts +613 -0
  1172. package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -0
  1173. package/examples/extensions/custom-provider-anthropic/package.json +19 -0
  1174. package/examples/extensions/custom-provider-gitlab-duo/index.ts +405 -0
  1175. package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -0
  1176. package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -0
  1177. package/examples/extensions/debug-provider.ts +90 -0
  1178. package/examples/extensions/dirty-repo-guard.ts +56 -0
  1179. package/examples/extensions/doom-overlay/README.md +46 -0
  1180. package/examples/extensions/doom-overlay/doom/build/doom.js +21 -0
  1181. package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
  1182. package/examples/extensions/doom-overlay/doom/build.sh +152 -0
  1183. package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +72 -0
  1184. package/examples/extensions/doom-overlay/doom-component.ts +132 -0
  1185. package/examples/extensions/doom-overlay/doom-engine.ts +173 -0
  1186. package/examples/extensions/doom-overlay/doom-keys.ts +104 -0
  1187. package/examples/extensions/doom-overlay/index.ts +74 -0
  1188. package/examples/extensions/doom-overlay/wad-finder.ts +55 -0
  1189. package/examples/extensions/dynamic-resources/SKILL.md +8 -0
  1190. package/examples/extensions/dynamic-resources/dynamic.json +81 -0
  1191. package/examples/extensions/dynamic-resources/dynamic.md +5 -0
  1192. package/examples/extensions/dynamic-resources/index.ts +15 -0
  1193. package/examples/extensions/dynamic-tools.ts +74 -0
  1194. package/examples/extensions/entry-renderer.ts +41 -0
  1195. package/examples/extensions/event-bus.ts +43 -0
  1196. package/examples/extensions/file-trigger.ts +41 -0
  1197. package/examples/extensions/git-checkpoint.ts +53 -0
  1198. package/examples/extensions/git-merge-and-resolve.ts +115 -0
  1199. package/examples/extensions/github-issue-autocomplete.ts +185 -0
  1200. package/examples/extensions/gondolin/index.ts +531 -0
  1201. package/examples/extensions/gondolin/package-lock.json +175 -0
  1202. package/examples/extensions/gondolin/package.json +19 -0
  1203. package/examples/extensions/handoff.ts +190 -0
  1204. package/examples/extensions/hello.ts +26 -0
  1205. package/examples/extensions/hidden-thinking-label.ts +53 -0
  1206. package/examples/extensions/inline-bash.ts +94 -0
  1207. package/examples/extensions/input-transform-streaming.ts +39 -0
  1208. package/examples/extensions/input-transform.ts +43 -0
  1209. package/examples/extensions/interactive-shell.ts +196 -0
  1210. package/examples/extensions/jev-router.ts +113 -0
  1211. package/examples/extensions/mac-system-theme.ts +47 -0
  1212. package/examples/extensions/message-renderer.ts +59 -0
  1213. package/examples/extensions/minimal-mode.ts +353 -0
  1214. package/examples/extensions/modal-editor.ts +85 -0
  1215. package/examples/extensions/model-status.ts +31 -0
  1216. package/examples/extensions/notify.ts +57 -0
  1217. package/examples/extensions/overlay-qa-tests.ts +1450 -0
  1218. package/examples/extensions/overlay-test.ts +153 -0
  1219. package/examples/extensions/permission-gate.ts +34 -0
  1220. package/examples/extensions/pirate.ts +47 -0
  1221. package/examples/extensions/plan-mode/README.md +66 -0
  1222. package/examples/extensions/plan-mode/index.ts +394 -0
  1223. package/examples/extensions/plan-mode/utils.ts +168 -0
  1224. package/examples/extensions/preset.ts +438 -0
  1225. package/examples/extensions/project-trust.ts +64 -0
  1226. package/examples/extensions/prompt-customizer.ts +49 -0
  1227. package/examples/extensions/protected-paths.ts +30 -0
  1228. package/examples/extensions/provider-payload.ts +18 -0
  1229. package/examples/extensions/qna.ts +118 -0
  1230. package/examples/extensions/question.ts +286 -0
  1231. package/examples/extensions/questionnaire.ts +448 -0
  1232. package/examples/extensions/rainbow-editor.ts +88 -0
  1233. package/examples/extensions/reload-runtime.ts +49 -0
  1234. package/examples/extensions/rpc-demo.ts +118 -0
  1235. package/examples/extensions/sandbox/index.ts +321 -0
  1236. package/examples/extensions/sandbox/package-lock.json +92 -0
  1237. package/examples/extensions/sandbox/package.json +19 -0
  1238. package/examples/extensions/send-user-message.ts +97 -0
  1239. package/examples/extensions/session-name.ts +27 -0
  1240. package/examples/extensions/shutdown-command.ts +63 -0
  1241. package/examples/extensions/snake.ts +343 -0
  1242. package/examples/extensions/space-invaders.ts +560 -0
  1243. package/examples/extensions/ssh.ts +220 -0
  1244. package/examples/extensions/status-line.ts +32 -0
  1245. package/examples/extensions/structured-output.ts +65 -0
  1246. package/examples/extensions/subagent/README.md +177 -0
  1247. package/examples/extensions/subagent/agents/planner.md +37 -0
  1248. package/examples/extensions/subagent/agents/reviewer.md +35 -0
  1249. package/examples/extensions/subagent/agents/scout.md +50 -0
  1250. package/examples/extensions/subagent/agents/worker.md +24 -0
  1251. package/examples/extensions/subagent/agents.ts +157 -0
  1252. package/examples/extensions/subagent/index.ts +1036 -0
  1253. package/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
  1254. package/examples/extensions/subagent/prompts/implement.md +10 -0
  1255. package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
  1256. package/examples/extensions/summarize.ts +199 -0
  1257. package/examples/extensions/system-prompt-header.ts +17 -0
  1258. package/examples/extensions/tic-tac-toe.ts +1008 -0
  1259. package/examples/extensions/timed-confirm.ts +70 -0
  1260. package/examples/extensions/titlebar-spinner.ts +58 -0
  1261. package/examples/extensions/todo.ts +304 -0
  1262. package/examples/extensions/tool-override.ts +144 -0
  1263. package/examples/extensions/tools.ts +148 -0
  1264. package/examples/extensions/trigger-compact.ts +50 -0
  1265. package/examples/extensions/truncated-tool.ts +195 -0
  1266. package/examples/extensions/widget-placement.ts +9 -0
  1267. package/examples/extensions/with-deps/index.ts +32 -0
  1268. package/examples/extensions/with-deps/package-lock.json +31 -0
  1269. package/examples/extensions/with-deps/package.json +22 -0
  1270. package/examples/extensions/working-indicator.ts +123 -0
  1271. package/examples/extensions/working-message-test.ts +25 -0
  1272. package/examples/rpc-client.ts +35 -0
  1273. package/examples/rpc-extension-ui.ts +661 -0
  1274. package/examples/sdk/01-minimal.ts +26 -0
  1275. package/examples/sdk/02-custom-model.ts +49 -0
  1276. package/examples/sdk/03-custom-prompt.ts +75 -0
  1277. package/examples/sdk/04-skills.ts +55 -0
  1278. package/examples/sdk/05-tools.ts +48 -0
  1279. package/examples/sdk/06-extensions.ts +99 -0
  1280. package/examples/sdk/07-context-files.ts +47 -0
  1281. package/examples/sdk/08-prompt-templates.ts +51 -0
  1282. package/examples/sdk/09-api-keys-and-oauth.ts +34 -0
  1283. package/examples/sdk/10-settings.ts +53 -0
  1284. package/examples/sdk/11-sessions.ts +52 -0
  1285. package/examples/sdk/12-full-control.ts +74 -0
  1286. package/examples/sdk/13-session-runtime.ts +67 -0
  1287. package/examples/sdk/14-codemode-mcp.ts +61 -0
  1288. package/examples/sdk/README.md +141 -0
  1289. package/package.json +94 -5
  1290. package/schemas/keybindings.schema.json +397 -0
  1291. package/schemas/models.schema.json +1211 -0
  1292. package/schemas/settings.schema.json +792 -0
  1293. package/schemas/theme.schema.json +365 -0
@@ -0,0 +1,378 @@
1
+ /**
2
+ * The part of the MCP integration that talks to servers: connections, transports, and OAuth
3
+ * sign-in. It pulls in the MCP client, so index.ts loads it through runtime.lazy.ts only when a
4
+ * server is configured.
5
+ */
6
+ import { homedir } from "node:os";
7
+ import { basename, join, resolve } from "node:path";
8
+ import { setTimeout as sleep } from "node:timers/promises";
9
+ import { pathToFileURL } from "node:url";
10
+ import { JSON_RPC_ERROR_CODES, McpAuthRequiredError, McpClient, McpError, McpHttpError, McpSessionExpiredError, StdioTransport, StreamableHttpTransport, } from "@earendil-works/pi-mcp";
11
+ import { McpOAuthAuthorizationRequiredError } from "@earendil-works/pi-mcp/oauth";
12
+ import { VERSION } from "../../config.js";
13
+ import { resolveConfigValueOrThrow, resolveHeadersOrThrow } from "../../core/resolve-config-value.js";
14
+ import { createMcpAuthProvider, } from "./oauth.js";
15
+ export { McpServerLog } from "./log.js";
16
+ export { McpOAuthCredentialStore, McpSignInCancelledError, signInMcpServer } from "./oauth.js";
17
+ const DEFAULT_TIMEOUT_SECONDS = 60;
18
+ const STDERR_TAIL_CHARS = 2_000;
19
+ /** Delays between attempts to connect to an HTTP server that failed with a transient error. */
20
+ const CONNECT_RETRY_DELAYS_MS = [250, 1_000];
21
+ function errorMessage(error) {
22
+ return error instanceof Error ? error.message : String(error);
23
+ }
24
+ /** Network failures and overloaded or restarting servers, which are worth another attempt. */
25
+ function isTransientError(error) {
26
+ if (error instanceof McpHttpError) {
27
+ return error.status === 408 || error.status === 429 || (error.status >= 500 && error.status !== 501);
28
+ }
29
+ return error instanceof TypeError;
30
+ }
31
+ function signInRequiredMessage(entry) {
32
+ const provider = "url" in entry.config ? entry.config.auth?.provider : undefined;
33
+ return `MCP server "${entry.name}" requires sign-in. Run ${provider ? `/login ${provider}` : "/mcp"} to sign in.`;
34
+ }
35
+ /** HTTP servers authenticate with OAuth unless the config supplies an `Authorization` header or `auth`. */
36
+ function usesOAuth(entry) {
37
+ const { config } = entry;
38
+ if (!("url" in config) || config.auth)
39
+ return false;
40
+ return !Object.keys(config.headers ?? {}).some((header) => header.toLowerCase() === "authorization");
41
+ }
42
+ /** `~` and `~/…` (also `~\…` on Windows) name the home directory, like in a shell. */
43
+ function expandHome(value) {
44
+ if (value === "~")
45
+ return homedir();
46
+ if (value.startsWith("~/") || (process.platform === "win32" && value.startsWith("~\\"))) {
47
+ return join(homedir(), value.slice(2));
48
+ }
49
+ return value;
50
+ }
51
+ export function createDefaultTransport(entry, cwd, authProvider) {
52
+ const { config, name } = entry;
53
+ if ("url" in config) {
54
+ return new StreamableHttpTransport({
55
+ url: config.url,
56
+ headers: resolveHeadersOrThrow(config.headers, `MCP server "${name}"`),
57
+ authProvider,
58
+ });
59
+ }
60
+ const env = {};
61
+ for (const [key, value] of Object.entries(config.env ?? {})) {
62
+ env[key] = resolveConfigValueOrThrow(value, `MCP server "${name}" env "${key}"`);
63
+ }
64
+ return new StdioTransport({
65
+ command: expandHome(config.command),
66
+ args: config.args?.map(expandHome),
67
+ cwd: resolve(cwd, expandHome(config.cwd ?? ".")),
68
+ env,
69
+ stderr: "pipe",
70
+ });
71
+ }
72
+ /** Servers that do not implement `resources/templates/list` have no templates. */
73
+ async function withoutTemplates(list, empty) {
74
+ try {
75
+ return await list();
76
+ }
77
+ catch (error) {
78
+ if (error instanceof McpError && error.code === JSON_RPC_ERROR_CODES.methodNotFound)
79
+ return empty;
80
+ throw error;
81
+ }
82
+ }
83
+ function listTemplates(client, options = {}) {
84
+ return withoutTemplates(() => client.listResourceTemplates(options), []);
85
+ }
86
+ /** One configured server. Reconnects lazily when a call finds the connection gone. */
87
+ export class McpServerConnection {
88
+ entry;
89
+ state = "connecting";
90
+ error;
91
+ tools = [];
92
+ /**
93
+ * Whether the server offers resources, which the resource tools list and read on demand. They are
94
+ * not listed at connect: listing every resource can take long (a large drive, say).
95
+ */
96
+ hasResources = false;
97
+ /** Server instructions from `initialize`, describing its tools as a group. */
98
+ instructions;
99
+ /** Last OAuth challenge from the server; sign-in uses its resource metadata URL and scope. */
100
+ challenge;
101
+ client;
102
+ opening;
103
+ /** Aborted by `close()`; cancels a connect in progress, including the wait between retries. */
104
+ shutdown = new AbortController();
105
+ /** Stderr of the last stdio server that failed to connect. */
106
+ stderrTail;
107
+ cwd;
108
+ createTransport;
109
+ authProvider;
110
+ onTools;
111
+ onChange;
112
+ log;
113
+ constructor(options) {
114
+ this.entry = options.entry;
115
+ this.cwd = options.cwd;
116
+ this.createTransport = options.createTransport;
117
+ this.onTools = options.onTools;
118
+ this.onChange = options.onChange;
119
+ this.log = options.log;
120
+ const url = this.oauthUrl;
121
+ const provider = "url" in this.entry.config ? this.entry.config.auth?.provider : undefined;
122
+ this.authProvider = url
123
+ ? createMcpAuthProvider({
124
+ serverUrl: url,
125
+ store: options.credentials.forServer(this.entry.name, url),
126
+ settings: () => this.oauthSettings(),
127
+ onChallenge: (challenge) => {
128
+ this.challenge = challenge;
129
+ },
130
+ })
131
+ : provider
132
+ ? // Read on every request, so the provider's refreshes apply; MCP stores no copy.
133
+ { token: async () => options.providerToken?.(provider), settled: async () => { } }
134
+ : undefined;
135
+ }
136
+ get name() {
137
+ return this.entry.name;
138
+ }
139
+ get closed() {
140
+ return this.shutdown.signal.aborted;
141
+ }
142
+ get timeoutMs() {
143
+ return (this.entry.config.timeout ?? DEFAULT_TIMEOUT_SECONDS) * 1000;
144
+ }
145
+ /** Server URL when the server authenticates with OAuth. */
146
+ get oauthUrl() {
147
+ return usesOAuth(this.entry) && "url" in this.entry.config ? this.entry.config.url : undefined;
148
+ }
149
+ oauthSettings() {
150
+ const oauth = "url" in this.entry.config ? this.entry.config.oauth : undefined;
151
+ if (!oauth)
152
+ return {};
153
+ return {
154
+ clientId: oauth.clientId,
155
+ clientSecret: oauth.clientSecret === undefined
156
+ ? undefined
157
+ : resolveConfigValueOrThrow(oauth.clientSecret, `MCP server "${this.entry.name}" oauth.clientSecret`),
158
+ callbackPort: oauth.callbackPort,
159
+ callbackUrl: oauth.callbackUrl,
160
+ scope: oauth.scope,
161
+ clientName: oauth.clientName,
162
+ clientRegistration: oauth.clientRegistration,
163
+ authServerMetadataUrl: oauth.authServerMetadataUrl ? new URL(oauth.authServerMetadataUrl) : undefined,
164
+ };
165
+ }
166
+ getClient() {
167
+ if (this.closed)
168
+ return Promise.reject(new Error(`MCP server "${this.entry.name}" is shut down`));
169
+ if (this.client?.connectionState === "connected")
170
+ return Promise.resolve(this.client);
171
+ this.opening ??= this.open().finally(() => {
172
+ this.opening = undefined;
173
+ });
174
+ return this.opening;
175
+ }
176
+ callTool(name, args, options) {
177
+ return this.withClient((client) => client.callTool(name, args, options));
178
+ }
179
+ readResource(uri, options) {
180
+ return this.withClient((client) => client.readResource(uri, options), true);
181
+ }
182
+ resourcesPage(cursor, options) {
183
+ return this.withClient((client) => client.listResourcesPage(cursor, options), true);
184
+ }
185
+ resourceTemplatesPage(cursor, options) {
186
+ return this.withClient((client) => withoutTemplates(() => client.listResourceTemplatesPage(cursor, options), { resourceTemplates: [] }), true);
187
+ }
188
+ allResources(options) {
189
+ return this.withClient((client) => client.listResources(options), true);
190
+ }
191
+ allResourceTemplates(options) {
192
+ return this.withClient((client) => listTemplates(client, options), true);
193
+ }
194
+ /**
195
+ * Run a request, reconnecting when needed. `readOnly` requests are retried once after a transient
196
+ * HTTP error; tool calls are not, since they may have run.
197
+ */
198
+ async withClient(run, readOnly = false) {
199
+ for (let attempt = 1;; attempt++) {
200
+ const client = await this.getClient();
201
+ try {
202
+ return await run(client);
203
+ }
204
+ catch (error) {
205
+ if (readOnly && attempt === 1 && error instanceof McpHttpError && isTransientError(error)) {
206
+ await new Promise((resolve) => setTimeout(resolve, CONNECT_RETRY_DELAYS_MS[0]));
207
+ continue;
208
+ }
209
+ if (error instanceof McpSessionExpiredError && attempt === 1) {
210
+ // The server no longer knows the session (restart, deploy), so it did not run the request.
211
+ // Retry once on a new session. The old client is detached but not closed: closing would
212
+ // fail its other in-flight calls, which instead get the same 404 and retry the same way.
213
+ if (this.client === client)
214
+ this.client = undefined;
215
+ continue;
216
+ }
217
+ if (!this.needsSignIn(error))
218
+ throw error;
219
+ await this.dropClient(client);
220
+ this.markNeedsAuth();
221
+ throw new Error(signInRequiredMessage(this.entry));
222
+ }
223
+ }
224
+ }
225
+ /** Connect again with fresh credentials, for example after signing in. */
226
+ async reconnect() {
227
+ await this.opening?.catch(() => undefined);
228
+ if (this.client)
229
+ await this.dropClient(this.client);
230
+ await this.getClient();
231
+ }
232
+ /** Disconnect after the stored credentials were removed. */
233
+ async signOut() {
234
+ await this.opening?.catch(() => undefined);
235
+ if (this.client)
236
+ await this.dropClient(this.client);
237
+ if (!this.closed)
238
+ this.markNeedsAuth();
239
+ }
240
+ /** OAuth servers that still reject the request after a refresh need the user to sign in again. */
241
+ needsSignIn(error) {
242
+ return (error instanceof McpOAuthAuthorizationRequiredError ||
243
+ (this.authProvider !== undefined && error instanceof McpAuthRequiredError));
244
+ }
245
+ markNeedsAuth() {
246
+ this.state = "needs-auth";
247
+ this.error = undefined;
248
+ this.changed();
249
+ }
250
+ changed() {
251
+ this.onChange?.(this);
252
+ }
253
+ async dropClient(client) {
254
+ if (this.client === client)
255
+ this.client = undefined;
256
+ await client.close().catch(() => undefined);
257
+ }
258
+ async open() {
259
+ this.state = "connecting";
260
+ this.changed();
261
+ const retries = "url" in this.entry.config ? CONNECT_RETRY_DELAYS_MS : [];
262
+ for (let attempt = 0;; attempt++) {
263
+ this.stderrTail = undefined;
264
+ try {
265
+ return await this.connectOnce();
266
+ }
267
+ catch (error) {
268
+ const delay = retries[attempt];
269
+ if (this.closed || delay === undefined || !isTransientError(error)) {
270
+ throw this.connectFailed(error);
271
+ }
272
+ await sleep(delay, undefined, { signal: this.shutdown.signal }).catch(() => undefined);
273
+ if (this.closed)
274
+ throw this.connectFailed(error);
275
+ }
276
+ }
277
+ }
278
+ async connectOnce() {
279
+ const client = new McpClient({
280
+ name: "pi",
281
+ version: VERSION,
282
+ requestTimeoutMs: this.timeoutMs,
283
+ roots: [{ uri: pathToFileURL(this.cwd).href, name: basename(this.cwd) }],
284
+ });
285
+ const log = this.log;
286
+ if (log)
287
+ client.onNotification("notifications/message", (params) => log.write(this.entry.name, params));
288
+ // Closing the client fails its pending initialize or discovery requests and closes the transport.
289
+ // Memoized: a second `client.close()` returns before the first finished closing the transport.
290
+ let closing;
291
+ const closeClient = () => {
292
+ closing ??= client.close().catch(() => undefined);
293
+ return closing;
294
+ };
295
+ this.shutdown.signal.addEventListener("abort", closeClient, { once: true });
296
+ let transport;
297
+ try {
298
+ transport = this.createTransport(this.entry, this.cwd, this.authProvider);
299
+ await client.connect(transport);
300
+ client.onNotification("notifications/tools/list_changed", () => {
301
+ void this.refreshTools(client);
302
+ });
303
+ const stdio = transport instanceof StdioTransport ? transport : undefined;
304
+ client.onClose(() => this.handleClientClose(client, stdio));
305
+ // Servers without the tools capability (prompts or resources only) do not answer tools/list.
306
+ const tools = client.serverCapabilities?.tools ? await client.listTools() : [];
307
+ if (this.closed)
308
+ throw new Error("shut down while connecting");
309
+ if (client.connectionState !== "connected")
310
+ throw new Error("connection closed during setup");
311
+ this.client = client;
312
+ this.tools = tools;
313
+ this.hasResources = client.serverCapabilities?.resources !== undefined;
314
+ this.instructions = client.instructions?.trim() || undefined;
315
+ this.state = "connected";
316
+ this.error = undefined;
317
+ this.onTools(this);
318
+ this.changed();
319
+ return client;
320
+ }
321
+ catch (error) {
322
+ await closeClient();
323
+ if (transport instanceof StdioTransport) {
324
+ this.stderrTail = transport.stderr.trim().slice(-STDERR_TAIL_CHARS) || undefined;
325
+ }
326
+ throw error;
327
+ }
328
+ finally {
329
+ this.shutdown.signal.removeEventListener("abort", closeClient);
330
+ }
331
+ }
332
+ connectFailed(error) {
333
+ if (this.needsSignIn(error) && !this.closed) {
334
+ this.markNeedsAuth();
335
+ return new Error(signInRequiredMessage(this.entry));
336
+ }
337
+ this.state = this.closed ? "closed" : "failed";
338
+ this.error = this.stderrTail ? `${errorMessage(error)}\n${this.stderrTail}` : errorMessage(error);
339
+ this.changed();
340
+ return new Error(`MCP server "${this.entry.name}" failed to connect: ${this.error}`);
341
+ }
342
+ /** The transport dropped. The next call reconnects; until then the status shows why. */
343
+ handleClientClose(client, stdio) {
344
+ if (this.client !== client || this.closed)
345
+ return;
346
+ this.client = undefined;
347
+ this.state = "disconnected";
348
+ const stderr = stdio?.stderr.trim().slice(-STDERR_TAIL_CHARS);
349
+ this.error = stderr ? `Connection closed\n${stderr}` : "Connection closed";
350
+ this.changed();
351
+ }
352
+ async refreshTools(client) {
353
+ try {
354
+ const tools = await client.listTools();
355
+ if (this.client !== client || this.closed)
356
+ return;
357
+ this.tools = tools;
358
+ this.onTools(this);
359
+ }
360
+ catch (error) {
361
+ this.error = `Failed to refresh tools: ${errorMessage(error)}`;
362
+ }
363
+ this.changed();
364
+ }
365
+ /** Resolves once no transport of this server is open, including one that was still connecting. */
366
+ async close() {
367
+ this.shutdown.abort();
368
+ this.state = "closed";
369
+ this.changed();
370
+ const client = this.client;
371
+ this.client = undefined;
372
+ await Promise.all([client?.close().catch(() => undefined), this.opening?.catch(() => undefined)]);
373
+ // A refresh the server already answered may have rotated the refresh token; exiting before the
374
+ // new tokens are saved would lose the grant.
375
+ await this.authProvider?.settled();
376
+ }
377
+ }
378
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/extensions/mcp/runtime.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * The part of the MCP integration that talks to servers: connections, transports, and OAuth\n * sign-in. It pulls in the MCP client, so index.ts loads it through runtime.lazy.ts only when a\n * server is configured.\n */\n\nimport { homedir } from \"node:os\";\nimport { basename, join, resolve } from \"node:path\";\nimport { setTimeout as sleep } from \"node:timers/promises\";\nimport { pathToFileURL } from \"node:url\";\nimport {\n\ttype AuthProvider,\n\ttype CallToolResult,\n\tJSON_RPC_ERROR_CODES,\n\ttype ListResourcesResult,\n\ttype ListResourceTemplatesResult,\n\tMcpAuthRequiredError,\n\tMcpClient,\n\tMcpError,\n\tMcpHttpError,\n\ttype McpRequestOptions,\n\tMcpSessionExpiredError,\n\ttype Tool as McpTool,\n\ttype McpTransport,\n\ttype ReadResourceResult,\n\ttype Resource,\n\ttype ResourceTemplate,\n\tStdioTransport,\n\tStreamableHttpTransport,\n} from \"@earendil-works/pi-mcp\";\nimport { McpOAuthAuthorizationRequiredError, type OAuthChallenge } from \"@earendil-works/pi-mcp/oauth\";\nimport { VERSION } from \"../../config.ts\";\nimport { resolveConfigValueOrThrow, resolveHeadersOrThrow } from \"../../core/resolve-config-value.ts\";\nimport type { McpServerEntry } from \"./config.ts\";\nimport type { McpServerLog } from \"./log.ts\";\nimport {\n\tcreateMcpAuthProvider,\n\ttype McpAuthProvider,\n\ttype McpOAuthCredentialStore,\n\ttype McpOAuthSettings,\n} from \"./oauth.ts\";\nimport type { McpResourceServer } from \"./resources.ts\";\nimport type { McpToolCaller } from \"./tools.ts\";\n\nexport { McpServerLog } from \"./log.ts\";\nexport { McpOAuthCredentialStore, McpSignInCancelledError, signInMcpServer } from \"./oauth.ts\";\n\nconst DEFAULT_TIMEOUT_SECONDS = 60;\nconst STDERR_TAIL_CHARS = 2_000;\n/** Delays between attempts to connect to an HTTP server that failed with a transient error. */\nconst CONNECT_RETRY_DELAYS_MS = [250, 1_000];\n\n/**\n * `disconnected`: the connection dropped (for example the stdio server exited); the next call\n * reconnects.\n */\ntype ServerState = \"connecting\" | \"connected\" | \"disconnected\" | \"needs-auth\" | \"failed\" | \"closed\";\n\nexport type McpTransportFactory = (\n\tentry: McpServerEntry,\n\tcwd: string,\n\tauthProvider: AuthProvider | undefined,\n) => McpTransport;\n\nfunction errorMessage(error: unknown): string {\n\treturn error instanceof Error ? error.message : String(error);\n}\n\n/** Network failures and overloaded or restarting servers, which are worth another attempt. */\nfunction isTransientError(error: unknown): boolean {\n\tif (error instanceof McpHttpError) {\n\t\treturn error.status === 408 || error.status === 429 || (error.status >= 500 && error.status !== 501);\n\t}\n\treturn error instanceof TypeError;\n}\n\nfunction signInRequiredMessage(entry: McpServerEntry): string {\n\tconst provider = \"url\" in entry.config ? entry.config.auth?.provider : undefined;\n\treturn `MCP server \"${entry.name}\" requires sign-in. Run ${provider ? `/login ${provider}` : \"/mcp\"} to sign in.`;\n}\n\n/** HTTP servers authenticate with OAuth unless the config supplies an `Authorization` header or `auth`. */\nfunction usesOAuth(entry: McpServerEntry): boolean {\n\tconst { config } = entry;\n\tif (!(\"url\" in config) || config.auth) return false;\n\treturn !Object.keys(config.headers ?? {}).some((header) => header.toLowerCase() === \"authorization\");\n}\n\n/** `~` and `~/…` (also `~\\…` on Windows) name the home directory, like in a shell. */\nfunction expandHome(value: string): string {\n\tif (value === \"~\") return homedir();\n\tif (value.startsWith(\"~/\") || (process.platform === \"win32\" && value.startsWith(\"~\\\\\"))) {\n\t\treturn join(homedir(), value.slice(2));\n\t}\n\treturn value;\n}\n\nexport function createDefaultTransport(\n\tentry: McpServerEntry,\n\tcwd: string,\n\tauthProvider: AuthProvider | undefined,\n): McpTransport {\n\tconst { config, name } = entry;\n\tif (\"url\" in config) {\n\t\treturn new StreamableHttpTransport({\n\t\t\turl: config.url,\n\t\t\theaders: resolveHeadersOrThrow(config.headers, `MCP server \"${name}\"`),\n\t\t\tauthProvider,\n\t\t});\n\t}\n\tconst env: Record<string, string> = {};\n\tfor (const [key, value] of Object.entries(config.env ?? {})) {\n\t\tenv[key] = resolveConfigValueOrThrow(value, `MCP server \"${name}\" env \"${key}\"`);\n\t}\n\treturn new StdioTransport({\n\t\tcommand: expandHome(config.command),\n\t\targs: config.args?.map(expandHome),\n\t\tcwd: resolve(cwd, expandHome(config.cwd ?? \".\")),\n\t\tenv,\n\t\tstderr: \"pipe\",\n\t});\n}\n\n/** Servers that do not implement `resources/templates/list` have no templates. */\nasync function withoutTemplates<T>(list: () => Promise<T>, empty: T): Promise<T> {\n\ttry {\n\t\treturn await list();\n\t} catch (error) {\n\t\tif (error instanceof McpError && error.code === JSON_RPC_ERROR_CODES.methodNotFound) return empty;\n\t\tthrow error;\n\t}\n}\n\nfunction listTemplates(client: McpClient, options: McpRequestOptions = {}): Promise<ResourceTemplate[]> {\n\treturn withoutTemplates(() => client.listResourceTemplates(options), []);\n}\n\n/** One configured server. Reconnects lazily when a call finds the connection gone. */\nexport class McpServerConnection implements McpToolCaller, McpResourceServer {\n\treadonly entry: McpServerEntry;\n\tstate: ServerState = \"connecting\";\n\terror: string | undefined;\n\ttools: McpTool[] = [];\n\t/**\n\t * Whether the server offers resources, which the resource tools list and read on demand. They are\n\t * not listed at connect: listing every resource can take long (a large drive, say).\n\t */\n\thasResources = false;\n\t/** Server instructions from `initialize`, describing its tools as a group. */\n\tinstructions: string | undefined;\n\t/** Last OAuth challenge from the server; sign-in uses its resource metadata URL and scope. */\n\tchallenge: OAuthChallenge | undefined;\n\tprivate client: McpClient | undefined;\n\tprivate opening: Promise<McpClient> | undefined;\n\t/** Aborted by `close()`; cancels a connect in progress, including the wait between retries. */\n\tprivate readonly shutdown = new AbortController();\n\t/** Stderr of the last stdio server that failed to connect. */\n\tprivate stderrTail: string | undefined;\n\tprivate readonly cwd: string;\n\tprivate readonly createTransport: McpTransportFactory;\n\tprivate readonly authProvider: McpAuthProvider | undefined;\n\tprivate readonly onTools: (connection: McpServerConnection) => void;\n\tprivate readonly onChange: ((connection: McpServerConnection) => void) | undefined;\n\tprivate readonly log: McpServerLog | undefined;\n\n\tconstructor(options: {\n\t\tentry: McpServerEntry;\n\t\tcwd: string;\n\t\tcreateTransport: McpTransportFactory;\n\t\tcredentials: McpOAuthCredentialStore;\n\t\t/** The current token of a pi provider, for servers with `auth.provider`. */\n\t\tproviderToken?: (provider: string) => Promise<string | undefined>;\n\t\tonTools: (connection: McpServerConnection) => void;\n\t\t/** Called when `state`, `error`, or `tools` change. */\n\t\tonChange?: (connection: McpServerConnection) => void;\n\t\t/** Receives the server's log messages (`notifications/message`). */\n\t\tlog?: McpServerLog;\n\t}) {\n\t\tthis.entry = options.entry;\n\t\tthis.cwd = options.cwd;\n\t\tthis.createTransport = options.createTransport;\n\t\tthis.onTools = options.onTools;\n\t\tthis.onChange = options.onChange;\n\t\tthis.log = options.log;\n\t\tconst url = this.oauthUrl;\n\t\tconst provider = \"url\" in this.entry.config ? this.entry.config.auth?.provider : undefined;\n\t\tthis.authProvider = url\n\t\t\t? createMcpAuthProvider({\n\t\t\t\t\tserverUrl: url,\n\t\t\t\t\tstore: options.credentials.forServer(this.entry.name, url),\n\t\t\t\t\tsettings: () => this.oauthSettings(),\n\t\t\t\t\tonChallenge: (challenge) => {\n\t\t\t\t\t\tthis.challenge = challenge;\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t: provider\n\t\t\t\t? // Read on every request, so the provider's refreshes apply; MCP stores no copy.\n\t\t\t\t\t{ token: async () => options.providerToken?.(provider), settled: async () => {} }\n\t\t\t\t: undefined;\n\t}\n\n\tget name(): string {\n\t\treturn this.entry.name;\n\t}\n\n\tprivate get closed(): boolean {\n\t\treturn this.shutdown.signal.aborted;\n\t}\n\n\tget timeoutMs(): number {\n\t\treturn (this.entry.config.timeout ?? DEFAULT_TIMEOUT_SECONDS) * 1000;\n\t}\n\n\t/** Server URL when the server authenticates with OAuth. */\n\tget oauthUrl(): string | undefined {\n\t\treturn usesOAuth(this.entry) && \"url\" in this.entry.config ? this.entry.config.url : undefined;\n\t}\n\n\toauthSettings(): McpOAuthSettings {\n\t\tconst oauth = \"url\" in this.entry.config ? this.entry.config.oauth : undefined;\n\t\tif (!oauth) return {};\n\t\treturn {\n\t\t\tclientId: oauth.clientId,\n\t\t\tclientSecret:\n\t\t\t\toauth.clientSecret === undefined\n\t\t\t\t\t? undefined\n\t\t\t\t\t: resolveConfigValueOrThrow(oauth.clientSecret, `MCP server \"${this.entry.name}\" oauth.clientSecret`),\n\t\t\tcallbackPort: oauth.callbackPort,\n\t\t\tcallbackUrl: oauth.callbackUrl,\n\t\t\tscope: oauth.scope,\n\t\t\tclientName: oauth.clientName,\n\t\t\tclientRegistration: oauth.clientRegistration,\n\t\t\tauthServerMetadataUrl: oauth.authServerMetadataUrl ? new URL(oauth.authServerMetadataUrl) : undefined,\n\t\t};\n\t}\n\n\tgetClient(): Promise<McpClient> {\n\t\tif (this.closed) return Promise.reject(new Error(`MCP server \"${this.entry.name}\" is shut down`));\n\t\tif (this.client?.connectionState === \"connected\") return Promise.resolve(this.client);\n\t\tthis.opening ??= this.open().finally(() => {\n\t\t\tthis.opening = undefined;\n\t\t});\n\t\treturn this.opening;\n\t}\n\n\tcallTool(name: string, args: Record<string, unknown>, options: McpRequestOptions): Promise<CallToolResult> {\n\t\treturn this.withClient((client) => client.callTool(name, args, options));\n\t}\n\n\treadResource(uri: string, options: McpRequestOptions): Promise<ReadResourceResult> {\n\t\treturn this.withClient((client) => client.readResource(uri, options), true);\n\t}\n\n\tresourcesPage(cursor: string | undefined, options: McpRequestOptions): Promise<ListResourcesResult> {\n\t\treturn this.withClient((client) => client.listResourcesPage(cursor, options), true);\n\t}\n\n\tresourceTemplatesPage(cursor: string | undefined, options: McpRequestOptions): Promise<ListResourceTemplatesResult> {\n\t\treturn this.withClient(\n\t\t\t(client) =>\n\t\t\t\twithoutTemplates(() => client.listResourceTemplatesPage(cursor, options), { resourceTemplates: [] }),\n\t\t\ttrue,\n\t\t);\n\t}\n\n\tallResources(options: McpRequestOptions): Promise<Resource[]> {\n\t\treturn this.withClient((client) => client.listResources(options), true);\n\t}\n\n\tallResourceTemplates(options: McpRequestOptions): Promise<ResourceTemplate[]> {\n\t\treturn this.withClient((client) => listTemplates(client, options), true);\n\t}\n\n\t/**\n\t * Run a request, reconnecting when needed. `readOnly` requests are retried once after a transient\n\t * HTTP error; tool calls are not, since they may have run.\n\t */\n\tprivate async withClient<T>(run: (client: McpClient) => Promise<T>, readOnly = false): Promise<T> {\n\t\tfor (let attempt = 1; ; attempt++) {\n\t\t\tconst client = await this.getClient();\n\t\t\ttry {\n\t\t\t\treturn await run(client);\n\t\t\t} catch (error) {\n\t\t\t\tif (readOnly && attempt === 1 && error instanceof McpHttpError && isTransientError(error)) {\n\t\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, CONNECT_RETRY_DELAYS_MS[0]));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (error instanceof McpSessionExpiredError && attempt === 1) {\n\t\t\t\t\t// The server no longer knows the session (restart, deploy), so it did not run the request.\n\t\t\t\t\t// Retry once on a new session. The old client is detached but not closed: closing would\n\t\t\t\t\t// fail its other in-flight calls, which instead get the same 404 and retry the same way.\n\t\t\t\t\tif (this.client === client) this.client = undefined;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (!this.needsSignIn(error)) throw error;\n\t\t\t\tawait this.dropClient(client);\n\t\t\t\tthis.markNeedsAuth();\n\t\t\t\tthrow new Error(signInRequiredMessage(this.entry));\n\t\t\t}\n\t\t}\n\t}\n\n\t/** Connect again with fresh credentials, for example after signing in. */\n\tasync reconnect(): Promise<void> {\n\t\tawait this.opening?.catch(() => undefined);\n\t\tif (this.client) await this.dropClient(this.client);\n\t\tawait this.getClient();\n\t}\n\n\t/** Disconnect after the stored credentials were removed. */\n\tasync signOut(): Promise<void> {\n\t\tawait this.opening?.catch(() => undefined);\n\t\tif (this.client) await this.dropClient(this.client);\n\t\tif (!this.closed) this.markNeedsAuth();\n\t}\n\n\t/** OAuth servers that still reject the request after a refresh need the user to sign in again. */\n\tprivate needsSignIn(error: unknown): boolean {\n\t\treturn (\n\t\t\terror instanceof McpOAuthAuthorizationRequiredError ||\n\t\t\t(this.authProvider !== undefined && error instanceof McpAuthRequiredError)\n\t\t);\n\t}\n\n\tprivate markNeedsAuth(): void {\n\t\tthis.state = \"needs-auth\";\n\t\tthis.error = undefined;\n\t\tthis.changed();\n\t}\n\n\tprivate changed(): void {\n\t\tthis.onChange?.(this);\n\t}\n\n\tprivate async dropClient(client: McpClient): Promise<void> {\n\t\tif (this.client === client) this.client = undefined;\n\t\tawait client.close().catch(() => undefined);\n\t}\n\n\tprivate async open(): Promise<McpClient> {\n\t\tthis.state = \"connecting\";\n\t\tthis.changed();\n\t\tconst retries = \"url\" in this.entry.config ? CONNECT_RETRY_DELAYS_MS : [];\n\t\tfor (let attempt = 0; ; attempt++) {\n\t\t\tthis.stderrTail = undefined;\n\t\t\ttry {\n\t\t\t\treturn await this.connectOnce();\n\t\t\t} catch (error) {\n\t\t\t\tconst delay = retries[attempt];\n\t\t\t\tif (this.closed || delay === undefined || !isTransientError(error)) {\n\t\t\t\t\tthrow this.connectFailed(error);\n\t\t\t\t}\n\t\t\t\tawait sleep(delay, undefined, { signal: this.shutdown.signal }).catch(() => undefined);\n\t\t\t\tif (this.closed) throw this.connectFailed(error);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async connectOnce(): Promise<McpClient> {\n\t\tconst client = new McpClient({\n\t\t\tname: \"pi\",\n\t\t\tversion: VERSION,\n\t\t\trequestTimeoutMs: this.timeoutMs,\n\t\t\troots: [{ uri: pathToFileURL(this.cwd).href, name: basename(this.cwd) }],\n\t\t});\n\t\tconst log = this.log;\n\t\tif (log) client.onNotification(\"notifications/message\", (params) => log.write(this.entry.name, params));\n\t\t// Closing the client fails its pending initialize or discovery requests and closes the transport.\n\t\t// Memoized: a second `client.close()` returns before the first finished closing the transport.\n\t\tlet closing: Promise<void> | undefined;\n\t\tconst closeClient = () => {\n\t\t\tclosing ??= client.close().catch(() => undefined);\n\t\t\treturn closing;\n\t\t};\n\t\tthis.shutdown.signal.addEventListener(\"abort\", closeClient, { once: true });\n\t\tlet transport: McpTransport | undefined;\n\t\ttry {\n\t\t\ttransport = this.createTransport(this.entry, this.cwd, this.authProvider);\n\t\t\tawait client.connect(transport);\n\t\t\tclient.onNotification(\"notifications/tools/list_changed\", () => {\n\t\t\t\tvoid this.refreshTools(client);\n\t\t\t});\n\t\t\tconst stdio = transport instanceof StdioTransport ? transport : undefined;\n\t\t\tclient.onClose(() => this.handleClientClose(client, stdio));\n\t\t\t// Servers without the tools capability (prompts or resources only) do not answer tools/list.\n\t\t\tconst tools = client.serverCapabilities?.tools ? await client.listTools() : [];\n\t\t\tif (this.closed) throw new Error(\"shut down while connecting\");\n\t\t\tif (client.connectionState !== \"connected\") throw new Error(\"connection closed during setup\");\n\t\t\tthis.client = client;\n\t\t\tthis.tools = tools;\n\t\t\tthis.hasResources = client.serverCapabilities?.resources !== undefined;\n\t\t\tthis.instructions = client.instructions?.trim() || undefined;\n\t\t\tthis.state = \"connected\";\n\t\t\tthis.error = undefined;\n\t\t\tthis.onTools(this);\n\t\t\tthis.changed();\n\t\t\treturn client;\n\t\t} catch (error) {\n\t\t\tawait closeClient();\n\t\t\tif (transport instanceof StdioTransport) {\n\t\t\t\tthis.stderrTail = transport.stderr.trim().slice(-STDERR_TAIL_CHARS) || undefined;\n\t\t\t}\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tthis.shutdown.signal.removeEventListener(\"abort\", closeClient);\n\t\t}\n\t}\n\n\tprivate connectFailed(error: unknown): Error {\n\t\tif (this.needsSignIn(error) && !this.closed) {\n\t\t\tthis.markNeedsAuth();\n\t\t\treturn new Error(signInRequiredMessage(this.entry));\n\t\t}\n\t\tthis.state = this.closed ? \"closed\" : \"failed\";\n\t\tthis.error = this.stderrTail ? `${errorMessage(error)}\\n${this.stderrTail}` : errorMessage(error);\n\t\tthis.changed();\n\t\treturn new Error(`MCP server \"${this.entry.name}\" failed to connect: ${this.error}`);\n\t}\n\n\t/** The transport dropped. The next call reconnects; until then the status shows why. */\n\tprivate handleClientClose(client: McpClient, stdio: StdioTransport | undefined): void {\n\t\tif (this.client !== client || this.closed) return;\n\t\tthis.client = undefined;\n\t\tthis.state = \"disconnected\";\n\t\tconst stderr = stdio?.stderr.trim().slice(-STDERR_TAIL_CHARS);\n\t\tthis.error = stderr ? `Connection closed\\n${stderr}` : \"Connection closed\";\n\t\tthis.changed();\n\t}\n\n\tprivate async refreshTools(client: McpClient): Promise<void> {\n\t\ttry {\n\t\t\tconst tools = await client.listTools();\n\t\t\tif (this.client !== client || this.closed) return;\n\t\t\tthis.tools = tools;\n\t\t\tthis.onTools(this);\n\t\t} catch (error) {\n\t\t\tthis.error = `Failed to refresh tools: ${errorMessage(error)}`;\n\t\t}\n\t\tthis.changed();\n\t}\n\n\t/** Resolves once no transport of this server is open, including one that was still connecting. */\n\tasync close(): Promise<void> {\n\t\tthis.shutdown.abort();\n\t\tthis.state = \"closed\";\n\t\tthis.changed();\n\t\tconst client = this.client;\n\t\tthis.client = undefined;\n\t\tawait Promise.all([client?.close().catch(() => undefined), this.opening?.catch(() => undefined)]);\n\t\t// A refresh the server already answered may have rotated the refresh token; exiting before the\n\t\t// new tokens are saved would lose the grant.\n\t\tawait this.authProvider?.settled();\n\t}\n}\n"]}
@@ -0,0 +1,3 @@
1
+ /** Loads the MCP client, transports, and OAuth sign-in on first use (see runtime.ts). */
2
+ export declare const loadMcpRuntime: () => Promise<typeof import("./runtime.ts")>;
3
+ //# sourceMappingURL=runtime.lazy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.lazy.d.ts","sourceRoot":"","sources":["../../../src/extensions/mcp/runtime.lazy.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,eAAO,MAAM,cAAc,8CAA+B,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Loads the MCP client, transports, and OAuth sign-in on first use (see runtime.ts). */
2
+ export const loadMcpRuntime = () => import("./runtime.js");
3
+ //# sourceMappingURL=runtime.lazy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.lazy.js","sourceRoot":"","sources":["../../../src/extensions/mcp/runtime.lazy.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC","sourcesContent":["/** Loads the MCP client, transports, and OAuth sign-in on first use (see runtime.ts). */\nexport const loadMcpRuntime = () => import(\"./runtime.ts\");\n"]}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Adapts MCP tools to pi tool definitions.
3
+ *
4
+ * Results map onto pi's model-facing content (text and images). Text over 20KB keeps its start and
5
+ * end with the middle cut out, like Codex does, and the full text is saved to a temp file the model
6
+ * can read. Binary resources other than images are saved to temp files too, and resource links name
7
+ * the `read_mcp_resource` tool. Codemode scripts receive the whole `CallToolResult` without `_meta`
8
+ * (`content` blocks as sent by the server, `structuredContent`, `isError`), never truncated: it is
9
+ * the tool's `structuredContent`, and every MCP tool declares a `CallToolResult` output schema. MCP
10
+ * errors (`isError`) are error results for the model, but scripts still resolve to the result.
11
+ */
12
+ import type { AgentToolResult } from "@earendil-works/pi-agent-core";
13
+ import type { ImageContent, TextContent } from "@earendil-works/pi-ai";
14
+ import { type CallToolResult, type ContentBlock, type McpRequestOptions, type Tool as McpTool } from "@earendil-works/pi-mcp";
15
+ import type { TSchema } from "typebox";
16
+ import type { ToolDefinition, ToolExposure, ToolNamespace, ToolRenderers } from "../../core/extensions/types.ts";
17
+ import { READ_MCP_RESOURCE_TOOL } from "../../core/mcp-servers.ts";
18
+ import type { McpExposure } from "./config.ts";
19
+ /**
20
+ * Tool exposure of an MCP exposure. `codemode` and `deferred` both leave tools out of the codemode
21
+ * description; they differ only in which tool the MCP extension activates to reach them.
22
+ */
23
+ export declare function toToolExposure(exposure: McpExposure): ToolExposure;
24
+ /** Model-facing text of an MCP result beyond this is cut in the middle. */
25
+ export declare const MCP_OUTPUT_MAX_BYTES: number;
26
+ /** Tool that reads the resources named by resource links. */
27
+ export { READ_MCP_RESOURCE_TOOL };
28
+ export interface McpToolDetails {
29
+ server: string;
30
+ tool: string;
31
+ /** Temp file with the full text output, when the model-facing text was truncated. */
32
+ fullOutputPath?: string;
33
+ }
34
+ /**
35
+ * Saves the full text of a truncated result, or a binary resource, and returns the file path.
36
+ * `extension` includes the dot, for example `.txt`.
37
+ */
38
+ export type McpOutputSaver = (data: string | Uint8Array, extension: string) => Promise<string>;
39
+ export declare function saveToTempFile(data: string | Uint8Array, extension: string): Promise<string>;
40
+ export interface McpToolCaller {
41
+ callTool(name: string, args: Record<string, unknown>, options: McpRequestOptions): Promise<CallToolResult>;
42
+ }
43
+ /**
44
+ * `mcp__<server>__<tool>`, sanitized and shortened with a hash suffix when too long. Like Codex,
45
+ * everything but `[A-Za-z0-9_]` becomes `_`, so the name is also the identifier codemode scripts
46
+ * call it by. `isTaken` reports names used by a different MCP tool: sanitizing can map two tools to
47
+ * one name (`a-b` and `a_b`), which then get the hash suffix.
48
+ */
49
+ export declare function createMcpToolName(server: string, tool: string, isTaken?: (name: string) => boolean): string;
50
+ /**
51
+ * Output schema of every MCP tool: the `CallToolResult` scripts receive (without `_meta`, which
52
+ * {@link convertMcpResult} drops), with the tool's own output schema as `structuredContent`.
53
+ */
54
+ export declare function createMcpResultSchema(structuredContentSchema: Record<string, unknown> | undefined): TSchema;
55
+ /**
56
+ * Keep model-facing text within {@link MCP_OUTPUT_MAX_BYTES}. Longer text becomes one text block in
57
+ * Codex's truncation format, followed by the path of the file with the full text; images follow it.
58
+ */
59
+ export declare function limitMcpContent(content: (TextContent | ImageContent)[], saveOutput?: McpOutputSaver): Promise<{
60
+ content: (TextContent | ImageContent)[];
61
+ fullOutputPath?: string;
62
+ }>;
63
+ export interface ConvertMcpResultOptions {
64
+ /** Saves truncated text and binary resources. Default: a temp file. */
65
+ saveOutput?: McpOutputSaver;
66
+ /** Whether the server's resources can be read with `read_mcp_resource`, which resource links then name. */
67
+ readableResources?: boolean;
68
+ }
69
+ /** Model-facing content of `server`'s content blocks, before the output limit. */
70
+ export declare function toModelContent(server: string, blocks: readonly ContentBlock[], options?: ConvertMcpResultOptions): Promise<(TextContent | ImageContent)[]>;
71
+ /** Convert an MCP result. `isError` results become error results that keep the structured result. */
72
+ export declare function convertMcpResult(server: string, tool: string, result: CallToolResult, options?: ConvertMcpResultOptions): Promise<AgentToolResult<McpToolDetails>>;
73
+ export declare function createMcpToolDefinition(options: {
74
+ server: string;
75
+ tool: McpTool;
76
+ name: string;
77
+ exposure: McpExposure;
78
+ namespace: ToolNamespace;
79
+ timeoutMs: number;
80
+ getClient: () => Promise<McpToolCaller>;
81
+ /** Whether `read_mcp_resource` can read the server's resources. */
82
+ readableResources?: () => boolean;
83
+ }): ToolDefinition<TSchema, McpToolDetails>;
84
+ /** Renderers of calls to an MCP tool, labeled `server/tool`, also used before the tool is registered. */
85
+ export declare function createMcpToolRenderers(label: string): ToolRenderers;
86
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/extensions/mcp/tools.ts"],"names":[],"mappings":"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"}