@sammorrowdrums/mcpi 0.70.8 → 0.85.0-bootstrap.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 (888) hide show
  1. package/CHANGELOG.md +1621 -0
  2. package/LICENSE +21 -0
  3. package/README.md +196 -141
  4. package/dist/bun/cli.d.ts.map +1 -1
  5. package/dist/bun/cli.js +4 -0
  6. package/dist/bun/cli.js.map +1 -1
  7. package/dist/bun/register-bedrock.d.ts.map +1 -1
  8. package/dist/bun/register-bedrock.js +1 -1
  9. package/dist/bun/register-bedrock.js.map +1 -1
  10. package/dist/bun/restore-sandbox-env.d.ts +17 -0
  11. package/dist/bun/restore-sandbox-env.d.ts.map +1 -0
  12. package/dist/bun/restore-sandbox-env.js +36 -0
  13. package/dist/bun/restore-sandbox-env.js.map +1 -0
  14. package/dist/cli/args.d.ts +9 -2
  15. package/dist/cli/args.d.ts.map +1 -1
  16. package/dist/cli/args.js +116 -16
  17. package/dist/cli/args.js.map +1 -1
  18. package/dist/cli/auth-check.d.ts +19 -0
  19. package/dist/cli/auth-check.d.ts.map +1 -0
  20. package/dist/cli/auth-check.js +50 -0
  21. package/dist/cli/auth-check.js.map +1 -0
  22. package/dist/cli/auth-command.d.ts +24 -0
  23. package/dist/cli/auth-command.d.ts.map +1 -0
  24. package/dist/cli/auth-command.js +103 -0
  25. package/dist/cli/auth-command.js.map +1 -0
  26. package/dist/cli/config-selector.d.ts +6 -4
  27. package/dist/cli/config-selector.d.ts.map +1 -1
  28. package/dist/cli/config-selector.js +4 -4
  29. package/dist/cli/config-selector.js.map +1 -1
  30. package/dist/cli/credential-print.d.ts +13 -0
  31. package/dist/cli/credential-print.d.ts.map +1 -0
  32. package/dist/cli/credential-print.js +76 -0
  33. package/dist/cli/credential-print.js.map +1 -0
  34. package/dist/cli/experimental/auth.d.ts +16 -0
  35. package/dist/cli/experimental/auth.d.ts.map +1 -0
  36. package/dist/cli/experimental/auth.js +13 -0
  37. package/dist/cli/experimental/auth.js.map +1 -0
  38. package/dist/cli/experimental/cli.d.ts +6 -0
  39. package/dist/cli/experimental/cli.d.ts.map +1 -0
  40. package/dist/cli/experimental/cli.js +5 -0
  41. package/dist/cli/experimental/cli.js.map +1 -0
  42. package/dist/cli/experimental/command-options.d.ts +17 -0
  43. package/dist/cli/experimental/command-options.d.ts.map +1 -0
  44. package/dist/cli/experimental/command-options.js +35 -0
  45. package/dist/cli/experimental/command-options.js.map +1 -0
  46. package/dist/cli/experimental/command.d.ts +63 -0
  47. package/dist/cli/experimental/command.d.ts.map +1 -0
  48. package/dist/cli/experimental/command.js +130 -0
  49. package/dist/cli/experimental/command.js.map +1 -0
  50. package/dist/cli/experimental/commands/client.d.ts +13 -0
  51. package/dist/cli/experimental/commands/client.d.ts.map +1 -0
  52. package/dist/cli/experimental/commands/client.js +25 -0
  53. package/dist/cli/experimental/commands/client.js.map +1 -0
  54. package/dist/cli/experimental/commands/mcpi.d.ts +15 -0
  55. package/dist/cli/experimental/commands/mcpi.d.ts.map +1 -0
  56. package/dist/cli/experimental/commands/mcpi.js +28 -0
  57. package/dist/cli/experimental/commands/mcpi.js.map +1 -0
  58. package/dist/cli/experimental/commands/server.d.ts +13 -0
  59. package/dist/cli/experimental/commands/server.d.ts.map +1 -0
  60. package/dist/cli/experimental/commands/server.js +25 -0
  61. package/dist/cli/experimental/commands/server.js.map +1 -0
  62. package/dist/cli/experimental/transport-address.d.ts +10 -0
  63. package/dist/cli/experimental/transport-address.d.ts.map +1 -0
  64. package/dist/cli/experimental/transport-address.js +38 -0
  65. package/dist/cli/experimental/transport-address.js.map +1 -0
  66. package/dist/cli/file-processor.d.ts.map +1 -1
  67. package/dist/cli/file-processor.js +13 -26
  68. package/dist/cli/file-processor.js.map +1 -1
  69. package/dist/cli/initial-message.d.ts +1 -1
  70. package/dist/cli/initial-message.d.ts.map +1 -1
  71. package/dist/cli/initial-message.js.map +1 -1
  72. package/dist/cli/list-models.d.ts +2 -2
  73. package/dist/cli/list-models.d.ts.map +1 -1
  74. package/dist/cli/list-models.js +4 -4
  75. package/dist/cli/list-models.js.map +1 -1
  76. package/dist/cli/project-trust.d.ts +10 -0
  77. package/dist/cli/project-trust.d.ts.map +1 -0
  78. package/dist/cli/project-trust.js +48 -0
  79. package/dist/cli/project-trust.js.map +1 -0
  80. package/dist/cli/session-picker.d.ts +3 -2
  81. package/dist/cli/session-picker.d.ts.map +1 -1
  82. package/dist/cli/session-picker.js +5 -4
  83. package/dist/cli/session-picker.js.map +1 -1
  84. package/dist/cli/startup-ui.d.ts +20 -0
  85. package/dist/cli/startup-ui.d.ts.map +1 -0
  86. package/dist/cli/startup-ui.js +184 -0
  87. package/dist/cli/startup-ui.js.map +1 -0
  88. package/dist/cli.d.ts.map +1 -1
  89. package/dist/cli.js +6 -3
  90. package/dist/cli.js.map +1 -1
  91. package/dist/client/index.d.ts +3 -0
  92. package/dist/client/index.d.ts.map +1 -0
  93. package/dist/client/index.js +3 -0
  94. package/dist/client/index.js.map +1 -0
  95. package/dist/client/remote-session.d.ts +53 -0
  96. package/dist/client/remote-session.d.ts.map +1 -0
  97. package/dist/client/remote-session.js +340 -0
  98. package/dist/client/remote-session.js.map +1 -0
  99. package/dist/client/transcript.d.ts +12 -0
  100. package/dist/client/transcript.d.ts.map +1 -0
  101. package/dist/client/transcript.js +98 -0
  102. package/dist/client/transcript.js.map +1 -0
  103. package/dist/config.d.ts +34 -12
  104. package/dist/config.d.ts.map +1 -1
  105. package/dist/config.js +312 -61
  106. package/dist/config.js.map +1 -1
  107. package/dist/core/agent-session-runtime.d.ts +11 -9
  108. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  109. package/dist/core/agent-session-runtime.js +16 -7
  110. package/dist/core/agent-session-runtime.js.map +1 -1
  111. package/dist/core/agent-session-services.d.ts +13 -12
  112. package/dist/core/agent-session-services.d.ts.map +1 -1
  113. package/dist/core/agent-session-services.js +34 -14
  114. package/dist/core/agent-session-services.js.map +1 -1
  115. package/dist/core/agent-session.d.ts +110 -53
  116. package/dist/core/agent-session.d.ts.map +1 -1
  117. package/dist/core/agent-session.js +662 -488
  118. package/dist/core/agent-session.js.map +1 -1
  119. package/dist/core/auth-guidance.d.ts.map +1 -1
  120. package/dist/core/auth-guidance.js.map +1 -1
  121. package/dist/core/auth-storage.d.ts +35 -104
  122. package/dist/core/auth-storage.d.ts.map +1 -1
  123. package/dist/core/auth-storage.js +272 -286
  124. package/dist/core/auth-storage.js.map +1 -1
  125. package/dist/core/bash-executor.d.ts +1 -1
  126. package/dist/core/bash-executor.d.ts.map +1 -1
  127. package/dist/core/bash-executor.js +11 -8
  128. package/dist/core/bash-executor.js.map +1 -1
  129. package/dist/core/cache-stats.d.ts +49 -0
  130. package/dist/core/cache-stats.d.ts.map +1 -0
  131. package/dist/core/cache-stats.js +101 -0
  132. package/dist/core/cache-stats.js.map +1 -0
  133. package/dist/core/compaction/branch-summarization.d.ts +16 -6
  134. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  135. package/dist/core/compaction/branch-summarization.js +13 -10
  136. package/dist/core/compaction/branch-summarization.js.map +1 -1
  137. package/dist/core/compaction/compaction.d.ts +25 -9
  138. package/dist/core/compaction/compaction.d.ts.map +1 -1
  139. package/dist/core/compaction/compaction.js +163 -133
  140. package/dist/core/compaction/compaction.js.map +1 -1
  141. package/dist/core/compaction/index.d.ts +3 -3
  142. package/dist/core/compaction/index.d.ts.map +1 -1
  143. package/dist/core/compaction/index.js.map +1 -1
  144. package/dist/core/compaction/utils.d.ts +3 -3
  145. package/dist/core/compaction/utils.d.ts.map +1 -1
  146. package/dist/core/compaction/utils.js +7 -18
  147. package/dist/core/compaction/utils.js.map +1 -1
  148. package/dist/core/defaults.d.ts +1 -1
  149. package/dist/core/defaults.d.ts.map +1 -1
  150. package/dist/core/defaults.js.map +1 -1
  151. package/dist/core/env-overlay.d.ts +21 -0
  152. package/dist/core/env-overlay.d.ts.map +1 -0
  153. package/dist/core/env-overlay.js +25 -0
  154. package/dist/core/env-overlay.js.map +1 -0
  155. package/dist/core/exec.d.ts +8 -1
  156. package/dist/core/exec.d.ts.map +1 -1
  157. package/dist/core/exec.js +7 -1
  158. package/dist/core/exec.js.map +1 -1
  159. package/dist/core/experimental.d.ts +6 -0
  160. package/dist/core/experimental.d.ts.map +1 -0
  161. package/dist/core/experimental.js +8 -0
  162. package/dist/core/experimental.js.map +1 -0
  163. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  164. package/dist/core/export-html/ansi-to-html.js +1 -1
  165. package/dist/core/export-html/ansi-to-html.js.map +1 -1
  166. package/dist/core/export-html/index.d.ts +2 -2
  167. package/dist/core/export-html/index.d.ts.map +1 -1
  168. package/dist/core/export-html/index.js +8 -6
  169. package/dist/core/export-html/index.js.map +1 -1
  170. package/dist/core/export-html/template.css +53 -4
  171. package/dist/core/export-html/template.js +129 -35
  172. package/dist/core/export-html/tool-renderer.d.ts +2 -8
  173. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  174. package/dist/core/export-html/tool-renderer.js +15 -2
  175. package/dist/core/export-html/tool-renderer.js.map +1 -1
  176. package/dist/core/export-html/vendor/marked.min.js +75 -3
  177. package/dist/core/extensions/index.d.ts +8 -8
  178. package/dist/core/extensions/index.d.ts.map +1 -1
  179. package/dist/core/extensions/index.js.map +1 -1
  180. package/dist/core/extensions/loader.d.ts +5 -7
  181. package/dist/core/extensions/loader.d.ts.map +1 -1
  182. package/dist/core/extensions/loader.js +161 -79
  183. package/dist/core/extensions/loader.js.map +1 -1
  184. package/dist/core/extensions/runner.d.ts +32 -12
  185. package/dist/core/extensions/runner.d.ts.map +1 -1
  186. package/dist/core/extensions/runner.js +194 -3
  187. package/dist/core/extensions/runner.js.map +1 -1
  188. package/dist/core/extensions/types.d.ts +217 -59
  189. package/dist/core/extensions/types.d.ts.map +1 -1
  190. package/dist/core/extensions/types.js.map +1 -1
  191. package/dist/core/extensions/wrapper.d.ts +3 -3
  192. package/dist/core/extensions/wrapper.d.ts.map +1 -1
  193. package/dist/core/extensions/wrapper.js +22 -3
  194. package/dist/core/extensions/wrapper.js.map +1 -1
  195. package/dist/core/footer-data-provider.d.ts +12 -0
  196. package/dist/core/footer-data-provider.d.ts.map +1 -1
  197. package/dist/core/footer-data-provider.js +30 -2
  198. package/dist/core/footer-data-provider.js.map +1 -1
  199. package/dist/core/http-dispatcher.d.ts +22 -0
  200. package/dist/core/http-dispatcher.d.ts.map +1 -0
  201. package/dist/core/http-dispatcher.js +96 -0
  202. package/dist/core/http-dispatcher.js.map +1 -0
  203. package/dist/core/index.d.ts +9 -8
  204. package/dist/core/index.d.ts.map +1 -1
  205. package/dist/core/index.js +1 -0
  206. package/dist/core/index.js.map +1 -1
  207. package/dist/core/keybindings.d.ts +79 -10
  208. package/dist/core/keybindings.d.ts.map +1 -1
  209. package/dist/core/keybindings.js +11 -10
  210. package/dist/core/keybindings.js.map +1 -1
  211. package/dist/core/messages.d.ts +2 -2
  212. package/dist/core/messages.d.ts.map +1 -1
  213. package/dist/core/messages.js.map +1 -1
  214. package/dist/core/model-config.d.ts +571 -0
  215. package/dist/core/model-config.d.ts.map +1 -0
  216. package/dist/core/model-config.js +254 -0
  217. package/dist/core/model-config.js.map +1 -0
  218. package/dist/core/model-registry.d.ts +23 -110
  219. package/dist/core/model-registry.d.ts.map +1 -1
  220. package/dist/core/model-registry.js +65 -616
  221. package/dist/core/model-registry.js.map +1 -1
  222. package/dist/core/model-resolver.d.ts +20 -7
  223. package/dist/core/model-resolver.d.ts.map +1 -1
  224. package/dist/core/model-resolver.js +139 -43
  225. package/dist/core/model-resolver.js.map +1 -1
  226. package/dist/core/model-runtime.d.ts +100 -0
  227. package/dist/core/model-runtime.d.ts.map +1 -0
  228. package/dist/core/model-runtime.js +602 -0
  229. package/dist/core/model-runtime.js.map +1 -0
  230. package/dist/core/models-store.d.ts +22 -0
  231. package/dist/core/models-store.d.ts.map +1 -0
  232. package/dist/core/models-store.js +113 -0
  233. package/dist/core/models-store.js.map +1 -0
  234. package/dist/core/output-guard.d.ts +1 -0
  235. package/dist/core/output-guard.d.ts.map +1 -1
  236. package/dist/core/output-guard.js +52 -22
  237. package/dist/core/output-guard.js.map +1 -1
  238. package/dist/core/package-manager.d.ts +21 -4
  239. package/dist/core/package-manager.d.ts.map +1 -1
  240. package/dist/core/package-manager.js +428 -191
  241. package/dist/core/package-manager.js.map +1 -1
  242. package/dist/core/pi-manifest.d.ts +8 -0
  243. package/dist/core/pi-manifest.d.ts.map +1 -0
  244. package/dist/core/pi-manifest.js +25 -0
  245. package/dist/core/pi-manifest.js.map +1 -0
  246. package/dist/core/project-trust.d.ts +15 -0
  247. package/dist/core/project-trust.d.ts.map +1 -0
  248. package/dist/core/project-trust.js +59 -0
  249. package/dist/core/project-trust.js.map +1 -0
  250. package/dist/core/prompt-templates.d.ts +4 -2
  251. package/dist/core/prompt-templates.d.ts.map +1 -1
  252. package/dist/core/prompt-templates.js +36 -50
  253. package/dist/core/prompt-templates.js.map +1 -1
  254. package/dist/core/provider-attribution.d.ts +4 -0
  255. package/dist/core/provider-attribution.d.ts.map +1 -0
  256. package/dist/core/provider-attribution.js +72 -0
  257. package/dist/core/provider-attribution.js.map +1 -0
  258. package/dist/core/provider-composer.d.ts +58 -0
  259. package/dist/core/provider-composer.d.ts.map +1 -0
  260. package/dist/core/provider-composer.js +396 -0
  261. package/dist/core/provider-composer.js.map +1 -0
  262. package/dist/core/radius.d.ts +2 -0
  263. package/dist/core/radius.d.ts.map +1 -0
  264. package/dist/core/radius.js +2 -0
  265. package/dist/core/radius.js.map +1 -0
  266. package/dist/core/remote-catalog-provider.d.ts +17 -0
  267. package/dist/core/remote-catalog-provider.d.ts.map +1 -0
  268. package/dist/core/remote-catalog-provider.js +137 -0
  269. package/dist/core/remote-catalog-provider.js.map +1 -0
  270. package/dist/core/resolve-config-value.d.ts +13 -6
  271. package/dist/core/resolve-config-value.d.ts.map +1 -1
  272. package/dist/core/resolve-config-value.js +143 -22
  273. package/dist/core/resolve-config-value.js.map +1 -1
  274. package/dist/core/resource-loader.d.ts +40 -12
  275. package/dist/core/resource-loader.d.ts.map +1 -1
  276. package/dist/core/resource-loader.js +236 -87
  277. package/dist/core/resource-loader.js.map +1 -1
  278. package/dist/core/runtime-credentials.d.ts +15 -0
  279. package/dist/core/runtime-credentials.d.ts.map +1 -0
  280. package/dist/core/runtime-credentials.js +39 -0
  281. package/dist/core/runtime-credentials.js.map +1 -0
  282. package/dist/core/sdk.d.ts +26 -25
  283. package/dist/core/sdk.d.ts.map +1 -1
  284. package/dist/core/sdk.js +56 -49
  285. package/dist/core/sdk.js.map +1 -1
  286. package/dist/core/session-manager.d.ts +42 -19
  287. package/dist/core/session-manager.d.ts.map +1 -1
  288. package/dist/core/session-manager.js +454 -223
  289. package/dist/core/session-manager.js.map +1 -1
  290. package/dist/core/settings-manager.d.ts +77 -8
  291. package/dist/core/settings-manager.d.ts.map +1 -1
  292. package/dist/core/settings-manager.js +255 -67
  293. package/dist/core/settings-manager.js.map +1 -1
  294. package/dist/core/skills.d.ts +2 -2
  295. package/dist/core/skills.d.ts.map +1 -1
  296. package/dist/core/skills.js +12 -34
  297. package/dist/core/skills.js.map +1 -1
  298. package/dist/core/slash-commands.d.ts +2 -1
  299. package/dist/core/slash-commands.d.ts.map +1 -1
  300. package/dist/core/slash-commands.js +4 -3
  301. package/dist/core/slash-commands.js.map +1 -1
  302. package/dist/core/source-info.d.ts +1 -1
  303. package/dist/core/source-info.d.ts.map +1 -1
  304. package/dist/core/source-info.js.map +1 -1
  305. package/dist/core/system-prompt.d.ts +1 -1
  306. package/dist/core/system-prompt.d.ts.map +1 -1
  307. package/dist/core/system-prompt.js +15 -25
  308. package/dist/core/system-prompt.js.map +1 -1
  309. package/dist/core/telemetry.d.ts +7 -1
  310. package/dist/core/telemetry.d.ts.map +1 -1
  311. package/dist/core/telemetry.js +7 -1
  312. package/dist/core/telemetry.js.map +1 -1
  313. package/dist/core/timings.d.ts +5 -3
  314. package/dist/core/timings.d.ts.map +1 -1
  315. package/dist/core/timings.js +26 -16
  316. package/dist/core/timings.js.map +1 -1
  317. package/dist/core/tools/bash.d.ts +11 -5
  318. package/dist/core/tools/bash.d.ts.map +1 -1
  319. package/dist/core/tools/bash.js +224 -185
  320. package/dist/core/tools/bash.js.map +1 -1
  321. package/dist/core/tools/edit-diff.d.ts +26 -5
  322. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  323. package/dist/core/tools/edit-diff.js +110 -23
  324. package/dist/core/tools/edit-diff.js.map +1 -1
  325. package/dist/core/tools/edit.d.ts +11 -5
  326. package/dist/core/tools/edit.d.ts.map +1 -1
  327. package/dist/core/tools/edit.js +67 -100
  328. package/dist/core/tools/edit.js.map +1 -1
  329. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  330. package/dist/core/tools/file-mutation-queue.js +27 -12
  331. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  332. package/dist/core/tools/find.d.ts +10 -3
  333. package/dist/core/tools/find.d.ts.map +1 -1
  334. package/dist/core/tools/find.js +41 -37
  335. package/dist/core/tools/find.js.map +1 -1
  336. package/dist/core/tools/grep.d.ts +7 -3
  337. package/dist/core/tools/grep.d.ts.map +1 -1
  338. package/dist/core/tools/grep.js +12 -8
  339. package/dist/core/tools/grep.js.map +1 -1
  340. package/dist/core/tools/index.d.ts +18 -18
  341. package/dist/core/tools/index.d.ts.map +1 -1
  342. package/dist/core/tools/index.js.map +1 -1
  343. package/dist/core/tools/ls.d.ts +7 -3
  344. package/dist/core/tools/ls.d.ts.map +1 -1
  345. package/dist/core/tools/ls.js +17 -15
  346. package/dist/core/tools/ls.js.map +1 -1
  347. package/dist/core/tools/output-accumulator.d.ts +52 -0
  348. package/dist/core/tools/output-accumulator.d.ts.map +1 -0
  349. package/dist/core/tools/output-accumulator.js +184 -0
  350. package/dist/core/tools/output-accumulator.js.map +1 -0
  351. package/dist/core/tools/path-utils.d.ts +2 -0
  352. package/dist/core/tools/path-utils.d.ts.map +1 -1
  353. package/dist/core/tools/path-utils.js +39 -21
  354. package/dist/core/tools/path-utils.js.map +1 -1
  355. package/dist/core/tools/read.d.ts +7 -3
  356. package/dist/core/tools/read.d.ts.map +1 -1
  357. package/dist/core/tools/read.js +101 -51
  358. package/dist/core/tools/read.js.map +1 -1
  359. package/dist/core/tools/render-utils.d.ts +5 -2
  360. package/dist/core/tools/render-utils.d.ts.map +1 -1
  361. package/dist/core/tools/render-utils.js +18 -2
  362. package/dist/core/tools/render-utils.js.map +1 -1
  363. package/dist/core/tools/tool-definition-wrapper.d.ts +2 -2
  364. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  365. package/dist/core/tools/tool-definition-wrapper.js +3 -3
  366. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  367. package/dist/core/tools/truncate.d.ts.map +1 -1
  368. package/dist/core/tools/truncate.js +12 -2
  369. package/dist/core/tools/truncate.js.map +1 -1
  370. package/dist/core/tools/write.d.ts +6 -2
  371. package/dist/core/tools/write.d.ts.map +1 -1
  372. package/dist/core/tools/write.js +35 -45
  373. package/dist/core/tools/write.js.map +1 -1
  374. package/dist/core/trust-manager.d.ts +36 -0
  375. package/dist/core/trust-manager.d.ts.map +1 -0
  376. package/dist/core/trust-manager.js +202 -0
  377. package/dist/core/trust-manager.js.map +1 -0
  378. package/dist/core/usage-totals.d.ts +19 -0
  379. package/dist/core/usage-totals.d.ts.map +1 -0
  380. package/dist/core/usage-totals.js +52 -0
  381. package/dist/core/usage-totals.js.map +1 -0
  382. package/dist/extensions/index.d.ts +3 -0
  383. package/dist/extensions/index.d.ts.map +1 -0
  384. package/dist/extensions/index.js +3 -0
  385. package/dist/extensions/index.js.map +1 -0
  386. package/dist/extensions/llama/client.d.ts +61 -0
  387. package/dist/extensions/llama/client.d.ts.map +1 -0
  388. package/dist/extensions/llama/client.js +302 -0
  389. package/dist/extensions/llama/client.js.map +1 -0
  390. package/dist/extensions/llama/huggingface.d.ts +23 -0
  391. package/dist/extensions/llama/huggingface.d.ts.map +1 -0
  392. package/dist/extensions/llama/huggingface.js +141 -0
  393. package/dist/extensions/llama/huggingface.js.map +1 -0
  394. package/dist/extensions/llama/index.d.ts +3 -0
  395. package/dist/extensions/llama/index.d.ts.map +1 -0
  396. package/dist/extensions/llama/index.js +217 -0
  397. package/dist/extensions/llama/index.js.map +1 -0
  398. package/dist/extensions/llama/provider.d.ts +10 -0
  399. package/dist/extensions/llama/provider.d.ts.map +1 -0
  400. package/dist/extensions/llama/provider.js +121 -0
  401. package/dist/extensions/llama/provider.js.map +1 -0
  402. package/dist/extensions/llama/ui.d.ts +42 -0
  403. package/dist/extensions/llama/ui.d.ts.map +1 -0
  404. package/dist/extensions/llama/ui.js +416 -0
  405. package/dist/extensions/llama/ui.js.map +1 -0
  406. package/dist/index.d.ts +34 -27
  407. package/dist/index.d.ts.map +1 -1
  408. package/dist/index.js +11 -5
  409. package/dist/index.js.map +1 -1
  410. package/dist/main.d.ts +2 -2
  411. package/dist/main.d.ts.map +1 -1
  412. package/dist/main.js +311 -101
  413. package/dist/main.js.map +1 -1
  414. package/dist/migrations.d.ts +5 -5
  415. package/dist/migrations.d.ts.map +1 -1
  416. package/dist/migrations.js +10 -10
  417. package/dist/migrations.js.map +1 -1
  418. package/dist/modes/index.d.ts +6 -5
  419. package/dist/modes/index.d.ts.map +1 -1
  420. package/dist/modes/index.js.map +1 -1
  421. package/dist/modes/interactive/components/armin.d.ts +1 -1
  422. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  423. package/dist/modes/interactive/components/armin.js.map +1 -1
  424. package/dist/modes/interactive/components/assistant-message.d.ts +8 -3
  425. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  426. package/dist/modes/interactive/components/assistant-message.js +55 -26
  427. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  428. package/dist/modes/interactive/components/bash-execution.d.ts +2 -2
  429. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  430. package/dist/modes/interactive/components/bash-execution.js +4 -4
  431. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  432. package/dist/modes/interactive/components/bordered-loader.d.ts +2 -2
  433. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  434. package/dist/modes/interactive/components/bordered-loader.js +1 -1
  435. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  436. package/dist/modes/interactive/components/branch-summary-message.d.ts +2 -2
  437. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  438. package/dist/modes/interactive/components/branch-summary-message.js +1 -1
  439. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  440. package/dist/modes/interactive/components/compaction-summary-message.d.ts +2 -2
  441. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  442. package/dist/modes/interactive/components/compaction-summary-message.js +1 -1
  443. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  444. package/dist/modes/interactive/components/config-selector.d.ts +37 -6
  445. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  446. package/dist/modes/interactive/components/config-selector.js +318 -34
  447. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  448. package/dist/modes/interactive/components/countdown-timer.d.ts +3 -3
  449. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  450. package/dist/modes/interactive/components/countdown-timer.js +2 -2
  451. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  452. package/dist/modes/interactive/components/custom-editor.d.ts +2 -2
  453. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  454. package/dist/modes/interactive/components/custom-editor.js +9 -2
  455. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  456. package/dist/modes/interactive/components/custom-entry.d.ts +19 -0
  457. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -0
  458. package/dist/modes/interactive/components/custom-entry.js +52 -0
  459. package/dist/modes/interactive/components/custom-entry.js.map +1 -0
  460. package/dist/modes/interactive/components/custom-message.d.ts +6 -4
  461. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  462. package/dist/modes/interactive/components/custom-message.js +11 -3
  463. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  464. package/dist/modes/interactive/components/daxnuts.d.ts +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 +1 -1
  470. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  471. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  472. package/dist/modes/interactive/components/extension-editor.d.ts +5 -4
  473. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  474. package/dist/modes/interactive/components/extension-editor.js +19 -32
  475. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  476. package/dist/modes/interactive/components/extension-input.d.ts +1 -1
  477. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  478. package/dist/modes/interactive/components/extension-input.js +1 -1
  479. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  480. package/dist/modes/interactive/components/extension-selector.d.ts +3 -1
  481. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  482. package/dist/modes/interactive/components/extension-selector.js +7 -2
  483. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  484. package/dist/modes/interactive/components/first-time-setup.d.ts +25 -0
  485. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
  486. package/dist/modes/interactive/components/first-time-setup.js +103 -0
  487. package/dist/modes/interactive/components/first-time-setup.js.map +1 -0
  488. package/dist/modes/interactive/components/footer.d.ts +9 -4
  489. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  490. package/dist/modes/interactive/components/footer.js +52 -31
  491. package/dist/modes/interactive/components/footer.js.map +1 -1
  492. package/dist/modes/interactive/components/index.d.ts +33 -31
  493. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  494. package/dist/modes/interactive/components/index.js +2 -0
  495. package/dist/modes/interactive/components/index.js.map +1 -1
  496. package/dist/modes/interactive/components/keybinding-hints.d.ts +6 -1
  497. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  498. package/dist/modes/interactive/components/keybinding-hints.js +20 -6
  499. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  500. package/dist/modes/interactive/components/login-dialog.d.ts +12 -6
  501. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  502. package/dist/modes/interactive/components/login-dialog.js +46 -17
  503. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  504. package/dist/modes/interactive/components/markdown-transform.d.ts +3 -0
  505. package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -0
  506. package/dist/modes/interactive/components/markdown-transform.js +19 -0
  507. package/dist/modes/interactive/components/markdown-transform.js.map +1 -0
  508. package/dist/modes/interactive/components/mermaid.d.ts +11 -0
  509. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -0
  510. package/dist/modes/interactive/components/mermaid.js +75 -0
  511. package/dist/modes/interactive/components/mermaid.js.map +1 -0
  512. package/dist/modes/interactive/components/model-selector.d.ts +13 -6
  513. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  514. package/dist/modes/interactive/components/model-selector.js +92 -44
  515. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  516. package/dist/modes/interactive/components/oauth-selector.d.ts +7 -4
  517. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  518. package/dist/modes/interactive/components/oauth-selector.js +32 -28
  519. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  520. package/dist/modes/interactive/components/scoped-models-selector.d.ts +5 -1
  521. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  522. package/dist/modes/interactive/components/scoped-models-selector.js +52 -14
  523. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  524. package/dist/modes/interactive/components/session-selector-search.d.ts +1 -1
  525. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  526. package/dist/modes/interactive/components/session-selector-search.js +1 -1
  527. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  528. package/dist/modes/interactive/components/session-selector.d.ts +4 -5
  529. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  530. package/dist/modes/interactive/components/session-selector.js +18 -16
  531. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  532. package/dist/modes/interactive/components/settings-selector.d.ts +23 -2
  533. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  534. package/dist/modes/interactive/components/settings-selector.js +322 -22
  535. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  536. package/dist/modes/interactive/components/show-images-selector.d.ts +1 -1
  537. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  538. package/dist/modes/interactive/components/show-images-selector.js +1 -1
  539. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  540. package/dist/modes/interactive/components/skill-invocation-message.d.ts +2 -2
  541. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  542. package/dist/modes/interactive/components/skill-invocation-message.js +1 -1
  543. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  544. package/dist/modes/interactive/components/status-indicator.d.ts +28 -0
  545. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -0
  546. package/dist/modes/interactive/components/status-indicator.js +60 -0
  547. package/dist/modes/interactive/components/status-indicator.js.map +1 -0
  548. package/dist/modes/interactive/components/theme-selector.d.ts +1 -1
  549. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  550. package/dist/modes/interactive/components/theme-selector.js +1 -1
  551. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  552. package/dist/modes/interactive/components/thinking-selector.d.ts +2 -2
  553. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  554. package/dist/modes/interactive/components/thinking-selector.js +3 -2
  555. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  556. package/dist/modes/interactive/components/tool-execution.d.ts +2 -2
  557. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  558. package/dist/modes/interactive/components/tool-execution.js +33 -2
  559. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  560. package/dist/modes/interactive/components/tree-selector.d.ts +7 -2
  561. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  562. package/dist/modes/interactive/components/tree-selector.js +179 -26
  563. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  564. package/dist/modes/interactive/components/trust-selector.d.ts +23 -0
  565. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -0
  566. package/dist/modes/interactive/components/trust-selector.js +91 -0
  567. package/dist/modes/interactive/components/trust-selector.js.map +1 -0
  568. package/dist/modes/interactive/components/user-message-selector.d.ts +1 -1
  569. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  570. package/dist/modes/interactive/components/user-message-selector.js +1 -1
  571. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  572. package/dist/modes/interactive/components/user-message.d.ts +9 -3
  573. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  574. package/dist/modes/interactive/components/user-message.js +26 -6
  575. package/dist/modes/interactive/components/user-message.js.map +1 -1
  576. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  577. package/dist/modes/interactive/components/visual-truncate.js +1 -1
  578. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  579. package/dist/modes/interactive/external-editor.d.ts +12 -0
  580. package/dist/modes/interactive/external-editor.d.ts.map +1 -0
  581. package/dist/modes/interactive/external-editor.js +37 -0
  582. package/dist/modes/interactive/external-editor.js.map +1 -0
  583. package/dist/modes/interactive/interactive-mode.d.ts +104 -26
  584. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  585. package/dist/modes/interactive/interactive-mode.js +1565 -692
  586. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  587. package/dist/modes/interactive/model-catalog-refresh.d.ts +7 -0
  588. package/dist/modes/interactive/model-catalog-refresh.d.ts.map +1 -0
  589. package/dist/modes/interactive/model-catalog-refresh.js +34 -0
  590. package/dist/modes/interactive/model-catalog-refresh.js.map +1 -0
  591. package/dist/modes/interactive/model-search.d.ts +12 -0
  592. package/dist/modes/interactive/model-search.d.ts.map +1 -0
  593. package/dist/modes/interactive/model-search.js +15 -0
  594. package/dist/modes/interactive/model-search.js.map +1 -0
  595. package/dist/modes/interactive/theme/dark.json +10 -5
  596. package/dist/modes/interactive/theme/light.json +10 -5
  597. package/dist/modes/interactive/theme/theme-controller.d.ts +40 -0
  598. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -0
  599. package/dist/modes/interactive/theme/theme-controller.js +125 -0
  600. package/dist/modes/interactive/theme/theme-controller.js.map +1 -0
  601. package/dist/modes/interactive/theme/theme-schema.json +22 -5
  602. package/dist/modes/interactive/theme/theme.d.ts +48 -7
  603. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  604. package/dist/modes/interactive/theme/theme.js +194 -76
  605. package/dist/modes/interactive/theme/theme.js.map +1 -1
  606. package/dist/modes/json-event.d.ts +31 -0
  607. package/dist/modes/json-event.d.ts.map +1 -0
  608. package/dist/modes/json-event.js +15 -0
  609. package/dist/modes/json-event.js.map +1 -0
  610. package/dist/modes/print-mode.d.ts +3 -3
  611. package/dist/modes/print-mode.d.ts.map +1 -1
  612. package/dist/modes/print-mode.js +16 -5
  613. package/dist/modes/print-mode.js.map +1 -1
  614. package/dist/modes/rpc/rpc-client.d.ts +33 -10
  615. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  616. package/dist/modes/rpc/rpc-client.js +89 -11
  617. package/dist/modes/rpc/rpc-client.js.map +1 -1
  618. package/dist/modes/rpc/rpc-mode.d.ts +2 -2
  619. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  620. package/dist/modes/rpc/rpc-mode.js +69 -9
  621. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  622. package/dist/modes/rpc/rpc-types.d.ts +43 -5
  623. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  624. package/dist/modes/rpc/rpc-types.js.map +1 -1
  625. package/dist/package-manager-cli.d.ts +6 -2
  626. package/dist/package-manager-cli.d.ts.map +1 -1
  627. package/dist/package-manager-cli.js +527 -25
  628. package/dist/package-manager-cli.js.map +1 -1
  629. package/dist/path-migration.d.ts +13 -0
  630. package/dist/path-migration.d.ts.map +1 -0
  631. package/dist/path-migration.js +52 -0
  632. package/dist/path-migration.js.map +1 -0
  633. package/dist/rpc-entry.d.ts +3 -0
  634. package/dist/rpc-entry.d.ts.map +1 -0
  635. package/dist/rpc-entry.js +11 -0
  636. package/dist/rpc-entry.js.map +1 -0
  637. package/dist/server/create-harness.d.ts +26 -0
  638. package/dist/server/create-harness.d.ts.map +1 -0
  639. package/dist/server/create-harness.js +106 -0
  640. package/dist/server/create-harness.js.map +1 -0
  641. package/dist/utils/abort.d.ts +5 -0
  642. package/dist/utils/abort.d.ts.map +1 -0
  643. package/dist/utils/abort.js +48 -0
  644. package/dist/utils/abort.js.map +1 -0
  645. package/dist/utils/ansi.d.ts +2 -0
  646. package/dist/utils/ansi.d.ts.map +1 -0
  647. package/dist/utils/ansi.js +52 -0
  648. package/dist/utils/ansi.js.map +1 -0
  649. package/dist/utils/changelog.d.ts +2 -1
  650. package/dist/utils/changelog.d.ts.map +1 -1
  651. package/dist/utils/changelog.js +85 -0
  652. package/dist/utils/changelog.js.map +1 -1
  653. package/dist/utils/child-process.d.ts +12 -5
  654. package/dist/utils/child-process.d.ts.map +1 -1
  655. package/dist/utils/child-process.js +33 -5
  656. package/dist/utils/child-process.js.map +1 -1
  657. package/dist/utils/clipboard-image.d.ts.map +1 -1
  658. package/dist/utils/clipboard-image.js +4 -4
  659. package/dist/utils/clipboard-image.js.map +1 -1
  660. package/dist/utils/clipboard-native.d.ts +4 -1
  661. package/dist/utils/clipboard-native.d.ts.map +1 -1
  662. package/dist/utils/clipboard-native.js +14 -8
  663. package/dist/utils/clipboard-native.js.map +1 -1
  664. package/dist/utils/clipboard.d.ts +2 -0
  665. package/dist/utils/clipboard.d.ts.map +1 -1
  666. package/dist/utils/clipboard.js +129 -46
  667. package/dist/utils/clipboard.js.map +1 -1
  668. package/dist/utils/deprecation.d.ts +4 -0
  669. package/dist/utils/deprecation.d.ts.map +1 -0
  670. package/dist/utils/deprecation.js +13 -0
  671. package/dist/utils/deprecation.js.map +1 -0
  672. package/dist/utils/exif-orientation.d.ts +1 -1
  673. package/dist/utils/exif-orientation.d.ts.map +1 -1
  674. package/dist/utils/exif-orientation.js.map +1 -1
  675. package/dist/utils/git.d.ts.map +1 -1
  676. package/dist/utils/git.js +54 -22
  677. package/dist/utils/git.js.map +1 -1
  678. package/dist/utils/html.d.ts +7 -0
  679. package/dist/utils/html.d.ts.map +1 -0
  680. package/dist/utils/html.js +40 -0
  681. package/dist/utils/html.js.map +1 -0
  682. package/dist/utils/image-convert.d.ts +1 -0
  683. package/dist/utils/image-convert.d.ts.map +1 -1
  684. package/dist/utils/image-convert.js +21 -15
  685. package/dist/utils/image-convert.js.map +1 -1
  686. package/dist/utils/image-process.d.ts +18 -0
  687. package/dist/utils/image-process.d.ts.map +1 -0
  688. package/dist/utils/image-process.js +83 -0
  689. package/dist/utils/image-process.js.map +1 -0
  690. package/dist/utils/image-resize-core.d.ts +30 -0
  691. package/dist/utils/image-resize-core.d.ts.map +1 -0
  692. package/dist/utils/image-resize-core.js +124 -0
  693. package/dist/utils/image-resize-core.js.map +1 -0
  694. package/dist/utils/image-resize-worker.d.ts +2 -0
  695. package/dist/utils/image-resize-worker.d.ts.map +1 -0
  696. package/dist/utils/image-resize-worker.js +31 -0
  697. package/dist/utils/image-resize-worker.js.map +1 -0
  698. package/dist/utils/image-resize.d.ts +7 -27
  699. package/dist/utils/image-resize.d.ts.map +1 -1
  700. package/dist/utils/image-resize.js +75 -115
  701. package/dist/utils/image-resize.js.map +1 -1
  702. package/dist/utils/json.d.ts +3 -0
  703. package/dist/utils/json.d.ts.map +1 -0
  704. package/dist/utils/json.js +7 -0
  705. package/dist/utils/json.js.map +1 -0
  706. package/dist/utils/management-http.d.ts +23 -0
  707. package/dist/utils/management-http.d.ts.map +1 -0
  708. package/dist/utils/management-http.js +50 -0
  709. package/dist/utils/management-http.js.map +1 -0
  710. package/dist/utils/mime.d.ts +1 -0
  711. package/dist/utils/mime.d.ts.map +1 -1
  712. package/dist/utils/mime.js +100 -16
  713. package/dist/utils/mime.js.map +1 -1
  714. package/dist/utils/open-browser.d.ts +9 -0
  715. package/dist/utils/open-browser.d.ts.map +1 -0
  716. package/dist/utils/open-browser.js +22 -0
  717. package/dist/utils/open-browser.js.map +1 -0
  718. package/dist/utils/paths.d.ts +28 -1
  719. package/dist/utils/paths.d.ts.map +1 -1
  720. package/dist/utils/paths.js +97 -2
  721. package/dist/utils/paths.js.map +1 -1
  722. package/dist/utils/pi-user-agent.d.ts +2 -0
  723. package/dist/utils/pi-user-agent.d.ts.map +1 -0
  724. package/dist/utils/pi-user-agent.js +5 -0
  725. package/dist/utils/pi-user-agent.js.map +1 -0
  726. package/dist/utils/shell.d.ts +1 -0
  727. package/dist/utils/shell.d.ts.map +1 -1
  728. package/dist/utils/shell.js +18 -6
  729. package/dist/utils/shell.js.map +1 -1
  730. package/dist/utils/syntax-highlight.d.ts +12 -0
  731. package/dist/utils/syntax-highlight.d.ts.map +1 -0
  732. package/dist/utils/syntax-highlight.js +118 -0
  733. package/dist/utils/syntax-highlight.js.map +1 -0
  734. package/dist/utils/tool-result-images.d.ts +19 -0
  735. package/dist/utils/tool-result-images.d.ts.map +1 -0
  736. package/dist/utils/tool-result-images.js +45 -0
  737. package/dist/utils/tool-result-images.js.map +1 -0
  738. package/dist/utils/tools-manager.d.ts +10 -1
  739. package/dist/utils/tools-manager.d.ts.map +1 -1
  740. package/dist/utils/tools-manager.js +105 -36
  741. package/dist/utils/tools-manager.js.map +1 -1
  742. package/dist/utils/version-check.d.ts +19 -0
  743. package/dist/utils/version-check.d.ts.map +1 -0
  744. package/dist/utils/version-check.js +85 -0
  745. package/dist/utils/version-check.js.map +1 -0
  746. package/dist/utils/windows-self-update.d.ts +3 -0
  747. package/dist/utils/windows-self-update.d.ts.map +1 -0
  748. package/dist/utils/windows-self-update.js +77 -0
  749. package/dist/utils/windows-self-update.js.map +1 -0
  750. package/docs/compaction.md +39 -32
  751. package/docs/containerization.md +113 -0
  752. package/docs/custom-provider.md +212 -75
  753. package/docs/development.md +9 -9
  754. package/docs/docs.json +156 -0
  755. package/docs/environment-variables.md +186 -0
  756. package/docs/extensions.md +652 -140
  757. package/docs/index.md +81 -0
  758. package/docs/json.md +26 -15
  759. package/docs/keybindings.md +60 -21
  760. package/docs/llama-cpp.md +99 -0
  761. package/docs/models.md +168 -34
  762. package/docs/packages.md +46 -36
  763. package/docs/prompt-templates.md +13 -5
  764. package/docs/providers.md +147 -26
  765. package/docs/quickstart.md +167 -0
  766. package/docs/rpc.md +218 -36
  767. package/docs/sdk.md +190 -125
  768. package/docs/security.md +59 -0
  769. package/docs/{session.md → session-format.md} +48 -22
  770. package/docs/sessions.md +145 -0
  771. package/docs/settings.md +130 -25
  772. package/docs/shell-aliases.md +2 -2
  773. package/docs/skills.md +13 -14
  774. package/docs/terminal-setup.md +73 -16
  775. package/docs/termux.md +10 -10
  776. package/docs/themes.md +41 -16
  777. package/docs/tmux.md +6 -4
  778. package/docs/tui.md +85 -61
  779. package/docs/usage.md +302 -0
  780. package/docs/windows.md +2 -2
  781. package/examples/README.md +1 -1
  782. package/examples/extensions/README.md +12 -9
  783. package/examples/extensions/bash-spawn-hook.ts +2 -2
  784. package/examples/extensions/border-status-editor.ts +145 -0
  785. package/examples/extensions/built-in-tool-renderer.ts +2 -2
  786. package/examples/extensions/claude-rules.ts +1 -1
  787. package/examples/extensions/commands.ts +1 -1
  788. package/examples/extensions/custom-compaction.ts +6 -16
  789. package/examples/extensions/custom-footer.ts +1 -1
  790. package/examples/extensions/custom-header.ts +7 -7
  791. package/examples/extensions/custom-provider-anthropic/index.ts +15 -8
  792. package/examples/extensions/custom-provider-anthropic/package-lock.json +4 -4
  793. package/examples/extensions/custom-provider-anthropic/package.json +3 -3
  794. package/examples/extensions/custom-provider-gitlab-duo/index.ts +65 -9
  795. package/examples/extensions/custom-provider-gitlab-duo/package.json +2 -2
  796. package/examples/extensions/custom-provider-gitlab-duo/test.ts +2 -2
  797. package/examples/extensions/doom-overlay/README.md +1 -1
  798. package/examples/extensions/doom-overlay/doom-component.ts +4 -4
  799. package/examples/extensions/doom-overlay/doom-keys.ts +1 -1
  800. package/examples/extensions/doom-overlay/index.ts +5 -5
  801. package/examples/extensions/doom-overlay/wad-finder.ts +7 -3
  802. package/examples/extensions/dynamic-resources/dynamic.json +1 -1
  803. package/examples/extensions/entry-renderer.ts +41 -0
  804. package/examples/extensions/git-merge-and-resolve.ts +115 -0
  805. package/examples/extensions/github-issue-autocomplete.ts +2 -2
  806. package/examples/extensions/gondolin/index.ts +531 -0
  807. package/examples/extensions/gondolin/package-lock.json +185 -0
  808. package/examples/extensions/gondolin/package.json +19 -0
  809. package/examples/extensions/handoff.ts +50 -14
  810. package/examples/extensions/hidden-thinking-label.ts +1 -1
  811. package/examples/extensions/inline-bash.ts +2 -2
  812. package/examples/extensions/input-transform-streaming.ts +39 -0
  813. package/examples/extensions/input-transform.ts +2 -2
  814. package/examples/extensions/interactive-shell.ts +2 -2
  815. package/examples/extensions/kimi-deferred-tools.ts +61 -0
  816. package/examples/extensions/mac-system-theme.ts +2 -2
  817. package/examples/extensions/message-renderer.ts +3 -3
  818. package/examples/extensions/minimal-mode.ts +2 -2
  819. package/examples/extensions/modal-editor.ts +2 -2
  820. package/examples/extensions/model-status.ts +1 -1
  821. package/examples/extensions/notify.ts +3 -3
  822. package/examples/extensions/overlay-qa-tests.ts +242 -140
  823. package/examples/extensions/overlay-test.ts +9 -6
  824. package/examples/extensions/pirate.ts +1 -1
  825. package/examples/extensions/plan-mode/README.md +3 -2
  826. package/examples/extensions/plan-mode/index.ts +90 -40
  827. package/examples/extensions/preset.ts +16 -10
  828. package/examples/extensions/project-trust.ts +64 -0
  829. package/examples/extensions/prompt-customizer.ts +1 -1
  830. package/examples/extensions/provider-payload.ts +5 -5
  831. package/examples/extensions/qna.ts +4 -8
  832. package/examples/extensions/question.ts +41 -19
  833. package/examples/extensions/questionnaire.ts +50 -29
  834. package/examples/extensions/rainbow-editor.ts +1 -1
  835. package/examples/extensions/reload-runtime.ts +2 -2
  836. package/examples/extensions/rpc-demo.ts +1 -1
  837. package/examples/extensions/sandbox/index.ts +9 -9
  838. package/examples/extensions/sandbox/package-lock.json +7 -7
  839. package/examples/extensions/sandbox/package.json +3 -3
  840. package/examples/extensions/shutdown-command.ts +5 -5
  841. package/examples/extensions/snake.ts +2 -2
  842. package/examples/extensions/space-invaders.ts +2 -2
  843. package/examples/extensions/ssh.ts +2 -2
  844. package/examples/extensions/structured-output.ts +1 -1
  845. package/examples/extensions/subagent/README.md +18 -13
  846. package/examples/extensions/subagent/agents.ts +42 -11
  847. package/examples/extensions/subagent/index.ts +76 -30
  848. package/examples/extensions/summarize.ts +12 -19
  849. package/examples/extensions/tic-tac-toe.ts +2 -2
  850. package/examples/extensions/titlebar-spinner.ts +3 -3
  851. package/examples/extensions/todo.ts +2 -2
  852. package/examples/extensions/tool-override.ts +1 -1
  853. package/examples/extensions/tools.ts +7 -2
  854. package/examples/extensions/truncated-tool.ts +2 -2
  855. package/examples/extensions/with-deps/package-lock.json +4 -4
  856. package/examples/extensions/with-deps/package.json +4 -4
  857. package/examples/extensions/working-indicator.ts +4 -4
  858. package/examples/extensions/working-message-test.ts +1 -1
  859. package/examples/rpc-extension-ui.ts +11 -2
  860. package/examples/sdk/01-minimal.ts +15 -11
  861. package/examples/sdk/02-custom-model.ts +18 -18
  862. package/examples/sdk/03-custom-prompt.ts +25 -17
  863. package/examples/sdk/04-skills.ts +3 -3
  864. package/examples/sdk/05-tools.ts +8 -4
  865. package/examples/sdk/06-extensions.ts +13 -9
  866. package/examples/sdk/07-context-files.ts +2 -2
  867. package/examples/sdk/08-prompt-templates.ts +3 -3
  868. package/examples/sdk/09-api-keys-and-oauth.ts +19 -33
  869. package/examples/sdk/10-settings.ts +4 -4
  870. package/examples/sdk/11-sessions.ts +4 -0
  871. package/examples/sdk/12-full-control.ts +22 -21
  872. package/examples/sdk/README.md +23 -30
  873. package/npm-shrinkwrap.json +1818 -0
  874. package/package.json +117 -99
  875. package/dist/modes/interactive/assets/clankolas.png +0 -0
  876. package/dist/modes/interactive/components/auth-selector-status.d.ts +0 -20
  877. package/dist/modes/interactive/components/auth-selector-status.d.ts.map +0 -1
  878. package/dist/modes/interactive/components/auth-selector-status.js +0 -23
  879. package/dist/modes/interactive/components/auth-selector-status.js.map +0 -1
  880. package/dist/modes/interactive/components/earendil-announcement.d.ts +0 -5
  881. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +0 -1
  882. package/dist/modes/interactive/components/earendil-announcement.js +0 -40
  883. package/dist/modes/interactive/components/earendil-announcement.js.map +0 -1
  884. package/docs/images/exy.png +0 -0
  885. package/docs/tree.md +0 -233
  886. package/examples/extensions/antigravity-image-gen.ts +0 -418
  887. package/examples/extensions/custom-provider-qwen-cli/index.ts +0 -345
  888. package/examples/extensions/custom-provider-qwen-cli/package.json +0 -16
