@handy_wote/pi-coding-agent 0.81.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (863) hide show
  1. package/CHANGELOG.md +5107 -0
  2. package/README.md +694 -0
  3. package/dist/bun/cli.d.ts +3 -0
  4. package/dist/bun/cli.d.ts.map +1 -0
  5. package/dist/bun/cli.js +11 -0
  6. package/dist/bun/cli.js.map +1 -0
  7. package/dist/bun/register-bedrock.d.ts +2 -0
  8. package/dist/bun/register-bedrock.d.ts.map +1 -0
  9. package/dist/bun/register-bedrock.js +4 -0
  10. package/dist/bun/register-bedrock.js.map +1 -0
  11. package/dist/bun/restore-sandbox-env.d.ts +17 -0
  12. package/dist/bun/restore-sandbox-env.d.ts.map +1 -0
  13. package/dist/bun/restore-sandbox-env.js +36 -0
  14. package/dist/bun/restore-sandbox-env.js.map +1 -0
  15. package/dist/cli/args.d.ts +57 -0
  16. package/dist/cli/args.d.ts.map +1 -0
  17. package/dist/cli/args.js +381 -0
  18. package/dist/cli/args.js.map +1 -0
  19. package/dist/cli/config-selector.d.ts +16 -0
  20. package/dist/cli/config-selector.d.ts.map +1 -0
  21. package/dist/cli/config-selector.js +31 -0
  22. package/dist/cli/config-selector.js.map +1 -0
  23. package/dist/cli/file-processor.d.ts +15 -0
  24. package/dist/cli/file-processor.d.ts.map +1 -0
  25. package/dist/cli/file-processor.js +70 -0
  26. package/dist/cli/file-processor.js.map +1 -0
  27. package/dist/cli/initial-message.d.ts +18 -0
  28. package/dist/cli/initial-message.d.ts.map +1 -0
  29. package/dist/cli/initial-message.js +22 -0
  30. package/dist/cli/initial-message.js.map +1 -0
  31. package/dist/cli/list-models.d.ts +9 -0
  32. package/dist/cli/list-models.d.ts.map +1 -0
  33. package/dist/cli/list-models.js +95 -0
  34. package/dist/cli/list-models.js.map +1 -0
  35. package/dist/cli/project-trust.d.ts +10 -0
  36. package/dist/cli/project-trust.d.ts.map +1 -0
  37. package/dist/cli/project-trust.js +48 -0
  38. package/dist/cli/project-trust.js.map +1 -0
  39. package/dist/cli/session-picker.d.ts +10 -0
  40. package/dist/cli/session-picker.d.ts.map +1 -0
  41. package/dist/cli/session-picker.js +36 -0
  42. package/dist/cli/session-picker.js.map +1 -0
  43. package/dist/cli/startup-ui.d.ts +20 -0
  44. package/dist/cli/startup-ui.d.ts.map +1 -0
  45. package/dist/cli/startup-ui.js +184 -0
  46. package/dist/cli/startup-ui.js.map +1 -0
  47. package/dist/cli.d.ts +3 -0
  48. package/dist/cli.d.ts.map +1 -0
  49. package/dist/cli.js +18 -0
  50. package/dist/cli.js.map +1 -0
  51. package/dist/config.d.ts +98 -0
  52. package/dist/config.d.ts.map +1 -0
  53. package/dist/config.js +459 -0
  54. package/dist/config.js.map +1 -0
  55. package/dist/core/agent-session-runtime.d.ts +119 -0
  56. package/dist/core/agent-session-runtime.d.ts.map +1 -0
  57. package/dist/core/agent-session-runtime.js +306 -0
  58. package/dist/core/agent-session-runtime.js.map +1 -0
  59. package/dist/core/agent-session-services.d.ts +85 -0
  60. package/dist/core/agent-session-services.d.ts.map +1 -0
  61. package/dist/core/agent-session-services.js +133 -0
  62. package/dist/core/agent-session-services.js.map +1 -0
  63. package/dist/core/agent-session.d.ts +642 -0
  64. package/dist/core/agent-session.d.ts.map +1 -0
  65. package/dist/core/agent-session.js +2684 -0
  66. package/dist/core/agent-session.js.map +1 -0
  67. package/dist/core/auth-storage.d.ts +56 -0
  68. package/dist/core/auth-storage.d.ts.map +1 -0
  69. package/dist/core/auth-storage.js +232 -0
  70. package/dist/core/auth-storage.js.map +1 -0
  71. package/dist/core/bash-executor.d.ts +32 -0
  72. package/dist/core/bash-executor.d.ts.map +1 -0
  73. package/dist/core/bash-executor.js +111 -0
  74. package/dist/core/bash-executor.js.map +1 -0
  75. package/dist/core/cache-stats.d.ts +49 -0
  76. package/dist/core/cache-stats.d.ts.map +1 -0
  77. package/dist/core/cache-stats.js +101 -0
  78. package/dist/core/cache-stats.js.map +1 -0
  79. package/dist/core/compaction/branch-summarization.d.ts +98 -0
  80. package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
  81. package/dist/core/compaction/branch-summarization.js +246 -0
  82. package/dist/core/compaction/branch-summarization.js.map +1 -0
  83. package/dist/core/compaction/compaction.d.ts +137 -0
  84. package/dist/core/compaction/compaction.d.ts.map +1 -0
  85. package/dist/core/compaction/compaction.js +637 -0
  86. package/dist/core/compaction/compaction.js.map +1 -0
  87. package/dist/core/compaction/index.d.ts +7 -0
  88. package/dist/core/compaction/index.d.ts.map +1 -0
  89. package/dist/core/compaction/index.js +7 -0
  90. package/dist/core/compaction/index.js.map +1 -0
  91. package/dist/core/compaction/utils.d.ts +38 -0
  92. package/dist/core/compaction/utils.d.ts.map +1 -0
  93. package/dist/core/compaction/utils.js +142 -0
  94. package/dist/core/compaction/utils.js.map +1 -0
  95. package/dist/core/defaults.d.ts +3 -0
  96. package/dist/core/defaults.d.ts.map +1 -0
  97. package/dist/core/defaults.js +2 -0
  98. package/dist/core/defaults.js.map +1 -0
  99. package/dist/core/diagnostics.d.ts +15 -0
  100. package/dist/core/diagnostics.d.ts.map +1 -0
  101. package/dist/core/diagnostics.js +2 -0
  102. package/dist/core/diagnostics.js.map +1 -0
  103. package/dist/core/event-bus.d.ts +9 -0
  104. package/dist/core/event-bus.d.ts.map +1 -0
  105. package/dist/core/event-bus.js +25 -0
  106. package/dist/core/event-bus.js.map +1 -0
  107. package/dist/core/exec.d.ts +29 -0
  108. package/dist/core/exec.d.ts.map +1 -0
  109. package/dist/core/exec.js +75 -0
  110. package/dist/core/exec.js.map +1 -0
  111. package/dist/core/experimental.d.ts +2 -0
  112. package/dist/core/experimental.d.ts.map +1 -0
  113. package/dist/core/experimental.js +4 -0
  114. package/dist/core/experimental.js.map +1 -0
  115. package/dist/core/export-html/ansi-to-html.d.ts +22 -0
  116. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
  117. package/dist/core/export-html/ansi-to-html.js +249 -0
  118. package/dist/core/export-html/ansi-to-html.js.map +1 -0
  119. package/dist/core/export-html/index.d.ts +37 -0
  120. package/dist/core/export-html/index.d.ts.map +1 -0
  121. package/dist/core/export-html/index.js +226 -0
  122. package/dist/core/export-html/index.js.map +1 -0
  123. package/dist/core/export-html/template.css +1066 -0
  124. package/dist/core/export-html/template.html +55 -0
  125. package/dist/core/export-html/template.js +1864 -0
  126. package/dist/core/export-html/tool-renderer.d.ts +34 -0
  127. package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
  128. package/dist/core/export-html/tool-renderer.js +108 -0
  129. package/dist/core/export-html/tool-renderer.js.map +1 -0
  130. package/dist/core/export-html/vendor/highlight.min.js +1213 -0
  131. package/dist/core/export-html/vendor/marked.min.js +78 -0
  132. package/dist/core/extensions/index.d.ts +12 -0
  133. package/dist/core/extensions/index.d.ts.map +1 -0
  134. package/dist/core/extensions/index.js +9 -0
  135. package/dist/core/extensions/index.js.map +1 -0
  136. package/dist/core/extensions/loader.d.ts +23 -0
  137. package/dist/core/extensions/loader.d.ts.map +1 -0
  138. package/dist/core/extensions/loader.js +586 -0
  139. package/dist/core/extensions/loader.js.map +1 -0
  140. package/dist/core/extensions/runner.d.ts +171 -0
  141. package/dist/core/extensions/runner.d.ts.map +1 -0
  142. package/dist/core/extensions/runner.js +953 -0
  143. package/dist/core/extensions/runner.js.map +1 -0
  144. package/dist/core/extensions/types.d.ts +1259 -0
  145. package/dist/core/extensions/types.d.ts.map +1 -0
  146. package/dist/core/extensions/types.js +45 -0
  147. package/dist/core/extensions/types.js.map +1 -0
  148. package/dist/core/extensions/wrapper.d.ts +20 -0
  149. package/dist/core/extensions/wrapper.d.ts.map +1 -0
  150. package/dist/core/extensions/wrapper.js +41 -0
  151. package/dist/core/extensions/wrapper.js.map +1 -0
  152. package/dist/core/footer-data-provider.d.ts +54 -0
  153. package/dist/core/footer-data-provider.d.ts.map +1 -0
  154. package/dist/core/footer-data-provider.js +338 -0
  155. package/dist/core/footer-data-provider.js.map +1 -0
  156. package/dist/core/http-dispatcher.d.ts +22 -0
  157. package/dist/core/http-dispatcher.d.ts.map +1 -0
  158. package/dist/core/http-dispatcher.js +91 -0
  159. package/dist/core/http-dispatcher.js.map +1 -0
  160. package/dist/core/index.d.ts +13 -0
  161. package/dist/core/index.d.ts.map +1 -0
  162. package/dist/core/index.js +13 -0
  163. package/dist/core/index.js.map +1 -0
  164. package/dist/core/keybindings.d.ts +390 -0
  165. package/dist/core/keybindings.d.ts.map +1 -0
  166. package/dist/core/keybindings.js +296 -0
  167. package/dist/core/keybindings.js.map +1 -0
  168. package/dist/core/messages.d.ts +77 -0
  169. package/dist/core/messages.d.ts.map +1 -0
  170. package/dist/core/messages.js +123 -0
  171. package/dist/core/messages.js.map +1 -0
  172. package/dist/core/model-metadata.d.ts +30 -0
  173. package/dist/core/model-metadata.d.ts.map +1 -0
  174. package/dist/core/model-metadata.js +139 -0
  175. package/dist/core/model-metadata.js.map +1 -0
  176. package/dist/core/model-registry.d.ts +48 -0
  177. package/dist/core/model-registry.d.ts.map +1 -0
  178. package/dist/core/model-registry.js +105 -0
  179. package/dist/core/model-registry.js.map +1 -0
  180. package/dist/core/model-resolver.d.ts +121 -0
  181. package/dist/core/model-resolver.d.ts.map +1 -0
  182. package/dist/core/model-resolver.js +534 -0
  183. package/dist/core/model-resolver.js.map +1 -0
  184. package/dist/core/model-runtime.d.ts +84 -0
  185. package/dist/core/model-runtime.d.ts.map +1 -0
  186. package/dist/core/model-runtime.js +453 -0
  187. package/dist/core/model-runtime.js.map +1 -0
  188. package/dist/core/models-store.d.ts +17 -0
  189. package/dist/core/models-store.d.ts.map +1 -0
  190. package/dist/core/models-store.js +45 -0
  191. package/dist/core/models-store.js.map +1 -0
  192. package/dist/core/output-guard.d.ts +7 -0
  193. package/dist/core/output-guard.d.ts.map +1 -0
  194. package/dist/core/output-guard.js +89 -0
  195. package/dist/core/output-guard.js.map +1 -0
  196. package/dist/core/package-manager.d.ts +210 -0
  197. package/dist/core/package-manager.d.ts.map +1 -0
  198. package/dist/core/package-manager.js +2135 -0
  199. package/dist/core/package-manager.js.map +1 -0
  200. package/dist/core/profile-runtime.d.ts +4 -0
  201. package/dist/core/profile-runtime.d.ts.map +1 -0
  202. package/dist/core/profile-runtime.js +57 -0
  203. package/dist/core/profile-runtime.js.map +1 -0
  204. package/dist/core/profiles-store.d.ts +17 -0
  205. package/dist/core/profiles-store.d.ts.map +1 -0
  206. package/dist/core/profiles-store.js +100 -0
  207. package/dist/core/profiles-store.js.map +1 -0
  208. package/dist/core/profiles-types.d.ts +31 -0
  209. package/dist/core/profiles-types.d.ts.map +1 -0
  210. package/dist/core/profiles-types.js +4 -0
  211. package/dist/core/profiles-types.js.map +1 -0
  212. package/dist/core/project-trust.d.ts +15 -0
  213. package/dist/core/project-trust.d.ts.map +1 -0
  214. package/dist/core/project-trust.js +59 -0
  215. package/dist/core/project-trust.js.map +1 -0
  216. package/dist/core/prompt-templates.d.ts +54 -0
  217. package/dist/core/prompt-templates.d.ts.map +1 -0
  218. package/dist/core/prompt-templates.js +236 -0
  219. package/dist/core/prompt-templates.js.map +1 -0
  220. package/dist/core/provider-attribution.d.ts +4 -0
  221. package/dist/core/provider-attribution.d.ts.map +1 -0
  222. package/dist/core/provider-attribution.js +72 -0
  223. package/dist/core/provider-attribution.js.map +1 -0
  224. package/dist/core/radius.d.ts +2 -0
  225. package/dist/core/radius.d.ts.map +1 -0
  226. package/dist/core/radius.js +2 -0
  227. package/dist/core/radius.js.map +1 -0
  228. package/dist/core/resource-loader.d.ts +206 -0
  229. package/dist/core/resource-loader.d.ts.map +1 -0
  230. package/dist/core/resource-loader.js +817 -0
  231. package/dist/core/resource-loader.js.map +1 -0
  232. package/dist/core/sdk.d.ts +106 -0
  233. package/dist/core/sdk.d.ts.map +1 -0
  234. package/dist/core/sdk.js +269 -0
  235. package/dist/core/sdk.js.map +1 -0
  236. package/dist/core/session-cwd.d.ts +19 -0
  237. package/dist/core/session-cwd.d.ts.map +1 -0
  238. package/dist/core/session-cwd.js +38 -0
  239. package/dist/core/session-cwd.js.map +1 -0
  240. package/dist/core/session-manager.d.ts +356 -0
  241. package/dist/core/session-manager.d.ts.map +1 -0
  242. package/dist/core/session-manager.js +1338 -0
  243. package/dist/core/session-manager.js.map +1 -0
  244. package/dist/core/settings-manager.d.ts +297 -0
  245. package/dist/core/settings-manager.d.ts.map +1 -0
  246. package/dist/core/settings-manager.js +902 -0
  247. package/dist/core/settings-manager.js.map +1 -0
  248. package/dist/core/skills.d.ts +60 -0
  249. package/dist/core/skills.d.ts.map +1 -0
  250. package/dist/core/skills.js +387 -0
  251. package/dist/core/skills.js.map +1 -0
  252. package/dist/core/slash-commands.d.ts +15 -0
  253. package/dist/core/slash-commands.d.ts.map +1 -0
  254. package/dist/core/slash-commands.js +25 -0
  255. package/dist/core/slash-commands.js.map +1 -0
  256. package/dist/core/source-info.d.ts +18 -0
  257. package/dist/core/source-info.d.ts.map +1 -0
  258. package/dist/core/source-info.js +19 -0
  259. package/dist/core/source-info.js.map +1 -0
  260. package/dist/core/system-prompt.d.ts +28 -0
  261. package/dist/core/system-prompt.d.ts.map +1 -0
  262. package/dist/core/system-prompt.js +110 -0
  263. package/dist/core/system-prompt.js.map +1 -0
  264. package/dist/core/telemetry.d.ts +3 -0
  265. package/dist/core/telemetry.d.ts.map +1 -0
  266. package/dist/core/telemetry.js +9 -0
  267. package/dist/core/telemetry.js.map +1 -0
  268. package/dist/core/timings.d.ts +10 -0
  269. package/dist/core/timings.d.ts.map +1 -0
  270. package/dist/core/timings.js +41 -0
  271. package/dist/core/timings.js.map +1 -0
  272. package/dist/core/tools/bash.d.ts +68 -0
  273. package/dist/core/tools/bash.d.ts.map +1 -0
  274. package/dist/core/tools/bash.js +361 -0
  275. package/dist/core/tools/bash.js.map +1 -0
  276. package/dist/core/tools/edit-diff.d.ts +106 -0
  277. package/dist/core/tools/edit-diff.d.ts.map +1 -0
  278. package/dist/core/tools/edit-diff.js +424 -0
  279. package/dist/core/tools/edit-diff.js.map +1 -0
  280. package/dist/core/tools/edit.d.ts +51 -0
  281. package/dist/core/tools/edit.d.ts.map +1 -0
  282. package/dist/core/tools/edit.js +284 -0
  283. package/dist/core/tools/edit.js.map +1 -0
  284. package/dist/core/tools/file-mutation-queue.d.ts +6 -0
  285. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
  286. package/dist/core/tools/file-mutation-queue.js +52 -0
  287. package/dist/core/tools/file-mutation-queue.js.map +1 -0
  288. package/dist/core/tools/find.d.ts +35 -0
  289. package/dist/core/tools/find.d.ts.map +1 -0
  290. package/dist/core/tools/find.js +305 -0
  291. package/dist/core/tools/find.js.map +1 -0
  292. package/dist/core/tools/grep.d.ts +37 -0
  293. package/dist/core/tools/grep.d.ts.map +1 -0
  294. package/dist/core/tools/grep.js +304 -0
  295. package/dist/core/tools/grep.js.map +1 -0
  296. package/dist/core/tools/index.d.ts +40 -0
  297. package/dist/core/tools/index.d.ts.map +1 -0
  298. package/dist/core/tools/index.js +112 -0
  299. package/dist/core/tools/index.js.map +1 -0
  300. package/dist/core/tools/ls.d.ts +37 -0
  301. package/dist/core/tools/ls.d.ts.map +1 -0
  302. package/dist/core/tools/ls.js +167 -0
  303. package/dist/core/tools/ls.js.map +1 -0
  304. package/dist/core/tools/output-accumulator.d.ts +52 -0
  305. package/dist/core/tools/output-accumulator.d.ts.map +1 -0
  306. package/dist/core/tools/output-accumulator.js +184 -0
  307. package/dist/core/tools/output-accumulator.js.map +1 -0
  308. package/dist/core/tools/path-utils.d.ts +10 -0
  309. package/dist/core/tools/path-utils.d.ts.map +1 -0
  310. package/dist/core/tools/path-utils.js +99 -0
  311. package/dist/core/tools/path-utils.js.map +1 -0
  312. package/dist/core/tools/read.d.ts +35 -0
  313. package/dist/core/tools/read.d.ts.map +1 -0
  314. package/dist/core/tools/read.js +276 -0
  315. package/dist/core/tools/read.js.map +1 -0
  316. package/dist/core/tools/render-utils.d.ts +24 -0
  317. package/dist/core/tools/render-utils.d.ts.map +1 -0
  318. package/dist/core/tools/render-utils.js +65 -0
  319. package/dist/core/tools/render-utils.js.map +1 -0
  320. package/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
  321. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
  322. package/dist/core/tools/tool-definition-wrapper.js +34 -0
  323. package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
  324. package/dist/core/tools/truncate.d.ts +70 -0
  325. package/dist/core/tools/truncate.d.ts.map +1 -0
  326. package/dist/core/tools/truncate.js +215 -0
  327. package/dist/core/tools/truncate.js.map +1 -0
  328. package/dist/core/tools/write.d.ts +26 -0
  329. package/dist/core/tools/write.d.ts.map +1 -0
  330. package/dist/core/tools/write.js +197 -0
  331. package/dist/core/tools/write.js.map +1 -0
  332. package/dist/core/trust-manager.d.ts +36 -0
  333. package/dist/core/trust-manager.d.ts.map +1 -0
  334. package/dist/core/trust-manager.js +202 -0
  335. package/dist/core/trust-manager.js.map +1 -0
  336. package/dist/core/usage-totals.d.ts +19 -0
  337. package/dist/core/usage-totals.d.ts.map +1 -0
  338. package/dist/core/usage-totals.js +52 -0
  339. package/dist/core/usage-totals.js.map +1 -0
  340. package/dist/extensions/index.d.ts +3 -0
  341. package/dist/extensions/index.d.ts.map +1 -0
  342. package/dist/extensions/index.js +3 -0
  343. package/dist/extensions/index.js.map +1 -0
  344. package/dist/extensions/llama/client.d.ts +61 -0
  345. package/dist/extensions/llama/client.d.ts.map +1 -0
  346. package/dist/extensions/llama/client.js +302 -0
  347. package/dist/extensions/llama/client.js.map +1 -0
  348. package/dist/extensions/llama/huggingface.d.ts +23 -0
  349. package/dist/extensions/llama/huggingface.d.ts.map +1 -0
  350. package/dist/extensions/llama/huggingface.js +141 -0
  351. package/dist/extensions/llama/huggingface.js.map +1 -0
  352. package/dist/extensions/llama/index.d.ts +3 -0
  353. package/dist/extensions/llama/index.d.ts.map +1 -0
  354. package/dist/extensions/llama/index.js +208 -0
  355. package/dist/extensions/llama/index.js.map +1 -0
  356. package/dist/extensions/llama/provider.d.ts +10 -0
  357. package/dist/extensions/llama/provider.d.ts.map +1 -0
  358. package/dist/extensions/llama/provider.js +102 -0
  359. package/dist/extensions/llama/provider.js.map +1 -0
  360. package/dist/extensions/llama/ui.d.ts +42 -0
  361. package/dist/extensions/llama/ui.d.ts.map +1 -0
  362. package/dist/extensions/llama/ui.js +416 -0
  363. package/dist/extensions/llama/ui.js.map +1 -0
  364. package/dist/index.d.ts +35 -0
  365. package/dist/index.d.ts.map +1 -0
  366. package/dist/index.js +47 -0
  367. package/dist/index.js.map +1 -0
  368. package/dist/main.d.ts +12 -0
  369. package/dist/main.d.ts.map +1 -0
  370. package/dist/main.js +706 -0
  371. package/dist/main.js.map +1 -0
  372. package/dist/migrations.d.ts +33 -0
  373. package/dist/migrations.d.ts.map +1 -0
  374. package/dist/migrations.js +281 -0
  375. package/dist/migrations.js.map +1 -0
  376. package/dist/modes/index.d.ts +9 -0
  377. package/dist/modes/index.d.ts.map +1 -0
  378. package/dist/modes/index.js +8 -0
  379. package/dist/modes/index.js.map +1 -0
  380. package/dist/modes/interactive/assets/clankolas.png +0 -0
  381. package/dist/modes/interactive/components/armin.d.ts +34 -0
  382. package/dist/modes/interactive/components/armin.d.ts.map +1 -0
  383. package/dist/modes/interactive/components/armin.js +333 -0
  384. package/dist/modes/interactive/components/armin.js.map +1 -0
  385. package/dist/modes/interactive/components/assistant-message.d.ts +22 -0
  386. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
  387. package/dist/modes/interactive/components/assistant-message.js +141 -0
  388. package/dist/modes/interactive/components/assistant-message.js.map +1 -0
  389. package/dist/modes/interactive/components/bash-execution.d.ts +34 -0
  390. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
  391. package/dist/modes/interactive/components/bash-execution.js +175 -0
  392. package/dist/modes/interactive/components/bash-execution.js.map +1 -0
  393. package/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
  394. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
  395. package/dist/modes/interactive/components/bordered-loader.js +54 -0
  396. package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
  397. package/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
  398. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
  399. package/dist/modes/interactive/components/branch-summary-message.js +44 -0
  400. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
  401. package/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
  402. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
  403. package/dist/modes/interactive/components/compaction-summary-message.js +45 -0
  404. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
  405. package/dist/modes/interactive/components/config-selector.d.ts +102 -0
  406. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
  407. package/dist/modes/interactive/components/config-selector.js +761 -0
  408. package/dist/modes/interactive/components/config-selector.js.map +1 -0
  409. package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
  410. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
  411. package/dist/modes/interactive/components/countdown-timer.js +33 -0
  412. package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
  413. package/dist/modes/interactive/components/custom-editor.d.ts +21 -0
  414. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
  415. package/dist/modes/interactive/components/custom-editor.js +70 -0
  416. package/dist/modes/interactive/components/custom-editor.js.map +1 -0
  417. package/dist/modes/interactive/components/custom-entry.d.ts +19 -0
  418. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -0
  419. package/dist/modes/interactive/components/custom-entry.js +52 -0
  420. package/dist/modes/interactive/components/custom-entry.js.map +1 -0
  421. package/dist/modes/interactive/components/custom-message.d.ts +20 -0
  422. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
  423. package/dist/modes/interactive/components/custom-message.js +79 -0
  424. package/dist/modes/interactive/components/custom-message.js.map +1 -0
  425. package/dist/modes/interactive/components/daxnuts.d.ts +23 -0
  426. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -0
  427. package/dist/modes/interactive/components/daxnuts.js +140 -0
  428. package/dist/modes/interactive/components/daxnuts.js.map +1 -0
  429. package/dist/modes/interactive/components/diff.d.ts +12 -0
  430. package/dist/modes/interactive/components/diff.d.ts.map +1 -0
  431. package/dist/modes/interactive/components/diff.js +133 -0
  432. package/dist/modes/interactive/components/diff.js.map +1 -0
  433. package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
  434. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
  435. package/dist/modes/interactive/components/dynamic-border.js +21 -0
  436. package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
  437. package/dist/modes/interactive/components/earendil-announcement.d.ts +5 -0
  438. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -0
  439. package/dist/modes/interactive/components/earendil-announcement.js +40 -0
  440. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -0
  441. package/dist/modes/interactive/components/entity-list-theme.d.ts +3 -0
  442. package/dist/modes/interactive/components/entity-list-theme.d.ts.map +1 -0
  443. package/dist/modes/interactive/components/entity-list-theme.js +17 -0
  444. package/dist/modes/interactive/components/entity-list-theme.js.map +1 -0
  445. package/dist/modes/interactive/components/extension-editor.d.ts +22 -0
  446. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
  447. package/dist/modes/interactive/components/extension-editor.js +128 -0
  448. package/dist/modes/interactive/components/extension-editor.js.map +1 -0
  449. package/dist/modes/interactive/components/extension-input.d.ts +23 -0
  450. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
  451. package/dist/modes/interactive/components/extension-input.js +61 -0
  452. package/dist/modes/interactive/components/extension-input.js.map +1 -0
  453. package/dist/modes/interactive/components/extension-selector.d.ts +22 -0
  454. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
  455. package/dist/modes/interactive/components/extension-selector.js +61 -0
  456. package/dist/modes/interactive/components/extension-selector.js.map +1 -0
  457. package/dist/modes/interactive/components/first-time-setup.d.ts +24 -0
  458. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
  459. package/dist/modes/interactive/components/first-time-setup.js +92 -0
  460. package/dist/modes/interactive/components/first-time-setup.js.map +1 -0
  461. package/dist/modes/interactive/components/footer.d.ts +32 -0
  462. package/dist/modes/interactive/components/footer.d.ts.map +1 -0
  463. package/dist/modes/interactive/components/footer.js +222 -0
  464. package/dist/modes/interactive/components/footer.js.map +1 -0
  465. package/dist/modes/interactive/components/index.d.ts +32 -0
  466. package/dist/modes/interactive/components/index.d.ts.map +1 -0
  467. package/dist/modes/interactive/components/index.js +33 -0
  468. package/dist/modes/interactive/components/index.js.map +1 -0
  469. package/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
  470. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
  471. package/dist/modes/interactive/components/keybinding-hints.js +36 -0
  472. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
  473. package/dist/modes/interactive/components/model-selector.d.ts +50 -0
  474. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
  475. package/dist/modes/interactive/components/model-selector.js +240 -0
  476. package/dist/modes/interactive/components/model-selector.js.map +1 -0
  477. package/dist/modes/interactive/components/scoped-models-selector.d.ts +36 -0
  478. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
  479. package/dist/modes/interactive/components/scoped-models-selector.js +222 -0
  480. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
  481. package/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
  482. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
  483. package/dist/modes/interactive/components/session-selector-search.js +155 -0
  484. package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
  485. package/dist/modes/interactive/components/session-selector.d.ts +95 -0
  486. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
  487. package/dist/modes/interactive/components/session-selector.js +779 -0
  488. package/dist/modes/interactive/components/session-selector.js.map +1 -0
  489. package/dist/modes/interactive/components/settings-selector.d.ts +77 -0
  490. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
  491. package/dist/modes/interactive/components/settings-selector.js +593 -0
  492. package/dist/modes/interactive/components/settings-selector.js.map +1 -0
  493. package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
  494. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
  495. package/dist/modes/interactive/components/show-images-selector.js +39 -0
  496. package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
  497. package/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
  498. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
  499. package/dist/modes/interactive/components/skill-invocation-message.js +47 -0
  500. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
  501. package/dist/modes/interactive/components/status-indicator.d.ts +28 -0
  502. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -0
  503. package/dist/modes/interactive/components/status-indicator.js +60 -0
  504. package/dist/modes/interactive/components/status-indicator.js.map +1 -0
  505. package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
  506. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
  507. package/dist/modes/interactive/components/theme-selector.js +46 -0
  508. package/dist/modes/interactive/components/theme-selector.js.map +1 -0
  509. package/dist/modes/interactive/components/thinking-selector.d.ts +11 -0
  510. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
  511. package/dist/modes/interactive/components/thinking-selector.js +47 -0
  512. package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
  513. package/dist/modes/interactive/components/tool-execution.d.ts +63 -0
  514. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
  515. package/dist/modes/interactive/components/tool-execution.js +317 -0
  516. package/dist/modes/interactive/components/tool-execution.js.map +1 -0
  517. package/dist/modes/interactive/components/tree-selector.d.ts +94 -0
  518. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
  519. package/dist/modes/interactive/components/tree-selector.js +1245 -0
  520. package/dist/modes/interactive/components/tree-selector.js.map +1 -0
  521. package/dist/modes/interactive/components/trust-selector.d.ts +21 -0
  522. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -0
  523. package/dist/modes/interactive/components/trust-selector.js +72 -0
  524. package/dist/modes/interactive/components/trust-selector.js.map +1 -0
  525. package/dist/modes/interactive/components/user-message-selector.d.ts +16 -0
  526. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
  527. package/dist/modes/interactive/components/user-message-selector.js +53 -0
  528. package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
  529. package/dist/modes/interactive/components/user-message.d.ts +14 -0
  530. package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
  531. package/dist/modes/interactive/components/user-message.js +42 -0
  532. package/dist/modes/interactive/components/user-message.js.map +1 -0
  533. package/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
  534. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
  535. package/dist/modes/interactive/components/visual-truncate.js +33 -0
  536. package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
  537. package/dist/modes/interactive/interactive-mode.d.ts +391 -0
  538. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
  539. package/dist/modes/interactive/interactive-mode.js +4996 -0
  540. package/dist/modes/interactive/interactive-mode.js.map +1 -0
  541. package/dist/modes/interactive/model-search.d.ts +12 -0
  542. package/dist/modes/interactive/model-search.d.ts.map +1 -0
  543. package/dist/modes/interactive/model-search.js +15 -0
  544. package/dist/modes/interactive/model-search.js.map +1 -0
  545. package/dist/modes/interactive/theme/dark.json +87 -0
  546. package/dist/modes/interactive/theme/light.json +86 -0
  547. package/dist/modes/interactive/theme/theme-controller.d.ts +29 -0
  548. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -0
  549. package/dist/modes/interactive/theme/theme-controller.js +102 -0
  550. package/dist/modes/interactive/theme/theme-controller.js.map +1 -0
  551. package/dist/modes/interactive/theme/theme-schema.json +340 -0
  552. package/dist/modes/interactive/theme/theme.d.ts +120 -0
  553. package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
  554. package/dist/modes/interactive/theme/theme.js +1063 -0
  555. package/dist/modes/interactive/theme/theme.js.map +1 -0
  556. package/dist/modes/print-mode.d.ts +28 -0
  557. package/dist/modes/print-mode.d.ts.map +1 -0
  558. package/dist/modes/print-mode.js +132 -0
  559. package/dist/modes/print-mode.js.map +1 -0
  560. package/dist/modes/rpc/jsonl.d.ts +17 -0
  561. package/dist/modes/rpc/jsonl.d.ts.map +1 -0
  562. package/dist/modes/rpc/jsonl.js +49 -0
  563. package/dist/modes/rpc/jsonl.js.map +1 -0
  564. package/dist/modes/rpc/rpc-client.d.ts +246 -0
  565. package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
  566. package/dist/modes/rpc/rpc-client.js +488 -0
  567. package/dist/modes/rpc/rpc-client.js.map +1 -0
  568. package/dist/modes/rpc/rpc-mode.d.ts +20 -0
  569. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
  570. package/dist/modes/rpc/rpc-mode.js +639 -0
  571. package/dist/modes/rpc/rpc-mode.js.map +1 -0
  572. package/dist/modes/rpc/rpc-types.d.ts +457 -0
  573. package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
  574. package/dist/modes/rpc/rpc-types.js +8 -0
  575. package/dist/modes/rpc/rpc-types.js.map +1 -0
  576. package/dist/package-manager-cli.d.ts +8 -0
  577. package/dist/package-manager-cli.d.ts.map +1 -0
  578. package/dist/package-manager-cli.js +775 -0
  579. package/dist/package-manager-cli.js.map +1 -0
  580. package/dist/rpc-entry.d.ts +3 -0
  581. package/dist/rpc-entry.d.ts.map +1 -0
  582. package/dist/rpc-entry.js +10 -0
  583. package/dist/rpc-entry.js.map +1 -0
  584. package/dist/utils/ansi.d.ts +2 -0
  585. package/dist/utils/ansi.d.ts.map +1 -0
  586. package/dist/utils/ansi.js +52 -0
  587. package/dist/utils/ansi.js.map +1 -0
  588. package/dist/utils/changelog.d.ts +22 -0
  589. package/dist/utils/changelog.d.ts.map +1 -0
  590. package/dist/utils/changelog.js +165 -0
  591. package/dist/utils/changelog.js.map +1 -0
  592. package/dist/utils/child-process.d.ts +18 -0
  593. package/dist/utils/child-process.d.ts.map +1 -0
  594. package/dist/utils/child-process.js +106 -0
  595. package/dist/utils/child-process.js.map +1 -0
  596. package/dist/utils/clipboard-image.d.ts +11 -0
  597. package/dist/utils/clipboard-image.d.ts.map +1 -0
  598. package/dist/utils/clipboard-image.js +245 -0
  599. package/dist/utils/clipboard-image.js.map +1 -0
  600. package/dist/utils/clipboard-native.d.ts +11 -0
  601. package/dist/utils/clipboard-native.d.ts.map +1 -0
  602. package/dist/utils/clipboard-native.js +20 -0
  603. package/dist/utils/clipboard-native.js.map +1 -0
  604. package/dist/utils/clipboard.d.ts +4 -0
  605. package/dist/utils/clipboard.d.ts.map +1 -0
  606. package/dist/utils/clipboard.js +130 -0
  607. package/dist/utils/clipboard.js.map +1 -0
  608. package/dist/utils/deprecation.d.ts +4 -0
  609. package/dist/utils/deprecation.d.ts.map +1 -0
  610. package/dist/utils/deprecation.js +13 -0
  611. package/dist/utils/deprecation.js.map +1 -0
  612. package/dist/utils/exif-orientation.d.ts +5 -0
  613. package/dist/utils/exif-orientation.d.ts.map +1 -0
  614. package/dist/utils/exif-orientation.js +158 -0
  615. package/dist/utils/exif-orientation.js.map +1 -0
  616. package/dist/utils/frontmatter.d.ts +8 -0
  617. package/dist/utils/frontmatter.d.ts.map +1 -0
  618. package/dist/utils/frontmatter.js +26 -0
  619. package/dist/utils/frontmatter.js.map +1 -0
  620. package/dist/utils/fs-watch.d.ts +5 -0
  621. package/dist/utils/fs-watch.d.ts.map +1 -0
  622. package/dist/utils/fs-watch.js +25 -0
  623. package/dist/utils/fs-watch.js.map +1 -0
  624. package/dist/utils/git.d.ts +26 -0
  625. package/dist/utils/git.d.ts.map +1 -0
  626. package/dist/utils/git.js +195 -0
  627. package/dist/utils/git.js.map +1 -0
  628. package/dist/utils/html.d.ts +7 -0
  629. package/dist/utils/html.d.ts.map +1 -0
  630. package/dist/utils/html.js +40 -0
  631. package/dist/utils/html.js.map +1 -0
  632. package/dist/utils/image-convert.d.ts +10 -0
  633. package/dist/utils/image-convert.d.ts.map +1 -0
  634. package/dist/utils/image-convert.js +45 -0
  635. package/dist/utils/image-convert.js.map +1 -0
  636. package/dist/utils/image-process.d.ts +18 -0
  637. package/dist/utils/image-process.d.ts.map +1 -0
  638. package/dist/utils/image-process.js +83 -0
  639. package/dist/utils/image-process.js.map +1 -0
  640. package/dist/utils/image-resize-core.d.ts +30 -0
  641. package/dist/utils/image-resize-core.d.ts.map +1 -0
  642. package/dist/utils/image-resize-core.js +124 -0
  643. package/dist/utils/image-resize-core.js.map +1 -0
  644. package/dist/utils/image-resize-worker.d.ts +2 -0
  645. package/dist/utils/image-resize-worker.d.ts.map +1 -0
  646. package/dist/utils/image-resize-worker.js +31 -0
  647. package/dist/utils/image-resize-worker.js.map +1 -0
  648. package/dist/utils/image-resize.d.ts +16 -0
  649. package/dist/utils/image-resize.d.ts.map +1 -0
  650. package/dist/utils/image-resize.js +97 -0
  651. package/dist/utils/image-resize.js.map +1 -0
  652. package/dist/utils/json.d.ts +3 -0
  653. package/dist/utils/json.d.ts.map +1 -0
  654. package/dist/utils/json.js +7 -0
  655. package/dist/utils/json.js.map +1 -0
  656. package/dist/utils/mime.d.ts +3 -0
  657. package/dist/utils/mime.d.ts.map +1 -0
  658. package/dist/utils/mime.js +110 -0
  659. package/dist/utils/mime.js.map +1 -0
  660. package/dist/utils/open-browser.d.ts +9 -0
  661. package/dist/utils/open-browser.d.ts.map +1 -0
  662. package/dist/utils/open-browser.js +22 -0
  663. package/dist/utils/open-browser.js.map +1 -0
  664. package/dist/utils/paths.d.ts +31 -0
  665. package/dist/utils/paths.d.ts.map +1 -0
  666. package/dist/utils/paths.js +92 -0
  667. package/dist/utils/paths.js.map +1 -0
  668. package/dist/utils/photon.d.ts +21 -0
  669. package/dist/utils/photon.d.ts.map +1 -0
  670. package/dist/utils/photon.js +121 -0
  671. package/dist/utils/photon.js.map +1 -0
  672. package/dist/utils/pi-user-agent.d.ts +2 -0
  673. package/dist/utils/pi-user-agent.d.ts.map +1 -0
  674. package/dist/utils/pi-user-agent.js +5 -0
  675. package/dist/utils/pi-user-agent.js.map +1 -0
  676. package/dist/utils/shell.d.ts +31 -0
  677. package/dist/utils/shell.d.ts.map +1 -0
  678. package/dist/utils/shell.js +202 -0
  679. package/dist/utils/shell.js.map +1 -0
  680. package/dist/utils/sleep.d.ts +5 -0
  681. package/dist/utils/sleep.d.ts.map +1 -0
  682. package/dist/utils/sleep.js +17 -0
  683. package/dist/utils/sleep.js.map +1 -0
  684. package/dist/utils/syntax-highlight.d.ts +12 -0
  685. package/dist/utils/syntax-highlight.d.ts.map +1 -0
  686. package/dist/utils/syntax-highlight.js +118 -0
  687. package/dist/utils/syntax-highlight.js.map +1 -0
  688. package/dist/utils/tools-manager.d.ts +3 -0
  689. package/dist/utils/tools-manager.d.ts.map +1 -0
  690. package/dist/utils/tools-manager.js +328 -0
  691. package/dist/utils/tools-manager.js.map +1 -0
  692. package/dist/utils/version-check.d.ts +15 -0
  693. package/dist/utils/version-check.d.ts.map +1 -0
  694. package/dist/utils/version-check.js +59 -0
  695. package/dist/utils/version-check.js.map +1 -0
  696. package/dist/utils/windows-self-update.d.ts +3 -0
  697. package/dist/utils/windows-self-update.d.ts.map +1 -0
  698. package/dist/utils/windows-self-update.js +77 -0
  699. package/dist/utils/windows-self-update.js.map +1 -0
  700. package/docs/compaction.md +401 -0
  701. package/docs/containerization.md +111 -0
  702. package/docs/custom-provider.md +763 -0
  703. package/docs/development.md +71 -0
  704. package/docs/docs.json +156 -0
  705. package/docs/extensions.md +2953 -0
  706. package/docs/images/doom-extension.png +0 -0
  707. package/docs/images/exy.png +0 -0
  708. package/docs/images/interactive-mode.png +0 -0
  709. package/docs/images/tree-view.png +0 -0
  710. package/docs/index.md +83 -0
  711. package/docs/json.md +86 -0
  712. package/docs/keybindings.md +198 -0
  713. package/docs/llama-cpp.md +99 -0
  714. package/docs/models.md +540 -0
  715. package/docs/packages.md +228 -0
  716. package/docs/prompt-templates.md +96 -0
  717. package/docs/providers.md +301 -0
  718. package/docs/quickstart.md +165 -0
  719. package/docs/rpc.md +1559 -0
  720. package/docs/sdk.md +1186 -0
  721. package/docs/security.md +59 -0
  722. package/docs/session-format.md +436 -0
  723. package/docs/sessions.md +145 -0
  724. package/docs/settings.md +319 -0
  725. package/docs/shell-aliases.md +13 -0
  726. package/docs/skills.md +231 -0
  727. package/docs/terminal-setup.md +142 -0
  728. package/docs/termux.md +127 -0
  729. package/docs/themes.md +297 -0
  730. package/docs/tmux.md +63 -0
  731. package/docs/tui.md +942 -0
  732. package/docs/usage.md +311 -0
  733. package/docs/windows.md +17 -0
  734. package/examples/README.md +25 -0
  735. package/examples/extensions/README.md +213 -0
  736. package/examples/extensions/auto-commit-on-exit.ts +49 -0
  737. package/examples/extensions/bash-spawn-hook.ts +30 -0
  738. package/examples/extensions/bookmark.ts +50 -0
  739. package/examples/extensions/border-status-editor.ts +150 -0
  740. package/examples/extensions/built-in-tool-renderer.ts +249 -0
  741. package/examples/extensions/claude-rules.ts +86 -0
  742. package/examples/extensions/commands.ts +72 -0
  743. package/examples/extensions/confirm-destructive.ts +59 -0
  744. package/examples/extensions/custom-compaction.ts +129 -0
  745. package/examples/extensions/custom-footer.ts +64 -0
  746. package/examples/extensions/custom-header.ts +73 -0
  747. package/examples/extensions/custom-provider-anthropic/index.ts +604 -0
  748. package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -0
  749. package/examples/extensions/custom-provider-anthropic/package.json +19 -0
  750. package/examples/extensions/custom-provider-gitlab-duo/index.ts +404 -0
  751. package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -0
  752. package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -0
  753. package/examples/extensions/dirty-repo-guard.ts +56 -0
  754. package/examples/extensions/doom-overlay/README.md +46 -0
  755. package/examples/extensions/doom-overlay/doom/build/doom.js +21 -0
  756. package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
  757. package/examples/extensions/doom-overlay/doom/build.sh +152 -0
  758. package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +72 -0
  759. package/examples/extensions/doom-overlay/doom-component.ts +132 -0
  760. package/examples/extensions/doom-overlay/doom-engine.ts +173 -0
  761. package/examples/extensions/doom-overlay/doom-keys.ts +104 -0
  762. package/examples/extensions/doom-overlay/index.ts +74 -0
  763. package/examples/extensions/doom-overlay/wad-finder.ts +51 -0
  764. package/examples/extensions/dynamic-resources/SKILL.md +8 -0
  765. package/examples/extensions/dynamic-resources/dynamic.json +79 -0
  766. package/examples/extensions/dynamic-resources/dynamic.md +5 -0
  767. package/examples/extensions/dynamic-resources/index.ts +15 -0
  768. package/examples/extensions/dynamic-tools.ts +74 -0
  769. package/examples/extensions/entry-renderer.ts +41 -0
  770. package/examples/extensions/event-bus.ts +43 -0
  771. package/examples/extensions/file-trigger.ts +41 -0
  772. package/examples/extensions/git-checkpoint.ts +53 -0
  773. package/examples/extensions/git-merge-and-resolve.ts +115 -0
  774. package/examples/extensions/github-issue-autocomplete.ts +185 -0
  775. package/examples/extensions/gondolin/index.ts +531 -0
  776. package/examples/extensions/gondolin/package-lock.json +185 -0
  777. package/examples/extensions/gondolin/package.json +19 -0
  778. package/examples/extensions/handoff.ts +191 -0
  779. package/examples/extensions/hello.ts +26 -0
  780. package/examples/extensions/hidden-thinking-label.ts +53 -0
  781. package/examples/extensions/inline-bash.ts +94 -0
  782. package/examples/extensions/input-transform-streaming.ts +39 -0
  783. package/examples/extensions/input-transform.ts +43 -0
  784. package/examples/extensions/interactive-shell.ts +196 -0
  785. package/examples/extensions/kimi-deferred-tools.ts +61 -0
  786. package/examples/extensions/mac-system-theme.ts +47 -0
  787. package/examples/extensions/message-renderer.ts +59 -0
  788. package/examples/extensions/minimal-mode.ts +426 -0
  789. package/examples/extensions/modal-editor.ts +85 -0
  790. package/examples/extensions/model-status.ts +31 -0
  791. package/examples/extensions/notify.ts +55 -0
  792. package/examples/extensions/overlay-qa-tests.ts +1450 -0
  793. package/examples/extensions/overlay-test.ts +153 -0
  794. package/examples/extensions/permission-gate.ts +34 -0
  795. package/examples/extensions/pirate.ts +47 -0
  796. package/examples/extensions/plan-mode/README.md +66 -0
  797. package/examples/extensions/plan-mode/index.ts +390 -0
  798. package/examples/extensions/plan-mode/utils.ts +168 -0
  799. package/examples/extensions/preset.ts +436 -0
  800. package/examples/extensions/project-trust.ts +64 -0
  801. package/examples/extensions/prompt-customizer.ts +97 -0
  802. package/examples/extensions/protected-paths.ts +30 -0
  803. package/examples/extensions/provider-payload.ts +18 -0
  804. package/examples/extensions/qna.ts +122 -0
  805. package/examples/extensions/question.ts +278 -0
  806. package/examples/extensions/questionnaire.ts +440 -0
  807. package/examples/extensions/rainbow-editor.ts +88 -0
  808. package/examples/extensions/reload-runtime.ts +37 -0
  809. package/examples/extensions/rpc-demo.ts +118 -0
  810. package/examples/extensions/sandbox/index.ts +321 -0
  811. package/examples/extensions/sandbox/package-lock.json +92 -0
  812. package/examples/extensions/sandbox/package.json +19 -0
  813. package/examples/extensions/send-user-message.ts +97 -0
  814. package/examples/extensions/session-name.ts +27 -0
  815. package/examples/extensions/shutdown-command.ts +63 -0
  816. package/examples/extensions/snake.ts +343 -0
  817. package/examples/extensions/space-invaders.ts +560 -0
  818. package/examples/extensions/ssh.ts +220 -0
  819. package/examples/extensions/status-line.ts +32 -0
  820. package/examples/extensions/structured-output.ts +65 -0
  821. package/examples/extensions/subagent/README.md +175 -0
  822. package/examples/extensions/subagent/agents/planner.md +37 -0
  823. package/examples/extensions/subagent/agents/reviewer.md +35 -0
  824. package/examples/extensions/subagent/agents/scout.md +50 -0
  825. package/examples/extensions/subagent/agents/worker.md +24 -0
  826. package/examples/extensions/subagent/agents.ts +126 -0
  827. package/examples/extensions/subagent/index.ts +1015 -0
  828. package/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
  829. package/examples/extensions/subagent/prompts/implement.md +10 -0
  830. package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
  831. package/examples/extensions/summarize.ts +207 -0
  832. package/examples/extensions/system-prompt-header.ts +17 -0
  833. package/examples/extensions/tic-tac-toe.ts +1008 -0
  834. package/examples/extensions/timed-confirm.ts +70 -0
  835. package/examples/extensions/titlebar-spinner.ts +58 -0
  836. package/examples/extensions/todo.ts +297 -0
  837. package/examples/extensions/tool-override.ts +144 -0
  838. package/examples/extensions/tools.ts +146 -0
  839. package/examples/extensions/trigger-compact.ts +50 -0
  840. package/examples/extensions/truncated-tool.ts +195 -0
  841. package/examples/extensions/widget-placement.ts +9 -0
  842. package/examples/extensions/with-deps/index.ts +32 -0
  843. package/examples/extensions/with-deps/package-lock.json +31 -0
  844. package/examples/extensions/with-deps/package.json +22 -0
  845. package/examples/extensions/working-indicator.ts +123 -0
  846. package/examples/extensions/working-message-test.ts +25 -0
  847. package/examples/rpc-extension-ui.ts +632 -0
  848. package/examples/sdk/01-minimal.ts +26 -0
  849. package/examples/sdk/02-custom-model.ts +50 -0
  850. package/examples/sdk/03-custom-prompt.ts +70 -0
  851. package/examples/sdk/04-skills.ts +55 -0
  852. package/examples/sdk/05-tools.ts +48 -0
  853. package/examples/sdk/06-extensions.ts +94 -0
  854. package/examples/sdk/07-context-files.ts +42 -0
  855. package/examples/sdk/08-prompt-templates.ts +51 -0
  856. package/examples/sdk/09-api-keys-and-oauth.ts +34 -0
  857. package/examples/sdk/10-settings.ts +53 -0
  858. package/examples/sdk/11-sessions.ts +52 -0
  859. package/examples/sdk/12-full-control.ts +72 -0
  860. package/examples/sdk/13-session-runtime.ts +67 -0
  861. package/examples/sdk/README.md +140 -0
  862. package/npm-shrinkwrap.json +1824 -0
  863. package/package.json +100 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-runtime.js","sourceRoot":"","sources":["../../src/core/model-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\ttype Api,\n\ttype ApiStreamOptions,\n\ttype AssistantMessage,\n\ttype AssistantMessageEventStream,\n\ttype AuthCheck,\n\ttype AuthInteraction,\n\ttype AuthResult,\n\ttype AuthType,\n\ttype Context,\n\ttype Credential,\n\ttype CredentialInfo,\n\ttype CredentialStore,\n\tcreateModels,\n\tcreateProvider,\n\tlazyStream,\n\ttype Model,\n\ttype Models,\n\ttype ModelsApiStreamOptions,\n\tModelsError,\n\ttype ModelsRefreshOptions,\n\ttype ModelsRefreshResult,\n\ttype ModelsSimpleStreamOptions,\n\ttype ModelsStore,\n\ttype ModelsStreamTransforms,\n\ttype MutableModels,\n\ttype Provider,\n\ttype ProviderHeaders,\n\ttype ProviderStreams,\n\ttype SimpleStreamOptions,\n\ttype StreamOptions,\n} from \"@handy_wote/pi-ai\";\nimport { anthropicMessagesApi } from \"@handy_wote/pi-ai/api/anthropic-messages.lazy\";\nimport { openAICompletionsApi } from \"@handy_wote/pi-ai/api/openai-completions.lazy\";\nimport { openAIResponsesApi } from \"@handy_wote/pi-ai/api/openai-responses.lazy\";\nimport type { ProviderConfig, ProviderModelConfig } from \"./extensions/types.ts\";\nimport { FileModelsStore, InMemoryCodingAgentModelsStore } from \"./models-store.ts\";\nimport { createProfileProvider } from \"./profile-runtime.ts\";\nimport { ProfilesStore } from \"./profiles-store.ts\";\nimport type { Profile } from \"./profiles-types.ts\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nclass RuntimeCredentials {\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tasync read(_provider: string): Promise<any> {\n\t\treturn undefined;\n\t}\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tasync modify(_provider: string, fn: any): Promise<any> {\n\t\treturn fn(undefined);\n\t}\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tasync delete(_provider: string): Promise<void> {}\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tasync list(): Promise<readonly any[]> {\n\t\treturn [];\n\t}\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n\tsetRuntimeApiKey(_providerId: string, _apiKey: string): void {}\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n\tremoveRuntimeApiKey(_providerId: string): void {}\n}\n\ninterface ModelRuntimeSnapshot {\n\tall: readonly Model<Api>[];\n\tavailable: readonly Model<Api>[];\n\tconfiguredProviders: ReadonlySet<string>;\n\tstoredProviders: ReadonlySet<string>;\n\tauth: ReadonlyMap<string, AuthCheck | undefined>;\n}\n\nexport interface CreateModelRuntimeOptions {\n\tcredentials?: CredentialStore;\n\tauthPath?: string;\n\tprofilesPath?: string;\n\tmodelsStore?: ModelsStore;\n\tmodelsStorePath?: string;\n\t/** @deprecated Use profiles instead. */\n\tmodelsPath?: string | null;\n\t/** @deprecated No-op in profile mode. */\n\tallowModelNetwork?: boolean;\n\t/** @deprecated No-op in profile mode. */\n\tcatalogBaseUrl?: string;\n\t/** @deprecated No-op in profile mode. */\n\tmodelRefreshTimeoutMs?: number;\n}\n\nexport interface ModelRuntimeAuthOverrides {\n\tapiKey?: string;\n\tenv?: Record<string, string>;\n}\n\nfunction mergeHeaders(\n\tbase: ProviderHeaders | undefined,\n\toverride: ProviderHeaders | undefined,\n): ProviderHeaders | undefined {\n\tif (!base && !override) return undefined;\n\tconst merged = { ...base };\n\tfor (const [name, value] of Object.entries(override ?? {})) {\n\t\tconst lowerName = name.toLowerCase();\n\t\tfor (const existingName of Object.keys(merged)) {\n\t\t\tif (existingName.toLowerCase() === lowerName) delete merged[existingName];\n\t\t}\n\t\tmerged[name] = value;\n\t}\n\treturn merged;\n}\n\nfunction resolveConfiguredApiKey(\n\tvalue: string | undefined,\n\tenv: Record<string, string | undefined>,\n): string | undefined {\n\tif (!value) return undefined;\n\tif (value.startsWith(\"${\") && value.endsWith(\"}\")) return env[value.slice(2, -1)];\n\tif (value.startsWith(\"$\")) return env[value.slice(1)];\n\treturn value;\n}\n\nfunction getBuiltInApi(api: Api): ProviderStreams | undefined {\n\tif (api === \"anthropic-messages\") return anthropicMessagesApi();\n\tif (api === \"openai-completions\") return openAICompletionsApi();\n\tif (api === \"openai-responses\") return openAIResponsesApi();\n\treturn undefined;\n}\n\nfunction providerModelConfigToModel(\n\tproviderId: string,\n\tconfig: ProviderConfig,\n\tmodelConfig: ProviderModelConfig,\n): Model<Api> {\n\tconst api = modelConfig.api ?? config.api;\n\tif (!api) {\n\t\tthrow new Error(`Provider ${providerId}: \"api\" is required when registering models.`);\n\t}\n\tconst baseUrl = modelConfig.baseUrl ?? config.baseUrl;\n\tif (!baseUrl) {\n\t\tthrow new Error(`Provider ${providerId}: \"baseUrl\" is required when registering models.`);\n\t}\n\treturn {\n\t\tid: modelConfig.id,\n\t\tname: modelConfig.name,\n\t\tprovider: providerId,\n\t\tapi,\n\t\tbaseUrl,\n\t\treasoning: modelConfig.reasoning,\n\t\tthinkingLevelMap: modelConfig.thinkingLevelMap,\n\t\tinput: modelConfig.input,\n\t\tcost: modelConfig.cost,\n\t\tcontextWindow: modelConfig.contextWindow,\n\t\tmaxTokens: modelConfig.maxTokens,\n\t\theaders: modelConfig.headers,\n\t\tcompat: modelConfig.compat,\n\t} as Model<Api>;\n}\n\nfunction createExtensionProvider(providerId: string, config: ProviderConfig): Provider {\n\tif (config.streamSimple && !config.api) {\n\t\tthrow new Error(`Provider ${providerId}: \"api\" is required when registering streamSimple.`);\n\t}\n\n\tconst models = (config.models ?? []).map((modelConfig) =>\n\t\tproviderModelConfigToModel(providerId, config, modelConfig),\n\t);\n\tconst api =\n\t\tconfig.streamSimple && config.api\n\t\t\t? ({\n\t\t\t\t\tstream: (model, context, options) => config.streamSimple!(model, context, options),\n\t\t\t\t\tstreamSimple: config.streamSimple,\n\t\t\t\t} satisfies ProviderStreams)\n\t\t\t: Object.fromEntries(\n\t\t\t\t\tArray.from(new Set(models.map((model) => model.api)))\n\t\t\t\t\t\t.map((modelApi) => [modelApi, getBuiltInApi(modelApi)] as const)\n\t\t\t\t\t\t.filter((entry): entry is readonly [Api, ProviderStreams] => entry[1] !== undefined),\n\t\t\t\t);\n\n\treturn createProvider({\n\t\tid: providerId,\n\t\tname: config.name ?? providerId,\n\t\tbaseUrl: config.baseUrl,\n\t\theaders: config.headers,\n\t\tauth: {\n\t\t\tapiKey: {\n\t\t\t\tname: \"API Key\",\n\t\t\t\tresolve: async ({ ctx, credential }) => {\n\t\t\t\t\tconst env: Record<string, string | undefined> = {};\n\t\t\t\t\tif (config.apiKey?.startsWith(\"$\")) {\n\t\t\t\t\t\tconst envName =\n\t\t\t\t\t\t\tconfig.apiKey.startsWith(\"${\") && config.apiKey.endsWith(\"}\")\n\t\t\t\t\t\t\t\t? config.apiKey.slice(2, -1)\n\t\t\t\t\t\t\t\t: config.apiKey.slice(1);\n\t\t\t\t\t\tenv[envName] = await ctx.env(envName);\n\t\t\t\t\t}\n\t\t\t\t\tconst apiKey =\n\t\t\t\t\t\tcredential?.type === \"api_key\" ? credential.key : resolveConfiguredApiKey(config.apiKey, env);\n\t\t\t\t\tconst headers = { ...(config.headers ?? {}) };\n\t\t\t\t\tif (config.authHeader && apiKey) headers.Authorization = `Bearer ${apiKey}`;\n\t\t\t\t\treturn { auth: { apiKey, headers, baseUrl: config.baseUrl } };\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tmodels,\n\t\tfetchModels: config.refreshModels\n\t\t\t? async (context) =>\n\t\t\t\t\t(await config.refreshModels!(context)).map((modelConfig) =>\n\t\t\t\t\t\tproviderModelConfigToModel(providerId, config, modelConfig),\n\t\t\t\t\t)\n\t\t\t: undefined,\n\t\tapi,\n\t});\n}\n\nexport class ModelRuntime implements Models {\n\tprivate readonly models: MutableModels;\n\tprivate readonly credentials: RuntimeCredentials;\n\tprivate readonly profilesStore: ProfilesStore;\n\tprivate readonly registeredProviderConfigs = new Map<string, ProviderConfig>();\n\tprivate readonly registeredNativeProviders = new Map<string, Provider>();\n\tprivate snapshot: ModelRuntimeSnapshot = {\n\t\tall: [],\n\t\tavailable: [],\n\t\tconfiguredProviders: new Set(),\n\t\tstoredProviders: new Set(),\n\t\tauth: new Map(),\n\t};\n\tprivate availabilityRefresh: Promise<void> | undefined;\n\tprivate availabilityError: string | undefined;\n\n\tprivate constructor(credentials: RuntimeCredentials, profilesStore: ProfilesStore, modelsStore: ModelsStore) {\n\t\tthis.credentials = credentials;\n\t\tthis.profilesStore = profilesStore;\n\t\tthis.models = createModels({ credentials, modelsStore });\n\t\tthis.rebuildProviders();\n\t}\n\n\tstatic async create(options: CreateModelRuntimeOptions = {}): Promise<ModelRuntime> {\n\t\tconst credentials = new RuntimeCredentials();\n\t\tconst profilesStore = new ProfilesStore(options.profilesPath);\n\t\tconst modelsStore =\n\t\t\toptions.modelsStore ??\n\t\t\t(options.modelsStorePath\n\t\t\t\t? new FileModelsStore(options.modelsStorePath)\n\t\t\t\t: new InMemoryCodingAgentModelsStore());\n\t\tconst runtime = new ModelRuntime(credentials, profilesStore, modelsStore);\n\t\tawait runtime.forceRefreshAvailability();\n\t\treturn runtime;\n\t}\n\n\tprivate rebuildProviders(): void {\n\t\tthis.models.clearProviders();\n\t\tconst profiles = this.profilesStore.list();\n\t\tfor (const profile of profiles) {\n\t\t\ttry {\n\t\t\t\tconst provider = createProfileProvider(profile);\n\t\t\t\tthis.models.setProvider(provider);\n\t\t\t} catch {\n\t\t\t\t// Skip broken profiles; error is available via getError()\n\t\t\t}\n\t\t}\n\t\tfor (const [providerId, config] of this.registeredProviderConfigs) {\n\t\t\ttry {\n\t\t\t\tthis.models.setProvider(createExtensionProvider(providerId, config));\n\t\t\t} catch {\n\t\t\t\t// Skip broken extension providers; registration reports errors synchronously.\n\t\t\t}\n\t\t}\n\t\tfor (const provider of this.registeredNativeProviders.values()) {\n\t\t\tthis.models.setProvider(provider);\n\t\t}\n\t\tthis.updateModelSnapshot();\n\t}\n\n\tprivate updateModelSnapshot(): void {\n\t\tconst all = [...this.models.getModels()];\n\t\tthis.snapshot = {\n\t\t\t...this.snapshot,\n\t\t\tall,\n\t\t\tavailable: all.filter((model) => this.snapshot.configuredProviders.has(model.provider)),\n\t\t};\n\t}\n\n\tprivate async runAvailabilityRefresh(): Promise<void> {\n\t\tconst providers = this.models.getProviders();\n\t\tconst profiles = this.profilesStore.list();\n\t\tconst profileIds = new Set(profiles.map((p) => p.id));\n\n\t\tconst configuredProviders = new Set<string>();\n\t\tconst auth = new Map<string, AuthCheck | undefined>();\n\n\t\t// All loaded profiles are \"configured\" since they include apiKey\n\t\tfor (const profileId of profileIds) {\n\t\t\tconfiguredProviders.add(profileId);\n\t\t\tauth.set(profileId, { type: \"api_key\", source: \"profile\" });\n\t\t}\n\n\t\t// Also check providers that may not have profiles (extension providers)\n\t\tfor (const provider of providers) {\n\t\t\tif (!profileIds.has(provider.id)) {\n\t\t\t\ttry {\n\t\t\t\t\tconst check = await this.models.checkAuth(provider.id);\n\t\t\t\t\tauth.set(provider.id, check);\n\t\t\t\t\tif (check) configuredProviders.add(provider.id);\n\t\t\t\t} catch {\n\t\t\t\t\tauth.set(provider.id, undefined);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst [available, credentials] = await Promise.all([this.models.getAvailable(), this.credentials.list()]);\n\n\t\tthis.snapshot = {\n\t\t\tall: [...this.models.getModels()],\n\t\t\tavailable: [...available],\n\t\t\tconfiguredProviders,\n\t\t\tstoredProviders: new Set(credentials.map((entry: { providerId: string }) => entry.providerId)),\n\t\t\tauth,\n\t\t};\n\t\tthis.availabilityError = undefined;\n\t}\n\n\tprivate queueAvailabilityRefresh(after: Promise<void> | undefined): Promise<void> {\n\t\tconst refresh = (after ?? Promise.resolve()).catch(() => {}).then(() => this.runAvailabilityRefresh());\n\t\tconst recorded = refresh.catch((error) => {\n\t\t\tthis.availabilityError = error instanceof Error ? error.message : String(error);\n\t\t\tthrow error;\n\t\t});\n\t\tconst tracked = recorded.finally(() => {\n\t\t\tif (this.availabilityRefresh === tracked) this.availabilityRefresh = undefined;\n\t\t});\n\t\tthis.availabilityRefresh = tracked;\n\t\treturn tracked;\n\t}\n\n\tprivate refreshAvailability(): Promise<void> {\n\t\treturn this.availabilityRefresh ?? this.queueAvailabilityRefresh(undefined);\n\t}\n\n\tprivate forceRefreshAvailability(): Promise<void> {\n\t\treturn this.queueAvailabilityRefresh(this.availabilityRefresh);\n\t}\n\n\t// Profile management\n\n\tgetProfiles(): readonly Profile[] {\n\t\treturn this.profilesStore.list();\n\t}\n\n\tgetProfile(id: string): Profile | undefined {\n\t\treturn this.profilesStore.get(id);\n\t}\n\n\tasync createProfile(profile: Profile): Promise<void> {\n\t\tthis.profilesStore.create(profile);\n\t\tthis.rebuildProviders();\n\t\tawait this.runAvailabilityRefresh();\n\t}\n\n\tasync updateProfile(id: string, fn: (p: Profile) => Profile): Promise<void> {\n\t\tthis.profilesStore.update(id, fn);\n\t\tthis.rebuildProviders();\n\t\tawait this.runAvailabilityRefresh();\n\t}\n\n\tasync deleteProfile(id: string): Promise<void> {\n\t\tthis.profilesStore.delete(id);\n\t\tthis.rebuildProviders();\n\t\tawait this.runAvailabilityRefresh();\n\t}\n\n\tsetActiveProfile(id: string | undefined): void {\n\t\tthis.profilesStore.setActive(id);\n\t}\n\n\tgetActiveProfile(): Profile | undefined {\n\t\treturn this.profilesStore.getActive();\n\t}\n\n\t// Models interface\n\n\tgetProviders(): readonly Provider[] {\n\t\treturn this.models.getProviders();\n\t}\n\n\tgetProvider(providerId: string): Provider | undefined {\n\t\treturn this.models.getProvider(providerId);\n\t}\n\n\tgetModels(providerId?: string): readonly Model<Api>[] {\n\t\treturn this.models.getModels(providerId);\n\t}\n\n\tgetModel(providerId: string, modelId: string): Model<Api> | undefined {\n\t\treturn this.models.getModel(providerId, modelId);\n\t}\n\n\tasync checkAuth(providerId: string): Promise<AuthCheck | undefined> {\n\t\treturn this.models.checkAuth(providerId);\n\t}\n\n\tasync getAvailable(providerId?: string): Promise<readonly Model<Api>[]> {\n\t\tif (providerId) {\n\t\t\tif (this.availabilityRefresh) {\n\t\t\t\tawait this.availabilityRefresh;\n\t\t\t\treturn this.snapshot.available.filter((model) => model.provider === providerId);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\treturn await this.models.getAvailable(providerId);\n\t\t\t} catch (error) {\n\t\t\t\tthis.availabilityError = error instanceof Error ? error.message : String(error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t\tawait this.refreshAvailability();\n\t\treturn this.snapshot.available;\n\t}\n\n\tgetAvailableSnapshot(): readonly Model<Api>[] {\n\t\treturn this.snapshot.available;\n\t}\n\n\tgetError(): string | undefined {\n\t\tif (this.availabilityError) return `Availability refresh: ${this.availabilityError}`;\n\t\treturn undefined;\n\t}\n\n\thasConfiguredAuth(providerId: string): boolean {\n\t\treturn this.snapshot.configuredProviders.has(providerId);\n\t}\n\n\tgetProviderAuthStatus(providerId: string): {\n\t\tconfigured: boolean;\n\t\tsource?: \"stored\" | \"runtime\" | \"environment\" | \"fallback\" | \"models_json_key\" | \"models_json_command\";\n\t\tlabel?: string;\n\t} {\n\t\tif (this.snapshot.configuredProviders.has(providerId)) {\n\t\t\treturn { configured: true, source: \"stored\" };\n\t\t}\n\t\treturn { configured: false };\n\t}\n\n\tisUsingOAuth(providerId: string): boolean {\n\t\treturn this.snapshot.auth.get(providerId)?.type === \"oauth\";\n\t}\n\n\tgetAuth(providerId: string, overrides?: ModelRuntimeAuthOverrides): Promise<AuthResult | undefined>;\n\tgetAuth(model: Model<Api>, overrides?: ModelRuntimeAuthOverrides): Promise<AuthResult | undefined>;\n\tasync getAuth(\n\t\tproviderOrModel: string | Model<Api>,\n\t\toverrides: ModelRuntimeAuthOverrides = {},\n\t): Promise<AuthResult | undefined> {\n\t\tif (typeof providerOrModel === \"string\") return this.models.getAuth(providerOrModel, overrides);\n\t\treturn this.models.getAuth(providerOrModel, overrides);\n\t}\n\n\tlistCredentials(): Promise<readonly CredentialInfo[]> {\n\t\treturn this.credentials.list();\n\t}\n\n\tasync login(providerId: string, type: AuthType, interaction: AuthInteraction): Promise<Credential> {\n\t\treturn this.models.login(providerId, type, interaction);\n\t}\n\n\tasync logout(providerId: string): Promise<void> {\n\t\tawait this.models.logout(providerId);\n\t\tawait this.refresh({ allowNetwork: false });\n\t}\n\n\tasync reloadConfig(): Promise<void> {\n\t\tthis.rebuildProviders();\n\t\tawait this.refresh({ allowNetwork: false });\n\t}\n\n\tasync refresh(options: ModelsRefreshOptions = {}): Promise<ModelsRefreshResult> {\n\t\tconst result = ((await this.models.refresh(options)) as ModelsRefreshResult | undefined) ?? {\n\t\t\taborted: options.signal?.aborted ?? false,\n\t\t\terrors: new Map(),\n\t\t};\n\t\tthis.updateModelSnapshot();\n\t\ttry {\n\t\t\tawait this.forceRefreshAvailability();\n\t\t} catch {\n\t\t\t// Availability errors are recorded; models remain usable.\n\t\t}\n\t\treturn result;\n\t}\n\n\t// Extension support — kept for backward compatibility\n\n\tregisterNativeProvider(provider: Provider): void {\n\t\tthis.registeredNativeProviders.set(provider.id, provider);\n\t\tthis.registeredProviderConfigs.delete(provider.id);\n\t\tthis.models.setProvider(provider);\n\t\tthis.updateModelSnapshot();\n\t\tvoid this.runAvailabilityRefresh();\n\t}\n\n\tregisterProvider(providerId: string, config: ProviderConfig): void {\n\t\tconst provider = createExtensionProvider(providerId, config);\n\t\tthis.registeredProviderConfigs.set(providerId, config);\n\t\tthis.registeredNativeProviders.delete(providerId);\n\t\tthis.models.setProvider(provider);\n\t\tthis.updateModelSnapshot();\n\t\tvoid this.runAvailabilityRefresh();\n\t}\n\n\tunregisterProvider(providerId: string): void {\n\t\tthis.registeredProviderConfigs.delete(providerId);\n\t\tthis.registeredNativeProviders.delete(providerId);\n\t\tthis.models.deleteProvider(providerId);\n\t\tthis.updateModelSnapshot();\n\t\tvoid this.runAvailabilityRefresh();\n\t}\n\n\tgetRegisteredProviderConfig(providerId: string): ProviderConfig | undefined {\n\t\treturn this.registeredProviderConfigs.get(providerId);\n\t}\n\n\tgetRegisteredProviderIds(): readonly string[] {\n\t\treturn Array.from(new Set([...this.registeredProviderConfigs.keys(), ...this.registeredNativeProviders.keys()]));\n\t}\n\n\tgetRegisteredNativeProvider(providerId: string): Provider | undefined {\n\t\treturn this.registeredNativeProviders.get(providerId);\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tgetCompatibilityRequestConfig(_model: Model<Api>): any {\n\t\treturn {};\n\t}\n\n\tasync setRuntimeApiKey(\n\t\tproviderId: string,\n\t\tapiKey: string,\n\t\trefreshOptions: ModelsRefreshOptions = {},\n\t): Promise<void> {\n\t\tthis.credentials.setRuntimeApiKey(providerId, apiKey);\n\t\tawait this.runAvailabilityRefresh();\n\t\tif (refreshOptions.allowNetwork) await this.refresh(refreshOptions);\n\t}\n\n\tasync removeRuntimeApiKey(providerId: string): Promise<void> {\n\t\tthis.credentials.removeRuntimeApiKey(providerId);\n\t\tawait this.runAvailabilityRefresh();\n\t}\n\n\tprivate async prepareRequest(\n\t\tmodel: Model<Api>,\n\t\toptions: (StreamOptions & ModelsStreamTransforms) | undefined,\n\t): Promise<{ provider: Provider; model: Model<Api>; options: StreamOptions }> {\n\t\tconst provider = this.models.getProvider(model.provider);\n\t\tif (!provider) throw new ModelsError(\"provider\", `Unknown provider: ${model.provider}`);\n\t\tconst resolution = await this.getAuth(model, { apiKey: options?.apiKey, env: options?.env });\n\t\tif (!resolution) throw new ModelsError(\"auth\", `Provider is not configured: ${model.provider}`);\n\n\t\tconst { transformHeaders, ...providerOptions } = options ?? {};\n\t\tlet headers = mergeHeaders(resolution.auth.headers, providerOptions.headers);\n\t\tif (transformHeaders) headers = await transformHeaders(headers ?? {});\n\t\tconst env =\n\t\t\tresolution.env || providerOptions.env\n\t\t\t\t? { ...(resolution.env ?? {}), ...(providerOptions.env ?? {}) }\n\t\t\t\t: undefined;\n\t\treturn {\n\t\t\tprovider,\n\t\t\tmodel: resolution.auth.baseUrl ? { ...model, baseUrl: resolution.auth.baseUrl } : model,\n\t\t\toptions: {\n\t\t\t\t...providerOptions,\n\t\t\t\tapiKey: providerOptions.apiKey ?? resolution.auth.apiKey,\n\t\t\t\theaders,\n\t\t\t\tenv,\n\t\t\t},\n\t\t};\n\t}\n\n\tstream<TApi extends Api>(\n\t\tmodel: Model<TApi>,\n\t\tcontext: Context,\n\t\toptions?: ModelsApiStreamOptions<TApi>,\n\t): AssistantMessageEventStream {\n\t\treturn lazyStream(model, async () => {\n\t\t\tconst prepared = await this.prepareRequest(\n\t\t\t\tmodel,\n\t\t\t\toptions as (StreamOptions & ModelsStreamTransforms) | undefined,\n\t\t\t);\n\t\t\treturn prepared.provider.stream(\n\t\t\t\tprepared.model as Model<TApi>,\n\t\t\t\tcontext,\n\t\t\t\tprepared.options as ApiStreamOptions<TApi>,\n\t\t\t);\n\t\t});\n\t}\n\n\tcomplete<TApi extends Api>(\n\t\tmodel: Model<TApi>,\n\t\tcontext: Context,\n\t\toptions?: ModelsApiStreamOptions<TApi>,\n\t): Promise<AssistantMessage> {\n\t\treturn this.stream(model, context, options).result();\n\t}\n\n\tstreamSimple(model: Model<Api>, context: Context, options?: ModelsSimpleStreamOptions): AssistantMessageEventStream {\n\t\treturn lazyStream(model, async () => {\n\t\t\tconst prepared = await this.prepareRequest(model, options);\n\t\t\treturn prepared.provider.streamSimple(prepared.model, context, prepared.options as SimpleStreamOptions);\n\t\t});\n\t}\n\n\tcompleteSimple(model: Model<Api>, context: Context, options?: ModelsSimpleStreamOptions): Promise<AssistantMessage> {\n\t\treturn this.streamSimple(model, context, options).result();\n\t}\n}\n"]}
