@openeryc/pi-coding-agent 0.75.12 → 0.75.14

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 (591) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  3. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  4. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  5. package/examples/extensions/sandbox/package-lock.json +2 -2
  6. package/examples/extensions/sandbox/package.json +1 -1
  7. package/examples/extensions/with-deps/package-lock.json +2 -2
  8. package/examples/extensions/with-deps/package.json +1 -1
  9. package/npm-shrinkwrap.json +12 -12
  10. package/package.json +4 -4
  11. package/dist/bun/cli.d.ts +0 -3
  12. package/dist/bun/cli.d.ts.map +0 -1
  13. package/dist/bun/cli.js +0 -9
  14. package/dist/bun/cli.js.map +0 -1
  15. package/dist/bun/register-bedrock.d.ts +0 -2
  16. package/dist/bun/register-bedrock.d.ts.map +0 -1
  17. package/dist/bun/register-bedrock.js +0 -4
  18. package/dist/bun/register-bedrock.js.map +0 -1
  19. package/dist/bun/restore-sandbox-env.d.ts +0 -13
  20. package/dist/bun/restore-sandbox-env.d.ts.map +0 -1
  21. package/dist/bun/restore-sandbox-env.js +0 -32
  22. package/dist/bun/restore-sandbox-env.js.map +0 -1
  23. package/dist/cli/args.d.ts +0 -53
  24. package/dist/cli/args.d.ts.map +0 -1
  25. package/dist/cli/args.js +0 -341
  26. package/dist/cli/args.js.map +0 -1
  27. package/dist/cli/config-selector.d.ts +0 -14
  28. package/dist/cli/config-selector.d.ts.map +0 -1
  29. package/dist/cli/config-selector.js +0 -31
  30. package/dist/cli/config-selector.js.map +0 -1
  31. package/dist/cli/file-processor.d.ts +0 -15
  32. package/dist/cli/file-processor.d.ts.map +0 -1
  33. package/dist/cli/file-processor.js +0 -83
  34. package/dist/cli/file-processor.js.map +0 -1
  35. package/dist/cli/initial-message.d.ts +0 -18
  36. package/dist/cli/initial-message.d.ts.map +0 -1
  37. package/dist/cli/initial-message.js +0 -22
  38. package/dist/cli/initial-message.js.map +0 -1
  39. package/dist/cli/list-models.d.ts +0 -9
  40. package/dist/cli/list-models.d.ts.map +0 -1
  41. package/dist/cli/list-models.js +0 -98
  42. package/dist/cli/list-models.js.map +0 -1
  43. package/dist/cli/session-picker.d.ts +0 -9
  44. package/dist/cli/session-picker.d.ts.map +0 -1
  45. package/dist/cli/session-picker.js +0 -35
  46. package/dist/cli/session-picker.js.map +0 -1
  47. package/dist/cli.d.ts +0 -3
  48. package/dist/cli.d.ts.map +0 -1
  49. package/dist/cli.js +0 -18
  50. package/dist/cli.js.map +0 -1
  51. package/dist/config.d.ts +0 -92
  52. package/dist/config.d.ts.map +0 -1
  53. package/dist/config.js +0 -422
  54. package/dist/config.js.map +0 -1
  55. package/dist/core/agent-session-runtime.d.ts +0 -117
  56. package/dist/core/agent-session-runtime.d.ts.map +0 -1
  57. package/dist/core/agent-session-runtime.js +0 -299
  58. package/dist/core/agent-session-runtime.js.map +0 -1
  59. package/dist/core/agent-session-services.d.ts +0 -86
  60. package/dist/core/agent-session-services.d.ts.map +0 -1
  61. package/dist/core/agent-session-services.js +0 -117
  62. package/dist/core/agent-session-services.js.map +0 -1
  63. package/dist/core/agent-session.d.ts +0 -605
  64. package/dist/core/agent-session.d.ts.map +0 -1
  65. package/dist/core/agent-session.js +0 -2519
  66. package/dist/core/agent-session.js.map +0 -1
  67. package/dist/core/auth-guidance.d.ts +0 -5
  68. package/dist/core/auth-guidance.d.ts.map +0 -1
  69. package/dist/core/auth-guidance.js +0 -21
  70. package/dist/core/auth-guidance.js.map +0 -1
  71. package/dist/core/auth-storage.d.ts +0 -141
  72. package/dist/core/auth-storage.d.ts.map +0 -1
  73. package/dist/core/auth-storage.js +0 -441
  74. package/dist/core/auth-storage.js.map +0 -1
  75. package/dist/core/bash-executor.d.ts +0 -32
  76. package/dist/core/bash-executor.d.ts.map +0 -1
  77. package/dist/core/bash-executor.js +0 -111
  78. package/dist/core/bash-executor.js.map +0 -1
  79. package/dist/core/compaction/branch-summarization.d.ts +0 -88
  80. package/dist/core/compaction/branch-summarization.d.ts.map +0 -1
  81. package/dist/core/compaction/branch-summarization.js +0 -243
  82. package/dist/core/compaction/branch-summarization.js.map +0 -1
  83. package/dist/core/compaction/compaction.d.ts +0 -121
  84. package/dist/core/compaction/compaction.d.ts.map +0 -1
  85. package/dist/core/compaction/compaction.js +0 -638
  86. package/dist/core/compaction/compaction.js.map +0 -1
  87. package/dist/core/compaction/index.d.ts +0 -7
  88. package/dist/core/compaction/index.d.ts.map +0 -1
  89. package/dist/core/compaction/index.js +0 -7
  90. package/dist/core/compaction/index.js.map +0 -1
  91. package/dist/core/compaction/utils.d.ts +0 -38
  92. package/dist/core/compaction/utils.d.ts.map +0 -1
  93. package/dist/core/compaction/utils.js +0 -153
  94. package/dist/core/compaction/utils.js.map +0 -1
  95. package/dist/core/defaults.d.ts +0 -3
  96. package/dist/core/defaults.d.ts.map +0 -1
  97. package/dist/core/defaults.js +0 -2
  98. package/dist/core/defaults.js.map +0 -1
  99. package/dist/core/diagnostics.d.ts +0 -15
  100. package/dist/core/diagnostics.d.ts.map +0 -1
  101. package/dist/core/diagnostics.js +0 -2
  102. package/dist/core/diagnostics.js.map +0 -1
  103. package/dist/core/event-bus.d.ts +0 -9
  104. package/dist/core/event-bus.d.ts.map +0 -1
  105. package/dist/core/event-bus.js +0 -25
  106. package/dist/core/event-bus.js.map +0 -1
  107. package/dist/core/exec.d.ts +0 -29
  108. package/dist/core/exec.d.ts.map +0 -1
  109. package/dist/core/exec.js +0 -75
  110. package/dist/core/exec.js.map +0 -1
  111. package/dist/core/export-html/ansi-to-html.d.ts +0 -22
  112. package/dist/core/export-html/ansi-to-html.d.ts.map +0 -1
  113. package/dist/core/export-html/ansi-to-html.js +0 -249
  114. package/dist/core/export-html/ansi-to-html.js.map +0 -1
  115. package/dist/core/export-html/index.d.ts +0 -37
  116. package/dist/core/export-html/index.d.ts.map +0 -1
  117. package/dist/core/export-html/index.js +0 -224
  118. package/dist/core/export-html/index.js.map +0 -1
  119. package/dist/core/export-html/template.css +0 -1066
  120. package/dist/core/export-html/template.html +0 -55
  121. package/dist/core/export-html/template.js +0 -1848
  122. package/dist/core/export-html/tool-renderer.d.ts +0 -34
  123. package/dist/core/export-html/tool-renderer.d.ts.map +0 -1
  124. package/dist/core/export-html/tool-renderer.js +0 -108
  125. package/dist/core/export-html/tool-renderer.js.map +0 -1
  126. package/dist/core/export-html/vendor/highlight.min.js +0 -1213
  127. package/dist/core/export-html/vendor/marked.min.js +0 -6
  128. package/dist/core/extensions/index.d.ts +0 -12
  129. package/dist/core/extensions/index.d.ts.map +0 -1
  130. package/dist/core/extensions/index.js +0 -9
  131. package/dist/core/extensions/index.js.map +0 -1
  132. package/dist/core/extensions/loader.d.ts +0 -24
  133. package/dist/core/extensions/loader.d.ts.map +0 -1
  134. package/dist/core/extensions/loader.js +0 -508
  135. package/dist/core/extensions/loader.js.map +0 -1
  136. package/dist/core/extensions/runner.d.ts +0 -159
  137. package/dist/core/extensions/runner.d.ts.map +0 -1
  138. package/dist/core/extensions/runner.js +0 -826
  139. package/dist/core/extensions/runner.js.map +0 -1
  140. package/dist/core/extensions/types.d.ts +0 -1181
  141. package/dist/core/extensions/types.d.ts.map +0 -1
  142. package/dist/core/extensions/types.js +0 -45
  143. package/dist/core/extensions/types.js.map +0 -1
  144. package/dist/core/extensions/wrapper.d.ts +0 -20
  145. package/dist/core/extensions/wrapper.d.ts.map +0 -1
  146. package/dist/core/extensions/wrapper.js +0 -22
  147. package/dist/core/extensions/wrapper.js.map +0 -1
  148. package/dist/core/footer-data-provider.d.ts +0 -52
  149. package/dist/core/footer-data-provider.d.ts.map +0 -1
  150. package/dist/core/footer-data-provider.js +0 -310
  151. package/dist/core/footer-data-provider.js.map +0 -1
  152. package/dist/core/http-dispatcher.d.ts +0 -21
  153. package/dist/core/http-dispatcher.d.ts.map +0 -1
  154. package/dist/core/http-dispatcher.js +0 -48
  155. package/dist/core/http-dispatcher.js.map +0 -1
  156. package/dist/core/index.d.ts +0 -12
  157. package/dist/core/index.d.ts.map +0 -1
  158. package/dist/core/index.js +0 -12
  159. package/dist/core/index.js.map +0 -1
  160. package/dist/core/keybindings.d.ts +0 -353
  161. package/dist/core/keybindings.d.ts.map +0 -1
  162. package/dist/core/keybindings.js +0 -295
  163. package/dist/core/keybindings.js.map +0 -1
  164. package/dist/core/messages.d.ts +0 -77
  165. package/dist/core/messages.d.ts.map +0 -1
  166. package/dist/core/messages.js +0 -123
  167. package/dist/core/messages.js.map +0 -1
  168. package/dist/core/model-registry.d.ts +0 -150
  169. package/dist/core/model-registry.d.ts.map +0 -1
  170. package/dist/core/model-registry.js +0 -728
  171. package/dist/core/model-registry.js.map +0 -1
  172. package/dist/core/model-resolver.d.ts +0 -110
  173. package/dist/core/model-resolver.d.ts.map +0 -1
  174. package/dist/core/model-resolver.js +0 -495
  175. package/dist/core/model-resolver.js.map +0 -1
  176. package/dist/core/output-guard.d.ts +0 -6
  177. package/dist/core/output-guard.d.ts.map +0 -1
  178. package/dist/core/output-guard.js +0 -59
  179. package/dist/core/output-guard.js.map +0 -1
  180. package/dist/core/package-manager.d.ts +0 -203
  181. package/dist/core/package-manager.d.ts.map +0 -1
  182. package/dist/core/package-manager.js +0 -2013
  183. package/dist/core/package-manager.js.map +0 -1
  184. package/dist/core/prompt-templates.d.ts +0 -52
  185. package/dist/core/prompt-templates.d.ts.map +0 -1
  186. package/dist/core/prompt-templates.js +0 -252
  187. package/dist/core/prompt-templates.js.map +0 -1
  188. package/dist/core/provider-display-names.d.ts +0 -2
  189. package/dist/core/provider-display-names.d.ts.map +0 -1
  190. package/dist/core/provider-display-names.js +0 -33
  191. package/dist/core/provider-display-names.js.map +0 -1
  192. package/dist/core/resolve-config-value.d.ts +0 -23
  193. package/dist/core/resolve-config-value.d.ts.map +0 -1
  194. package/dist/core/resolve-config-value.js +0 -126
  195. package/dist/core/resolve-config-value.js.map +0 -1
  196. package/dist/core/resource-loader.d.ts +0 -197
  197. package/dist/core/resource-loader.d.ts.map +0 -1
  198. package/dist/core/resource-loader.js +0 -757
  199. package/dist/core/resource-loader.js.map +0 -1
  200. package/dist/core/sdk.d.ts +0 -107
  201. package/dist/core/sdk.d.ts.map +0 -1
  202. package/dist/core/sdk.js +0 -282
  203. package/dist/core/sdk.js.map +0 -1
  204. package/dist/core/session-cwd.d.ts +0 -19
  205. package/dist/core/session-cwd.d.ts.map +0 -1
  206. package/dist/core/session-cwd.js +0 -38
  207. package/dist/core/session-cwd.js.map +0 -1
  208. package/dist/core/session-manager.d.ts +0 -363
  209. package/dist/core/session-manager.d.ts.map +0 -1
  210. package/dist/core/session-manager.js +0 -1318
  211. package/dist/core/session-manager.js.map +0 -1
  212. package/dist/core/settings-manager.d.ts +0 -264
  213. package/dist/core/settings-manager.d.ts.map +0 -1
  214. package/dist/core/settings-manager.js +0 -802
  215. package/dist/core/settings-manager.js.map +0 -1
  216. package/dist/core/skills.d.ts +0 -60
  217. package/dist/core/skills.d.ts.map +0 -1
  218. package/dist/core/skills.js +0 -401
  219. package/dist/core/skills.js.map +0 -1
  220. package/dist/core/slash-commands.d.ts +0 -14
  221. package/dist/core/slash-commands.d.ts.map +0 -1
  222. package/dist/core/slash-commands.js +0 -28
  223. package/dist/core/slash-commands.js.map +0 -1
  224. package/dist/core/source-info.d.ts +0 -18
  225. package/dist/core/source-info.d.ts.map +0 -1
  226. package/dist/core/source-info.js +0 -19
  227. package/dist/core/source-info.js.map +0 -1
  228. package/dist/core/system-prompt.d.ts +0 -30
  229. package/dist/core/system-prompt.d.ts.map +0 -1
  230. package/dist/core/system-prompt.js +0 -132
  231. package/dist/core/system-prompt.js.map +0 -1
  232. package/dist/core/telemetry.d.ts +0 -3
  233. package/dist/core/telemetry.d.ts.map +0 -1
  234. package/dist/core/telemetry.js +0 -9
  235. package/dist/core/telemetry.js.map +0 -1
  236. package/dist/core/timings.d.ts +0 -8
  237. package/dist/core/timings.d.ts.map +0 -1
  238. package/dist/core/timings.js +0 -31
  239. package/dist/core/timings.js.map +0 -1
  240. package/dist/core/tools/bash.d.ts +0 -68
  241. package/dist/core/tools/bash.d.ts.map +0 -1
  242. package/dist/core/tools/bash.js +0 -336
  243. package/dist/core/tools/bash.js.map +0 -1
  244. package/dist/core/tools/edit-diff.d.ts +0 -85
  245. package/dist/core/tools/edit-diff.d.ts.map +0 -1
  246. package/dist/core/tools/edit-diff.js +0 -338
  247. package/dist/core/tools/edit-diff.js.map +0 -1
  248. package/dist/core/tools/edit.d.ts +0 -49
  249. package/dist/core/tools/edit.d.ts.map +0 -1
  250. package/dist/core/tools/edit.js +0 -324
  251. package/dist/core/tools/edit.js.map +0 -1
  252. package/dist/core/tools/file-mutation-queue.d.ts +0 -6
  253. package/dist/core/tools/file-mutation-queue.d.ts.map +0 -1
  254. package/dist/core/tools/file-mutation-queue.js +0 -37
  255. package/dist/core/tools/file-mutation-queue.js.map +0 -1
  256. package/dist/core/tools/find.d.ts +0 -35
  257. package/dist/core/tools/find.d.ts.map +0 -1
  258. package/dist/core/tools/find.js +0 -298
  259. package/dist/core/tools/find.js.map +0 -1
  260. package/dist/core/tools/grep.d.ts +0 -37
  261. package/dist/core/tools/grep.d.ts.map +0 -1
  262. package/dist/core/tools/grep.js +0 -304
  263. package/dist/core/tools/grep.js.map +0 -1
  264. package/dist/core/tools/index.d.ts +0 -40
  265. package/dist/core/tools/index.d.ts.map +0 -1
  266. package/dist/core/tools/index.js +0 -112
  267. package/dist/core/tools/index.js.map +0 -1
  268. package/dist/core/tools/ls.d.ts +0 -37
  269. package/dist/core/tools/ls.d.ts.map +0 -1
  270. package/dist/core/tools/ls.js +0 -169
  271. package/dist/core/tools/ls.js.map +0 -1
  272. package/dist/core/tools/output-accumulator.d.ts +0 -50
  273. package/dist/core/tools/output-accumulator.d.ts.map +0 -1
  274. package/dist/core/tools/output-accumulator.js +0 -178
  275. package/dist/core/tools/output-accumulator.js.map +0 -1
  276. package/dist/core/tools/path-utils.d.ts +0 -8
  277. package/dist/core/tools/path-utils.d.ts.map +0 -1
  278. package/dist/core/tools/path-utils.js +0 -81
  279. package/dist/core/tools/path-utils.js.map +0 -1
  280. package/dist/core/tools/read.d.ts +0 -35
  281. package/dist/core/tools/read.d.ts.map +0 -1
  282. package/dist/core/tools/read.js +0 -291
  283. package/dist/core/tools/read.js.map +0 -1
  284. package/dist/core/tools/render-utils.d.ts +0 -21
  285. package/dist/core/tools/render-utils.d.ts.map +0 -1
  286. package/dist/core/tools/render-utils.js +0 -49
  287. package/dist/core/tools/render-utils.js.map +0 -1
  288. package/dist/core/tools/tool-definition-wrapper.d.ts +0 -14
  289. package/dist/core/tools/tool-definition-wrapper.d.ts.map +0 -1
  290. package/dist/core/tools/tool-definition-wrapper.js +0 -34
  291. package/dist/core/tools/tool-definition-wrapper.js.map +0 -1
  292. package/dist/core/tools/truncate.d.ts +0 -70
  293. package/dist/core/tools/truncate.d.ts.map +0 -1
  294. package/dist/core/tools/truncate.js +0 -205
  295. package/dist/core/tools/truncate.js.map +0 -1
  296. package/dist/core/tools/write.d.ts +0 -26
  297. package/dist/core/tools/write.d.ts.map +0 -1
  298. package/dist/core/tools/write.js +0 -213
  299. package/dist/core/tools/write.js.map +0 -1
  300. package/dist/index.d.ts +0 -29
  301. package/dist/index.d.ts.map +0 -1
  302. package/dist/index.js +0 -42
  303. package/dist/index.js.map +0 -1
  304. package/dist/main.d.ts +0 -12
  305. package/dist/main.d.ts.map +0 -1
  306. package/dist/main.js +0 -587
  307. package/dist/main.js.map +0 -1
  308. package/dist/migrations.d.ts +0 -33
  309. package/dist/migrations.d.ts.map +0 -1
  310. package/dist/migrations.js +0 -281
  311. package/dist/migrations.js.map +0 -1
  312. package/dist/modes/index.d.ts +0 -10
  313. package/dist/modes/index.d.ts.map +0 -1
  314. package/dist/modes/index.js +0 -9
  315. package/dist/modes/index.js.map +0 -1
  316. package/dist/modes/interactive/assets/clankolas.png +0 -0
  317. package/dist/modes/interactive/components/armin.d.ts +0 -34
  318. package/dist/modes/interactive/components/armin.d.ts.map +0 -1
  319. package/dist/modes/interactive/components/armin.js +0 -333
  320. package/dist/modes/interactive/components/armin.js.map +0 -1
  321. package/dist/modes/interactive/components/assistant-message.d.ts +0 -20
  322. package/dist/modes/interactive/components/assistant-message.d.ts.map +0 -1
  323. package/dist/modes/interactive/components/assistant-message.js +0 -121
  324. package/dist/modes/interactive/components/assistant-message.js.map +0 -1
  325. package/dist/modes/interactive/components/bash-execution.d.ts +0 -34
  326. package/dist/modes/interactive/components/bash-execution.d.ts.map +0 -1
  327. package/dist/modes/interactive/components/bash-execution.js +0 -175
  328. package/dist/modes/interactive/components/bash-execution.js.map +0 -1
  329. package/dist/modes/interactive/components/bordered-loader.d.ts +0 -16
  330. package/dist/modes/interactive/components/bordered-loader.d.ts.map +0 -1
  331. package/dist/modes/interactive/components/bordered-loader.js +0 -54
  332. package/dist/modes/interactive/components/bordered-loader.js.map +0 -1
  333. package/dist/modes/interactive/components/branch-summary-message.d.ts +0 -16
  334. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +0 -1
  335. package/dist/modes/interactive/components/branch-summary-message.js +0 -44
  336. package/dist/modes/interactive/components/branch-summary-message.js.map +0 -1
  337. package/dist/modes/interactive/components/compaction-summary-message.d.ts +0 -16
  338. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +0 -1
  339. package/dist/modes/interactive/components/compaction-summary-message.js +0 -45
  340. package/dist/modes/interactive/components/compaction-summary-message.js.map +0 -1
  341. package/dist/modes/interactive/components/config-selector.d.ts +0 -71
  342. package/dist/modes/interactive/components/config-selector.d.ts.map +0 -1
  343. package/dist/modes/interactive/components/config-selector.js +0 -506
  344. package/dist/modes/interactive/components/config-selector.js.map +0 -1
  345. package/dist/modes/interactive/components/countdown-timer.d.ts +0 -14
  346. package/dist/modes/interactive/components/countdown-timer.d.ts.map +0 -1
  347. package/dist/modes/interactive/components/countdown-timer.js +0 -33
  348. package/dist/modes/interactive/components/countdown-timer.js.map +0 -1
  349. package/dist/modes/interactive/components/custom-editor.d.ts +0 -21
  350. package/dist/modes/interactive/components/custom-editor.d.ts.map +0 -1
  351. package/dist/modes/interactive/components/custom-editor.js +0 -70
  352. package/dist/modes/interactive/components/custom-editor.js.map +0 -1
  353. package/dist/modes/interactive/components/custom-message.d.ts +0 -20
  354. package/dist/modes/interactive/components/custom-message.d.ts.map +0 -1
  355. package/dist/modes/interactive/components/custom-message.js +0 -79
  356. package/dist/modes/interactive/components/custom-message.js.map +0 -1
  357. package/dist/modes/interactive/components/daxnuts.d.ts +0 -23
  358. package/dist/modes/interactive/components/daxnuts.d.ts.map +0 -1
  359. package/dist/modes/interactive/components/daxnuts.js +0 -140
  360. package/dist/modes/interactive/components/daxnuts.js.map +0 -1
  361. package/dist/modes/interactive/components/diff.d.ts +0 -12
  362. package/dist/modes/interactive/components/diff.d.ts.map +0 -1
  363. package/dist/modes/interactive/components/diff.js +0 -133
  364. package/dist/modes/interactive/components/diff.js.map +0 -1
  365. package/dist/modes/interactive/components/dynamic-border.d.ts +0 -15
  366. package/dist/modes/interactive/components/dynamic-border.d.ts.map +0 -1
  367. package/dist/modes/interactive/components/dynamic-border.js +0 -21
  368. package/dist/modes/interactive/components/dynamic-border.js.map +0 -1
  369. package/dist/modes/interactive/components/earendil-announcement.d.ts +0 -5
  370. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +0 -1
  371. package/dist/modes/interactive/components/earendil-announcement.js +0 -40
  372. package/dist/modes/interactive/components/earendil-announcement.js.map +0 -1
  373. package/dist/modes/interactive/components/extension-editor.d.ts +0 -20
  374. package/dist/modes/interactive/components/extension-editor.d.ts.map +0 -1
  375. package/dist/modes/interactive/components/extension-editor.js +0 -119
  376. package/dist/modes/interactive/components/extension-editor.js.map +0 -1
  377. package/dist/modes/interactive/components/extension-input.d.ts +0 -23
  378. package/dist/modes/interactive/components/extension-input.d.ts.map +0 -1
  379. package/dist/modes/interactive/components/extension-input.js +0 -61
  380. package/dist/modes/interactive/components/extension-input.js.map +0 -1
  381. package/dist/modes/interactive/components/extension-selector.d.ts +0 -26
  382. package/dist/modes/interactive/components/extension-selector.d.ts.map +0 -1
  383. package/dist/modes/interactive/components/extension-selector.js +0 -83
  384. package/dist/modes/interactive/components/extension-selector.js.map +0 -1
  385. package/dist/modes/interactive/components/footer.d.ts +0 -27
  386. package/dist/modes/interactive/components/footer.d.ts.map +0 -1
  387. package/dist/modes/interactive/components/footer.js +0 -201
  388. package/dist/modes/interactive/components/footer.js.map +0 -1
  389. package/dist/modes/interactive/components/index.d.ts +0 -32
  390. package/dist/modes/interactive/components/index.d.ts.map +0 -1
  391. package/dist/modes/interactive/components/index.js +0 -33
  392. package/dist/modes/interactive/components/index.js.map +0 -1
  393. package/dist/modes/interactive/components/keybinding-hints.d.ts +0 -13
  394. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +0 -1
  395. package/dist/modes/interactive/components/keybinding-hints.js +0 -36
  396. package/dist/modes/interactive/components/keybinding-hints.js.map +0 -1
  397. package/dist/modes/interactive/components/login-dialog.d.ts +0 -46
  398. package/dist/modes/interactive/components/login-dialog.d.ts.map +0 -1
  399. package/dist/modes/interactive/components/login-dialog.js +0 -160
  400. package/dist/modes/interactive/components/login-dialog.js.map +0 -1
  401. package/dist/modes/interactive/components/model-selector.d.ts +0 -47
  402. package/dist/modes/interactive/components/model-selector.d.ts.map +0 -1
  403. package/dist/modes/interactive/components/model-selector.js +0 -278
  404. package/dist/modes/interactive/components/model-selector.js.map +0 -1
  405. package/dist/modes/interactive/components/oauth-selector.d.ts +0 -31
  406. package/dist/modes/interactive/components/oauth-selector.d.ts.map +0 -1
  407. package/dist/modes/interactive/components/oauth-selector.js +0 -165
  408. package/dist/modes/interactive/components/oauth-selector.js.map +0 -1
  409. package/dist/modes/interactive/components/scoped-models-selector.d.ts +0 -42
  410. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +0 -1
  411. package/dist/modes/interactive/components/scoped-models-selector.js +0 -290
  412. package/dist/modes/interactive/components/scoped-models-selector.js.map +0 -1
  413. package/dist/modes/interactive/components/session-selector-search.d.ts +0 -23
  414. package/dist/modes/interactive/components/session-selector-search.d.ts.map +0 -1
  415. package/dist/modes/interactive/components/session-selector-search.js +0 -155
  416. package/dist/modes/interactive/components/session-selector-search.js.map +0 -1
  417. package/dist/modes/interactive/components/session-selector.d.ts +0 -96
  418. package/dist/modes/interactive/components/session-selector.d.ts.map +0 -1
  419. package/dist/modes/interactive/components/session-selector.js +0 -861
  420. package/dist/modes/interactive/components/session-selector.js.map +0 -1
  421. package/dist/modes/interactive/components/settings-selector.d.ts +0 -69
  422. package/dist/modes/interactive/components/settings-selector.d.ts.map +0 -1
  423. package/dist/modes/interactive/components/settings-selector.js +0 -390
  424. package/dist/modes/interactive/components/settings-selector.js.map +0 -1
  425. package/dist/modes/interactive/components/show-images-selector.d.ts +0 -10
  426. package/dist/modes/interactive/components/show-images-selector.d.ts.map +0 -1
  427. package/dist/modes/interactive/components/show-images-selector.js +0 -39
  428. package/dist/modes/interactive/components/show-images-selector.js.map +0 -1
  429. package/dist/modes/interactive/components/skill-invocation-message.d.ts +0 -17
  430. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +0 -1
  431. package/dist/modes/interactive/components/skill-invocation-message.js +0 -47
  432. package/dist/modes/interactive/components/skill-invocation-message.js.map +0 -1
  433. package/dist/modes/interactive/components/theme-selector.d.ts +0 -11
  434. package/dist/modes/interactive/components/theme-selector.d.ts.map +0 -1
  435. package/dist/modes/interactive/components/theme-selector.js +0 -50
  436. package/dist/modes/interactive/components/theme-selector.js.map +0 -1
  437. package/dist/modes/interactive/components/thinking-selector.d.ts +0 -11
  438. package/dist/modes/interactive/components/thinking-selector.d.ts.map +0 -1
  439. package/dist/modes/interactive/components/thinking-selector.js +0 -51
  440. package/dist/modes/interactive/components/thinking-selector.js.map +0 -1
  441. package/dist/modes/interactive/components/tool-execution.d.ts +0 -63
  442. package/dist/modes/interactive/components/tool-execution.d.ts.map +0 -1
  443. package/dist/modes/interactive/components/tool-execution.js +0 -295
  444. package/dist/modes/interactive/components/tool-execution.js.map +0 -1
  445. package/dist/modes/interactive/components/tree-selector.d.ts +0 -89
  446. package/dist/modes/interactive/components/tree-selector.d.ts.map +0 -1
  447. package/dist/modes/interactive/components/tree-selector.js +0 -1093
  448. package/dist/modes/interactive/components/tree-selector.js.map +0 -1
  449. package/dist/modes/interactive/components/user-message-selector.d.ts +0 -30
  450. package/dist/modes/interactive/components/user-message-selector.d.ts.map +0 -1
  451. package/dist/modes/interactive/components/user-message-selector.js +0 -114
  452. package/dist/modes/interactive/components/user-message-selector.js.map +0 -1
  453. package/dist/modes/interactive/components/user-message.d.ts +0 -10
  454. package/dist/modes/interactive/components/user-message.d.ts.map +0 -1
  455. package/dist/modes/interactive/components/user-message.js +0 -29
  456. package/dist/modes/interactive/components/user-message.js.map +0 -1
  457. package/dist/modes/interactive/components/visual-truncate.d.ts +0 -24
  458. package/dist/modes/interactive/components/visual-truncate.d.ts.map +0 -1
  459. package/dist/modes/interactive/components/visual-truncate.js +0 -33
  460. package/dist/modes/interactive/components/visual-truncate.js.map +0 -1
  461. package/dist/modes/interactive/interactive-mode.d.ts +0 -373
  462. package/dist/modes/interactive/interactive-mode.d.ts.map +0 -1
  463. package/dist/modes/interactive/interactive-mode.js +0 -4750
  464. package/dist/modes/interactive/interactive-mode.js.map +0 -1
  465. package/dist/modes/interactive/theme/dark.json +0 -86
  466. package/dist/modes/interactive/theme/light.json +0 -85
  467. package/dist/modes/interactive/theme/theme-schema.json +0 -335
  468. package/dist/modes/interactive/theme/theme.d.ts +0 -100
  469. package/dist/modes/interactive/theme/theme.d.ts.map +0 -1
  470. package/dist/modes/interactive/theme/theme.js +0 -1015
  471. package/dist/modes/interactive/theme/theme.js.map +0 -1
  472. package/dist/modes/print-mode.d.ts +0 -28
  473. package/dist/modes/print-mode.d.ts.map +0 -1
  474. package/dist/modes/print-mode.js +0 -131
  475. package/dist/modes/print-mode.js.map +0 -1
  476. package/dist/modes/rpc/jsonl.d.ts +0 -17
  477. package/dist/modes/rpc/jsonl.d.ts.map +0 -1
  478. package/dist/modes/rpc/jsonl.js +0 -49
  479. package/dist/modes/rpc/jsonl.js.map +0 -1
  480. package/dist/modes/rpc/rpc-client.d.ts +0 -228
  481. package/dist/modes/rpc/rpc-client.d.ts.map +0 -1
  482. package/dist/modes/rpc/rpc-client.js +0 -416
  483. package/dist/modes/rpc/rpc-client.js.map +0 -1
  484. package/dist/modes/rpc/rpc-mode.d.ts +0 -20
  485. package/dist/modes/rpc/rpc-mode.d.ts.map +0 -1
  486. package/dist/modes/rpc/rpc-mode.js +0 -609
  487. package/dist/modes/rpc/rpc-mode.js.map +0 -1
  488. package/dist/modes/rpc/rpc-types.d.ts +0 -428
  489. package/dist/modes/rpc/rpc-types.d.ts.map +0 -1
  490. package/dist/modes/rpc/rpc-types.js +0 -8
  491. package/dist/modes/rpc/rpc-types.js.map +0 -1
  492. package/dist/modes/web/web-mode.d.ts +0 -3
  493. package/dist/modes/web/web-mode.d.ts.map +0 -1
  494. package/dist/modes/web/web-mode.js +0 -244
  495. package/dist/modes/web/web-mode.js.map +0 -1
  496. package/dist/package-manager-cli.d.ts +0 -4
  497. package/dist/package-manager-cli.d.ts.map +0 -1
  498. package/dist/package-manager-cli.js +0 -515
  499. package/dist/package-manager-cli.js.map +0 -1
  500. package/dist/utils/ansi.d.ts +0 -2
  501. package/dist/utils/ansi.d.ts.map +0 -1
  502. package/dist/utils/ansi.js +0 -52
  503. package/dist/utils/ansi.js.map +0 -1
  504. package/dist/utils/changelog.d.ts +0 -21
  505. package/dist/utils/changelog.d.ts.map +0 -1
  506. package/dist/utils/changelog.js +0 -87
  507. package/dist/utils/changelog.js.map +0 -1
  508. package/dist/utils/child-process.d.ts +0 -15
  509. package/dist/utils/child-process.d.ts.map +0 -1
  510. package/dist/utils/child-process.js +0 -88
  511. package/dist/utils/child-process.js.map +0 -1
  512. package/dist/utils/clipboard-image.d.ts +0 -11
  513. package/dist/utils/clipboard-image.d.ts.map +0 -1
  514. package/dist/utils/clipboard-image.js +0 -245
  515. package/dist/utils/clipboard-image.js.map +0 -1
  516. package/dist/utils/clipboard-native.d.ts +0 -8
  517. package/dist/utils/clipboard-native.d.ts.map +0 -1
  518. package/dist/utils/clipboard-native.js +0 -14
  519. package/dist/utils/clipboard-native.js.map +0 -1
  520. package/dist/utils/clipboard.d.ts +0 -2
  521. package/dist/utils/clipboard.d.ts.map +0 -1
  522. package/dist/utils/clipboard.js +0 -117
  523. package/dist/utils/clipboard.js.map +0 -1
  524. package/dist/utils/exif-orientation.d.ts +0 -5
  525. package/dist/utils/exif-orientation.d.ts.map +0 -1
  526. package/dist/utils/exif-orientation.js +0 -158
  527. package/dist/utils/exif-orientation.js.map +0 -1
  528. package/dist/utils/frontmatter.d.ts +0 -8
  529. package/dist/utils/frontmatter.d.ts.map +0 -1
  530. package/dist/utils/frontmatter.js +0 -26
  531. package/dist/utils/frontmatter.js.map +0 -1
  532. package/dist/utils/fs-watch.d.ts +0 -5
  533. package/dist/utils/fs-watch.d.ts.map +0 -1
  534. package/dist/utils/fs-watch.js +0 -25
  535. package/dist/utils/fs-watch.js.map +0 -1
  536. package/dist/utils/git.d.ts +0 -26
  537. package/dist/utils/git.d.ts.map +0 -1
  538. package/dist/utils/git.js +0 -163
  539. package/dist/utils/git.js.map +0 -1
  540. package/dist/utils/html.d.ts +0 -7
  541. package/dist/utils/html.d.ts.map +0 -1
  542. package/dist/utils/html.js +0 -40
  543. package/dist/utils/html.js.map +0 -1
  544. package/dist/utils/image-convert.d.ts +0 -9
  545. package/dist/utils/image-convert.d.ts.map +0 -1
  546. package/dist/utils/image-convert.js +0 -39
  547. package/dist/utils/image-convert.js.map +0 -1
  548. package/dist/utils/image-resize.d.ts +0 -36
  549. package/dist/utils/image-resize.d.ts.map +0 -1
  550. package/dist/utils/image-resize.js +0 -137
  551. package/dist/utils/image-resize.js.map +0 -1
  552. package/dist/utils/mime.d.ts +0 -3
  553. package/dist/utils/mime.d.ts.map +0 -1
  554. package/dist/utils/mime.js +0 -69
  555. package/dist/utils/mime.js.map +0 -1
  556. package/dist/utils/paths.d.ts +0 -17
  557. package/dist/utils/paths.d.ts.map +0 -1
  558. package/dist/utils/paths.js +0 -66
  559. package/dist/utils/paths.js.map +0 -1
  560. package/dist/utils/photon.d.ts +0 -21
  561. package/dist/utils/photon.d.ts.map +0 -1
  562. package/dist/utils/photon.js +0 -121
  563. package/dist/utils/photon.js.map +0 -1
  564. package/dist/utils/pi-user-agent.d.ts +0 -2
  565. package/dist/utils/pi-user-agent.d.ts.map +0 -1
  566. package/dist/utils/pi-user-agent.js +0 -5
  567. package/dist/utils/pi-user-agent.js.map +0 -1
  568. package/dist/utils/shell.d.ts +0 -30
  569. package/dist/utils/shell.d.ts.map +0 -1
  570. package/dist/utils/shell.js +0 -195
  571. package/dist/utils/shell.js.map +0 -1
  572. package/dist/utils/sleep.d.ts +0 -5
  573. package/dist/utils/sleep.d.ts.map +0 -1
  574. package/dist/utils/sleep.js +0 -17
  575. package/dist/utils/sleep.js.map +0 -1
  576. package/dist/utils/syntax-highlight.d.ts +0 -12
  577. package/dist/utils/syntax-highlight.d.ts.map +0 -1
  578. package/dist/utils/syntax-highlight.js +0 -118
  579. package/dist/utils/syntax-highlight.js.map +0 -1
  580. package/dist/utils/tools-manager.d.ts +0 -3
  581. package/dist/utils/tools-manager.d.ts.map +0 -1
  582. package/dist/utils/tools-manager.js +0 -328
  583. package/dist/utils/tools-manager.js.map +0 -1
  584. package/dist/utils/version-check.d.ts +0 -15
  585. package/dist/utils/version-check.d.ts.map +0 -1
  586. package/dist/utils/version-check.js +0 -82
  587. package/dist/utils/version-check.js.map +0 -1
  588. package/dist/utils/windows-self-update.d.ts +0 -3
  589. package/dist/utils/windows-self-update.d.ts.map +0 -1
  590. package/dist/utils/windows-self-update.js +0 -77
  591. package/dist/utils/windows-self-update.js.map +0 -1