package/dist/main.js CHANGED
@@ -4,35 +4,44 @@
4
4
  * This file handles CLI argument parsing and translates them into
5
5
  * createAgentSession() options. The SDK does the heavy lifting.
6
6
  */
7
- import { resolve } from "node:path";
8
7
  import { createInterface } from "node:readline";
9
- import { ProcessTerminal, setKeybindings, TUI } from "@mariozechner/pi-tui";
10
- import { modelsAreEqual, supportsXhigh } from "@sammorrowdrums/mcpi-ai";
8
+ import { modelsAreEqual } from "@sammorrowdrums/mcpi-ai";
11
9
  import chalk from "chalk";
12
10
  import { parseArgs, printHelp } from "./cli/args.js";
11
+ import { checkProviderAuth, createAuthCheckModelRuntime, getProviderCredential, } from "./cli/auth-check.js";
12
+ import { AuthCommandError, getAuthCommandName, getAuthCommandUsage, isAuthCommandHelp, parseAuthCommand, printAuthCommandHelp, validateAuthCommandArgs, } from "./cli/auth-command.js";
13
+ import { resolveCredentialForPrint } from "./cli/credential-print.js";
13
14
  import { processFileArguments } from "./cli/file-processor.js";
14
15
  import { buildInitialMessage } from "./cli/initial-message.js";
