pi-namespace-patch 0.87.1-namespace.1 → 1.0.0-namespace.2

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 (754) hide show
  1. package/CHANGELOG.md +183 -0
  2. package/README.md +100 -25
  3. package/dist/bun/cli.d.ts.map +1 -1
  4. package/dist/bun/restore-sandbox-env.d.ts.map +1 -1
  5. package/dist/bun/restore-sandbox-env.js.map +1 -1
  6. package/dist/bun/runtime-setup.d.ts.map +1 -1
  7. package/dist/bun/runtime-setup.js +4 -1
  8. package/dist/bun/runtime-setup.js.map +1 -1
  9. package/dist/bun/sandbox-env-setup.d.ts.map +1 -1
  10. package/dist/bundle/chunks/anthropic-messages-UID2PALB.js +6 -0
  11. package/dist/bundle/chunks/anthropic.js +2 -2
  12. package/dist/bundle/chunks/azure-openai-responses-AFMVM6NP.js +2 -0
  13. package/dist/bundle/chunks/bedrock-converse-stream.js +2 -2
  14. package/dist/bundle/chunks/chunk-2KTBZM5G.js +132 -0
  15. package/dist/bundle/chunks/{chunk-WIUZI2CJ.js → chunk-2VNGUWBO.js} +3 -3
  16. package/dist/bundle/chunks/{chunk-FUXEF6JQ.js → chunk-3LH3ZQKY.js} +1 -1
  17. package/dist/bundle/chunks/chunk-4N5K4RKC.js +1204 -0
  18. package/dist/bundle/chunks/chunk-6D7LHLKG.js +2 -0
  19. package/dist/bundle/chunks/chunk-7FH3BDRG.js +82 -0
  20. package/dist/bundle/chunks/chunk-7JGR3GZN.js +11 -0
  21. package/dist/bundle/chunks/chunk-H3QXYIF7.js +31 -0
  22. package/dist/bundle/chunks/chunk-IBCPYVFK.js +19 -0
  23. package/dist/bundle/chunks/chunk-KDN6RCEQ.js +4 -0
  24. package/dist/bundle/chunks/chunk-LD2P6SFZ.js +2 -0
  25. package/dist/bundle/chunks/chunk-LTXEMVMA.js +127 -0
  26. package/dist/bundle/chunks/chunk-MJOHEBV7.js +2 -0
  27. package/dist/bundle/chunks/chunk-OSKPX3Z5.js +2 -0
  28. package/dist/bundle/chunks/chunk-PRD6WYBT.js +16 -0
  29. package/dist/bundle/chunks/{chunk-XDUWOHPL.js → chunk-S3GGRYIO.js} +2 -2
  30. package/dist/bundle/chunks/chunk-UTB4DTYQ.js +2 -0
  31. package/dist/bundle/chunks/chunk-VIV3CWXG.js +2 -0
  32. package/dist/bundle/chunks/cli-QOMC26IJ.js +51 -0
  33. package/dist/bundle/chunks/cloudflare-workers-ai-system-one-NPQN263E.js +2 -0
  34. package/dist/bundle/chunks/codemode-worker.js +354 -0
  35. package/dist/bundle/chunks/execute-GVRSEGHL.js +367 -0
  36. package/dist/bundle/chunks/github-copilot.js +1 -1
  37. package/dist/bundle/chunks/google-generative-ai-APTPZOQL.js +2 -0
  38. package/dist/bundle/chunks/google-vertex-MXCOSOY3.js +2 -0
  39. package/dist/bundle/chunks/{lib-HGQMNYVT.js → lib-TEDK3E5I.js} +2 -2
  40. package/dist/bundle/chunks/llama-cpp-classify-XT44PI3C.js +22 -0
  41. package/dist/bundle/chunks/mistral-conversations-DKVFNQL6.js +5 -0
  42. package/dist/bundle/chunks/openai-chatgpt.js +75 -0
  43. package/dist/bundle/chunks/{openai-codex-responses-QDSOTBBO.js → openai-codex-responses-GK67DQQJ.js} +2 -2
  44. package/dist/bundle/chunks/openai-codex.js +2 -2
  45. package/dist/bundle/chunks/{openai-completions-OBX42CLD.js → openai-completions-JXDDPZ23.js} +2 -2
  46. package/dist/bundle/chunks/openai-responses-CQDDLDQF.js +3 -0
  47. package/dist/bundle/chunks/{openrouter-images-N4XVVFSD.js → openrouter-images-ZVXWCSIM.js} +1 -1
  48. package/dist/bundle/chunks/openrouter.js +2 -2
  49. package/dist/bundle/chunks/pi-logo-animation-MPKZE4EK.js +2 -0
  50. package/dist/bundle/chunks/{pi-messages-GFKBWJHZ.js → pi-messages-TM5SOOIW.js} +2 -2
  51. package/dist/bundle/chunks/radius.js +2 -2
  52. package/dist/bundle/chunks/runtime-2SO2JDWM.js +2 -0
  53. package/dist/bundle/chunks/typesafe-system-one-A4CZTQWZ.js +2 -0
  54. package/dist/bundle/chunks/virtual-modules-3THEGRQQ.js +2 -0
  55. package/dist/bundle/cli-runtime.js +1 -1
  56. package/dist/bundle/index.js +1 -1
  57. package/dist/bundle/rpc-entry.js +1 -1
  58. package/dist/cli/args.d.ts.map +1 -1
  59. package/dist/cli/args.js +6 -5
  60. package/dist/cli/args.js.map +1 -1
  61. package/dist/cli/auth-check.d.ts.map +1 -1
  62. package/dist/cli/auth-check.js.map +1 -1
  63. package/dist/cli/auth-command.d.ts.map +1 -1
  64. package/dist/cli/auth-command.js.map +1 -1
  65. package/dist/cli/config-selector.d.ts.map +1 -1
  66. package/dist/cli/config-selector.js.map +1 -1
  67. package/dist/cli/credential-print.d.ts.map +1 -1
  68. package/dist/cli/credential-print.js.map +1 -1
  69. package/dist/cli/file-processor.d.ts.map +1 -1
  70. package/dist/cli/file-processor.js.map +1 -1
  71. package/dist/cli/initial-message.d.ts +1 -1
  72. package/dist/cli/initial-message.d.ts.map +1 -1
  73. package/dist/cli/initial-message.js.map +1 -1
  74. package/dist/cli/list-models.d.ts.map +1 -1
  75. package/dist/cli/list-models.js.map +1 -1
  76. package/dist/cli/project-trust.d.ts.map +1 -1
  77. package/dist/cli/project-trust.js.map +1 -1
  78. package/dist/cli/session-picker.d.ts.map +1 -1
  79. package/dist/cli/session-picker.js.map +1 -1
  80. package/dist/cli/setup.d.ts.map +1 -1
  81. package/dist/cli/setup.js.map +1 -1
  82. package/dist/cli/startup-ui.d.ts.map +1 -1
  83. package/dist/cli/startup-ui.js +38 -30
  84. package/dist/cli/startup-ui.js.map +1 -1
  85. package/dist/cli.d.ts.map +1 -1
  86. package/dist/config.d.ts +15 -4
  87. package/dist/config.d.ts.map +1 -1
  88. package/dist/config.js +33 -4
  89. package/dist/config.js.map +1 -1
  90. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  91. package/dist/core/agent-session-runtime.js +1 -1
  92. package/dist/core/agent-session-runtime.js.map +1 -1
  93. package/dist/core/agent-session-services.d.ts.map +1 -1
  94. package/dist/core/agent-session-services.js +13 -0
  95. package/dist/core/agent-session-services.js.map +1 -1
  96. package/dist/core/agent-session.d.ts +150 -12
  97. package/dist/core/agent-session.d.ts.map +1 -1
  98. package/dist/core/agent-session.js +560 -263
  99. package/dist/core/agent-session.js.map +1 -1
  100. package/dist/core/auth-guidance.d.ts.map +1 -1
  101. package/dist/core/auth-guidance.js.map +1 -1
  102. package/dist/core/auth-storage.d.ts.map +1 -1
  103. package/dist/core/auth-storage.js.map +1 -1
  104. package/dist/core/bash-executor.d.ts.map +1 -1
  105. package/dist/core/bash-executor.js.map +1 -1
  106. package/dist/core/bug-report-upload.d.ts.map +1 -1
  107. package/dist/core/bug-report-upload.js.map +1 -1
  108. package/dist/core/bug-report.d.ts +1 -1
  109. package/dist/core/bug-report.d.ts.map +1 -1
  110. package/dist/core/bug-report.js +1 -1
  111. package/dist/core/bug-report.js.map +1 -1
  112. package/dist/core/cache-stats.d.ts.map +1 -1
  113. package/dist/core/cache-stats.js.map +1 -1
  114. package/dist/core/cache-warmer.d.ts.map +1 -1
  115. package/dist/core/cache-warmer.js.map +1 -1
  116. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  117. package/dist/core/compaction/branch-summarization.js.map +1 -1
  118. package/dist/core/compaction/compaction.d.ts.map +1 -1
  119. package/dist/core/compaction/compaction.js +1 -22
  120. package/dist/core/compaction/compaction.js.map +1 -1
  121. package/dist/core/compaction/index.d.ts.map +1 -1
  122. package/dist/core/compaction/utils.d.ts +2 -1
  123. package/dist/core/compaction/utils.d.ts.map +1 -1
  124. package/dist/core/compaction/utils.js +25 -18
  125. package/dist/core/compaction/utils.js.map +1 -1
  126. package/dist/core/crash-log.d.ts.map +1 -1
  127. package/dist/core/crash-log.js +2 -1
  128. package/dist/core/crash-log.js.map +1 -1
  129. package/dist/core/defaults.d.ts.map +1 -1
  130. package/dist/core/diagnostics.d.ts.map +1 -1
  131. package/dist/core/event-bus.d.ts.map +1 -1
  132. package/dist/core/event-bus.js.map +1 -1
  133. package/dist/core/exec.d.ts.map +1 -1
  134. package/dist/core/exec.js.map +1 -1
  135. package/dist/core/experimental.d.ts.map +1 -1
  136. package/dist/core/experimental.js.map +1 -1
  137. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  138. package/dist/core/export-html/ansi-to-html.js.map +1 -1
  139. package/dist/core/export-html/index.d.ts.map +1 -1
  140. package/dist/core/export-html/index.js.map +1 -1
  141. package/dist/core/export-html/template.css +10 -0
  142. package/dist/core/export-html/template.js +66 -17
  143. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  144. package/dist/core/export-html/tool-renderer.js.map +1 -1
  145. package/dist/core/extensions/index.d.ts +1 -1
  146. package/dist/core/extensions/index.d.ts.map +1 -1
  147. package/dist/core/extensions/index.js.map +1 -1
  148. package/dist/core/extensions/jiti-loader.d.ts.map +1 -1
  149. package/dist/core/extensions/jiti-static-loader.d.ts.map +1 -1
  150. package/dist/core/extensions/loader.d.ts.map +1 -1
  151. package/dist/core/extensions/loader.js +67 -5
  152. package/dist/core/extensions/loader.js.map +1 -1
  153. package/dist/core/extensions/runner.d.ts +18 -1
  154. package/dist/core/extensions/runner.d.ts.map +1 -1
  155. package/dist/core/extensions/runner.js +99 -0
  156. package/dist/core/extensions/runner.js.map +1 -1
  157. package/dist/core/extensions/types.d.ts +301 -22
  158. package/dist/core/extensions/types.d.ts.map +1 -1
  159. package/dist/core/extensions/types.js.map +1 -1
  160. package/dist/core/extensions/virtual-modules.d.ts.map +1 -1
  161. package/dist/core/extensions/wrapper.d.ts +2 -2
  162. package/dist/core/extensions/wrapper.d.ts.map +1 -1
  163. package/dist/core/extensions/wrapper.js +3 -3
  164. package/dist/core/extensions/wrapper.js.map +1 -1
  165. package/dist/core/footer-data-provider.d.ts.map +1 -1
  166. package/dist/core/footer-data-provider.js.map +1 -1
  167. package/dist/core/http-dispatcher.d.ts.map +1 -1
  168. package/dist/core/http-dispatcher.js.map +1 -1
  169. package/dist/core/index.d.ts.map +1 -1
  170. package/dist/core/keybindings.d.ts +1 -1
  171. package/dist/core/keybindings.d.ts.map +1 -1
  172. package/dist/core/keybindings.js +1 -1
  173. package/dist/core/keybindings.js.map +1 -1
  174. package/dist/core/mcp-servers.d.ts +125 -0
  175. package/dist/core/mcp-servers.d.ts.map +1 -0
  176. package/dist/core/mcp-servers.js +198 -0
  177. package/dist/core/mcp-servers.js.map +1 -0
  178. package/dist/core/messages.d.ts.map +1 -1
  179. package/dist/core/messages.js.map +1 -1
  180. package/dist/core/model-config.d.ts.map +1 -1
  181. package/dist/core/model-config.js.map +1 -1
  182. package/dist/core/model-registry.d.ts +15 -1
  183. package/dist/core/model-registry.d.ts.map +1 -1
  184. package/dist/core/model-registry.js +29 -0
  185. package/dist/core/model-registry.js.map +1 -1
  186. package/dist/core/model-resolver.d.ts +2 -2
  187. package/dist/core/model-resolver.d.ts.map +1 -1
  188. package/dist/core/model-resolver.js +5 -5
  189. package/dist/core/model-resolver.js.map +1 -1
  190. package/dist/core/model-runtime.d.ts +47 -3
  191. package/dist/core/model-runtime.d.ts.map +1 -1
  192. package/dist/core/model-runtime.js +189 -35
  193. package/dist/core/model-runtime.js.map +1 -1
  194. package/dist/core/models-store.d.ts.map +1 -1
  195. package/dist/core/models-store.js.map +1 -1
  196. package/dist/core/nested-tool-calls.d.ts +102 -0
  197. package/dist/core/nested-tool-calls.d.ts.map +1 -0
  198. package/dist/core/nested-tool-calls.js +178 -0
  199. package/dist/core/nested-tool-calls.js.map +1 -0
  200. package/dist/core/output-guard.d.ts.map +1 -1
  201. package/dist/core/output-guard.js.map +1 -1
  202. package/dist/core/package-manager.d.ts +4 -0
  203. package/dist/core/package-manager.d.ts.map +1 -1
  204. package/dist/core/package-manager.js +59 -12
  205. package/dist/core/package-manager.js.map +1 -1
  206. package/dist/core/pi-manifest.d.ts.map +1 -1
  207. package/dist/core/pi-manifest.js.map +1 -1
  208. package/dist/core/project-trust.d.ts.map +1 -1
  209. package/dist/core/project-trust.js.map +1 -1
  210. package/dist/core/prompt-templates.d.ts.map +1 -1
  211. package/dist/core/prompt-templates.js.map +1 -1
  212. package/dist/core/provider-attribution.d.ts.map +1 -1
  213. package/dist/core/provider-attribution.js.map +1 -1
  214. package/dist/core/provider-composer.d.ts +40 -21
  215. package/dist/core/provider-composer.d.ts.map +1 -1
  216. package/dist/core/provider-composer.js +92 -40
  217. package/dist/core/provider-composer.js.map +1 -1
  218. package/dist/core/radius.d.ts +2 -0
  219. package/dist/core/radius.d.ts.map +1 -1
  220. package/dist/core/radius.js +2 -0
  221. package/dist/core/radius.js.map +1 -1
  222. package/dist/core/remote-catalog-provider.d.ts +8 -1
  223. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  224. package/dist/core/remote-catalog-provider.js +21 -11
  225. package/dist/core/remote-catalog-provider.js.map +1 -1
  226. package/dist/core/resolve-config-value.d.ts.map +1 -1
  227. package/dist/core/resolve-config-value.js.map +1 -1
  228. package/dist/core/resource-loader.d.ts +7 -1
  229. package/dist/core/resource-loader.d.ts.map +1 -1
  230. package/dist/core/resource-loader.js +161 -35
  231. package/dist/core/resource-loader.js.map +1 -1
  232. package/dist/core/runtime-credentials.d.ts.map +1 -1
  233. package/dist/core/runtime-credentials.js.map +1 -1
  234. package/dist/core/sdk.d.ts +1 -1
  235. package/dist/core/sdk.d.ts.map +1 -1
  236. package/dist/core/sdk.js +25 -6
  237. package/dist/core/sdk.js.map +1 -1
  238. package/dist/core/session-cwd.d.ts.map +1 -1
  239. package/dist/core/session-cwd.js.map +1 -1
  240. package/dist/core/session-export.d.ts.map +1 -1
  241. package/dist/core/session-export.js.map +1 -1
  242. package/dist/core/session-manager.d.ts +9 -0
  243. package/dist/core/session-manager.d.ts.map +1 -1
  244. package/dist/core/session-manager.js +22 -22
  245. package/dist/core/session-manager.js.map +1 -1
  246. package/dist/core/settings-diagnostics.d.ts.map +1 -1
  247. package/dist/core/settings-diagnostics.js.map +1 -1
  248. package/dist/core/settings-manager.d.ts +36 -4
  249. package/dist/core/settings-manager.d.ts.map +1 -1
  250. package/dist/core/settings-manager.js +75 -4
  251. package/dist/core/settings-manager.js.map +1 -1
  252. package/dist/core/skills.d.ts.map +1 -1
  253. package/dist/core/skills.js.map +1 -1
  254. package/dist/core/slash-commands.d.ts.map +1 -1
  255. package/dist/core/source-info.d.ts +8 -0
  256. package/dist/core/source-info.d.ts.map +1 -1
  257. package/dist/core/source-info.js +16 -0
  258. package/dist/core/source-info.js.map +1 -1
  259. package/dist/core/system-prompt.d.ts.map +1 -1
  260. package/dist/core/system-prompt.js +1 -1
  261. package/dist/core/system-prompt.js.map +1 -1
  262. package/dist/core/telemetry.d.ts.map +1 -1
  263. package/dist/core/telemetry.js.map +1 -1
  264. package/dist/core/timings.d.ts.map +1 -1
  265. package/dist/core/timings.js.map +1 -1
  266. package/dist/core/tools/bash.d.ts +12 -0
  267. package/dist/core/tools/bash.d.ts.map +1 -1
  268. package/dist/core/tools/bash.js +33 -2
  269. package/dist/core/tools/bash.js.map +1 -1
  270. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  271. package/dist/core/tools/edit-diff.js.map +1 -1
  272. package/dist/core/tools/edit.d.ts.map +1 -1
  273. package/dist/core/tools/edit.js.map +1 -1
  274. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  275. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  276. package/dist/core/tools/find.d.ts.map +1 -1
  277. package/dist/core/tools/find.js.map +1 -1
  278. package/dist/core/tools/grep.d.ts.map +1 -1
  279. package/dist/core/tools/grep.js.map +1 -1
  280. package/dist/core/tools/index.d.ts.map +1 -1
  281. package/dist/core/tools/index.js.map +1 -1
  282. package/dist/core/tools/ls.d.ts.map +1 -1
  283. package/dist/core/tools/ls.js.map +1 -1
  284. package/dist/core/tools/output-accumulator.d.ts +11 -0
  285. package/dist/core/tools/output-accumulator.d.ts.map +1 -1
  286. package/dist/core/tools/output-accumulator.js +36 -0
  287. package/dist/core/tools/output-accumulator.js.map +1 -1
  288. package/dist/core/tools/path-utils.d.ts.map +1 -1
  289. package/dist/core/tools/path-utils.js.map +1 -1
  290. package/dist/core/tools/powershell.d.ts.map +1 -1
  291. package/dist/core/tools/powershell.js.map +1 -1
  292. package/dist/core/tools/read.d.ts.map +1 -1
  293. package/dist/core/tools/read.js.map +1 -1
  294. package/dist/core/tools/render-utils.d.ts +6 -0
  295. package/dist/core/tools/render-utils.d.ts.map +1 -1
  296. package/dist/core/tools/render-utils.js +26 -0
  297. package/dist/core/tools/render-utils.js.map +1 -1
  298. package/dist/core/tools/renderers/bash.d.ts.map +1 -1
  299. package/dist/core/tools/renderers/bash.js +11 -32
  300. package/dist/core/tools/renderers/bash.js.map +1 -1
  301. package/dist/core/tools/renderers/edit.d.ts.map +1 -1
  302. package/dist/core/tools/renderers/edit.js.map +1 -1
  303. package/dist/core/tools/renderers/find.d.ts.map +1 -1
  304. package/dist/core/tools/renderers/find.js.map +1 -1
  305. package/dist/core/tools/renderers/grep.d.ts.map +1 -1
  306. package/dist/core/tools/renderers/grep.js.map +1 -1
  307. package/dist/core/tools/renderers/index.d.ts.map +1 -1
  308. package/dist/core/tools/renderers/index.js.map +1 -1
  309. package/dist/core/tools/renderers/ls.d.ts.map +1 -1
  310. package/dist/core/tools/renderers/ls.js.map +1 -1
  311. package/dist/core/tools/renderers/read.d.ts.map +1 -1
  312. package/dist/core/tools/renderers/read.js +3 -2
  313. package/dist/core/tools/renderers/read.js.map +1 -1
  314. package/dist/core/tools/renderers/write.d.ts.map +1 -1
  315. package/dist/core/tools/renderers/write.js.map +1 -1
  316. package/dist/core/tools/tool-definition-wrapper.d.ts +5 -3
  317. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  318. package/dist/core/tools/tool-definition-wrapper.js +3 -1
  319. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  320. package/dist/core/tools/truncate.d.ts +14 -0
  321. package/dist/core/tools/truncate.d.ts.map +1 -1
  322. package/dist/core/tools/truncate.js +29 -0
  323. package/dist/core/tools/truncate.js.map +1 -1
  324. package/dist/core/tools/write.d.ts.map +1 -1
  325. package/dist/core/tools/write.js.map +1 -1
  326. package/dist/core/trust-manager.d.ts.map +1 -1
  327. package/dist/core/trust-manager.js +1 -0
  328. package/dist/core/trust-manager.js.map +1 -1
  329. package/dist/core/usage-totals.d.ts +2 -0
  330. package/dist/core/usage-totals.d.ts.map +1 -1
  331. package/dist/core/usage-totals.js +23 -0
  332. package/dist/core/usage-totals.js.map +1 -1
  333. package/dist/core/virtual-models.d.ts +117 -0
  334. package/dist/core/virtual-models.d.ts.map +1 -0
  335. package/dist/core/virtual-models.js +124 -0
  336. package/dist/core/virtual-models.js.map +1 -0
  337. package/dist/extensions/codemode/execute.d.ts +16 -0
  338. package/dist/extensions/codemode/execute.d.ts.map +1 -0
  339. package/dist/extensions/codemode/execute.js +536 -0
  340. package/dist/extensions/codemode/execute.js.map +1 -0
  341. package/dist/extensions/codemode/execute.lazy.d.ts +3 -0
  342. package/dist/extensions/codemode/execute.lazy.d.ts.map +1 -0
  343. package/dist/extensions/codemode/execute.lazy.js +3 -0
  344. package/dist/extensions/codemode/execute.lazy.js.map +1 -0
  345. package/dist/extensions/codemode/index.d.ts +21 -0
  346. package/dist/extensions/codemode/index.d.ts.map +1 -0
  347. package/dist/extensions/codemode/index.js +31 -0
  348. package/dist/extensions/codemode/index.js.map +1 -0
  349. package/dist/extensions/codemode/renderer.d.ts +12 -0
  350. package/dist/extensions/codemode/renderer.d.ts.map +1 -0
  351. package/dist/extensions/codemode/renderer.js +137 -0
  352. package/dist/extensions/codemode/renderer.js.map +1 -0
  353. package/dist/extensions/codemode/tool.d.ts +123 -0
  354. package/dist/extensions/codemode/tool.d.ts.map +1 -0
  355. package/dist/extensions/codemode/tool.js +268 -0
  356. package/dist/extensions/codemode/tool.js.map +1 -0
  357. package/dist/extensions/codemode/worker.d.ts +7 -0
  358. package/dist/extensions/codemode/worker.d.ts.map +1 -0
  359. package/dist/extensions/codemode/worker.js +7 -0
  360. package/dist/extensions/codemode/worker.js.map +1 -0
  361. package/dist/extensions/index.d.ts.map +1 -1
  362. package/dist/extensions/index.js +11 -1
  363. package/dist/extensions/index.js.map +1 -1
  364. package/dist/extensions/llama/client.d.ts.map +1 -1
  365. package/dist/extensions/llama/client.js.map +1 -1
  366. package/dist/extensions/llama/huggingface.d.ts.map +1 -1
  367. package/dist/extensions/llama/huggingface.js.map +1 -1
  368. package/dist/extensions/llama/index.d.ts.map +1 -1
  369. package/dist/extensions/llama/index.js.map +1 -1
  370. package/dist/extensions/llama/provider.d.ts +1 -1
  371. package/dist/extensions/llama/provider.d.ts.map +1 -1
  372. package/dist/extensions/llama/provider.js +65 -13
  373. package/dist/extensions/llama/provider.js.map +1 -1
  374. package/dist/extensions/llama/ui.d.ts.map +1 -1
  375. package/dist/extensions/llama/ui.js.map +1 -1
  376. package/dist/extensions/mcp/cli.d.ts +21 -0
  377. package/dist/extensions/mcp/cli.d.ts.map +1 -0
  378. package/dist/extensions/mcp/cli.js +500 -0
  379. package/dist/extensions/mcp/cli.js.map +1 -0
  380. package/dist/extensions/mcp/cli.lazy.d.ts +3 -0
  381. package/dist/extensions/mcp/cli.lazy.d.ts.map +1 -0
  382. package/dist/extensions/mcp/cli.lazy.js +3 -0
  383. package/dist/extensions/mcp/cli.lazy.js.map +1 -0
  384. package/dist/extensions/mcp/config.d.ts +72 -0
  385. package/dist/extensions/mcp/config.d.ts.map +1 -0
  386. package/dist/extensions/mcp/config.js +158 -0
  387. package/dist/extensions/mcp/config.js.map +1 -0
  388. package/dist/extensions/mcp/index.d.ts +76 -0
  389. package/dist/extensions/mcp/index.d.ts.map +1 -0
  390. package/dist/extensions/mcp/index.js +1066 -0
  391. package/dist/extensions/mcp/index.js.map +1 -0
  392. package/dist/extensions/mcp/log.d.ts +16 -0
  393. package/dist/extensions/mcp/log.d.ts.map +1 -0
  394. package/dist/extensions/mcp/log.js +66 -0
  395. package/dist/extensions/mcp/log.js.map +1 -0
  396. package/dist/extensions/mcp/oauth.d.ts +97 -0
  397. package/dist/extensions/mcp/oauth.d.ts.map +1 -0
  398. package/dist/extensions/mcp/oauth.js +358 -0
  399. package/dist/extensions/mcp/oauth.js.map +1 -0
  400. package/dist/extensions/mcp/resources.d.ts +43 -0
  401. package/dist/extensions/mcp/resources.d.ts.map +1 -0
  402. package/dist/extensions/mcp/resources.js +262 -0
  403. package/dist/extensions/mcp/resources.js.map +1 -0
  404. package/dist/extensions/mcp/runtime.d.ts +98 -0
  405. package/dist/extensions/mcp/runtime.d.ts.map +1 -0
  406. package/dist/extensions/mcp/runtime.js +395 -0
  407. package/dist/extensions/mcp/runtime.js.map +1 -0
  408. package/dist/extensions/mcp/runtime.lazy.d.ts +3 -0
  409. package/dist/extensions/mcp/runtime.lazy.d.ts.map +1 -0
  410. package/dist/extensions/mcp/runtime.lazy.js +3 -0
  411. package/dist/extensions/mcp/runtime.lazy.js.map +1 -0
  412. package/dist/extensions/mcp/tools.d.ts +84 -0
  413. package/dist/extensions/mcp/tools.d.ts.map +1 -0
  414. package/dist/extensions/mcp/tools.js +251 -0
  415. package/dist/extensions/mcp/tools.js.map +1 -0
  416. package/dist/extensions/mcp/ui.d.ts +60 -0
  417. package/dist/extensions/mcp/ui.d.ts.map +1 -0
  418. package/dist/extensions/mcp/ui.js +174 -0
  419. package/dist/extensions/mcp/ui.js.map +1 -0
  420. package/dist/extensions/tool-search/index.d.ts +12 -0
  421. package/dist/extensions/tool-search/index.d.ts.map +1 -0
  422. package/dist/extensions/tool-search/index.js +15 -0
  423. package/dist/extensions/tool-search/index.js.map +1 -0
  424. package/dist/extensions/tool-search/tool.d.ts +73 -0
  425. package/dist/extensions/tool-search/tool.d.ts.map +1 -0
  426. package/dist/extensions/tool-search/tool.js +189 -0
  427. package/dist/extensions/tool-search/tool.js.map +1 -0
  428. package/dist/index.d.ts +10 -3
  429. package/dist/index.d.ts.map +1 -1
  430. package/dist/index.js +5 -0
  431. package/dist/index.js.map +1 -1
  432. package/dist/main.d.ts.map +1 -1
  433. package/dist/main.js +16 -0
  434. package/dist/main.js.map +1 -1
  435. package/dist/migrations.d.ts.map +1 -1
  436. package/dist/migrations.js.map +1 -1
  437. package/dist/modes/index.d.ts.map +1 -1
  438. package/dist/modes/interactive/bug-report.d.ts.map +1 -1
  439. package/dist/modes/interactive/bug-report.js.map +1 -1
  440. package/dist/modes/interactive/chat-viewport.d.ts.map +1 -1
  441. package/dist/modes/interactive/chat-viewport.js.map +1 -1
  442. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  443. package/dist/modes/interactive/components/armin.js.map +1 -1
  444. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  445. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  446. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  447. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  448. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  449. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  450. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  451. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  452. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  453. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  454. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  455. package/dist/modes/interactive/components/config-selector.js +13 -3
  456. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  457. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  458. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  459. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  460. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  461. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
  462. package/dist/modes/interactive/components/custom-entry.js.map +1 -1
  463. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  464. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  465. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
  466. package/dist/modes/interactive/components/daxnuts.js.map +1 -1
  467. package/dist/modes/interactive/components/diff.d.ts.map +1 -1
  468. package/dist/modes/interactive/components/diff.js.map +1 -1
  469. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  470. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  471. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
  472. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
  473. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  474. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  475. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  476. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  477. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  478. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  479. package/dist/modes/interactive/components/first-time-setup.d.ts +4 -4
  480. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
  481. package/dist/modes/interactive/components/first-time-setup.js +8 -2
  482. package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
  483. package/dist/modes/interactive/components/footer.d.ts +7 -0
  484. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  485. package/dist/modes/interactive/components/footer.js +43 -3
  486. package/dist/modes/interactive/components/footer.js.map +1 -1
  487. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  488. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  489. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  490. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  491. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  492. package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -1
  493. package/dist/modes/interactive/components/markdown-transform.js.map +1 -1
  494. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -1
  495. package/dist/modes/interactive/components/mermaid.js.map +1 -1
  496. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  497. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  498. package/dist/modes/interactive/components/oauth-selector.d.ts +8 -2
  499. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  500. package/dist/modes/interactive/components/oauth-selector.js +24 -21
  501. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  502. package/dist/modes/interactive/components/pi-logo-animation.d.ts +68 -0
  503. package/dist/modes/interactive/components/pi-logo-animation.d.ts.map +1 -0
  504. package/dist/modes/interactive/components/pi-logo-animation.js +1086 -0
  505. package/dist/modes/interactive/components/pi-logo-animation.js.map +1 -0
  506. package/dist/modes/interactive/components/pi-logo-animation.lazy.d.ts +7 -0
  507. package/dist/modes/interactive/components/pi-logo-animation.lazy.d.ts.map +1 -0
  508. package/dist/modes/interactive/components/pi-logo-animation.lazy.js +12 -0
  509. package/dist/modes/interactive/components/pi-logo-animation.lazy.js.map +1 -0
  510. package/dist/modes/interactive/components/pi-logo.d.ts +19 -0
  511. package/dist/modes/interactive/components/pi-logo.d.ts.map +1 -0
  512. package/dist/modes/interactive/components/pi-logo.js +37 -0
  513. package/dist/modes/interactive/components/pi-logo.js.map +1 -0
  514. package/dist/modes/interactive/components/radius-login-selector.d.ts +15 -0
  515. package/dist/modes/interactive/components/radius-login-selector.d.ts.map +1 -0
  516. package/dist/modes/interactive/components/radius-login-selector.js +85 -0
  517. package/dist/modes/interactive/components/radius-login-selector.js.map +1 -0
  518. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  519. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  520. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  521. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  522. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  523. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  524. package/dist/modes/interactive/components/settings-selector.d.ts +6 -4
  525. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  526. package/dist/modes/interactive/components/settings-selector.js +33 -11
  527. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  528. package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -1
  529. package/dist/modes/interactive/components/settings-submenu.js.map +1 -1
  530. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  531. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  532. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  533. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  534. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
  535. package/dist/modes/interactive/components/status-indicator.js.map +1 -1
  536. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  537. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  538. package/dist/modes/interactive/components/themed-text.d.ts +17 -0
  539. package/dist/modes/interactive/components/themed-text.d.ts.map +1 -0
  540. package/dist/modes/interactive/components/themed-text.js +29 -0
  541. package/dist/modes/interactive/components/themed-text.js.map +1 -0
  542. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  543. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  544. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  545. package/dist/modes/interactive/components/tool-execution.js +2 -2
  546. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  547. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  548. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  549. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -1
  550. package/dist/modes/interactive/components/trust-selector.js.map +1 -1
  551. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  552. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  553. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  554. package/dist/modes/interactive/components/user-message.js +5 -4
  555. package/dist/modes/interactive/components/user-message.js.map +1 -1
  556. package/dist/modes/interactive/components/visual-truncate.d.ts +27 -3
  557. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  558. package/dist/modes/interactive/components/visual-truncate.js +39 -6
  559. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  560. package/dist/modes/interactive/external-editor.d.ts.map +1 -1
  561. package/dist/modes/interactive/external-editor.js.map +1 -1
  562. package/dist/modes/interactive/interactive-mode.d.ts +21 -0
  563. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  564. package/dist/modes/interactive/interactive-mode.js +348 -197
  565. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  566. package/dist/modes/interactive/model-catalog-refresh.d.ts.map +1 -1
  567. package/dist/modes/interactive/model-catalog-refresh.js.map +1 -1
  568. package/dist/modes/interactive/model-search.d.ts.map +1 -1
  569. package/dist/modes/interactive/model-search.js.map +1 -1
  570. package/dist/modes/interactive/session-share.d.ts.map +1 -1
  571. package/dist/modes/interactive/session-share.js.map +1 -1
  572. package/dist/modes/interactive/theme/dark.json +59 -72
  573. package/dist/modes/interactive/theme/light.json +57 -69
  574. package/dist/modes/interactive/theme/system-theme.d.ts +55 -0
  575. package/dist/modes/interactive/theme/system-theme.d.ts.map +1 -0
  576. package/dist/modes/interactive/theme/system-theme.js +546 -0
  577. package/dist/modes/interactive/theme/system-theme.js.map +1 -0
  578. package/dist/modes/interactive/theme/theme-controller.d.ts +46 -6
  579. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
  580. package/dist/modes/interactive/theme/theme-controller.js +127 -47
  581. package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
  582. package/dist/modes/interactive/theme/theme-json.d.ts +1 -0
  583. package/dist/modes/interactive/theme/theme-json.d.ts.map +1 -1
  584. package/dist/modes/interactive/theme/theme-json.js +3 -1
  585. package/dist/modes/interactive/theme/theme-json.js.map +1 -1
  586. package/dist/modes/interactive/theme/theme-schema.json +7 -2
  587. package/dist/modes/interactive/theme/theme.d.ts +66 -39
  588. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  589. package/dist/modes/interactive/theme/theme.js +238 -317
  590. package/dist/modes/interactive/theme/theme.js.map +1 -1
  591. package/dist/modes/interactive/tui-renderer.d.ts +2 -1
  592. package/dist/modes/interactive/tui-renderer.d.ts.map +1 -1
  593. package/dist/modes/interactive/tui-renderer.js +1 -0
  594. package/dist/modes/interactive/tui-renderer.js.map +1 -1
  595. package/dist/modes/json-event.d.ts.map +1 -1
  596. package/dist/modes/json-event.js.map +1 -1
  597. package/dist/modes/print-mode.d.ts.map +1 -1
  598. package/dist/modes/print-mode.js.map +1 -1
  599. package/dist/modes/rpc/jsonl.d.ts.map +1 -1
  600. package/dist/modes/rpc/jsonl.js.map +1 -1
  601. package/dist/modes/rpc/rpc-client.d.ts +6 -6
  602. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  603. package/dist/modes/rpc/rpc-client.js +12 -8
  604. package/dist/modes/rpc/rpc-client.js.map +1 -1
  605. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  606. package/dist/modes/rpc/rpc-mode.js +7 -9
  607. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  608. package/dist/modes/rpc/rpc-types.d.ts +10 -1
  609. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  610. package/dist/modes/rpc/rpc-types.js.map +1 -1
  611. package/dist/package-manager-cli.d.ts.map +1 -1
  612. package/dist/package-manager-cli.js +6 -2
  613. package/dist/package-manager-cli.js.map +1 -1
  614. package/dist/rpc-entry.d.ts.map +1 -1
  615. package/dist/rpc-entry.js.map +1 -1
  616. package/dist/utils/abort.d.ts.map +1 -1
  617. package/dist/utils/abort.js.map +1 -1
  618. package/dist/utils/ansi.d.ts.map +1 -1
  619. package/dist/utils/ansi.js.map +1 -1
  620. package/dist/utils/changelog.d.ts.map +1 -1
  621. package/dist/utils/changelog.js.map +1 -1
  622. package/dist/utils/child-process.d.ts.map +1 -1
  623. package/dist/utils/child-process.js.map +1 -1
  624. package/dist/utils/clipboard-command.d.ts.map +1 -1
  625. package/dist/utils/clipboard-command.js.map +1 -1
  626. package/dist/utils/clipboard-image.d.ts.map +1 -1
  627. package/dist/utils/clipboard-image.js +14 -17
  628. package/dist/utils/clipboard-image.js.map +1 -1
  629. package/dist/utils/clipboard.d.ts +2 -0
  630. package/dist/utils/clipboard.d.ts.map +1 -1
  631. package/dist/utils/clipboard.js +5 -0
  632. package/dist/utils/clipboard.js.map +1 -1
  633. package/dist/utils/deprecation.d.ts.map +1 -1
  634. package/dist/utils/deprecation.js.map +1 -1
  635. package/dist/utils/exif-orientation.d.ts.map +1 -1
  636. package/dist/utils/exif-orientation.js.map +1 -1
  637. package/dist/utils/frontmatter.d.ts.map +1 -1
  638. package/dist/utils/frontmatter.js.map +1 -1
  639. package/dist/utils/fs-watch.d.ts.map +1 -1
  640. package/dist/utils/fs-watch.js.map +1 -1
  641. package/dist/utils/git.d.ts.map +1 -1
  642. package/dist/utils/git.js.map +1 -1
  643. package/dist/utils/html.d.ts.map +1 -1
  644. package/dist/utils/html.js.map +1 -1
  645. package/dist/utils/image-convert.d.ts.map +1 -1
  646. package/dist/utils/image-convert.js.map +1 -1
  647. package/dist/utils/image-process.d.ts.map +1 -1
  648. package/dist/utils/image-process.js.map +1 -1
  649. package/dist/utils/image-resize-core.d.ts.map +1 -1
  650. package/dist/utils/image-resize-core.js.map +1 -1
  651. package/dist/utils/image-resize-worker.d.ts.map +1 -1
  652. package/dist/utils/image-resize-worker.js.map +1 -1
  653. package/dist/utils/image-resize.d.ts.map +1 -1
  654. package/dist/utils/image-resize.js.map +1 -1
  655. package/dist/utils/json.d.ts.map +1 -1
  656. package/dist/utils/json.js.map +1 -1
  657. package/dist/utils/management-http.d.ts.map +1 -1
  658. package/dist/utils/management-http.js.map +1 -1
  659. package/dist/utils/mime.d.ts.map +1 -1
  660. package/dist/utils/mime.js.map +1 -1
  661. package/dist/utils/open-browser.d.ts.map +1 -1
  662. package/dist/utils/open-browser.js.map +1 -1
  663. package/dist/utils/paths.d.ts +3 -3
  664. package/dist/utils/paths.d.ts.map +1 -1
  665. package/dist/utils/paths.js +5 -4
  666. package/dist/utils/paths.js.map +1 -1
  667. package/dist/utils/photon.d.ts.map +1 -1
  668. package/dist/utils/photon.js.map +1 -1
  669. package/dist/utils/pi-user-agent.d.ts.map +1 -1
  670. package/dist/utils/pi-user-agent.js.map +1 -1
  671. package/dist/utils/shell.d.ts +1 -3
  672. package/dist/utils/shell.d.ts.map +1 -1
  673. package/dist/utils/shell.js +3 -30
  674. package/dist/utils/shell.js.map +1 -1
  675. package/dist/utils/sleep.d.ts.map +1 -1
  676. package/dist/utils/sleep.js.map +1 -1
  677. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  678. package/dist/utils/syntax-highlight.js +2 -0
  679. package/dist/utils/syntax-highlight.js.map +1 -1
  680. package/dist/utils/text.d.ts.map +1 -1
  681. package/dist/utils/text.js.map +1 -1
  682. package/dist/utils/tool-result-images.d.ts.map +1 -1
  683. package/dist/utils/tool-result-images.js.map +1 -1
  684. package/dist/utils/tools-manager.d.ts.map +1 -1
  685. package/dist/utils/tools-manager.js.map +1 -1
  686. package/dist/utils/version-check.d.ts.map +1 -1
  687. package/dist/utils/version-check.js.map +1 -1
  688. package/dist/utils/windows-self-update.d.ts.map +1 -1
  689. package/dist/utils/windows-self-update.js.map +1 -1
  690. package/dist/utils/wsl.d.ts.map +1 -1
  691. package/dist/utils/wsl.js.map +1 -1
  692. package/dist/utils/zip.d.ts.map +1 -1
  693. package/dist/utils/zip.js.map +1 -1
  694. package/docs/cli.md +58 -7
  695. package/docs/codemode.md +207 -0
  696. package/docs/configuration.md +2 -0
  697. package/docs/custom-provider.md +43 -4
  698. package/docs/docs.json +13 -1
  699. package/docs/environment-variables.md +2 -2
  700. package/docs/extensions.md +55 -0
  701. package/docs/index.md +1 -1
  702. package/docs/keybindings.md +1 -1
  703. package/docs/llama-cpp.md +13 -0
  704. package/docs/mcp.md +248 -0
  705. package/docs/models.md +57 -1
  706. package/docs/packages.md +4 -2
  707. package/docs/providers.md +19 -6
  708. package/docs/rpc-commands.md +9 -3
  709. package/docs/rpc.md +3 -1
  710. package/docs/sdk.md +8 -3
  711. package/docs/security.md +2 -0
  712. package/docs/session-format.md +5 -1
  713. package/docs/settings.md +24 -5
  714. package/docs/themes.md +33 -7
  715. package/docs/tui.md +18 -0
  716. package/docs/usage.md +1 -1
  717. package/docs/virtual-models.md +114 -0
  718. package/docs/windows.md +2 -0
  719. package/examples/README.md +1 -1
  720. package/examples/extensions/README.md +2 -0
  721. package/examples/extensions/built-in-tool-renderer.ts +16 -40
  722. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  723. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  724. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  725. package/examples/extensions/custom-provider-gitlab-duo/test.ts +5 -5
  726. package/examples/extensions/debug-provider.ts +90 -0
  727. package/examples/extensions/gondolin/package-lock.json +2 -2
  728. package/examples/extensions/gondolin/package.json +1 -1
  729. package/examples/extensions/jev-router.ts +113 -0
  730. package/examples/extensions/minimal-mode.ts +24 -96
  731. package/examples/extensions/sandbox/package-lock.json +2 -2
  732. package/examples/extensions/sandbox/package.json +1 -1
  733. package/examples/extensions/with-deps/package-lock.json +2 -2
  734. package/examples/extensions/with-deps/package.json +1 -1
  735. package/examples/rpc-client.ts +1 -1
  736. package/examples/rpc-extension-ui.ts +1 -1
  737. package/examples/sdk/14-codemode-mcp.ts +61 -0
  738. package/examples/sdk/README.md +2 -1
  739. package/npm-shrinkwrap.json +88 -43
  740. package/package.json +14 -12
  741. package/dist/bundle/chunks/anthropic-messages-J5WXPPPC.js +0 -6
  742. package/dist/bundle/chunks/azure-openai-responses-HUSQ3GP2.js +0 -2
  743. package/dist/bundle/chunks/chunk-6R7UI4IY.js +0 -2
  744. package/dist/bundle/chunks/chunk-FN7P5NHX.js +0 -1568
  745. package/dist/bundle/chunks/chunk-NUHFSC37.js +0 -25
  746. package/dist/bundle/chunks/chunk-RCZIEVGO.js +0 -11
  747. package/dist/bundle/chunks/chunk-S7SZN6Z3.js +0 -2
  748. package/dist/bundle/chunks/chunk-UXY3GQU2.js +0 -2
  749. package/dist/bundle/chunks/chunk-XNGRGP62.js +0 -2
  750. package/dist/bundle/chunks/google-generative-ai-IMS5EK2Y.js +0 -2
  751. package/dist/bundle/chunks/google-vertex-O4YJEQUW.js +0 -2
  752. package/dist/bundle/chunks/mistral-conversations-NOSQHBEY.js +0 -5
  753. package/dist/bundle/chunks/openai-responses-HWEUZ6WZ.js +0 -2
  754. package/dist/bundle/chunks/virtual-modules-WS3GCBF2.js +0 -2