@@ -1,728 +0,0 @@
1
- /**
2
- * Model registry - manages built-in and custom models, provides API key resolution.
3
- */
4
- import { getModels, getProviders, registerApiProvider, resetApiProviders, } from "@openeryc/pi-ai";
5
- import { registerOAuthProvider, resetOAuthProviders } from "@openeryc/pi-ai/oauth";
6
- import { existsSync, readFileSync } from "fs";
7
- import { join } from "path";
8
- import { Type } from "typebox";
9
- import { Compile } from "typebox/compile";
10
- import { getAgentDir } from "../config.js";
11
- import { BUILT_IN_PROVIDER_DISPLAY_NAMES } from "./provider-display-names.js";
12
- import { clearConfigValueCache, resolveConfigValueOrThrow, resolveConfigValueUncached, resolveHeadersOrThrow, } from "./resolve-config-value.js";
13
- // Schema for OpenRouter routing preferences
14
- const PercentileCutoffsSchema = Type.Object({
15
- p50: Type.Optional(Type.Number()),
16
- p75: Type.Optional(Type.Number()),
17
- p90: Type.Optional(Type.Number()),
18
- p99: Type.Optional(Type.Number()),
19
- });
20
- const OpenRouterRoutingSchema = Type.Object({
21
- allow_fallbacks: Type.Optional(Type.Boolean()),
22
- require_parameters: Type.Optional(Type.Boolean()),
23
- data_collection: Type.Optional(Type.Union([Type.Literal("deny"), Type.Literal("allow")])),
24
- zdr: Type.Optional(Type.Boolean()),
25
- enforce_distillable_text: Type.Optional(Type.Boolean()),
26
- order: Type.Optional(Type.Array(Type.String())),
27
- only: Type.Optional(Type.Array(Type.String())),
28
- ignore: Type.Optional(Type.Array(Type.String())),
29
- quantizations: Type.Optional(Type.Array(Type.String())),
30
- sort: Type.Optional(Type.Union([
31
- Type.String(),
32
- Type.Object({
33
- by: Type.Optional(Type.String()),
34
- partition: Type.Optional(Type.Union([Type.String(), Type.Null()])),
35
- }),
36
- ])),
37
- max_price: Type.Optional(Type.Object({
38
- prompt: Type.Optional(Type.Union([Type.Number(), Type.String()])),
39
- completion: Type.Optional(Type.Union([Type.Number(), Type.String()])),
40
- image: Type.Optional(Type.Union([Type.Number(), Type.String()])),
41
- audio: Type.Optional(Type.Union([Type.Number(), Type.String()])),
42
- request: Type.Optional(Type.Union([Type.Number(), Type.String()])),
43
- })),
44
- preferred_min_throughput: Type.Optional(Type.Union([Type.Number(), PercentileCutoffsSchema])),
45
- preferred_max_latency: Type.Optional(Type.Union([Type.Number(), PercentileCutoffsSchema])),
46
- });
47
- // Schema for Vercel AI Gateway routing preferences
48
- const VercelGatewayRoutingSchema = Type.Object({
49
- only: Type.Optional(Type.Array(Type.String())),
50
- order: Type.Optional(Type.Array(Type.String())),
51
- });
52
- // Schema for thinking level support and provider-specific values
53
- const ThinkingLevelMapValueSchema = Type.Union([Type.String(), Type.Null()]);
54
- const ThinkingLevelMapSchema = Type.Object({
55
- off: Type.Optional(ThinkingLevelMapValueSchema),
56
- minimal: Type.Optional(ThinkingLevelMapValueSchema),
57
- low: Type.Optional(ThinkingLevelMapValueSchema),
58
- medium: Type.Optional(ThinkingLevelMapValueSchema),
59
- high: Type.Optional(ThinkingLevelMapValueSchema),
60
- xhigh: Type.Optional(ThinkingLevelMapValueSchema),
61
- });
62
- const OpenAICompletionsCompatSchema = Type.Object({
63
- supportsStore: Type.Optional(Type.Boolean()),
64
- supportsDeveloperRole: Type.Optional(Type.Boolean()),
65
- supportsReasoningEffort: Type.Optional(Type.Boolean()),
66
- supportsUsageInStreaming: Type.Optional(Type.Boolean()),
67
- maxTokensField: Type.Optional(Type.Union([Type.Literal("max_completion_tokens"), Type.Literal("max_tokens")])),
68
- requiresToolResultName: Type.Optional(Type.Boolean()),
69
- requiresAssistantAfterToolResult: Type.Optional(Type.Boolean()),
70
- requiresThinkingAsText: Type.Optional(Type.Boolean()),
71
- requiresReasoningContentOnAssistantMessages: Type.Optional(Type.Boolean()),
72
- thinkingFormat: Type.Optional(Type.Union([
73
- Type.Literal("openai"),
74
- Type.Literal("openrouter"),
75
- Type.Literal("together"),
76
- Type.Literal("deepseek"),
77
- Type.Literal("zai"),
78
- Type.Literal("qwen"),
79
- Type.Literal("qwen-chat-template"),
80
- ])),
81
- cacheControlFormat: Type.Optional(Type.Literal("anthropic")),
82
- openRouterRouting: Type.Optional(OpenRouterRoutingSchema),
83
- vercelGatewayRouting: Type.Optional(VercelGatewayRoutingSchema),
84
- supportsStrictMode: Type.Optional(Type.Boolean()),
85
- supportsLongCacheRetention: Type.Optional(Type.Boolean()),
86
- });
87
- const OpenAIResponsesCompatSchema = Type.Object({
88
- sendSessionIdHeader: Type.Optional(Type.Boolean()),
89
- supportsLongCacheRetention: Type.Optional(Type.Boolean()),
90
- });
91
- const AnthropicMessagesCompatSchema = Type.Object({
92
- supportsEagerToolInputStreaming: Type.Optional(Type.Boolean()),
93
- supportsLongCacheRetention: Type.Optional(Type.Boolean()),
94
- });
95
- const ProviderCompatSchema = Type.Union([
96
- OpenAICompletionsCompatSchema,
97
- OpenAIResponsesCompatSchema,
98
- AnthropicMessagesCompatSchema,
99
- ]);
100
- // Schema for custom model definition
101
- // Most fields are optional with sensible defaults for local models (Ollama, LM Studio, etc.)
102
- const ModelDefinitionSchema = Type.Object({
103
- id: Type.String({ minLength: 1 }),
104
- name: Type.Optional(Type.String({ minLength: 1 })),
105
- api: Type.Optional(Type.String({ minLength: 1 })),
106
- baseUrl: Type.Optional(Type.String({ minLength: 1 })),
107
- reasoning: Type.Optional(Type.Boolean()),
108
- thinkingLevelMap: Type.Optional(ThinkingLevelMapSchema),
109
- input: Type.Optional(Type.Array(Type.Union([Type.Literal("text"), Type.Literal("image")]))),
110
- cost: Type.Optional(Type.Object({
111
- input: Type.Number(),
112
- output: Type.Number(),
113
- cacheRead: Type.Number(),
114
- cacheWrite: Type.Number(),
115
- })),
116
- contextWindow: Type.Optional(Type.Number()),
117
- maxTokens: Type.Optional(Type.Number()),
118
- headers: Type.Optional(Type.Record(Type.String(), Type.String())),
119
- compat: Type.Optional(ProviderCompatSchema),
120
- });
121
- // Schema for per-model overrides (all fields optional, merged with built-in model)
122
- const ModelOverrideSchema = Type.Object({
123
- name: Type.Optional(Type.String({ minLength: 1 })),
124
- reasoning: Type.Optional(Type.Boolean()),
125
- thinkingLevelMap: Type.Optional(ThinkingLevelMapSchema),
126
- input: Type.Optional(Type.Array(Type.Union([Type.Literal("text"), Type.Literal("image")]))),
127
- cost: Type.Optional(Type.Object({
128
- input: Type.Optional(Type.Number()),
129
- output: Type.Optional(Type.Number()),
130
- cacheRead: Type.Optional(Type.Number()),
131
- cacheWrite: Type.Optional(Type.Number()),
132
- })),
133
- contextWindow: Type.Optional(Type.Number()),
134
- maxTokens: Type.Optional(Type.Number()),
135
- headers: Type.Optional(Type.Record(Type.String(), Type.String())),
136
- compat: Type.Optional(ProviderCompatSchema),
137
- });
138
- const ProviderConfigSchema = Type.Object({
139
- name: Type.Optional(Type.String({ minLength: 1 })),
140
- baseUrl: Type.Optional(Type.String({ minLength: 1 })),
141
- apiKey: Type.Optional(Type.String({ minLength: 1 })),
142
- api: Type.Optional(Type.String({ minLength: 1 })),
143
- headers: Type.Optional(Type.Record(Type.String(), Type.String())),
144
- compat: Type.Optional(ProviderCompatSchema),
145
- authHeader: Type.Optional(Type.Boolean()),
146
- models: Type.Optional(Type.Array(ModelDefinitionSchema)),
147
- modelOverrides: Type.Optional(Type.Record(Type.String(), ModelOverrideSchema)),
148
- });
149
- const ModelsConfigSchema = Type.Object({
150
- providers: Type.Record(Type.String(), ProviderConfigSchema),
151
- });
152
- const validateModelsConfig = Compile(ModelsConfigSchema);
153
- function formatValidationPath(error) {
154
- if (error.keyword === "required") {
155
- const requiredProperties = error.params.requiredProperties;
156
- const requiredProperty = requiredProperties?.[0];
157
- if (requiredProperty) {
158
- const basePath = error.instancePath.replace(/^\//, "").replace(/\//g, ".");
159
- return basePath ? `${basePath}.${requiredProperty}` : requiredProperty;
160
- }
161
- }
162
- const path = error.instancePath.replace(/^\//, "").replace(/\//g, ".");
163
- return path || "root";
164
- }
165
- /** Strip `//` line comments and trailing commas from JSON, leaving string literals untouched. */
166
- function stripJsonComments(input) {
167
- return input
168
- .replace(/"(?:\\.|[^"\\])*"|\/\/[^\n]*/g, (m) => (m[0] === '"' ? m : ""))
169
- .replace(/"(?:\\.|[^"\\])*"|,(\s*[}\]])/g, (m, tail) => tail ?? (m[0] === '"' ? m : ""));
170
- }
171
- function emptyCustomModelsResult(error) {
172
- return { models: [], overrides: new Map(), modelOverrides: new Map(), error };
173
- }
174
- function mergeCompat(baseCompat, overrideCompat) {
175
- if (!overrideCompat)
176
- return baseCompat;
177
- const base = baseCompat;
178
- const override = overrideCompat;
179
- const merged = { ...base, ...override };
180
- const baseCompletions = base;
181
- const overrideCompletions = override;
182
- const mergedCompletions = merged;
183
- if (baseCompletions?.openRouterRouting || overrideCompletions.openRouterRouting) {
184
- mergedCompletions.openRouterRouting = {
185
- ...baseCompletions?.openRouterRouting,
186
- ...overrideCompletions.openRouterRouting,
187
- };
188
- }
189
- if (baseCompletions?.vercelGatewayRouting || overrideCompletions.vercelGatewayRouting) {
190
- mergedCompletions.vercelGatewayRouting = {
191
- ...baseCompletions?.vercelGatewayRouting,
192
- ...overrideCompletions.vercelGatewayRouting,
193
- };
194
- }
195
- return merged;
196
- }
197
- /**
198
- * Deep merge a model override into a model.
199
- * Handles nested objects (cost, compat) by merging rather than replacing.
200
- */
201
- function applyModelOverride(model, override) {
202
- const result = { ...model };
203
- // Simple field overrides
204
- if (override.name !== undefined)
205
- result.name = override.name;
206
- if (override.reasoning !== undefined)
207
- result.reasoning = override.reasoning;
208
- if (override.thinkingLevelMap !== undefined) {
209
- result.thinkingLevelMap = { ...model.thinkingLevelMap, ...override.thinkingLevelMap };
210
- }
211
- if (override.input !== undefined)
212
- result.input = override.input;
213
- if (override.contextWindow !== undefined)
214
- result.contextWindow = override.contextWindow;
215
- if (override.maxTokens !== undefined)
216
- result.maxTokens = override.maxTokens;
217
- // Merge cost (partial override)
218
- if (override.cost) {
219
- result.cost = {
220
- input: override.cost.input ?? model.cost.input,
221
- output: override.cost.output ?? model.cost.output,
222
- cacheRead: override.cost.cacheRead ?? model.cost.cacheRead,
223
- cacheWrite: override.cost.cacheWrite ?? model.cost.cacheWrite,
224
- };
225
- }
226
- // Deep merge compat
227
- result.compat = mergeCompat(model.compat, override.compat);
228
- return result;
229
- }
230
- /** Clear the config value command cache. Exported for testing. */
231
- export const clearApiKeyCache = clearConfigValueCache;
232
- /**
233
- * Model registry - loads and manages models, resolves API keys via AuthStorage.
234
- */
235
- export class ModelRegistry {
236
- models = [];
237
- providerRequestConfigs = new Map();
238
- modelRequestHeaders = new Map();
239
- registeredProviders = new Map();
240
- loadError = undefined;
241
- authStorage;
242
- modelsJsonPath;
243
- constructor(authStorage, modelsJsonPath) {
244
- this.authStorage = authStorage;
245
- this.modelsJsonPath = modelsJsonPath;
246
- this.loadModels();
247
- }
248
- static create(authStorage, modelsJsonPath = join(getAgentDir(), "models.json")) {
249
- return new ModelRegistry(authStorage, modelsJsonPath);
250
- }
251
- static inMemory(authStorage) {
252
- return new ModelRegistry(authStorage, undefined);
253
- }
254
- /**
255
- * Reload models from disk (built-in + custom from models.json).
256
- */
257
- refresh() {
258
- this.providerRequestConfigs.clear();
259
- this.modelRequestHeaders.clear();
260
- this.loadError = undefined;
261
- // Ensure dynamic API/OAuth registrations are rebuilt from current provider state.
262
- resetApiProviders();
263
- resetOAuthProviders();
264
- this.loadModels();
265
- for (const [providerName, config] of this.registeredProviders.entries()) {
266
- this.applyProviderConfig(providerName, config);
267
- }
268
- }
269
- /**
270
- * Get any error from loading models.json (undefined if no error).
271
- */
272
- getError() {
273
- return this.loadError;
274
- }
275
- loadModels() {
276
- // Load custom models and overrides from models.json
277
- const { models: customModels, overrides, modelOverrides, error, } = this.modelsJsonPath ? this.loadCustomModels(this.modelsJsonPath) : emptyCustomModelsResult();
278
- if (error) {
279
- this.loadError = error;
280
- // Keep built-in models even if custom models failed to load
281
- }
282
- const builtInModels = this.loadBuiltInModels(overrides, modelOverrides);
283
- let combined = this.mergeCustomModels(builtInModels, customModels);
284
- // Let OAuth providers modify their models (e.g., update baseUrl)
285
- for (const oauthProvider of this.authStorage.getOAuthProviders()) {
286
- const cred = this.authStorage.get(oauthProvider.id);
287
- if (cred?.type === "oauth" && oauthProvider.modifyModels) {
288
- combined = oauthProvider.modifyModels(combined, cred);
289
- }
290
- }
291
- this.models = combined;
292
- }
293
- /** Load built-in models and apply provider/model overrides */
294
- loadBuiltInModels(overrides, modelOverrides) {
295
- return getProviders().flatMap((provider) => {
296
- const models = getModels(provider);
297
- const providerOverride = overrides.get(provider);
298
- const perModelOverrides = modelOverrides.get(provider);
299
- return models.map((m) => {
300
- let model = m;
301
- // Apply provider-level baseUrl/headers/compat override
302
- if (providerOverride) {
303
- model = {
304
- ...model,
305
- baseUrl: providerOverride.baseUrl ?? model.baseUrl,
306
- compat: mergeCompat(model.compat, providerOverride.compat),
307
- };
308
- }
309
- // Apply per-model override
310
- const modelOverride = perModelOverrides?.get(m.id);
311
- if (modelOverride) {
312
- model = applyModelOverride(model, modelOverride);
313
- }
314
- return model;
315
- });
316
- });
317
- }
318
- /** Merge custom models into built-in list by provider+id (custom wins on conflicts). */
319
- mergeCustomModels(builtInModels, customModels) {
320
- const merged = [...builtInModels];
321
- for (const customModel of customModels) {
322
- const existingIndex = merged.findIndex((m) => m.provider === customModel.provider && m.id === customModel.id);
323
- if (existingIndex >= 0) {
324
- merged[existingIndex] = customModel;
325
- }
326
- else {
327
- merged.push(customModel);
328
- }
329
- }
330
- return merged;
331
- }
332
- loadCustomModels(modelsJsonPath) {
333
- if (!existsSync(modelsJsonPath)) {
334
- return emptyCustomModelsResult();
335
- }
336
- try {
337
- const content = readFileSync(modelsJsonPath, "utf-8");
338
- const parsed = JSON.parse(stripJsonComments(content));
339
- if (!validateModelsConfig.Check(parsed)) {
340
- const errors = validateModelsConfig
341
- .Errors(parsed)
342
- .map((error) => ` - ${formatValidationPath(error)}: ${error.message}`)
343
- .join("\n") || "Unknown schema error";
344
- return emptyCustomModelsResult(`Invalid models.json schema:\n${errors}\n\nFile: ${modelsJsonPath}`);
345
- }
346
- const config = parsed;
347
- // Additional validation
348
- this.validateConfig(config);
349
- const overrides = new Map();
350
- const modelOverrides = new Map();
351
- for (const [providerName, providerConfig] of Object.entries(config.providers)) {
352
- if (providerConfig.baseUrl || providerConfig.compat) {
353
- overrides.set(providerName, {
354
- baseUrl: providerConfig.baseUrl,
355
- compat: providerConfig.compat,
356
- });
357
- }
358
- this.storeProviderRequestConfig(providerName, providerConfig);
359
- if (providerConfig.modelOverrides) {
360
- modelOverrides.set(providerName, new Map(Object.entries(providerConfig.modelOverrides)));
361
- for (const [modelId, modelOverride] of Object.entries(providerConfig.modelOverrides)) {
362
- this.storeModelHeaders(providerName, modelId, modelOverride.headers);
363
- }
364
- }
365
- }
366
- return { models: this.parseModels(config), overrides, modelOverrides, error: undefined };
367
- }
368
- catch (error) {
369
- if (error instanceof SyntaxError) {
370
- return emptyCustomModelsResult(`Failed to parse models.json: ${error.message}\n\nFile: ${modelsJsonPath}`);
371
- }
372
- return emptyCustomModelsResult(`Failed to load models.json: ${error instanceof Error ? error.message : error}\n\nFile: ${modelsJsonPath}`);
373
- }
374
- }
375
- validateConfig(config) {
376
- const builtInProviders = new Set(getProviders());
377
- for (const [providerName, providerConfig] of Object.entries(config.providers)) {
378
- const isBuiltIn = builtInProviders.has(providerName);
379
- const hasProviderApi = !!providerConfig.api;
380
- const models = providerConfig.models ?? [];
381
- const hasModelOverrides = providerConfig.modelOverrides && Object.keys(providerConfig.modelOverrides).length > 0;
382
- if (models.length === 0) {
383
- // Override-only config: needs baseUrl, headers, compat, modelOverrides, or some combination.
384
- if (!providerConfig.baseUrl && !providerConfig.headers && !providerConfig.compat && !hasModelOverrides) {
385
- throw new Error(`Provider ${providerName}: must specify "baseUrl", "headers", "compat", "modelOverrides", or "models".`);
386
- }
387
- }
388
- else if (!isBuiltIn) {
389
- // Non-built-in providers with custom models require endpoint + auth.
390
- if (!providerConfig.baseUrl) {
391
- throw new Error(`Provider ${providerName}: "baseUrl" is required when defining custom models.`);
392
- }
393
- if (!providerConfig.apiKey) {
394
- throw new Error(`Provider ${providerName}: "apiKey" is required when defining custom models.`);
395
- }
396
- }
397
- // Built-in providers with custom models: baseUrl/apiKey/api are optional,
398
- // inherited from built-in models. Auth comes from env vars / auth storage.
399
- for (const modelDef of models) {
400
- const hasModelApi = !!modelDef.api;
401
- if (!hasProviderApi && !hasModelApi && !isBuiltIn) {
402
- throw new Error(`Provider ${providerName}, model ${modelDef.id}: no "api" specified. Set at provider or model level.`);
403
- }
404
- // For built-in providers, api is optional — inherited from built-in models.
405
- if (!modelDef.id)
406
- throw new Error(`Provider ${providerName}: model missing "id"`);
407
- // Validate contextWindow/maxTokens only if provided (they have defaults)
408
- if (modelDef.contextWindow !== undefined && modelDef.contextWindow <= 0)
409
- throw new Error(`Provider ${providerName}, model ${modelDef.id}: invalid contextWindow`);
410
- if (modelDef.maxTokens !== undefined && modelDef.maxTokens <= 0)
411
- throw new Error(`Provider ${providerName}, model ${modelDef.id}: invalid maxTokens`);
412
- }
413
- }
414
- }
415
- parseModels(config) {
416
- const models = [];
417
- const builtInProviders = new Set(getProviders());
418
- // Cache built-in defaults (api, baseUrl) per provider, extracted from first model.
419
- const builtInDefaultsCache = new Map();
420
- const getBuiltInDefaults = (providerName) => {
421
- if (!builtInProviders.has(providerName))
422
- return undefined;
423
- if (builtInDefaultsCache.has(providerName))
424
- return builtInDefaultsCache.get(providerName);
425
- const builtIn = getModels(providerName);
426
- if (builtIn.length === 0)
427
- return undefined;
428
- const defaults = { api: builtIn[0].api, baseUrl: builtIn[0].baseUrl };
429
- builtInDefaultsCache.set(providerName, defaults);
430
- return defaults;
431
- };
432
- for (const [providerName, providerConfig] of Object.entries(config.providers)) {
433
- const modelDefs = providerConfig.models ?? [];
434
- if (modelDefs.length === 0)
435
- continue; // Override-only, no custom models
436
- const builtInDefaults = getBuiltInDefaults(providerName);
437
- for (const modelDef of modelDefs) {
438
- const api = modelDef.api ?? providerConfig.api ?? builtInDefaults?.api;
439
- if (!api)
440
- continue;
441
- const baseUrl = modelDef.baseUrl ?? providerConfig.baseUrl ?? builtInDefaults?.baseUrl;
442
- if (!baseUrl)
443
- continue;
444
- const compat = mergeCompat(providerConfig.compat, modelDef.compat);
445
- this.storeModelHeaders(providerName, modelDef.id, modelDef.headers);
446
- const defaultCost = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 };
447
- models.push({
448
- id: modelDef.id,
449
- name: modelDef.name ?? modelDef.id,
450
- api: api,
451
- provider: providerName,
452
- baseUrl,
453
- reasoning: modelDef.reasoning ?? false,
454
- thinkingLevelMap: modelDef.thinkingLevelMap,
455
- input: (modelDef.input ?? ["text"]),
456
- cost: modelDef.cost ?? defaultCost,
457
- contextWindow: modelDef.contextWindow ?? 128000,
458
- maxTokens: modelDef.maxTokens ?? 16384,
459
- headers: undefined,
460
- compat,
461
- });
462
- }
463
- }
464
- return models;
465
- }
466
- /**
467
- * Get all models (built-in + custom).
468
- * If models.json had errors, returns only built-in models.
469
- */
470
- getAll() {
471
- return this.models;
472
- }
473
- /**
474
- * Get only models that have auth configured.
475
- * This is a fast check that doesn't refresh OAuth tokens.
476
- */
477
- getAvailable() {
478
- return this.models.filter((m) => this.hasConfiguredAuth(m));
479
- }
480
- /**
481
- * Find a model by provider and ID.
482
- */
483
- find(provider, modelId) {
484
- return this.models.find((m) => m.provider === provider && m.id === modelId);
485
- }
486
- /**
487
- * Get API key for a model.
488
- */
489
- hasConfiguredAuth(model) {
490
- return (this.authStorage.hasAuth(model.provider) ||
491
- this.providerRequestConfigs.get(model.provider)?.apiKey !== undefined);
492
- }
493
- getModelRequestKey(provider, modelId) {
494
- return `${provider}:${modelId}`;
495
- }
496
- storeProviderRequestConfig(providerName, config) {
497
- if (!config.apiKey && !config.headers && !config.authHeader) {
498
- return;
499
- }
500
- this.providerRequestConfigs.set(providerName, {
501
- apiKey: config.apiKey,
502
- headers: config.headers,
503
- authHeader: config.authHeader,
504
- });
505
- }
506
- storeModelHeaders(providerName, modelId, headers) {
507
- const key = this.getModelRequestKey(providerName, modelId);
508
- if (!headers || Object.keys(headers).length === 0) {
509
- this.modelRequestHeaders.delete(key);
510
- return;
511
- }
512
- this.modelRequestHeaders.set(key, headers);
513
- }
514
- /**
515
- * Get API key and request headers for a model.
516
- */
517
- async getApiKeyAndHeaders(model) {
518
- try {
519
- const providerConfig = this.providerRequestConfigs.get(model.provider);
520
- const apiKeyFromAuthStorage = await this.authStorage.getApiKey(model.provider, { includeFallback: false });
521
- const apiKey = apiKeyFromAuthStorage ??
522
- (providerConfig?.apiKey
523
- ? resolveConfigValueOrThrow(providerConfig.apiKey, `API key for provider "${model.provider}"`)
524
- : undefined);
525
- const providerHeaders = resolveHeadersOrThrow(providerConfig?.headers, `provider "${model.provider}"`);
526
- const modelHeaders = resolveHeadersOrThrow(this.modelRequestHeaders.get(this.getModelRequestKey(model.provider, model.id)), `model "${model.provider}/${model.id}"`);
527
- let headers = model.headers || providerHeaders || modelHeaders
528
- ? { ...model.headers, ...providerHeaders, ...modelHeaders }
529
- : undefined;
530
- if (providerConfig?.authHeader) {
531
- if (!apiKey) {
532
- return { ok: false, error: `No API key found for "${model.provider}"` };
533
- }
534
- headers = { ...headers, Authorization: `Bearer ${apiKey}` };
535
- }
536
- return {
537
- ok: true,
538
- apiKey,
539
- headers: headers && Object.keys(headers).length > 0 ? headers : undefined,
540
- };
541
- }
542
- catch (error) {
543
- return {
544
- ok: false,
545
- error: error instanceof Error ? error.message : String(error),
546
- };
547
- }
548
- }
549
- /**
550
- * Return auth status for a provider, including request auth configured in models.json.
551
- * This intentionally does not execute command-backed config values.
552
- */
553
- getProviderAuthStatus(provider) {
554
- const authStatus = this.authStorage.getAuthStatus(provider);
555
- if (authStatus.source) {
556
- return authStatus;
557
- }
558
- const providerApiKey = this.providerRequestConfigs.get(provider)?.apiKey;
559
- if (!providerApiKey) {
560
- return authStatus;
561
- }
562
- if (providerApiKey.startsWith("!")) {
563
- return { configured: true, source: "models_json_command" };
564
- }
565
- if (process.env[providerApiKey]) {
566
- return { configured: true, source: "environment", label: providerApiKey };
567
- }
568
- return { configured: true, source: "models_json_key" };
569
- }
570
- /**
571
- * Get display name for a provider.
572
- */
573
- getProviderDisplayName(provider) {
574
- const registeredProvider = this.registeredProviders.get(provider);
575
- const oauthProvider = this.authStorage.getOAuthProviders().find((p) => p.id === provider);
576
- return (registeredProvider?.name ??
577
- registeredProvider?.oauth?.name ??
578
- oauthProvider?.name ??
579
- BUILT_IN_PROVIDER_DISPLAY_NAMES[provider] ??
580
- provider);
581
- }
582
- /**
583
- * Get API key for a provider.
584
- */
585
- async getApiKeyForProvider(provider) {
586
- const apiKey = await this.authStorage.getApiKey(provider, { includeFallback: false });
587
- if (apiKey !== undefined) {
588
- return apiKey;
589
- }
590
- const providerApiKey = this.providerRequestConfigs.get(provider)?.apiKey;
591
- return providerApiKey ? resolveConfigValueUncached(providerApiKey) : undefined;
592
- }
593
- /**
594
- * Check if a model is using OAuth credentials (subscription).
595
- */
596
- isUsingOAuth(model) {
597
- const cred = this.authStorage.get(model.provider);
598
- return cred?.type === "oauth";
599
- }
600
- /**
601
- * Register a provider dynamically (from extensions).
602
- *
603
- * If provider has models: replaces all existing models for this provider.
604
- * If provider has only baseUrl/headers: overrides existing models' URLs.
605
- * If provider has oauth: registers OAuth provider for /login support.
606
- */
607
- registerProvider(providerName, config) {
608
- this.validateProviderConfig(providerName, config);
609
- this.applyProviderConfig(providerName, config);
610
- this.upsertRegisteredProvider(providerName, config);
611
- }
612
- /**
613
- * Unregister a previously registered provider.
614
- *
615
- * Removes the provider from the registry and reloads models from disk so that
616
- * built-in models overridden by this provider are restored to their original state.
617
- * Also resets dynamic OAuth and API stream registrations before reapplying
618
- * remaining dynamic providers.
619
- * Has no effect if the provider was never registered.
620
- */
621
- unregisterProvider(providerName) {
622
- if (!this.registeredProviders.has(providerName))
623
- return;
624
- this.registeredProviders.delete(providerName);
625
- this.refresh();
626
- }
627
- /**
628
- * Upsert a provider config into registeredProviders.
629
- * If the provider is already registered, defined values in the incoming config
630
- * override existing ones; undefined values are preserved from the stored config.
631
- * If the provider is not registered, the incoming config is stored as-is.
632
- */
633
- upsertRegisteredProvider(providerName, config) {
634
- const existing = this.registeredProviders.get(providerName);
635
- if (!existing) {
636
- this.registeredProviders.set(providerName, config);
637
- return;
638
- }
639
- for (const k of Object.keys(config)) {
640
- if (config[k] !== undefined) {
641
- existing[k] = config[k];
642
- }
643
- }
644
- }
645
- validateProviderConfig(providerName, config) {
646
- if (config.streamSimple && !config.api) {
647
- throw new Error(`Provider ${providerName}: "api" is required when registering streamSimple.`);
648
- }
649
- if (!config.models || config.models.length === 0) {
650
- return;
651
- }
652
- if (!config.baseUrl) {
653
- throw new Error(`Provider ${providerName}: "baseUrl" is required when defining models.`);
654
- }
655
- if (!config.apiKey && !config.oauth) {
656
- throw new Error(`Provider ${providerName}: "apiKey" or "oauth" is required when defining models.`);
657
- }
658
- for (const modelDef of config.models) {
659
- const api = modelDef.api || config.api;
660
- if (!api) {
661
- throw new Error(`Provider ${providerName}, model ${modelDef.id}: no "api" specified.`);
662
- }
663
- }
664
- }
665
- applyProviderConfig(providerName, config) {
666
- // Register OAuth provider if provided
667
- if (config.oauth) {
668
- // Ensure the OAuth provider ID matches the provider name
669
- const oauthProvider = {
670
- ...config.oauth,
671
- id: providerName,
672
- };
673
- registerOAuthProvider(oauthProvider);
674
- }
675
- if (config.streamSimple) {
676
- const streamSimple = config.streamSimple;
677
- registerApiProvider({
678
- api: config.api,
679
- stream: (model, context, options) => streamSimple(model, context, options),
680
- streamSimple,
681
- }, `provider:${providerName}`);
682
- }
683
- this.storeProviderRequestConfig(providerName, config);
684
- if (config.models && config.models.length > 0) {
685
- // Full replacement: remove existing models for this provider
686
- this.models = this.models.filter((m) => m.provider !== providerName);
687
- // Parse and add new models
688
- for (const modelDef of config.models) {
689
- const api = modelDef.api || config.api;
690
- this.storeModelHeaders(providerName, modelDef.id, modelDef.headers);
691
- this.models.push({
692
- id: modelDef.id,
693
- name: modelDef.name,
694
- api: api,
695
- provider: providerName,
696
- baseUrl: modelDef.baseUrl ?? config.baseUrl,
697
- reasoning: modelDef.reasoning,
698
- thinkingLevelMap: modelDef.thinkingLevelMap,
699
- input: modelDef.input,
700
- cost: modelDef.cost,
701
- contextWindow: modelDef.contextWindow,
702
- maxTokens: modelDef.maxTokens,
703
- headers: undefined,
704
- compat: modelDef.compat,
705
- });
706
- }
707
- // Apply OAuth modifyModels if credentials exist (e.g., to update baseUrl)
708
- if (config.oauth?.modifyModels) {
709
- const cred = this.authStorage.get(providerName);
710
- if (cred?.type === "oauth") {
711
- this.models = config.oauth.modifyModels(this.models, cred);
712
- }
713
- }
714
- }
715
- else if (config.baseUrl || config.headers) {
716
- // Override-only: update baseUrl for existing models. Request headers are resolved per request.
717
- this.models = this.models.map((m) => {
718
- if (m.provider !== providerName)
719
- return m;
720
- return {
721
- ...m,
722
- baseUrl: config.baseUrl ?? m.baseUrl,
723
- };
724
- });
725
- }
726
- }
727
- }
728
- //# sourceMappingURL=model-registry.js.map