15
16
  import { listModels } from "./cli/list-models.js";
17
+ import { createProjectTrustContext } from "./cli/project-trust.js";
16
18
  import { selectSession } from "./cli/session-picker.js";
17
- import { getAgentDir, VERSION } from "./config.js";
19
+ import { shouldRunFirstTimeSetup, showFirstTimeSetup, showStartupSelector } from "./cli/startup-ui.js";
20
+ import { APP_NAME, ENV_SESSION_DIR, expandTildePath, getAgentDir, getCacheDir, getPackageDir, VERSION, } from "./config.js";
18
21
  import { createAgentSessionRuntime } from "./core/agent-session-runtime.js";
19
22
  import { createAgentSessionFromServices, createAgentSessionServices, } from "./core/agent-session-services.js";
20
23
  import { formatNoModelsAvailableMessage } from "./core/auth-guidance.js";
21
- import { AuthStorage } from "./core/auth-storage.js";
24
+ import { AuthStorage, ReadOnlyAuthStorage } from "./core/auth-storage.js";
22
25
  import { exportFromFile } from "./core/export-html/index.js";
23
- import { KeybindingsManager } from "./core/keybindings.js";
26
+ import { applyHttpProxySettings, configureHttpDispatcher } from "./core/http-dispatcher.js";
24
27
  import { resolveCliModel, resolveModelScope } from "./core/model-resolver.js";