@@ -0,0 +1,72 @@
1
+ /**
2
+ * MCP server configuration.
3
+ *
4
+ * Servers are read from `mcp.json` in the agent directory and, for trusted projects, from
5
+ * `<project>/.pi/mcp.json`. Both use the `mcpServers` shape shared by other MCP clients, so
6
+ * existing configurations can be copied over. Project entries replace global entries with the
7
+ * same name.
8
+ *
9
+ * ```json
10
+ * {
11
+ * "mcpServers": {
12
+ * "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "."] },
13
+ * "docs": { "url": "https://example.com/mcp", "headers": { "Authorization": "Bearer ${DOCS_TOKEN}" } },
14
+ * "sentry": { "url": "https://mcp.sentry.dev/mcp" }
15
+ * }
16
+ * }
17
+ * ```
18
+ *
19
+ * HTTP servers without an `Authorization` header use OAuth when they answer 401 (sign in with `/mcp`).
20
+ * `"auth": { "provider": "<provider>" }` sends the token of a `/login` provider instead. Project files
21
+ * cannot use it, so a repository cannot pick where the credential goes.
22
+ *
23
+ * The top-level `autoEnableCodemode` (default true) activates the codemode tool when a server
24
+ * with `codemode` exposure connects. A project value overrides the global one.
25
+ */
26
+ import { type McpExposure, type McpServerConfig } from "../../core/mcp-servers.ts";
27
+ export type { McpExposure, McpHttpServerConfig, McpOAuthConfig, McpServerConfig, McpStdioServerConfig, } from "../../core/mcp-servers.ts";
28
+ export { getMcpToolExposure } from "../../core/mcp-servers.ts";
29
+ export interface McpServerEntry {
30
+ name: string;
31
+ config: McpServerConfig;
32
+ /** Config file that defined the entry, or the path of the extension that registered it. */
33
+ source: string;
34
+ /**
35
+ * The global or the project `mcp.json`, or `extension` for servers registered with
36
+ * `pi.registerMcpServer()`. Changes to extension servers are not saved.
37
+ */
38
+ scope?: "global" | "project" | "extension";
39
+ }
40
+ export interface LoadedMcpConfig {
41
+ servers: McpServerEntry[];
42
+ /** Activate the codemode tool when `codemode` servers connect. Default: true. */
43
+ autoEnableCodemode?: boolean;
44
+ errors: string[];
45
+ }
46
+ /**
47
+ * Load global and (when trusted) project MCP configuration. Disabled servers are included with
48
+ * `enabled: false`, so they can be enabled again.
49
+ */
50
+ export declare function loadMcpConfig(options: {
51
+ agentDir: string;
52
+ cwd: string;
53
+ projectTrusted: boolean;
54
+ }): LoadedMcpConfig;
55
+ /** Settings `/mcp` changes. `enabled: true` and `exposure: "codemode"` are the defaults and remove the key. */
56
+ export interface McpServerConfigPatch {
57
+ enabled?: boolean;
58
+ exposure?: McpExposure;
59
+ }
60
+ /**
61
+ * Change one server's settings in the `mcp.json` that defines it. Other content is kept; the file is
62
+ * rewritten with its indentation.
63
+ */
64
+ export declare function updateMcpServerConfig(path: string, name: string, patch: McpServerConfigPatch): void;
65
+ /**
66
+ * Add a server to an `mcp.json`, creating the file when missing. An existing entry with the same
67
+ * name is replaced. Returns true when an entry was replaced.
68
+ */
69
+ export declare function addMcpServerConfig(path: string, name: string, config: McpServerConfig): boolean;
70
+ /** Remove a server from an `mcp.json`. Returns false when the file does not define it. */
71
+ export declare function removeMcpServerConfig(path: string, name: string): boolean;
72
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/extensions/mcp/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAKH,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,eAAe,EAGpB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACX,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,oBAAoB,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,2FAA2F;IAC3F,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;CAC3C;AAED,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,iFAAiF;IACjF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,MAAM,EAAE,MAAM,EAAE,CAAC;CACjB;AAgDD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,OAAO,CAAA;CAAE,GAAG,eAAe,CASlH;AAED,+GAA+G;AAC/G,MAAM,WAAW,oBAAoB;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,WAAW,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAcnG;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAU/F;AAED,0FAA0F;AAC1F,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAUzE"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * MCP server configuration.
3
+ *
4
+ * Servers are read from `mcp.json` in the agent directory and, for trusted projects, from
5
+ * `<project>/.pi/mcp.json`. Both use the `mcpServers` shape shared by other MCP clients, so
6
+ * existing configurations can be copied over. Project entries replace global entries with the
7
+ * same name.
8
+ *
9
+ * ```json
10
+ * {
11
+ * "mcpServers": {
12
+ * "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "."] },
13
+ * "docs": { "url": "https://example.com/mcp", "headers": { "Authorization": "Bearer ${DOCS_TOKEN}" } },
14
+ * "sentry": { "url": "https://mcp.sentry.dev/mcp" }
15
+ * }
16
+ * }
17
+ * ```
18
+ *
19
+ * HTTP servers without an `Authorization` header use OAuth when they answer 401 (sign in with `/mcp`).
20
+ * `"auth": { "provider": "<provider>" }` sends the token of a `/login` provider instead. Project files
21
+ * cannot use it, so a repository cannot pick where the credential goes.
22
+ *
23
+ * The top-level `autoEnableCodemode` (default true) activates the codemode tool when a server
24
+ * with `codemode` exposure connects. A project value overrides the global one.
25
+ */
26
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
27
+ import { dirname, join } from "node:path";
28
+ import { CONFIG_DIR_NAME } from "../../config.js";
29
+ import { mcpNamespace, validateMcpServerConfig, } from "../../core/mcp-servers.js";
30
+ export { getMcpToolExposure } from "../../core/mcp-servers.js";
31
+ function isRecord(value) {
32
+ return typeof value === "object" && value !== null && !Array.isArray(value);
33
+ }
34
+ function readConfigFile(path, scope, state) {
35
+ const { servers, errors } = state;
36
+ if (!existsSync(path))
37
+ return;
38
+ let parsed;
39
+ try {
40
+ parsed = JSON.parse(readFileSync(path, "utf8"));
41
+ }
42
+ catch (error) {
43
+ errors.push(`${path}: ${error instanceof Error ? error.message : String(error)}`);
44
+ return;
45
+ }
46
+ if (!isRecord(parsed) || (parsed.mcpServers !== undefined && !isRecord(parsed.mcpServers))) {
47
+ errors.push(`${path}: expected an object with an "mcpServers" object`);
48
+ return;
49
+ }
50
+ if (typeof parsed.autoEnableCodemode === "boolean")
51
+ state.autoEnableCodemode = parsed.autoEnableCodemode;
52
+ else if (parsed.autoEnableCodemode !== undefined)
53
+ errors.push(`${path}: autoEnableCodemode must be a boolean`);
54
+ for (const [name, value] of Object.entries(parsed.mcpServers ?? {})) {
55
+ const config = validateMcpServerConfig(name, value);
56
+ if (typeof config === "string") {
57
+ errors.push(`${path}: ${config}`);
58
+ continue;
59
+ }
60
+ // Names that differ only in `-` and `_` would share a namespace.
61
+ const clash = [...servers.keys()].find((other) => other !== name && mcpNamespace(other) === mcpNamespace(name));
62
+ if (clash) {
63
+ errors.push(`${path}: server "${name}" conflicts with "${clash}"`);
64
+ continue;
65
+ }
66
+ if (scope === "project" && "url" in config && config.auth) {
67
+ errors.push(`${path}: server "${name}": auth is only allowed in the global mcp.json`);
68
+ continue;
69
+ }
70
+ servers.set(name, { name, config, source: path, scope });
71
+ }
72
+ }
73
+ /**
74
+ * Load global and (when trusted) project MCP configuration. Disabled servers are included with
75
+ * `enabled: false`, so they can be enabled again.
76
+ */
77
+ export function loadMcpConfig(options) {
78
+ const state = { servers: new Map(), errors: [] };
79
+ readConfigFile(join(options.agentDir, "mcp.json"), "global", state);
80
+ if (options.projectTrusted)
81
+ readConfigFile(join(options.cwd, CONFIG_DIR_NAME, "mcp.json"), "project", state);
82
+ return {
83
+ servers: [...state.servers.values()],
84
+ ...(state.autoEnableCodemode === undefined ? {} : { autoEnableCodemode: state.autoEnableCodemode }),
85
+ errors: state.errors,
86
+ };
87
+ }
88
+ /**
89
+ * Change one server's settings in the `mcp.json` that defines it. Other content is kept; the file is
90
+ * rewritten with its indentation.
91
+ */
92
+ export function updateMcpServerConfig(path, name, patch) {
93
+ editMcpServers(path, (servers) => {
94
+ const server = servers?.[name];
95
+ if (!isRecord(server))
96
+ throw new Error(`${path} does not define MCP server "${name}"`);
97
+ if (patch.enabled !== undefined) {
98
+ if (patch.enabled)
99
+ delete server.enabled;
100
+ else
101
+ server.enabled = false;
102
+ }
103
+ if (patch.exposure !== undefined) {
104
+ if (patch.exposure === "codemode")
105
+ delete server.exposure;
106
+ else
107
+ server.exposure = patch.exposure;
108
+ }
109
+ return true;
110
+ });
111
+ }
112
+ /**
113
+ * Add a server to an `mcp.json`, creating the file when missing. An existing entry with the same
114
+ * name is replaced. Returns true when an entry was replaced.
115
+ */
116
+ export function addMcpServerConfig(path, name, config) {
117
+ let replaced = false;
118
+ editMcpServers(path, (servers, parsed) => {
119
+ const target = servers ?? {};
120
+ replaced = target[name] !== undefined;
121
+ target[name] = config;
122
+ parsed.mcpServers = target;
123
+ return true;
124
+ });
125
+ return replaced;
126
+ }
127
+ /** Remove a server from an `mcp.json`. Returns false when the file does not define it. */
128
+ export function removeMcpServerConfig(path, name) {
129
+ if (!existsSync(path))
130
+ return false;
131
+ let removed = false;
132
+ editMcpServers(path, (servers) => {
133
+ if (!servers || servers[name] === undefined)
134
+ return false;
135
+ delete servers[name];
136
+ removed = true;
137
+ return true;
138
+ });
139
+ return removed;
140
+ }
141
+ /**
142
+ * Read an `mcp.json` (an empty config when missing), let `edit` change its `mcpServers`, and write
143
+ * it back with its indentation when `edit` returns true. Other content is kept.
144
+ */
145
+ function editMcpServers(path, edit) {
146
+ const text = existsSync(path) ? readFileSync(path, "utf8") : undefined;
147
+ const parsed = text === undefined ? {} : JSON.parse(text);
148
+ if (!isRecord(parsed) || (parsed.mcpServers !== undefined && !isRecord(parsed.mcpServers))) {
149
+ throw new Error(`${path}: expected an object with an "mcpServers" object`);
150
+ }
151
+ const servers = isRecord(parsed.mcpServers) ? parsed.mcpServers : undefined;
152
+ if (!edit(servers, parsed))
153
+ return;
154
+ const indent = (text && /^([ \t]+)\S/m.exec(text)?.[1]) || " ";
155
+ mkdirSync(dirname(path), { recursive: true });
156
+ writeFileSync(path, `${JSON.stringify(parsed, null, indent)}\n`);
157
+ }
158
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/extensions/mcp/config.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * MCP server configuration.\n *\n * Servers are read from `mcp.json` in the agent directory and, for trusted projects, from\n * `<project>/.pi/mcp.json`. Both use the `mcpServers` shape shared by other MCP clients, so\n * existing configurations can be copied over. Project entries replace global entries with the\n * same name.\n *\n * ```json\n * {\n * \"mcpServers\": {\n * \"filesystem\": { \"command\": \"npx\", \"args\": [\"-y\", \"@modelcontextprotocol/server-filesystem\", \".\"] },\n * \"docs\": { \"url\": \"https://example.com/mcp\", \"headers\": { \"Authorization\": \"Bearer ${DOCS_TOKEN}\" } },\n * \"sentry\": { \"url\": \"https://mcp.sentry.dev/mcp\" }\n * }\n * }\n * ```\n *\n * HTTP servers without an `Authorization` header use OAuth when they answer 401 (sign in with `/mcp`).\n * `\"auth\": { \"provider\": \"<provider>\" }` sends the token of a `/login` provider instead. Project files\n * cannot use it, so a repository cannot pick where the credential goes.\n *\n * The top-level `autoEnableCodemode` (default true) activates the codemode tool when a server\n * with `codemode` exposure connects. A project value overrides the global one.\n */\n\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { CONFIG_DIR_NAME } from \"../../config.ts\";\nimport {\n\ttype McpExposure,\n\ttype McpServerConfig,\n\tmcpNamespace,\n\tvalidateMcpServerConfig,\n} from \"../../core/mcp-servers.ts\";\n\nexport type {\n\tMcpExposure,\n\tMcpHttpServerConfig,\n\tMcpOAuthConfig,\n\tMcpServerConfig,\n\tMcpStdioServerConfig,\n} from \"../../core/mcp-servers.ts\";\nexport { getMcpToolExposure } from \"../../core/mcp-servers.ts\";\n\nexport interface McpServerEntry {\n\tname: string;\n\tconfig: McpServerConfig;\n\t/** Config file that defined the entry, or the path of the extension that registered it. */\n\tsource: string;\n\t/**\n\t * The global or the project `mcp.json`, or `extension` for servers registered with\n\t * `pi.registerMcpServer()`. Changes to extension servers are not saved.\n\t */\n\tscope?: \"global\" | \"project\" | \"extension\";\n}\n\nexport interface LoadedMcpConfig {\n\tservers: McpServerEntry[];\n\t/** Activate the codemode tool when `codemode` servers connect. Default: true. */\n\tautoEnableCodemode?: boolean;\n\terrors: string[];\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\ninterface McpConfigState {\n\tservers: Map<string, McpServerEntry>;\n\tautoEnableCodemode?: boolean;\n\terrors: string[];\n}\n\nfunction readConfigFile(path: string, scope: \"global\" | \"project\", state: McpConfigState): void {\n\tconst { servers, errors } = state;\n\tif (!existsSync(path)) return;\n\tlet parsed: unknown;\n\ttry {\n\t\tparsed = JSON.parse(readFileSync(path, \"utf8\"));\n\t} catch (error) {\n\t\terrors.push(`${path}: ${error instanceof Error ? error.message : String(error)}`);\n\t\treturn;\n\t}\n\tif (!isRecord(parsed) || (parsed.mcpServers !== undefined && !isRecord(parsed.mcpServers))) {\n\t\terrors.push(`${path}: expected an object with an \"mcpServers\" object`);\n\t\treturn;\n\t}\n\tif (typeof parsed.autoEnableCodemode === \"boolean\") state.autoEnableCodemode = parsed.autoEnableCodemode;\n\telse if (parsed.autoEnableCodemode !== undefined) errors.push(`${path}: autoEnableCodemode must be a boolean`);\n\tfor (const [name, value] of Object.entries(parsed.mcpServers ?? {})) {\n\t\tconst config = validateMcpServerConfig(name, value);\n\t\tif (typeof config === \"string\") {\n\t\t\terrors.push(`${path}: ${config}`);\n\t\t\tcontinue;\n\t\t}\n\t\t// Names that differ only in `-` and `_` would share a namespace.\n\t\tconst clash = [...servers.keys()].find((other) => other !== name && mcpNamespace(other) === mcpNamespace(name));\n\t\tif (clash) {\n\t\t\terrors.push(`${path}: server \"${name}\" conflicts with \"${clash}\"`);\n\t\t\tcontinue;\n\t\t}\n\t\tif (scope === \"project\" && \"url\" in config && config.auth) {\n\t\t\terrors.push(`${path}: server \"${name}\": auth is only allowed in the global mcp.json`);\n\t\t\tcontinue;\n\t\t}\n\t\tservers.set(name, { name, config, source: path, scope });\n\t}\n}\n\n/**\n * Load global and (when trusted) project MCP configuration. Disabled servers are included with\n * `enabled: false`, so they can be enabled again.\n */\nexport function loadMcpConfig(options: { agentDir: string; cwd: string; projectTrusted: boolean }): LoadedMcpConfig {\n\tconst state: McpConfigState = { servers: new Map(), errors: [] };\n\treadConfigFile(join(options.agentDir, \"mcp.json\"), \"global\", state);\n\tif (options.projectTrusted) readConfigFile(join(options.cwd, CONFIG_DIR_NAME, \"mcp.json\"), \"project\", state);\n\treturn {\n\t\tservers: [...state.servers.values()],\n\t\t...(state.autoEnableCodemode === undefined ? {} : { autoEnableCodemode: state.autoEnableCodemode }),\n\t\terrors: state.errors,\n\t};\n}\n\n/** Settings `/mcp` changes. `enabled: true` and `exposure: \"codemode\"` are the defaults and remove the key. */\nexport interface McpServerConfigPatch {\n\tenabled?: boolean;\n\texposure?: McpExposure;\n}\n\n/**\n * Change one server's settings in the `mcp.json` that defines it. Other content is kept; the file is\n * rewritten with its indentation.\n */\nexport function updateMcpServerConfig(path: string, name: string, patch: McpServerConfigPatch): void {\n\teditMcpServers(path, (servers) => {\n\t\tconst server = servers?.[name];\n\t\tif (!isRecord(server)) throw new Error(`${path} does not define MCP server \"${name}\"`);\n\t\tif (patch.enabled !== undefined) {\n\t\t\tif (patch.enabled) delete server.enabled;\n\t\t\telse server.enabled = false;\n\t\t}\n\t\tif (patch.exposure !== undefined) {\n\t\t\tif (patch.exposure === \"codemode\") delete server.exposure;\n\t\t\telse server.exposure = patch.exposure;\n\t\t}\n\t\treturn true;\n\t});\n}\n\n/**\n * Add a server to an `mcp.json`, creating the file when missing. An existing entry with the same\n * name is replaced. Returns true when an entry was replaced.\n */\nexport function addMcpServerConfig(path: string, name: string, config: McpServerConfig): boolean {\n\tlet replaced = false;\n\teditMcpServers(path, (servers, parsed) => {\n\t\tconst target = servers ?? {};\n\t\treplaced = target[name] !== undefined;\n\t\ttarget[name] = config;\n\t\tparsed.mcpServers = target;\n\t\treturn true;\n\t});\n\treturn replaced;\n}\n\n/** Remove a server from an `mcp.json`. Returns false when the file does not define it. */\nexport function removeMcpServerConfig(path: string, name: string): boolean {\n\tif (!existsSync(path)) return false;\n\tlet removed = false;\n\teditMcpServers(path, (servers) => {\n\t\tif (!servers || servers[name] === undefined) return false;\n\t\tdelete servers[name];\n\t\tremoved = true;\n\t\treturn true;\n\t});\n\treturn removed;\n}\n\n/**\n * Read an `mcp.json` (an empty config when missing), let `edit` change its `mcpServers`, and write\n * it back with its indentation when `edit` returns true. Other content is kept.\n */\nfunction editMcpServers(\n\tpath: string,\n\tedit: (servers: Record<string, unknown> | undefined, parsed: Record<string, unknown>) => boolean,\n): void {\n\tconst text = existsSync(path) ? readFileSync(path, \"utf8\") : undefined;\n\tconst parsed: unknown = text === undefined ? {} : JSON.parse(text);\n\tif (!isRecord(parsed) || (parsed.mcpServers !== undefined && !isRecord(parsed.mcpServers))) {\n\t\tthrow new Error(`${path}: expected an object with an \"mcpServers\" object`);\n\t}\n\tconst servers = isRecord(parsed.mcpServers) ? parsed.mcpServers : undefined;\n\tif (!edit(servers, parsed)) return;\n\tconst indent = (text && /^([ \\t]+)\\S/m.exec(text)?.[1]) || \" \";\n\tmkdirSync(dirname(path), { recursive: true });\n\twriteFileSync(path, `${JSON.stringify(parsed, null, indent)}\\n`);\n}\n"]}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Built-in MCP integration.
3
+ *
4
+ * Connects the servers from `mcp.json` and the servers extensions register with
5
+ * `pi.registerMcpServer()` when a session starts, and servers registered later right away. A server
6
+ * in `mcp.json` takes precedence over a registered server of the same name. Connections run in the
7
+ * background: the first prompt waits only for servers with `direct` tools, and codemode scripts,
8
+ * `tool_search`, and the resource tools wait for the servers they need when they run. Tools are
9
+ * registered as `mcp__<server>__<tool>`. By default (`"exposure": "codemode"`) the tools are only
10
+ * callable from codemode scripts, which keeps MCP tools out of the model's tool declarations and
11
+ * the codemode description: scripts find the tools with `searchTools()` and the server instructions
12
+ * with `describeNamespace()`. The codemode tool is activated for that unless `autoEnableCodemode` is
13
+ * false. `"deferred"` declares the tools to the model once the `tool_search` tool loads them, and
14
+ * activates `tool_search` instead of codemode.
15
+ * `"exposure": "direct"` declares them to the model right away, and `"hidden"` makes them
16
+ * unreachable. `toolExposure` overrides the exposure of single tools. Servers with resources are
17
+ * reached through Codex's `list_mcp_resources`, `list_mcp_resource_templates`, and
18
+ * `read_mcp_resource` tools (resources.ts).
19
+ *
20
+ * Every call runs through pi's tool pipeline, so `tool_call`/`tool_result` hooks and permission
21
+ * extensions apply to MCP tools the same way they do to built-in tools.
22
+ *
23
+ * Problems found at startup (config errors, failed connections, servers that need a sign-in) are
24
+ * reported once. `/mcp` opens a manager to sign in, reconnect, enable or disable servers, and change
25
+ * their exposure; the last two are saved to the `mcp.json` that defines the server, or apply to the
26
+ * current session for registered servers.
27
+ */
28
+ import type { ExtensionContext, ExtensionFactory } from "../../core/extensions/types.ts";
29
+ import { type LoadedMcpConfig, type McpServerConfigPatch, type McpServerEntry } from "./config.ts";
30
+ import type { McpOAuthCredentialStore } from "./oauth.ts";
31
+ import type { McpTransportFactory } from "./runtime.ts";
32
+ export type { McpTransportFactory } from "./runtime.ts";
33
+ export interface McpExtensionOptions {
34
+ /** Defaults to reading `mcp.json` from the agent directory and the trusted project. */
35
+ loadConfig?: (ctx: ExtensionContext) => LoadedMcpConfig;
36
+ /** Defaults to stdio and streamable HTTP transports built from the server config. */
37
+ createTransport?: McpTransportFactory;
38
+ /** Defaults to `mcp-auth.json` in the agent directory. */
39
+ credentials?: McpOAuthCredentialStore;
40
+ /** File server log messages are appended to. Defaults to `mcp.log` in the agent directory. */
41
+ logPath?: string;
42
+ /** Opens the OAuth authorization URL. Defaults to the platform browser. */
43
+ openUrl?: (url: string) => void;
44
+ /** Saves `/mcp` changes to the server's config file. Defaults to editing its `mcp.json`. */
45
+ updateConfig?: (entry: McpServerEntry, patch: McpServerConfigPatch) => void;
46
+ /**
47
+ * How long the first prompt waits for servers with `direct` tools that are still connecting at
48
+ * startup, in milliseconds. Their tools become available when they connect. Other servers are
49
+ * waited for when a script or search needs them. Default: 10000.
50
+ */
51
+ startupWaitMs?: number;
52
+ }
53
+ /** Name of the system prompt section that lists the servers whose tools are not declared. */
54
+ export declare const MCP_SERVERS_SECTION = "mcp_servers";
55
+ /**
56
+ * Characters of the whole section. Descriptions shrink to fit; when the server lines alone do not
57
+ * fit, the last servers are left out and counted in a closing line.
58
+ */
59
+ export declare const MAX_SERVERS_SECTION_CHARS = 4096;
60
+ /** What the `mcp_servers` section needs of a server. */
61
+ export interface McpServerListing {
62
+ entry: McpServerEntry;
63
+ connection?: {
64
+ instructions?: string;
65
+ };
66
+ }
67
+ /**
68
+ * The `mcp_servers` section: every enabled server with codemode or deferred tools, with how its
69
+ * tools are reached and a one-line summary. The model learns of the servers from it, since neither
70
+ * codemode nor tool_search lists them. Undefined when there are no such servers.
71
+ */
72
+ export declare function renderServersSection(servers: readonly McpServerListing[]): string | undefined;
73
+ export declare function createMcpExtension(options?: McpExtensionOptions): ExtensionFactory;
74
+ declare const _default: ExtensionFactory;
75
+ export default _default;
76
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/extensions/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAMH,OAAO,KAAK,EAGX,gBAAgB,EAChB,gBAAgB,EAEhB,MAAM,gCAAgC,CAAC;AAMxC,OAAO,EAEN,KAAK,eAAe,EAGpB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EAEnB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,uBAAuB,EAAmB,MAAM,YAAY,CAAC;AAS3E,OAAO,KAAK,EAAqC,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAI3F,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,MAAM,WAAW,mBAAmB;IACnC,uFAAuF;IACvF,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,eAAe,CAAC;IACxD,qFAAqF;IACrF,eAAe,CAAC,EAAE,mBAAmB,CAAC;IACtC,0DAA0D;IAC1D,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,8FAA8F;IAC9F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,4FAA4F;IAC5F,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC5E;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AA4DD,6FAA6F;AAC7F,eAAO,MAAM,mBAAmB,gBAAgB,CAAC;AAGjD;;;GAGG;AACH,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAe9C,wDAAwD;AACxD,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,cAAc,CAAC;IACtB,UAAU,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACvC;AAQD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,GAAG,MAAM,GAAG,SAAS,CA0B7F;AA2DD,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,gBAAgB,CAs4BtF"}