@@ -0,0 +1,17 @@
1
+ import type { ModelsStore, ModelsStoreEntry } from "@handy_wote/pi-ai";
2
+ export declare class InMemoryCodingAgentModelsStore implements ModelsStore {
3
+ private readonly entries;
4
+ read(providerId: string): Promise<ModelsStoreEntry | undefined>;
5
+ write(providerId: string, entry: ModelsStoreEntry): Promise<void>;
6
+ delete(providerId: string): Promise<void>;
7
+ }
8
+ /** Locked JSON-backed storage for dynamically refreshed provider catalogs. */
9
+ export declare class FileModelsStore implements ModelsStore {
10
+ private readonly storage;
11
+ constructor(path?: string);
12
+ private parse;
13
+ read(providerId: string): Promise<ModelsStoreEntry | undefined>;
14
+ write(providerId: string, entry: ModelsStoreEntry): Promise<void>;
15
+ delete(providerId: string): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=models-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models-store.d.ts","sourceRoot":"","sources":["../../src/core/models-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAMvE,qBAAa,8BAA+B,YAAW,WAAW;IACjE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuC;IAEzD,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAEpE;IAEK,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtE;IAEK,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9C;CACD;AAED,8EAA8E;AAC9E,qBAAa,eAAgB,YAAW,WAAW;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAE7C,YAAY,IAAI,GAAE,MAAiD,EAElE;IAED,OAAO,CAAC,KAAK;IAIP,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAIpE;IAEK,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAMtE;IAEK,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM9C;CACD","sourcesContent":["import { join } from \"node:path\";\nimport type { ModelsStore, ModelsStoreEntry } from \"@handy_wote/pi-ai\";\nimport { getAgentDir } from \"../config.ts\";\nimport { type AuthStorageBackend, FileAuthStorageBackend } from \"./auth-storage.ts\";\n\ntype StoredModels = Record<string, ModelsStoreEntry>;\n\nexport class InMemoryCodingAgentModelsStore implements ModelsStore {\n\tprivate readonly entries = new Map<string, ModelsStoreEntry>();\n\n\tasync read(providerId: string): Promise<ModelsStoreEntry | undefined> {\n\t\treturn this.entries.get(providerId);\n\t}\n\n\tasync write(providerId: string, entry: ModelsStoreEntry): Promise<void> {\n\t\tthis.entries.set(providerId, entry);\n\t}\n\n\tasync delete(providerId: string): Promise<void> {\n\t\tthis.entries.delete(providerId);\n\t}\n}\n\n/** Locked JSON-backed storage for dynamically refreshed provider catalogs. */\nexport class FileModelsStore implements ModelsStore {\n\tprivate readonly storage: AuthStorageBackend;\n\n\tconstructor(path: string = join(getAgentDir(), \"models-store.json\")) {\n\t\tthis.storage = new FileAuthStorageBackend(path);\n\t}\n\n\tprivate parse(content: string | undefined): StoredModels {\n\t\treturn content ? (JSON.parse(content) as StoredModels) : {};\n\t}\n\n\tasync read(providerId: string): Promise<ModelsStoreEntry | undefined> {\n\t\treturn this.storage.withLock((content) => ({\n\t\t\tresult: structuredClone(this.parse(content)[providerId]),\n\t\t}));\n\t}\n\n\tasync write(providerId: string, entry: ModelsStoreEntry): Promise<void> {\n\t\tawait this.storage.withLockAsync(async (content) => {\n\t\t\tconst current = this.parse(content);\n\t\t\tcurrent[providerId] = structuredClone(entry);\n\t\t\treturn { result: undefined, next: JSON.stringify(current, null, 2) };\n\t\t});\n\t}\n\n\tasync delete(providerId: string): Promise<void> {\n\t\tawait this.storage.withLockAsync(async (content) => {\n\t\t\tconst current = this.parse(content);\n\t\t\tdelete current[providerId];\n\t\t\treturn { result: undefined, next: JSON.stringify(current, null, 2) };\n\t\t});\n\t}\n}\n"]}
@@ -0,0 +1,45 @@
1
+ import { join } from "node:path";
2
+ import { getAgentDir } from "../config.js";
3
+ import { FileAuthStorageBackend } from "./auth-storage.js";
4
+ export class InMemoryCodingAgentModelsStore {
5
+ entries = new Map();
6
+ async read(providerId) {
7
+ return this.entries.get(providerId);
8
+ }
9
+ async write(providerId, entry) {
10
+ this.entries.set(providerId, entry);
11
+ }
12
+ async delete(providerId) {
13
+ this.entries.delete(providerId);
14
+ }
15
+ }
16
+ /** Locked JSON-backed storage for dynamically refreshed provider catalogs. */
17
+ export class FileModelsStore {
18
+ storage;
19
+ constructor(path = join(getAgentDir(), "models-store.json")) {
20
+ this.storage = new FileAuthStorageBackend(path);
21
+ }
22
+ parse(content) {
23
+ return content ? JSON.parse(content) : {};
24
+ }
25
+ async read(providerId) {
26
+ return this.storage.withLock((content) => ({
27
+ result: structuredClone(this.parse(content)[providerId]),
28
+ }));
29
+ }
30
+ async write(providerId, entry) {
31
+ await this.storage.withLockAsync(async (content) => {
32
+ const current = this.parse(content);
33
+ current[providerId] = structuredClone(entry);
34
+ return { result: undefined, next: JSON.stringify(current, null, 2) };
35
+ });
36
+ }
37
+ async delete(providerId) {
38
+ await this.storage.withLockAsync(async (content) => {
39
+ const current = this.parse(content);
40
+ delete current[providerId];
41
+ return { result: undefined, next: JSON.stringify(current, null, 2) };
42
+ });
43
+ }
44
+ }
45
+ //# sourceMappingURL=models-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models-store.js","sourceRoot":"","sources":["../../src/core/models-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAA2B,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAIpF,MAAM,OAAO,8BAA8B;IACzB,OAAO,GAAG,IAAI,GAAG,EAA4B,CAAC;IAE/D,KAAK,CAAC,IAAI,CAAC,UAAkB,EAAyC;QACrE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAAA,CACpC;IAED,KAAK,CAAC,KAAK,CAAC,UAAkB,EAAE,KAAuB,EAAiB;QACvE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAAA,CACpC;IAED,KAAK,CAAC,MAAM,CAAC,UAAkB,EAAiB;QAC/C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAAA,CAChC;CACD;AAED,8EAA8E;AAC9E,MAAM,OAAO,eAAe;IACV,OAAO,CAAqB;IAE7C,YAAY,IAAI,GAAW,IAAI,CAAC,WAAW,EAAE,EAAE,mBAAmB,CAAC,EAAE;QACpE,IAAI,CAAC,OAAO,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAAA,CAChD;IAEO,KAAK,CAAC,OAA2B,EAAgB;QACxD,OAAO,OAAO,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;IAAA,CAC5D;IAED,KAAK,CAAC,IAAI,CAAC,UAAkB,EAAyC;QACrE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC1C,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC;SACxD,CAAC,CAAC,CAAC;IAAA,CACJ;IAED,KAAK,CAAC,KAAK,CAAC,UAAkB,EAAE,KAAuB,EAAiB;QACvE,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;YACnD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpC,OAAO,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YAC7C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QAAA,CACrE,CAAC,CAAC;IAAA,CACH;IAED,KAAK,CAAC,MAAM,CAAC,UAAkB,EAAiB;QAC/C,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;YACnD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpC,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;YAC3B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QAAA,CACrE,CAAC,CAAC;IAAA,CACH;CACD","sourcesContent":["import { join } from \"node:path\";\nimport type { ModelsStore, ModelsStoreEntry } from \"@handy_wote/pi-ai\";\nimport { getAgentDir } from \"../config.ts\";\nimport { type AuthStorageBackend, FileAuthStorageBackend } from \"./auth-storage.ts\";\n\ntype StoredModels = Record<string, ModelsStoreEntry>;\n\nexport class InMemoryCodingAgentModelsStore implements ModelsStore {\n\tprivate readonly entries = new Map<string, ModelsStoreEntry>();\n\n\tasync read(providerId: string): Promise<ModelsStoreEntry | undefined> {\n\t\treturn this.entries.get(providerId);\n\t}\n\n\tasync write(providerId: string, entry: ModelsStoreEntry): Promise<void> {\n\t\tthis.entries.set(providerId, entry);\n\t}\n\n\tasync delete(providerId: string): Promise<void> {\n\t\tthis.entries.delete(providerId);\n\t}\n}\n\n/** Locked JSON-backed storage for dynamically refreshed provider catalogs. */\nexport class FileModelsStore implements ModelsStore {\n\tprivate readonly storage: AuthStorageBackend;\n\n\tconstructor(path: string = join(getAgentDir(), \"models-store.json\")) {\n\t\tthis.storage = new FileAuthStorageBackend(path);\n\t}\n\n\tprivate parse(content: string | undefined): StoredModels {\n\t\treturn content ? (JSON.parse(content) as StoredModels) : {};\n\t}\n\n\tasync read(providerId: string): Promise<ModelsStoreEntry | undefined> {\n\t\treturn this.storage.withLock((content) => ({\n\t\t\tresult: structuredClone(this.parse(content)[providerId]),\n\t\t}));\n\t}\n\n\tasync write(providerId: string, entry: ModelsStoreEntry): Promise<void> {\n\t\tawait this.storage.withLockAsync(async (content) => {\n\t\t\tconst current = this.parse(content);\n\t\t\tcurrent[providerId] = structuredClone(entry);\n\t\t\treturn { result: undefined, next: JSON.stringify(current, null, 2) };\n\t\t});\n\t}\n\n\tasync delete(providerId: string): Promise<void> {\n\t\tawait this.storage.withLockAsync(async (content) => {\n\t\t\tconst current = this.parse(content);\n\t\t\tdelete current[providerId];\n\t\t\treturn { result: undefined, next: JSON.stringify(current, null, 2) };\n\t\t});\n\t}\n}\n"]}
@@ -0,0 +1,7 @@
1
+ export declare function takeOverStdout(): void;
2
+ export declare function restoreStdout(): void;
3
+ export declare function isStdoutTakenOver(): boolean;
4
+ export declare function writeRawStdout(text: string): void;
5
+ export declare function waitForRawStdoutBackpressure(): Promise<void>;
6
+ export declare function flushRawStdout(): Promise<void>;
7
+ //# sourceMappingURL=output-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-guard.d.ts","sourceRoot":"","sources":["../../src/core/output-guard.ts"],"names":[],"mappings":"AA4CA,wBAAgB,cAAc,IAAI,IAAI,CAyBrC;AAED,wBAAgB,aAAa,IAAI,IAAI,CAOpC;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAQjD;AAED,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC,CAQlE;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAGpD","sourcesContent":["interface StdoutTakeoverState {\n\trawStdoutWrite: (chunk: string, callback?: (error?: Error | null) => void) => boolean;\n\trawStderrWrite: (chunk: string, callback?: (error?: Error | null) => void) => boolean;\n\toriginalStdoutWrite: typeof process.stdout.write;\n}\n\nlet stdoutTakeoverState: StdoutTakeoverState | undefined;\n\nconst RAW_STDOUT_RETRY_DELAY_MS = 10;\n\nlet rawStdoutWriteTail: Promise<void> = Promise.resolve();\n\nfunction getRawStdoutWrite(): StdoutTakeoverState[\"rawStdoutWrite\"] {\n\tif (stdoutTakeoverState) {\n\t\treturn stdoutTakeoverState.rawStdoutWrite;\n\t}\n\treturn process.stdout.write.bind(process.stdout) as StdoutTakeoverState[\"rawStdoutWrite\"];\n}\n\nasync function writeRawStdoutChunk(text: string): Promise<void> {\n\twhile (true) {\n\t\ttry {\n\t\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\t\ttry {\n\t\t\t\t\tgetRawStdoutWrite()(text, (error) => {\n\t\t\t\t\t\tif (error) reject(error);\n\t\t\t\t\t\telse resolve();\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error instanceof Error ? error : new Error(String(error)));\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn;\n\t\t} catch (error) {\n\t\t\tconst writeError = error instanceof Error ? error : new Error(String(error));\n\t\t\tconst code = (writeError as Error & { code?: unknown }).code;\n\t\t\tif (code !== \"ENOBUFS\" && code !== \"EAGAIN\" && code !== \"EWOULDBLOCK\") {\n\t\t\t\tthrow writeError;\n\t\t\t}\n\t\t\tawait new Promise<void>((resolve) => setTimeout(resolve, RAW_STDOUT_RETRY_DELAY_MS));\n\t\t}\n\t}\n}\n\nexport function takeOverStdout(): void {\n\tif (stdoutTakeoverState) {\n\t\treturn;\n\t}\n\n\tconst rawStdoutWrite = process.stdout.write.bind(process.stdout) as StdoutTakeoverState[\"rawStdoutWrite\"];\n\tconst rawStderrWrite = process.stderr.write.bind(process.stderr) as StdoutTakeoverState[\"rawStderrWrite\"];\n\tconst originalStdoutWrite = process.stdout.write;\n\n\tprocess.stdout.write = ((\n\t\tchunk: string | Uint8Array,\n\t\tencodingOrCallback?: BufferEncoding | ((error?: Error | null) => void),\n\t\tcallback?: (error?: Error | null) => void,\n\t): boolean => {\n\t\tif (typeof encodingOrCallback === \"function\") {\n\t\t\treturn rawStderrWrite(String(chunk), encodingOrCallback);\n\t\t}\n\t\treturn rawStderrWrite(String(chunk), callback);\n\t}) as typeof process.stdout.write;\n\n\tstdoutTakeoverState = {\n\t\trawStdoutWrite,\n\t\trawStderrWrite,\n\t\toriginalStdoutWrite,\n\t};\n}\n\nexport function restoreStdout(): void {\n\tif (!stdoutTakeoverState) {\n\t\treturn;\n\t}\n\n\tprocess.stdout.write = stdoutTakeoverState.originalStdoutWrite;\n\tstdoutTakeoverState = undefined;\n}\n\nexport function isStdoutTakenOver(): boolean {\n\treturn stdoutTakeoverState !== undefined;\n}\n\nexport function writeRawStdout(text: string): void {\n\tif (text.length === 0) {\n\t\treturn;\n\t}\n\trawStdoutWriteTail = rawStdoutWriteTail.then(() => writeRawStdoutChunk(text));\n\tvoid rawStdoutWriteTail.catch(() => {\n\t\tprocess.exit(1);\n\t});\n}\n\nexport async function waitForRawStdoutBackpressure(): Promise<void> {\n\twhile (true) {\n\t\tconst tail = rawStdoutWriteTail;\n\t\tawait tail;\n\t\tif (tail === rawStdoutWriteTail) {\n\t\t\treturn;\n\t\t}\n\t}\n}\n\nexport async function flushRawStdout(): Promise<void> {\n\tawait waitForRawStdoutBackpressure();\n\tawait writeRawStdoutChunk(\"\");\n}\n"]}
@@ -0,0 +1,89 @@
1
+ let stdoutTakeoverState;
2
+ const RAW_STDOUT_RETRY_DELAY_MS = 10;
3
+ let rawStdoutWriteTail = Promise.resolve();
4
+ function getRawStdoutWrite() {
5
+ if (stdoutTakeoverState) {
6
+ return stdoutTakeoverState.rawStdoutWrite;
7
+ }
8
+ return process.stdout.write.bind(process.stdout);
9
+ }
10
+ async function writeRawStdoutChunk(text) {
11
+ while (true) {
12
+ try {
13
+ await new Promise((resolve, reject) => {
14
+ try {
15
+ getRawStdoutWrite()(text, (error) => {
16
+ if (error)
17
+ reject(error);
18
+ else
19
+ resolve();
20
+ });
21
+ }
22
+ catch (error) {
23
+ reject(error instanceof Error ? error : new Error(String(error)));
24
+ }
25
+ });
26
+ return;
27
+ }
28
+ catch (error) {
29
+ const writeError = error instanceof Error ? error : new Error(String(error));
30
+ const code = writeError.code;
31
+ if (code !== "ENOBUFS" && code !== "EAGAIN" && code !== "EWOULDBLOCK") {
32
+ throw writeError;
33
+ }
34
+ await new Promise((resolve) => setTimeout(resolve, RAW_STDOUT_RETRY_DELAY_MS));
35
+ }
36
+ }
37
+ }
38
+ export function takeOverStdout() {
39
+ if (stdoutTakeoverState) {
40
+ return;
41
+ }
42
+ const rawStdoutWrite = process.stdout.write.bind(process.stdout);
43
+ const rawStderrWrite = process.stderr.write.bind(process.stderr);
44
+ const originalStdoutWrite = process.stdout.write;
45
+ process.stdout.write = ((chunk, encodingOrCallback, callback) => {
46
+ if (typeof encodingOrCallback === "function") {
47
+ return rawStderrWrite(String(chunk), encodingOrCallback);
48
+ }
49
+ return rawStderrWrite(String(chunk), callback);
50
+ });
51
+ stdoutTakeoverState = {
52
+ rawStdoutWrite,
53
+ rawStderrWrite,
54
+ originalStdoutWrite,
55
+ };
56
+ }
57
+ export function restoreStdout() {
58
+ if (!stdoutTakeoverState) {
59
+ return;
60
+ }
61
+ process.stdout.write = stdoutTakeoverState.originalStdoutWrite;
62
+ stdoutTakeoverState = undefined;
63
+ }
64
+ export function isStdoutTakenOver() {
65
+ return stdoutTakeoverState !== undefined;
66
+ }
67
+ export function writeRawStdout(text) {
68
+ if (text.length === 0) {
69
+ return;
70
+ }
71
+ rawStdoutWriteTail = rawStdoutWriteTail.then(() => writeRawStdoutChunk(text));
72
+ void rawStdoutWriteTail.catch(() => {
73
+ process.exit(1);
74
+ });
75
+ }
76
+ export async function waitForRawStdoutBackpressure() {
77
+ while (true) {
78
+ const tail = rawStdoutWriteTail;
79
+ await tail;
80
+ if (tail === rawStdoutWriteTail) {
81
+ return;
82
+ }
83
+ }
84
+ }
85
+ export async function flushRawStdout() {
86
+ await waitForRawStdoutBackpressure();
87
+ await writeRawStdoutChunk("");
88
+ }
89
+ //# sourceMappingURL=output-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-guard.js","sourceRoot":"","sources":["../../src/core/output-guard.ts"],"names":[],"mappings":"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","sourcesContent":["interface StdoutTakeoverState {\n\trawStdoutWrite: (chunk: string, callback?: (error?: Error | null) => void) => boolean;\n\trawStderrWrite: (chunk: string, callback?: (error?: Error | null) => void) => boolean;\n\toriginalStdoutWrite: typeof process.stdout.write;\n}\n\nlet stdoutTakeoverState: StdoutTakeoverState | undefined;\n\nconst RAW_STDOUT_RETRY_DELAY_MS = 10;\n\nlet rawStdoutWriteTail: Promise<void> = Promise.resolve();\n\nfunction getRawStdoutWrite(): StdoutTakeoverState[\"rawStdoutWrite\"] {\n\tif (stdoutTakeoverState) {\n\t\treturn stdoutTakeoverState.rawStdoutWrite;\n\t}\n\treturn process.stdout.write.bind(process.stdout) as StdoutTakeoverState[\"rawStdoutWrite\"];\n}\n\nasync function writeRawStdoutChunk(text: string): Promise<void> {\n\twhile (true) {\n\t\ttry {\n\t\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\t\ttry {\n\t\t\t\t\tgetRawStdoutWrite()(text, (error) => {\n\t\t\t\t\t\tif (error) reject(error);\n\t\t\t\t\t\telse resolve();\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error instanceof Error ? error : new Error(String(error)));\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn;\n\t\t} catch (error) {\n\t\t\tconst writeError = error instanceof Error ? error : new Error(String(error));\n\t\t\tconst code = (writeError as Error & { code?: unknown }).code;\n\t\t\tif (code !== \"ENOBUFS\" && code !== \"EAGAIN\" && code !== \"EWOULDBLOCK\") {\n\t\t\t\tthrow writeError;\n\t\t\t}\n\t\t\tawait new Promise<void>((resolve) => setTimeout(resolve, RAW_STDOUT_RETRY_DELAY_MS));\n\t\t}\n\t}\n}\n\nexport function takeOverStdout(): void {\n\tif (stdoutTakeoverState) {\n\t\treturn;\n\t}\n\n\tconst rawStdoutWrite = process.stdout.write.bind(process.stdout) as StdoutTakeoverState[\"rawStdoutWrite\"];\n\tconst rawStderrWrite = process.stderr.write.bind(process.stderr) as StdoutTakeoverState[\"rawStderrWrite\"];\n\tconst originalStdoutWrite = process.stdout.write;\n\n\tprocess.stdout.write = ((\n\t\tchunk: string | Uint8Array,\n\t\tencodingOrCallback?: BufferEncoding | ((error?: Error | null) => void),\n\t\tcallback?: (error?: Error | null) => void,\n\t): boolean => {\n\t\tif (typeof encodingOrCallback === \"function\") {\n\t\t\treturn rawStderrWrite(String(chunk), encodingOrCallback);\n\t\t}\n\t\treturn rawStderrWrite(String(chunk), callback);\n\t}) as typeof process.stdout.write;\n\n\tstdoutTakeoverState = {\n\t\trawStdoutWrite,\n\t\trawStderrWrite,\n\t\toriginalStdoutWrite,\n\t};\n}\n\nexport function restoreStdout(): void {\n\tif (!stdoutTakeoverState) {\n\t\treturn;\n\t}\n\n\tprocess.stdout.write = stdoutTakeoverState.originalStdoutWrite;\n\tstdoutTakeoverState = undefined;\n}\n\nexport function isStdoutTakenOver(): boolean {\n\treturn stdoutTakeoverState !== undefined;\n}\n\nexport function writeRawStdout(text: string): void {\n\tif (text.length === 0) {\n\t\treturn;\n\t}\n\trawStdoutWriteTail = rawStdoutWriteTail.then(() => writeRawStdoutChunk(text));\n\tvoid rawStdoutWriteTail.catch(() => {\n\t\tprocess.exit(1);\n\t});\n}\n\nexport async function waitForRawStdoutBackpressure(): Promise<void> {\n\twhile (true) {\n\t\tconst tail = rawStdoutWriteTail;\n\t\tawait tail;\n\t\tif (tail === rawStdoutWriteTail) {\n\t\t\treturn;\n\t\t}\n\t}\n}\n\nexport async function flushRawStdout(): Promise<void> {\n\tawait waitForRawStdoutBackpressure();\n\tawait writeRawStdoutChunk(\"\");\n}\n"]}
@@ -0,0 +1,210 @@
1
+ import type { SettingsManager } from "./settings-manager.ts";
2
+ export interface PathMetadata {
3
+ source: string;
4
+ scope: SourceScope;
5
+ origin: "package" | "top-level";
6
+ baseDir?: string;
7
+ }
8
+ export interface ResolvedResource {
9
+ path: string;
10
+ enabled: boolean;
11
+ metadata: PathMetadata;
12
+ }
13
+ export interface ResolvedPaths {
14
+ extensions: ResolvedResource[];
15
+ skills: ResolvedResource[];
16
+ prompts: ResolvedResource[];
17
+ themes: ResolvedResource[];
18
+ }
19
+ export type MissingSourceAction = "install" | "skip" | "error";
20
+ export interface ProgressEvent {
21
+ type: "start" | "progress" | "complete" | "error";
22
+ action: "install" | "remove" | "update" | "clone" | "pull";
23
+ source: string;
24
+ message?: string;
25
+ }
26
+ export type ProgressCallback = (event: ProgressEvent) => void;
27
+ export interface PackageUpdate {
28
+ source: string;
29
+ displayName: string;
30
+ type: "npm" | "git";
31
+ scope: Exclude<SourceScope, "temporary">;
32
+ }
33
+ export interface ConfiguredPackage {
34
+ source: string;
35
+ scope: "user" | "project";
36
+ filtered: boolean;
37
+ installedPath?: string;
38
+ }
39
+ export interface PackageManager {
40
+ resolve(onMissing?: (source: string) => Promise<MissingSourceAction>): Promise<ResolvedPaths>;
41
+ install(source: string, options?: {
42
+ local?: boolean;
43
+ }): Promise<void>;
44
+ installAndPersist(source: string, options?: {
45
+ local?: boolean;
46
+ }): Promise<void>;
47
+ remove(source: string, options?: {
48
+ local?: boolean;
49
+ }): Promise<void>;
50
+ removeAndPersist(source: string, options?: {
51
+ local?: boolean;
52
+ }): Promise<boolean>;
53
+ update(source?: string): Promise<void>;
54
+ listConfiguredPackages(): ConfiguredPackage[];
55
+ resolveExtensionSources(sources: string[], options?: {
56
+ local?: boolean;
57
+ temporary?: boolean;
58
+ }): Promise<ResolvedPaths>;
59
+ addSourceToSettings(source: string, options?: {
60
+ local?: boolean;
61
+ }): boolean;
62
+ removeSourceFromSettings(source: string, options?: {
63
+ local?: boolean;
64
+ }): boolean;
65
+ setProgressCallback(callback: ProgressCallback | undefined): void;
66
+ getInstalledPath(source: string, scope: "user" | "project"): string | undefined;
67
+ }
68
+ interface PackageManagerOptions {
69
+ cwd: string;
70
+ agentDir: string;
71
+ settingsManager: SettingsManager;
72
+ }
73
+ type SourceScope = "user" | "project" | "temporary";
74
+ export declare function getExtensionTempFolder(agentDir: string): string;
75
+ export declare class DefaultPackageManager implements PackageManager {
76
+ private cwd;
77
+ private agentDir;
78
+ private settingsManager;
79
+ private globalNpmRoot;
80
+ private globalNpmRootCommandKey;
81
+ private progressCallback;
82
+ constructor(options: PackageManagerOptions);
83
+ setProgressCallback(callback: ProgressCallback | undefined): void;
84
+ addSourceToSettings(source: string, options?: {
85
+ local?: boolean;
86
+ }): boolean;
87
+ removeSourceFromSettings(source: string, options?: {
88
+ local?: boolean;
89
+ }): boolean;
90
+ getInstalledPath(source: string, scope: "user" | "project"): string | undefined;
91
+ private emitProgress;
92
+ private withProgress;
93
+ resolve(onMissing?: (source: string) => Promise<MissingSourceAction>): Promise<ResolvedPaths>;
94
+ resolveExtensionSources(sources: string[], options?: {
95
+ local?: boolean;
96
+ temporary?: boolean;
97
+ }): Promise<ResolvedPaths>;
98
+ listConfiguredPackages(): ConfiguredPackage[];
99
+ install(source: string, options?: {
100
+ local?: boolean;
101
+ }): Promise<void>;
102
+ installAndPersist(source: string, options?: {
103
+ local?: boolean;
104
+ }): Promise<void>;
105
+ remove(source: string, options?: {
106
+ local?: boolean;
107
+ }): Promise<void>;
108
+ removeAndPersist(source: string, options?: {
109
+ local?: boolean;
110
+ }): Promise<boolean>;
111
+ update(source?: string): Promise<void>;
112
+ private updateConfiguredSources;
113
+ private shouldUpdateNpmSource;
114
+ private updateNpmBatch;
115
+ private installNpmBatch;
116
+ checkForAvailableUpdates(): Promise<PackageUpdate[]>;
117
+ private resolvePackageSources;
118
+ private findAutoloadDeltaBase;
119
+ private resolveLocalExtensionSource;
120
+ private installParsedSource;
121
+ private getPackageSourceString;
122
+ private getSourceMatchKeyForInput;
123
+ private getSourceMatchKeyForSettings;
124
+ private buildNoMatchingPackageMessage;
125
+ private findSuggestedConfiguredSource;
126
+ private packageSourcesMatch;
127
+ private normalizePackageSourceForSettings;
128
+ private parseSource;
129
+ private installedNpmMatchesConfiguredVersion;
130
+ private npmHasAvailableUpdate;
131
+ private getInstalledNpmVersion;
132
+ private getLatestNpmVersion;
133
+ private gitHasAvailableUpdate;
134
+ private getRemoteGitHead;
135
+ private getLocalGitUpdateTarget;
136
+ private getGitUpstreamRef;
137
+ private runGitRemoteCommand;
138
+ private runWithConcurrency;
139
+ /**
140
+ * Get a unique identity for a package, ignoring version/ref.
141
+ * Used to detect when the same package is in both global and project settings.
142
+ * For git packages, uses normalized host/path to ensure SSH and HTTPS URLs
143
+ * for the same repository are treated as identical.
144
+ */
145
+ private getPackageIdentity;
146
+ /**
147
+ * Dedupe packages: if same package identity appears in both global and project,
148
+ * keep only the project one (project wins). A project entry with autoload=false
149
+ * is a delta over the global entry, so both are kept (delta first).
150
+ */
151
+ private dedupePackages;
152
+ private parseNpmSpec;
153
+ private assertProjectTrustedForScope;
154
+ private getNpmCommand;
155
+ private getPackageManagerName;
156
+ private runNpmCommand;
157
+ private getGitDependencyInstallArgs;
158
+ private runNpmCommandSync;
159
+ private getNpmInstallArgs;
160
+ private installNpm;
161
+ private uninstallNpm;
162
+ private installGit;
163
+ private updateGit;
164
+ private ensureGitRef;
165
+ private refreshTemporaryGitSource;
166
+ private removeGit;
167
+ private pruneEmptyGitParents;
168
+ private ensureNpmProject;
169
+ private ensureGitIgnore;
170
+ private getNpmInstallRoot;
171
+ private getGlobalNpmRoot;
172
+ private getPnpmGlobalPackagePath;
173
+ private getManagedNpmInstallPath;
174
+ private getLegacyGlobalNpmInstallPath;
175
+ private getNpmInstallPath;
176
+ private getGitInstallPath;
177
+ private getGitInstallRoot;
178
+ private getTemporaryDir;
179
+ private resolveManagedPath;
180
+ private getBaseDirForScope;
181
+ private resolvePath;
182
+ private resolvePathFromBase;
183
+ private collectPackageResources;
184
+ private collectDefaultResources;
185
+ private applyPackageFilter;
186
+ private applyPackageDeltaFilter;
187
+ /**
188
+ * Collect all files from a package for a resource type, applying manifest patterns.
189
+ * Returns { allFiles, enabledByManifest } where enabledByManifest is the set of files
190
+ * that pass the manifest's own patterns.
191
+ */
192
+ private collectManifestFiles;
193
+ private readPiManifest;
194
+ private addManifestEntries;
195
+ private collectFilesFromManifestEntries;
196
+ private resolveLocalEntries;
197
+ private addAutoDiscoveredResources;
198
+ private collectFilesFromPaths;
199
+ private getTargetMap;
200
+ private addResource;
201
+ private createAccumulator;
202
+ private toResolvedPaths;
203
+ private spawnCommand;
204
+ private spawnCaptureCommand;
205
+ private runCommandCapture;
206
+ private runCommand;
207
+ private runCommandSync;
208
+ }
209
+ export {};
210
+ //# sourceMappingURL=package-manager.d.ts.map