28
+ import { ModelRuntime } from "./core/model-runtime.js";
25
29
  import { restoreStdout, takeOverStdout } from "./core/output-guard.js";
30
+ import { resolveProjectTrusted } from "./core/project-trust.js";
26
31
  import { formatMissingSessionCwdPrompt, getMissingSessionCwdIssue, MissingSessionCwdError, } from "./core/session-cwd.js";
27
- import { SessionManager } from "./core/session-manager.js";
32
+ import { assertValidSessionId, SessionManager } from "./core/session-manager.js";
28
33
  import { SettingsManager } from "./core/settings-manager.js";
29
34
  import { printTimings, resetTimings, time } from "./core/timings.js";
35
+ import { hasTrustRequiringProjectResources, ProjectTrustStore } from "./core/trust-manager.js";
36
+ import { builtInExtensions } from "./extensions/index.js";
30
37
  import { runMigrations, showDeprecationWarnings } from "./migrations.js";
31
38
  import { InteractiveMode, runPrintMode, runRpcMode } from "./modes/index.js";
32
- import { ExtensionSelectorComponent } from "./modes/interactive/components/extension-selector.js";
33
39
  import { initTheme, stopThemeWatcher } from "./modes/interactive/theme/theme.js";
34
40
  import { handleConfigCommand, handlePackageCommand } from "./package-manager-cli.js";
35
- import { isLocalPath } from "./utils/paths.js";
41
+ import { assertNoLegacyPaths } from "./path-migration.js";
42
+ import { isLocalPath, normalizePath, resolvePath } from "./utils/paths.js";
43
+ import { cleanupWindowsSelfUpdateQuarantine } from "./utils/windows-self-update.js";
44
+ const EXTENSION_LOAD_FAILURE_HINT = `Hint: Start without extensions using "${APP_NAME} -ne".`;
36
45
  /**
37
46
  * Read all content from piped stdin.
38
47
  * Returns undefined if stdin is a TTY (interactive terminal).
@@ -72,14 +81,14 @@ function isTruthyEnvFlag(value) {
72
81
  return false;
73
82
  return value === "1" || value.toLowerCase() === "true" || value.toLowerCase() === "yes";
74
83
  }
75
- function resolveAppMode(parsed, stdinIsTTY) {
84
+ function resolveAppMode(parsed, stdinIsTTY, stdoutIsTTY) {
76
85
  if (parsed.mode === "rpc") {
77
86
  return "rpc";
78
87
  }
79
88
  if (parsed.mode === "json") {
80
89
  return "json";
81
90
  }
82
- if (parsed.print || !stdinIsTTY) {
91
+ if (parsed.print || !stdinIsTTY || !stdoutIsTTY) {
83
92
  return "print";
84
93
  }
85
94
  return "interactive";
@@ -87,6 +96,81 @@ function resolveAppMode(parsed, stdinIsTTY) {
87
96
  function toPrintOutputMode(appMode) {
88
97
  return appMode === "json" ? "json" : "text";
89
98
  }
99
+ function isPlainRuntimeMetadataCommand(parsed) {
100
+ return !parsed.print && parsed.mode === undefined && (parsed.help === true || parsed.listModels !== undefined);
101
+ }
102
+ async function runAuthCommand(args) {
103
+ if (isAuthCommandHelp(args)) {
104
+ printAuthCommandHelp();
105
+ return true;
106
+ }
107
+ let command;
108
+ try {
109
+ command = parseAuthCommand(args);
110
+ }
111
+ catch (error) {
112
+ const message = error instanceof AuthCommandError ? error.message : "Failed to parse auth command";
113
+ console.error(chalk.red(`Error: ${message}`));
114
+ process.exitCode = 1;
115
+ return true;
116
+ }
117
+ if (!command)
118
+ return false;
119
+ const parsed = parseArgs(command.args);
120
+ if (parsed.unknownFlags.size > 0) {
121
+ const option = parsed.unknownFlags.keys().next().value;
122
+ console.error(chalk.red(`Unknown option --${option} for "${getAuthCommandName(command.kind)}".`));
123
+ console.error(chalk.dim(`Use "${APP_NAME} --help" or "${getAuthCommandUsage(command.kind)}".`));
124
+ process.exitCode = 1;
125
+ return true;
126
+ }
127
+ try {
128
+ if (parsed.diagnostics.length > 0) {
129
+ throw new AuthCommandError(parsed.diagnostics.map((diagnostic) => diagnostic.message).join("\n"));
130
+ }
131
+ if (command.kind !== "check") {
132
+ const signal = AbortSignal.timeout(15_000);
133
+ const modelRuntime = await ModelRuntime.create({ allowModelNetwork: false, signal });
134
+ const credential = await resolveCredentialForPrint(parsed, modelRuntime, command.kind, command.minExpiryMs, signal);
135
+ process.stdout.write(`${credential}\n`);
136
+ return true;
137
+ }
138
+ const requestedAuth = validateAuthCommandArgs(parsed, command.kind);
139
+ let result;
140
+ let credential;
141
+ try {
142
+ const credentials = command.noRefresh ? new ReadOnlyAuthStorage() : AuthStorage.create();
143
+ const modelRuntime = await createAuthCheckModelRuntime(credentials);
144
+ result = await checkProviderAuth(parsed, modelRuntime, { refresh: !command.noRefresh });
145
+ if (command.credentials && result.status === "ready") {
146
+ credential = await getProviderCredential(result.provider, modelRuntime, credentials, {
147
+ refresh: !command.noRefresh,
148
+ });
149
+ if (!credential) {
150
+ result = { status: "not_ready", provider: result.provider, reason: "credential_not_available" };
151
+ }
152
+ }
153
+ }
154
+ catch {
155
+ result = {
156
+ status: "invalid",
157
+ provider: requestedAuth.provider ?? requestedAuth.model,
158
+ reason: "invalid_state",
159
+ };
160
+ }
161
+ const output = command.json
162
+ ? JSON.stringify({ ...result, ...(credential ? { credentials: credential } : {}) })
163
+ : (credential ?? result.status);
164
+ process.stdout.write(`${output}\n`);
165
+ process.exitCode = result.status === "ready" ? 0 : result.status === "not_ready" ? 1 : 2;
166
+ }
167
+ catch (error) {
168
+ const message = error instanceof AuthCommandError ? error.message : "Failed to resolve credential";
169
+ console.error(chalk.red(`Error: ${message}`));
170
+ process.exitCode = command.kind === "check" ? 2 : 1;
171
+ }
172
+ return true;
173
+ }
90
174
  async function prepareInitialMessage(parsed, autoResizeImages, stdinContent) {
91
175
  if (parsed.fileArgs.length === 0) {
92
176
  return buildInitialMessage({ parsed, stdinContent });
@@ -103,23 +187,27 @@ async function prepareInitialMessage(parsed, autoResizeImages, stdinContent) {
103
187
  * Resolve a session argument to a file path.
104
188
  * If it looks like a path, use as-is. Otherwise try to match as session ID prefix.
105
189
  */
190
+ async function findLocalSessionByExactId(sessionId, cwd, sessionDir) {
191
+ const localSessions = await SessionManager.list(cwd, sessionDir);
192
+ const localMatch = localSessions.find((s) => s.id === sessionId);
193
+ return localMatch ? { type: "local", path: localMatch.path } : undefined;
194
+ }
106
195
  async function resolveSessionPath(sessionArg, cwd, sessionDir) {
107
- // If it looks like a file path, use as-is
196
+ // If it looks like a file path, resolve it before handing it to the session manager.
108
197
  if (sessionArg.includes("/") || sessionArg.includes("\\") || sessionArg.endsWith(".jsonl")) {
109
- return { type: "path", path: sessionArg };
198
+ return { type: "path", path: resolvePath(sessionArg, cwd) };
110
199
  }
111
200
  // Try to match as session ID in current project first
112
201
  const localSessions = await SessionManager.list(cwd, sessionDir);
113
- const localMatches = localSessions.filter((s) => s.id.startsWith(sessionArg));
114
- if (localMatches.length >= 1) {
115
- return { type: "local", path: localMatches[0].path };
202
+ const localMatch = localSessions.find((s) => s.id === sessionArg) ?? localSessions.find((s) => s.id.startsWith(sessionArg));
203
+ if (localMatch) {
204
+ return { type: "local", path: localMatch.path };
116
205
  }
117
206
  // Try global search across all projects
118
- const allSessions = await SessionManager.listAll();
119
- const globalMatches = allSessions.filter((s) => s.id.startsWith(sessionArg));
120
- if (globalMatches.length >= 1) {
121
- const match = globalMatches[0];
122
- return { type: "global", path: match.path, cwd: match.cwd };
207
+ const allSessions = await SessionManager.listAll(sessionDir);
208
+ const globalMatch = allSessions.find((s) => s.id === sessionArg) ?? allSessions.find((s) => s.id.startsWith(sessionArg));
209
+ if (globalMatch) {
210
+ return { type: "global", path: globalMatch.path, cwd: globalMatch.cwd };
123
211
  }
124
212
  // Not found anywhere
125
213
  return { type: "not_found", arg: sessionArg };
@@ -151,9 +239,40 @@ function validateForkFlags(parsed) {
151
239
  process.exit(1);
152
240
  }
153
241
  }
154
- function forkSessionOrExit(sourcePath, cwd, sessionDir) {
242
+ function validateSessionIdFlags(parsed) {
243
+ if (parsed.sessionId === undefined)
244
+ return;
245
+ const conflictingFlags = [
246
+ parsed.session ? "--session" : undefined,
247
+ parsed.continue ? "--continue" : undefined,
248
+ parsed.resume ? "--resume" : undefined,
249
+ ].filter((flag) => flag !== undefined);
250
+ if (conflictingFlags.length > 0) {
251
+ console.error(chalk.red(`Error: --session-id cannot be combined with ${conflictingFlags.join(", ")}`));
252
+ process.exit(1);
253
+ }
155
254
  try {
156
- return SessionManager.forkFrom(sourcePath, cwd, sessionDir);
255
+ assertValidSessionId(parsed.sessionId);
256
+ }
257
+ catch (error) {
258
+ const message = error instanceof Error ? error.message : String(error);
259
+ console.error(chalk.red(`Error: ${message}`));
260
+ process.exit(1);
261
+ }
262
+ }
263
+ function openSessionOrExit(path, sessionDir) {
264
+ try {
265
+ return SessionManager.open(path, sessionDir);
266
+ }
267
+ catch (error) {
268
+ const message = error instanceof Error ? error.message : String(error);
269
+ console.error(chalk.red(`Error: ${message}`));
270
+ process.exit(1);
271
+ }
272
+ }
273
+ function forkSessionOrExit(sourcePath, cwd, sessionDir, sessionId) {
274
+ try {
275
+ return SessionManager.forkFrom(sourcePath, cwd, sessionDir, { id: sessionId });
157
276
  }
158
277
  catch (error) {
159
278
  const message = error instanceof Error ? error.message : String(error);
@@ -162,16 +281,23 @@ function forkSessionOrExit(sourcePath, cwd, sessionDir) {
162
281
  }
163
282
  }
164
283
  async function createSessionManager(parsed, cwd, sessionDir, settingsManager) {
165
- if (parsed.noSession) {
166
- return SessionManager.inMemory();
284
+ if (parsed.noSession || parsed.help || parsed.listModels !== undefined) {
285
+ return SessionManager.inMemory(cwd, parsed.sessionId !== undefined ? { id: parsed.sessionId } : undefined);
167
286
  }
168
287
  if (parsed.fork) {
288
+ if (parsed.sessionId) {
289
+ const existingTarget = await findLocalSessionByExactId(parsed.sessionId, cwd, sessionDir);
290
+ if (existingTarget) {
291
+ console.error(chalk.red(`Session already exists with id '${parsed.sessionId}'`));
292
+ process.exit(1);
293
+ }
294
+ }
169
295
  const resolved = await resolveSessionPath(parsed.fork, cwd, sessionDir);
170
296
  switch (resolved.type) {
171
297
  case "path":
172
298
  case "local":
173
299
  case "global":
174
- return forkSessionOrExit(resolved.path, cwd, sessionDir);
300
+ return forkSessionOrExit(resolved.path, cwd, sessionDir, parsed.sessionId);
175
301
  case "not_found":
176
302
  console.error(chalk.red(`No session found matching '${resolved.arg}'`));
177
303
  process.exit(1);
@@ -182,7 +308,7 @@ async function createSessionManager(parsed, cwd, sessionDir, settingsManager) {
182
308
  switch (resolved.type) {
183
309
  case "path":
184
310
  case "local":
185
- return SessionManager.open(resolved.path, sessionDir);
311
+ return openSessionOrExit(resolved.path, sessionDir);
186
312
  case "global": {
187
313
  console.log(chalk.yellow(`Session found in different project: ${resolved.cwd}`));
188
314
  const shouldFork = await promptConfirm("Fork this session into current directory?");
@@ -198,9 +324,8 @@ async function createSessionManager(parsed, cwd, sessionDir, settingsManager) {
198
324
  }
199
325
  }
200
326
  if (parsed.resume) {
201
- initTheme(settingsManager.getTheme(), true);
202
327
  try {
203
- const selectedPath = await selectSession((onProgress) => SessionManager.list(cwd, sessionDir, onProgress), SessionManager.listAll);
328
+ const selectedPath = await selectSession((onProgress) => SessionManager.list(cwd, sessionDir, onProgress), (onProgress) => SessionManager.listAll(sessionDir, onProgress), settingsManager);
204
329
  if (!selectedPath) {
205
330
  console.log(chalk.dim("No session selected"));
206
331
  process.exit(0);
@@ -214,9 +339,16 @@ async function createSessionManager(parsed, cwd, sessionDir, settingsManager) {
214
339
  if (parsed.continue) {
215
340
  return SessionManager.continueRecent(cwd, sessionDir);
216
341
  }
217
- return SessionManager.create(cwd, sessionDir);
342
+ if (parsed.sessionId) {
343
+ const existingSession = await findLocalSessionByExactId(parsed.sessionId, cwd, sessionDir);
344
+ if (existingSession) {
345
+ return SessionManager.open(existingSession.path, sessionDir);
346
+ }
347
+ console.error(chalk.yellow(`Warning: No project session found with id '${parsed.sessionId}'; creating a new session with that id.`));
348
+ }
349
+ return SessionManager.create(cwd, sessionDir, { id: parsed.sessionId });
218
350
  }
219
- function buildSessionOptions(parsed, scopedModels, hasExistingSession, modelRegistry, settingsManager) {
351
+ function buildSessionOptions(parsed, scopedModels, hasExistingSession, modelRuntime, settingsManager) {
220
352
  const options = {};
221
353
  const diagnostics = [];
222
354
  let cliThinkingFromModel = false;
@@ -227,7 +359,8 @@ function buildSessionOptions(parsed, scopedModels, hasExistingSession, modelRegi
227
359
  const resolved = resolveCliModel({
228
360
  cliProvider: parsed.provider,
229
361
  cliModel: parsed.model,
230
- modelRegistry,
362
+ cliThinking: parsed.thinking,
363
+ modelRuntime,
231
364
  });
232
365
  if (resolved.warning) {
233
366
  diagnostics.push({ type: "warning", message: resolved.warning });
@@ -249,7 +382,7 @@ function buildSessionOptions(parsed, scopedModels, hasExistingSession, modelRegi
249
382
  // Check if saved default is in scoped models - use it if so, otherwise first scoped model
250
383
  const savedProvider = settingsManager.getDefaultProvider();
251
384
  const savedModelId = settingsManager.getDefaultModel();
252
- const savedModel = savedProvider && savedModelId ? modelRegistry.find(savedProvider, savedModelId) : undefined;
385
+ const savedModel = savedProvider && savedModelId ? modelRuntime.getModel(savedProvider, savedModelId) : undefined;
253
386
  const savedInScope = savedModel ? scopedModels.find((sm) => modelsAreEqual(sm.model, savedModel)) : undefined;
254
387
  if (savedInScope) {
255
388
  options.model = savedInScope.model;
@@ -279,7 +412,7 @@ function buildSessionOptions(parsed, scopedModels, hasExistingSession, modelRegi
279
412
  thinkingLevel: sm.thinkingLevel,
280
413
  }));
281
414
  }
282
- // API key from CLI - set in authStorage
415
+ // API key from CLI - set as a non-persistent runtime override
283
416
  // (handled by caller before createAgentSession)
284
417
  // Tools
285
418
  if (parsed.noTools) {
@@ -291,43 +424,53 @@ function buildSessionOptions(parsed, scopedModels, hasExistingSession, modelRegi
291
424
  if (parsed.tools) {
292
425
  options.tools = [...parsed.tools];
293
426
  }
427
+ if (parsed.excludeTools) {
428
+ options.excludeTools = [...parsed.excludeTools];
429
+ }
294
430
  return { options, cliThinkingFromModel, diagnostics };
295
431
  }
296
432
  function resolveCliPaths(cwd, paths) {
297
- return paths?.map((value) => (isLocalPath(value) ? resolve(cwd, value) : value));
433
+ return paths?.map((value) => (isLocalPath(value) ? resolvePath(value, cwd) : value));
298
434
  }
299
435
  async function promptForMissingSessionCwd(issue, settingsManager) {
300
- initTheme(settingsManager.getTheme());
301
- setKeybindings(KeybindingsManager.create());
302
- return new Promise((resolve) => {
303
- const ui = new TUI(new ProcessTerminal(), settingsManager.getShowHardwareCursor());
304
- ui.setClearOnShrink(settingsManager.getClearOnShrink());
305
- let settled = false;
306
- const finish = (result) => {
307
- if (settled) {
308
- return;
309
- }
310
- settled = true;
311
- ui.stop();
312
- resolve(result);
313
- };
314
- const selector = new ExtensionSelectorComponent(formatMissingSessionCwdPrompt(issue), ["Continue", "Cancel"], (option) => finish(option === "Continue" ? issue.fallbackCwd : undefined), () => finish(undefined), { tui: ui });
315
- ui.addChild(selector);
316
- ui.setFocus(selector);
317
- ui.start();
318
- });
436
+ return showStartupSelector(settingsManager, formatMissingSessionCwdPrompt(issue), [
437
+ { label: "Continue", value: issue.fallbackCwd },
438
+ { label: "Cancel", value: undefined },
439
+ ]);
319
440
  }
320
441
  export async function main(args, options) {
321
442
  resetTimings();
322
- const offlineMode = args.includes("--offline") || isTruthyEnvFlag(process.env.PI_OFFLINE);
443
+ const extensionFactories = [...builtInExtensions, ...(options?.extensionFactories ?? [])];
444
+ const cwd = process.cwd();
445
+ assertNoLegacyPaths(cwd);
446
+ const offlineMode = args.includes("--offline") || isTruthyEnvFlag(process.env.MCPI_OFFLINE);
323
447
  if (offlineMode) {
324
- process.env.PI_OFFLINE = "1";
325
- process.env.PI_SKIP_VERSION_CHECK = "1";
448
+ process.env.MCPI_OFFLINE = "1";
449
+ process.env.MCPI_SKIP_VERSION_CHECK = "1";
326
450
  }
327
- if (await handlePackageCommand(args)) {
451
+ if (await runAuthCommand(args)) {
452
+ return;
453
+ }
454
+ if (process.platform === "win32") {
455
+ cleanupWindowsSelfUpdateQuarantine(getPackageDir());
456
+ }
457
+ const agentDir = getAgentDir();
458
+ const bootstrapSettingsManager = SettingsManager.create(cwd, agentDir, { projectTrusted: false });
459
+ applyHttpProxySettings(bootstrapSettingsManager.getGlobalSettings().httpProxy);
460
+ configureHttpDispatcher();
461
+ if (await handlePackageCommand(args, { extensionFactories })) {
462
+ const exitCode = process.exitCode ?? 0;
463
+ if (process.platform === "win32" && exitCode === 0 && args[0] === "update") {
464
+ // We normally prefer process.exit(0) for package commands so bad extensions cannot keep
465
+ // one-shot commands alive. On Windows, Node can assert after fetch() if process.exit(0)
466
+ // runs during teardown; let successful `mcpi update` drain naturally instead.
467
+ // https://github.com/nodejs/node/issues/56645
468
+ return;
469
+ }
470
+ process.exit(exitCode);
328
471
  return;
329
472
  }
330
- if (await handleConfigCommand(args)) {
473
+ if (await handleConfigCommand(args, { extensionFactories })) {
331
474
  return;
332
475
  }
333
476
  const parsed = parseArgs(args);
@@ -341,11 +484,6 @@ export async function main(args, options) {
341
484
  }
342
485
  }
343
486
  time("parseArgs");
344
- let appMode = resolveAppMode(parsed, process.stdin.isTTY);
345
- const shouldTakeOverStdout = appMode !== "interactive";
346
- if (shouldTakeOverStdout) {
347
- takeOverStdout();
348
- }
349
487
  if (parsed.version) {
350
488
  console.log(VERSION);
351
489
  process.exit(0);
@@ -364,24 +502,40 @@ export async function main(args, options) {
364
502
  console.log(`Exported to: ${result}`);
365
503
  process.exit(0);
366
504
  }
505
+ let appMode = resolveAppMode(parsed, process.stdin.isTTY, process.stdout.isTTY);
506
+ const shouldTakeOverStdout = appMode !== "interactive" && !isPlainRuntimeMetadataCommand(parsed);
507
+ if (shouldTakeOverStdout) {
508
+ takeOverStdout();
509
+ }
367
510
  if (parsed.mode === "rpc" && parsed.fileArgs.length > 0) {
368
511
  console.error(chalk.red("Error: @file arguments are not supported in RPC mode"));
369
512
  process.exit(1);
370
513
  }
371
514
  validateForkFlags(parsed);
515
+ validateSessionIdFlags(parsed);
372
516
  // Run migrations (pass cwd for project-local migrations)
373
- const { migratedAuthProviders: migratedProviders, deprecationWarnings } = runMigrations(process.cwd());
517
+ const { migratedAuthProviders: migratedProviders, deprecationWarnings } = runMigrations(cwd);
374
518
  time("runMigrations");
375
- const cwd = process.cwd();
376
- const agentDir = getAgentDir();
377
519
  const startupSettingsManager = SettingsManager.create(cwd, agentDir);
378
520
  reportDiagnostics(collectSettingsDiagnostics(startupSettingsManager, "startup session lookup"));
521
+ // Experimental first-time setup: theme choice and analytics opt-in.
522
+ // Runs before any runtime services are created so the chosen settings apply everywhere.
523
+ if (appMode === "interactive" && !parsed.help && parsed.listModels === undefined && shouldRunFirstTimeSetup()) {
524
+ await showFirstTimeSetup(startupSettingsManager);
525
+ time("firstTimeSetup");
526
+ }
527
+ if (appMode === "interactive" && parsed.useTheme !== undefined) {
528
+ startupSettingsManager.applyOverrides({ theme: parsed.useTheme });
529
+ }
379
530
  // Decide the final runtime cwd before creating cwd-bound runtime services.
380
531
  // --session and --resume may select a session from another project, so project-local
381
532
  // settings, resources, provider registrations, and models must be resolved only after
382
533
  // the target session cwd is known. The startup-cwd settings manager is used only for
383
534
  // sessionDir lookup during session selection.
384
- const sessionDir = parsed.sessionDir ?? startupSettingsManager.getSessionDir();
535
+ const envSessionDir = process.env[ENV_SESSION_DIR];
536
+ const sessionDir = (parsed.sessionDir ? normalizePath(parsed.sessionDir) : undefined) ??
537
+ (envSessionDir ? expandTildePath(envSessionDir) : undefined) ??
538
+ startupSettingsManager.getSessionDir();
385
539
  let sessionManager = await createSessionManager(parsed, cwd, sessionDir, startupSettingsManager);
386
540
  const missingSessionCwdIssue = getMissingSessionCwdIssue(sessionManager, cwd);
387
541
  if (missingSessionCwdIssue) {
@@ -397,18 +551,68 @@ export async function main(args, options) {
397
551
  process.exit(1);
398
552
  }
399
553
  }
554
+ if (parsed.name !== undefined) {
555
+ const name = parsed.name.trim();
556
+ if (!name) {
557
+ console.error(chalk.red("Error: --name requires a non-empty value"));
558
+ process.exit(1);
559
+ }
560
+ sessionManager.appendSessionInfo(name);
561
+ }
400
562
  time("createSessionManager");
563
+ const trustStore = new ProjectTrustStore(agentDir);
564
+ const sessionCwd = sessionManager.getCwd();
565
+ const autoTrustOnReloadCwd = parsed.projectTrustOverride === undefined && !hasTrustRequiringProjectResources(sessionCwd)
566
+ ? sessionCwd
567
+ : undefined;
568
+ const trustPromptMode = parsed.help || parsed.listModels !== undefined ? "print" : appMode;
569
+ const projectTrustByCwd = new Map();
401
570
  const resolvedExtensionPaths = resolveCliPaths(cwd, parsed.extensions);
402
571
  const resolvedSkillPaths = resolveCliPaths(cwd, parsed.skills);
403
572
  const resolvedPromptTemplatePaths = resolveCliPaths(cwd, parsed.promptTemplates);
404
573
  const resolvedThemePaths = resolveCliPaths(cwd, parsed.themes);
405
- const authStorage = AuthStorage.create();
406
- const createRuntime = async ({ cwd, agentDir, sessionManager, sessionStartEvent, }) => {
574
+ const createRuntime = async ({ cwd, agentDir, sessionManager, sessionStartEvent, projectTrustContext, }) => {
575
+ const isInitialRuntime = sessionStartEvent === undefined;
576
+ const projectTrustDiagnostics = [];
577
+ const cachedProjectTrust = projectTrustByCwd.get(cwd);
578
+ const hasTrustRequiringResources = hasTrustRequiringProjectResources(cwd);
579
+ const shouldResolveProjectTrust = parsed.projectTrustOverride === undefined && cachedProjectTrust === undefined && hasTrustRequiringResources;
580
+ const projectTrusted = shouldResolveProjectTrust
581
+ ? false
582
+ : (cachedProjectTrust ??
583
+ parsed.projectTrustOverride ??
584
+ (!hasTrustRequiringResources || trustStore.get(cwd) === true));
585
+ const runtimeSettingsManager = SettingsManager.create(cwd, agentDir, { projectTrusted });
407
586
  const services = await createAgentSessionServices({
408
587
  cwd,
409
588
  agentDir,
410
- authStorage,
589
+ cacheDir: getCacheDir(),
590
+ settingsManager: runtimeSettingsManager,
591
+ modelRuntimeSignal: AbortSignal.timeout(15_000),
411
592
  extensionFlagValues: parsed.unknownFlags,
593
+ resourceLoaderReloadOptions: shouldResolveProjectTrust
594
+ ? {
595
+ resolveProjectTrust: async ({ extensionsResult }) => {
596
+ const trusted = await resolveProjectTrusted({
597
+ cwd,
598
+ trustStore,
599
+ trustOverride: parsed.projectTrustOverride,
600
+ defaultProjectTrust: startupSettingsManager.getDefaultProjectTrust(),
601
+ extensionsResult,
602
+ projectTrustContext: projectTrustContext ??
603
+ createProjectTrustContext({
604
+ cwd,
605
+ mode: isInitialRuntime ? trustPromptMode : appMode,
606
+ settingsManager: startupSettingsManager,
607
+ hasUI: isInitialRuntime && trustPromptMode === "interactive",
608
+ }),
609
+ onExtensionError: (message) => projectTrustDiagnostics.push({ type: "warning", message }),
610
+ });
611
+ projectTrustByCwd.set(cwd, trusted);
612
+ return trusted;
613
+ },
614
+ }
615
+ : undefined,
412
616
  resourceLoaderOptions: {
413
617
  additionalExtensionPaths: resolvedExtensionPaths,
414
618
  additionalSkillPaths: resolvedSkillPaths,
@@ -421,11 +625,12 @@ export async function main(args, options) {
421
625
  noContextFiles: parsed.noContextFiles,
422
626
  systemPrompt: parsed.systemPrompt,
423
627
  appendSystemPrompt: parsed.appendSystemPrompt,
424
- extensionFactories: options?.extensionFactories,
628
+ extensionFactories,
425
629
  },
426
630
  });
427
- const { settingsManager, modelRegistry, resourceLoader } = services;
631
+ const { settingsManager, modelRuntime, resourceLoader } = services;
428
632
  const diagnostics = [
633
+ ...projectTrustDiagnostics,
429
634
  ...services.diagnostics,
430
635
  ...collectSettingsDiagnostics(settingsManager, "runtime creation"),
431
636
  ...resourceLoader.getExtensions().errors.map(({ path, error }) => ({
@@ -434,8 +639,10 @@ export async function main(args, options) {
434
639
  })),
435
640
  ];
436
641
  const modelPatterns = parsed.models ?? settingsManager.getEnabledModels();
437
- const scopedModels = modelPatterns && modelPatterns.length > 0 ? await resolveModelScope(modelPatterns, modelRegistry) : [];
438
- const { options: sessionOptions, cliThinkingFromModel, diagnostics: sessionOptionDiagnostics, } = buildSessionOptions(parsed, scopedModels, sessionManager.buildSessionContext().messages.length > 0, modelRegistry, settingsManager);
642
+ const scopedModels = modelPatterns && modelPatterns.length > 0
643
+ ? await resolveModelScope(modelPatterns, modelRuntime, { signal: AbortSignal.timeout(15_000) })
644
+ : [];
645
+ const { options: sessionOptions, cliThinkingFromModel, diagnostics: sessionOptionDiagnostics, } = buildSessionOptions(parsed, scopedModels, sessionManager.buildSessionContext().messages.length > 0, modelRuntime, settingsManager);
439
646
  diagnostics.push(...sessionOptionDiagnostics);
440
647
  if (parsed.apiKey) {
441
648
  if (!sessionOptions.model) {
@@ -445,7 +652,7 @@ export async function main(args, options) {
445
652
  });
446
653
  }
447
654
  else {
448
- authStorage.setRuntimeApiKey(sessionOptions.model.provider, parsed.apiKey);
655
+ await modelRuntime.setRuntimeApiKey(sessionOptions.model.provider, parsed.apiKey);
449
656
  }
450
657
  }
451
658
  const created = await createAgentSessionFromServices({
@@ -456,21 +663,13 @@ export async function main(args, options) {
456
663
  thinkingLevel: sessionOptions.thinkingLevel,
457
664
  scopedModels: sessionOptions.scopedModels,
458
665
  tools: sessionOptions.tools,
666
+ excludeTools: sessionOptions.excludeTools,
459
667
  noTools: sessionOptions.noTools,
460
668
  customTools: sessionOptions.customTools,
461
669
  });
462
670
  const cliThinkingOverride = parsed.thinking !== undefined || cliThinkingFromModel;
463
671
  if (created.session.model && cliThinkingOverride) {
464
- let effectiveThinking = created.session.thinkingLevel;
465
- if (!created.session.model.reasoning) {
466
- effectiveThinking = "off";
467
- }
468
- else if (effectiveThinking === "xhigh" && !supportsXhigh(created.session.model)) {
469
- effectiveThinking = "high";
470
- }
471
- if (effectiveThinking !== created.session.thinkingLevel) {
472
- created.session.setThinkingLevel(effectiveThinking);
473
- }
672
+ created.session.setThinkingLevel(created.session.thinkingLevel);
474
673
  }
475
674
  return {
476
675
  ...created,
@@ -484,8 +683,11 @@ export async function main(args, options) {
484
683
  agentDir,
485
684
  sessionManager,
486
685
  });
686
+ time("createAgentSessionRuntime");
487
687
  const { services, session, modelFallbackMessage } = runtime;
488
- const { settingsManager, modelRegistry, resourceLoader } = services;
688
+ const { settingsManager, modelRuntime, resourceLoader } = services;
689
+ applyHttpProxySettings(settingsManager.getGlobalSettings().httpProxy);
690
+ configureHttpDispatcher(settingsManager.getHttpIdleTimeoutMs());
489
691
  if (parsed.help) {
490
692
  const extensionFlags = resourceLoader
491
693
  .getExtensions()
@@ -495,7 +697,7 @@ export async function main(args, options) {
495
697
  }
496
698
  if (parsed.listModels !== undefined) {
497
699
  const searchPattern = typeof parsed.listModels === "string" ? parsed.listModels : undefined;
498
- await listModels(modelRegistry, searchPattern);
700
+ await listModels(modelRuntime, searchPattern, AbortSignal.timeout(15_000));
499
701
  process.exit(0);
500
702
  }
501
703
  // Read piped stdin content (if any) - skip for RPC mode which uses stdin for JSON-RPC
@@ -515,10 +717,12 @@ export async function main(args, options) {
515
717
  if (appMode === "interactive" && deprecationWarnings.length > 0) {
516
718
  await showDeprecationWarnings(deprecationWarnings);
517
719
  }
518
- const scopedModels = [...session.scopedModels];
519
720
  time("resolveModelScope");
520
721
  reportDiagnostics(runtime.diagnostics);
521
722
  if (runtime.diagnostics.some((diagnostic) => diagnostic.type === "error")) {
723
+ if (runtime.diagnostics.some((diagnostic) => diagnostic.message.includes("Failed to load extension"))) {
724
+ console.error(chalk.yellow(EXTENSION_LOAD_FAILURE_HINT));
725
+ }
522
726
  process.exit(1);
523
727
  }
524
728
  time("createAgentSession");
@@ -526,39 +730,45 @@ export async function main(args, options) {
526
730
  console.error(chalk.red(formatNoModelsAvailableMessage()));
527
731
  process.exit(1);
528
732
  }
529
- const startupBenchmark = isTruthyEnvFlag(process.env.PI_STARTUP_BENCHMARK);
733
+ const startupBenchmark = isTruthyEnvFlag(process.env.MCPI_STARTUP_BENCHMARK);
530
734
  if (startupBenchmark && appMode !== "interactive") {
531
- console.error(chalk.red("Error: PI_STARTUP_BENCHMARK only supports interactive mode"));
735
+ console.error(chalk.red("Error: MCPI_STARTUP_BENCHMARK only supports interactive mode"));
532
736
  process.exit(1);
533
737
  }
738
+ // RPC refreshes catalogs here in the background; interactive mode starts its refresh after TUI initialization.
739
+ if (!offlineMode && appMode === "rpc") {
740
+ const controller = new AbortController();
741
+ const timeout = setTimeout(() => controller.abort(), 15_000);
742
+ void modelRuntime
743
+ .refresh({ signal: controller.signal })
744
+ .catch(() => { })
745
+ .finally(() => clearTimeout(timeout));
746
+ }
534
747
  if (appMode === "rpc") {
535
748
  printTimings();
536
749
  await runRpcMode(runtime);
537
750
  }
538
751
  else if (appMode === "interactive") {
539
- if (scopedModels.length > 0 && (parsed.verbose || !settingsManager.getQuietStartup())) {
540
- const modelList = scopedModels
541
- .map((sm) => {
542
- const thinkingStr = sm.thinkingLevel ? `:${sm.thinkingLevel}` : "";
543
- return `${sm.model.id}${thinkingStr}`;
544
- })
545
- .join(", ");
546
- console.log(chalk.dim(`Model scope: ${modelList} ${chalk.gray("(Ctrl+P to cycle)")}`));
547
- }
548
752
  const interactiveMode = new InteractiveMode(runtime, {
549
753
  migratedProviders,
550
754
  modelFallbackMessage,
755
+ autoTrustOnReloadCwd,
551
756
  initialMessage,
552
757
  initialImages,
553
758
  initialMessages: parsed.messages,
554
759
  verbose: parsed.verbose,
760
+ tuiMode: parsed.tuiMode,
761
+ initialThemeSetting: parsed.useTheme,
555
762
  });
556
763
  if (startupBenchmark) {
557
764
  await interactiveMode.init();
558
765
  time("interactiveMode.init");
559
- printTimings();
766
+ // Give the TUI's stdin handler a brief chance to consume terminal query replies
767
+ // (Kitty keyboard protocol, device attributes, cell size) before restoring the terminal.
768
+ await new Promise((resolve) => setTimeout(resolve, 150));
560
769
  interactiveMode.stop();
561
770
  stopThemeWatcher();
771
+ printTimings();
562
772
  if (process.stdout.writableLength > 0) {
563
773
  await new Promise((resolve) => process.stdout.once("drain", resolve));
564
774
  }