@mars_ai/marscli 2.0.12 → 2.0.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 (1187) hide show
  1. package/CHANGELOG.md +6515 -0
  2. package/README.md +71 -22
  3. package/dist/bun/cli.d.ts +5 -0
  4. package/dist/bun/cli.d.ts.map +1 -0
  5. package/dist/bun/cli.js +5 -0
  6. package/dist/bun/cli.js.map +1 -0
  7. package/dist/bun/restore-sandbox-env.d.ts +17 -0
  8. package/dist/bun/restore-sandbox-env.d.ts.map +1 -0
  9. package/dist/bun/restore-sandbox-env.js +36 -0
  10. package/dist/bun/restore-sandbox-env.js.map +1 -0
  11. package/dist/bun/runtime-setup.d.ts +2 -0
  12. package/dist/bun/runtime-setup.d.ts.map +1 -0
  13. package/dist/bun/runtime-setup.js +12 -0
  14. package/dist/bun/runtime-setup.js.map +1 -0
  15. package/dist/bun/sandbox-env-setup.d.ts +2 -0
  16. package/dist/bun/sandbox-env-setup.d.ts.map +1 -0
  17. package/dist/bun/sandbox-env-setup.js +4 -0
  18. package/dist/bun/sandbox-env-setup.js.map +1 -0
  19. package/dist/bundle/chunks/anthropic-messages-QCK7M7VG.js +6 -0
  20. package/dist/bundle/chunks/anthropic.js +75 -0
  21. package/dist/bundle/chunks/azure-openai-responses-LMBPTTDE.js +2 -0
  22. package/dist/bundle/chunks/bedrock-converse-stream.js +89 -0
  23. package/dist/bundle/chunks/chunk-45GGYWI5.js +2 -0
  24. package/dist/bundle/chunks/chunk-5AGIVGSV.js +6 -0
  25. package/dist/bundle/chunks/chunk-5ZIVIB55.js +8 -0
  26. package/dist/bundle/chunks/chunk-6QGV3IWD.js +6 -0
  27. package/dist/bundle/chunks/chunk-7CBJINYJ.js +20 -0
  28. package/dist/bundle/chunks/chunk-7DDKXS2Q.js +2 -0
  29. package/dist/bundle/chunks/chunk-7ZC4UXSL.js +2 -0
  30. package/dist/bundle/chunks/chunk-AZEKCFSR.js +82 -0
  31. package/dist/bundle/chunks/chunk-BUEFMMN7.js +1261 -0
  32. package/dist/bundle/chunks/chunk-CF5GWZHW.js +31 -0
  33. package/dist/bundle/chunks/chunk-FFMDRXC4.js +10 -0
  34. package/dist/bundle/chunks/chunk-FR2OJIAF.js +2 -0
  35. package/dist/bundle/chunks/chunk-G4QXDUQL.js +30 -0
  36. package/dist/bundle/chunks/chunk-GFUN2N5K.js +2 -0
  37. package/dist/bundle/chunks/chunk-GXW3X65X.js +4 -0
  38. package/dist/bundle/chunks/chunk-ICLDQMTM.js +129 -0
  39. package/dist/bundle/chunks/chunk-IEBK4HQA.js +2 -0
  40. package/dist/bundle/chunks/chunk-JEIXS66U.js +2 -0
  41. package/dist/bundle/chunks/chunk-JK44MIUX.js +44 -0
  42. package/dist/bundle/chunks/chunk-JXUDILQJ.js +16 -0
  43. package/dist/bundle/chunks/chunk-JXWJOIH4.js +2 -0
  44. package/dist/bundle/chunks/chunk-K5TQM7UY.js +2 -0
  45. package/dist/bundle/chunks/chunk-L2ZPNLYD.js +2 -0
  46. package/dist/bundle/chunks/chunk-LPXNMA2W.js +2 -0
  47. package/dist/bundle/chunks/chunk-LVVZS2NO.js +12 -0
  48. package/dist/bundle/chunks/chunk-MTY47RPT.js +19 -0
  49. package/dist/bundle/chunks/chunk-OLNSR6Z3.js +13 -0
  50. package/dist/bundle/chunks/chunk-P7FPUEYA.js +2 -0
  51. package/dist/bundle/chunks/chunk-PGXDEOVV.js +2 -0
  52. package/dist/bundle/chunks/chunk-PJACZCIR.js +2 -0
  53. package/dist/bundle/chunks/chunk-PMRZO46Y.js +2 -0
  54. package/dist/bundle/chunks/chunk-PRRNXB7S.js +2 -0
  55. package/dist/bundle/chunks/chunk-RDZVAGPR.js +2 -0
  56. package/dist/bundle/chunks/chunk-TVDA4NZP.js +55 -0
  57. package/dist/bundle/chunks/chunk-UNAPBUIX.js +2 -0
  58. package/dist/bundle/chunks/chunk-UTB4DTYQ.js +2 -0
  59. package/dist/bundle/chunks/chunk-V6KH5QG4.js +9 -0
  60. package/dist/bundle/chunks/chunk-ZG74NES2.js +2 -0
  61. package/dist/bundle/chunks/cli-CI7EFTTK.js +53 -0
  62. package/dist/bundle/chunks/codemode-worker.js +478 -0
  63. package/dist/bundle/chunks/easter-egg-3d-P2D4BQR7.js +2 -0
  64. package/dist/bundle/chunks/execute-PRYDOFWM.js +505 -0
  65. package/dist/bundle/chunks/github-copilot.js +2 -0
  66. package/dist/bundle/chunks/google-generative-ai-WFLFMJYT.js +2 -0
  67. package/dist/bundle/chunks/google-vertex-3VJ5WJYY.js +2 -0
  68. package/dist/bundle/chunks/https-proxy-agent-LVOO5TPL.js +13 -0
  69. package/dist/bundle/chunks/image-resize-worker.js +2 -0
  70. package/dist/bundle/chunks/jiti-loader-GL4HJFAD.js +21 -0
  71. package/dist/bundle/chunks/jiti-static-loader-2RCDI6B4.js +2 -0
  72. package/dist/bundle/chunks/kimi-coding.js +2 -0
  73. package/dist/bundle/chunks/lib-4AVRLBHM.js +9 -0
  74. package/dist/bundle/chunks/meta.js +2 -0
  75. package/dist/bundle/chunks/mistral-conversations-G22LGLWM.js +5 -0
  76. package/dist/bundle/chunks/multipart-parser-FMGQ7342.js +3 -0
  77. package/dist/bundle/chunks/node-AUOGOBCN.js +2 -0
  78. package/dist/bundle/chunks/node-KCMANYC2.js +16 -0
  79. package/dist/bundle/chunks/openai-chatgpt.js +75 -0
  80. package/dist/bundle/chunks/openai-codex-responses-CDQVKDUO.js +10 -0
  81. package/dist/bundle/chunks/openai-codex.js +75 -0
  82. package/dist/bundle/chunks/openai-completions-RAU4DJDG.js +7 -0
  83. package/dist/bundle/chunks/openai-responses-4IZEGS2C.js +4 -0
  84. package/dist/bundle/chunks/openrouter-images-EXXX2XDD.js +2 -0
  85. package/dist/bundle/chunks/openrouter.js +75 -0
  86. package/dist/bundle/chunks/pi-messages-YPAWD2FK.js +8 -0
  87. package/dist/bundle/chunks/radius.js +75 -0
  88. package/dist/bundle/chunks/runtime-4K2RC6HQ.js +2 -0
  89. package/dist/bundle/chunks/src-QKGKDFSU.js +4 -0
  90. package/dist/bundle/chunks/typesafe-system-one-2F7KHMWD.js +2 -0
  91. package/dist/bundle/chunks/virtual-modules-XDTMJGCH.js +2 -0
  92. package/dist/bundle/chunks/xai.js +2 -0
  93. package/dist/bundle/cli-runtime.js +3 -0
  94. package/dist/bundle/cli.js +5 -0
  95. package/dist/bundle/index.js +2 -0
  96. package/dist/bundle/rpc-entry.js +3 -0
  97. package/dist/cli/args.d.ts +62 -0
  98. package/dist/cli/args.d.ts.map +1 -0
  99. package/dist/cli/args.js +474 -0
  100. package/dist/cli/args.js.map +1 -0
  101. package/dist/cli/auth-check.d.ts +19 -0
  102. package/dist/cli/auth-check.d.ts.map +1 -0
  103. package/dist/cli/auth-check.js +50 -0
  104. package/dist/cli/auth-check.js.map +1 -0
  105. package/dist/cli/auth-command.d.ts +24 -0
  106. package/dist/cli/auth-command.d.ts.map +1 -0
  107. package/dist/cli/auth-command.js +103 -0
  108. package/dist/cli/auth-command.js.map +1 -0
  109. package/dist/cli/config-selector.d.ts +16 -0
  110. package/dist/cli/config-selector.d.ts.map +1 -0
  111. package/dist/cli/config-selector.js +34 -0
  112. package/dist/cli/config-selector.js.map +1 -0
  113. package/dist/cli/credential-print.d.ts +13 -0
  114. package/dist/cli/credential-print.d.ts.map +1 -0
  115. package/dist/cli/credential-print.js +76 -0
  116. package/dist/cli/credential-print.js.map +1 -0
  117. package/dist/cli/file-processor.d.ts +15 -0
  118. package/dist/cli/file-processor.d.ts.map +1 -0
  119. package/dist/cli/file-processor.js +71 -0
  120. package/dist/cli/file-processor.js.map +1 -0
  121. package/dist/cli/initial-message.d.ts +18 -0
  122. package/dist/cli/initial-message.d.ts.map +1 -0
  123. package/dist/cli/initial-message.js +22 -0
  124. package/dist/cli/initial-message.js.map +1 -0
  125. package/dist/cli/list-models.d.ts +9 -0
  126. package/dist/cli/list-models.d.ts.map +1 -0
  127. package/dist/cli/list-models.js +98 -0
  128. package/dist/cli/list-models.js.map +1 -0
  129. package/dist/cli/project-trust.d.ts +10 -0
  130. package/dist/cli/project-trust.d.ts.map +1 -0
  131. package/dist/cli/project-trust.js +48 -0
  132. package/dist/cli/project-trust.js.map +1 -0
  133. package/dist/cli/session-picker.d.ts +10 -0
  134. package/dist/cli/session-picker.d.ts.map +1 -0
  135. package/dist/cli/session-picker.js +36 -0
  136. package/dist/cli/session-picker.js.map +1 -0
  137. package/dist/cli/setup.d.ts +2 -0
  138. package/dist/cli/setup.d.ts.map +1 -0
  139. package/dist/cli/setup.js +12 -0
  140. package/dist/cli/setup.js.map +1 -0
  141. package/dist/cli/startup-ui.d.ts +20 -0
  142. package/dist/cli/startup-ui.d.ts.map +1 -0
  143. package/dist/cli/startup-ui.js +175 -0
  144. package/dist/cli/startup-ui.js.map +1 -0
  145. package/dist/cli.d.ts +3 -0
  146. package/dist/cli.d.ts.map +1 -0
  147. package/dist/cli.js +6 -0
  148. package/dist/cli.js.map +1 -0
  149. package/dist/config.d.ts +136 -0
  150. package/dist/config.d.ts.map +1 -0
  151. package/dist/config.js +554 -0
  152. package/dist/config.js.map +1 -0
  153. package/dist/core/agent-session-runtime.d.ts +124 -0
  154. package/dist/core/agent-session-runtime.d.ts.map +1 -0
  155. package/dist/core/agent-session-runtime.js +324 -0
  156. package/dist/core/agent-session-runtime.js.map +1 -0
  157. package/dist/core/agent-session-services.d.ts +86 -0
  158. package/dist/core/agent-session-services.d.ts.map +1 -0
  159. package/dist/core/agent-session-services.js +147 -0
  160. package/dist/core/agent-session-services.js.map +1 -0
  161. package/dist/core/agent-session.d.ts +950 -0
  162. package/dist/core/agent-session.d.ts.map +1 -0
  163. package/dist/core/agent-session.js +3710 -0
  164. package/dist/core/agent-session.js.map +1 -0
  165. package/dist/core/auth-guidance.d.ts +5 -0
  166. package/dist/core/auth-guidance.d.ts.map +1 -0
  167. package/dist/core/auth-guidance.js +21 -0
  168. package/dist/core/auth-guidance.js.map +1 -0
  169. package/dist/core/auth-storage.d.ts +72 -0
  170. package/dist/core/auth-storage.d.ts.map +1 -0
  171. package/dist/core/auth-storage.js +434 -0
  172. package/dist/core/auth-storage.js.map +1 -0
  173. package/dist/core/bash-executor.d.ts +32 -0
  174. package/dist/core/bash-executor.d.ts.map +1 -0
  175. package/dist/core/bash-executor.js +103 -0
  176. package/dist/core/bash-executor.js.map +1 -0
  177. package/dist/core/bug-report-upload.d.ts +12 -0
  178. package/dist/core/bug-report-upload.d.ts.map +1 -0
  179. package/dist/core/bug-report-upload.js +22 -0
  180. package/dist/core/bug-report-upload.js.map +1 -0
  181. package/dist/core/bug-report.d.ts +184 -0
  182. package/dist/core/bug-report.d.ts.map +1 -0
  183. package/dist/core/bug-report.js +292 -0
  184. package/dist/core/bug-report.js.map +1 -0
  185. package/dist/core/cache-stats.d.ts +49 -0
  186. package/dist/core/cache-stats.d.ts.map +1 -0
  187. package/dist/core/cache-stats.js +112 -0
  188. package/dist/core/cache-stats.js.map +1 -0
  189. package/dist/core/cache-warmer.d.ts +103 -0
  190. package/dist/core/cache-warmer.d.ts.map +1 -0
  191. package/dist/core/cache-warmer.js +358 -0
  192. package/dist/core/cache-warmer.js.map +1 -0
  193. package/dist/core/client-identity.d.ts +8 -0
  194. package/dist/core/client-identity.d.ts.map +1 -0
  195. package/dist/core/client-identity.js +15 -0
  196. package/dist/core/client-identity.js.map +1 -0
  197. package/dist/core/compaction/branch-summarization.d.ts +100 -0
  198. package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
  199. package/dist/core/compaction/branch-summarization.js +262 -0
  200. package/dist/core/compaction/branch-summarization.js.map +1 -0
  201. package/dist/core/compaction/compaction.d.ts +145 -0
  202. package/dist/core/compaction/compaction.d.ts.map +1 -0
  203. package/dist/core/compaction/compaction.js +749 -0
  204. package/dist/core/compaction/compaction.js.map +1 -0
  205. package/dist/core/compaction/index.d.ts +7 -0
  206. package/dist/core/compaction/index.d.ts.map +1 -0
  207. package/dist/core/compaction/index.js +7 -0
  208. package/dist/core/compaction/index.js.map +1 -0
  209. package/dist/core/compaction/utils.d.ts +45 -0
  210. package/dist/core/compaction/utils.d.ts.map +1 -0
  211. package/dist/core/compaction/utils.js +149 -0
  212. package/dist/core/compaction/utils.js.map +1 -0
  213. package/dist/core/crash-log.d.ts +27 -0
  214. package/dist/core/crash-log.d.ts.map +1 -0
  215. package/dist/core/crash-log.js +140 -0
  216. package/dist/core/crash-log.js.map +1 -0
  217. package/dist/core/defaults.d.ts +4 -0
  218. package/dist/core/defaults.d.ts.map +1 -0
  219. package/dist/core/defaults.js +11 -0
  220. package/dist/core/defaults.js.map +1 -0
  221. package/dist/core/diagnostics.d.ts +15 -0
  222. package/dist/core/diagnostics.d.ts.map +1 -0
  223. package/dist/core/diagnostics.js +2 -0
  224. package/dist/core/diagnostics.js.map +1 -0
  225. package/dist/core/event-bus.d.ts +9 -0
  226. package/dist/core/event-bus.d.ts.map +1 -0
  227. package/dist/core/event-bus.js +25 -0
  228. package/dist/core/event-bus.js.map +1 -0
  229. package/dist/core/exec.d.ts +37 -0
  230. package/dist/core/exec.d.ts.map +1 -0
  231. package/dist/core/exec.js +119 -0
  232. package/dist/core/exec.js.map +1 -0
  233. package/dist/core/experimental.d.ts +2 -0
  234. package/dist/core/experimental.d.ts.map +1 -0
  235. package/dist/core/experimental.js +4 -0
  236. package/dist/core/experimental.js.map +1 -0
  237. package/dist/core/export-html/ansi-to-html.d.ts +22 -0
  238. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
  239. package/dist/core/export-html/ansi-to-html.js +249 -0
  240. package/dist/core/export-html/ansi-to-html.js.map +1 -0
  241. package/dist/core/export-html/index.d.ts +37 -0
  242. package/dist/core/export-html/index.d.ts.map +1 -0
  243. package/dist/core/export-html/index.js +228 -0
  244. package/dist/core/export-html/index.js.map +1 -0
  245. package/dist/core/export-html/template.css +1085 -0
  246. package/dist/core/export-html/template.html +56 -0
  247. package/dist/core/export-html/template.js +2044 -0
  248. package/dist/core/export-html/tool-renderer.d.ts +34 -0
  249. package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
  250. package/dist/core/export-html/tool-renderer.js +113 -0
  251. package/dist/core/export-html/tool-renderer.js.map +1 -0
  252. package/dist/core/export-html/vendor/highlight.min.js +1213 -0
  253. package/dist/core/export-html/vendor/marked-cjk-friendly.min.js +6 -0
  254. package/dist/core/export-html/vendor/marked.min.js +79 -0
  255. package/dist/core/extensions/index.d.ts +12 -0
  256. package/dist/core/extensions/index.d.ts.map +1 -0
  257. package/dist/core/extensions/index.js +9 -0
  258. package/dist/core/extensions/index.js.map +1 -0
  259. package/dist/core/extensions/jiti-loader.d.ts +2 -0
  260. package/dist/core/extensions/jiti-loader.d.ts.map +1 -0
  261. package/dist/core/extensions/jiti-loader.js +4 -0
  262. package/dist/core/extensions/jiti-loader.js.map +1 -0
  263. package/dist/core/extensions/jiti-static-loader.d.ts +2 -0
  264. package/dist/core/extensions/jiti-static-loader.d.ts.map +1 -0
  265. package/dist/core/extensions/jiti-static-loader.js +4 -0
  266. package/dist/core/extensions/jiti-static-loader.js.map +1 -0
  267. package/dist/core/extensions/loader.d.ts +23 -0
  268. package/dist/core/extensions/loader.d.ts.map +1 -0
  269. package/dist/core/extensions/loader.js +710 -0
  270. package/dist/core/extensions/loader.js.map +1 -0
  271. package/dist/core/extensions/pi-ai-extension-view.d.ts +19 -0
  272. package/dist/core/extensions/pi-ai-extension-view.d.ts.map +1 -0
  273. package/dist/core/extensions/pi-ai-extension-view.js +22 -0
  274. package/dist/core/extensions/pi-ai-extension-view.js.map +1 -0
  275. package/dist/core/extensions/runner.d.ts +216 -0
  276. package/dist/core/extensions/runner.d.ts.map +1 -0
  277. package/dist/core/extensions/runner.js +1246 -0
  278. package/dist/core/extensions/runner.js.map +1 -0
  279. package/dist/core/extensions/types.d.ts +1801 -0
  280. package/dist/core/extensions/types.d.ts.map +1 -0
  281. package/dist/core/extensions/types.js +48 -0
  282. package/dist/core/extensions/types.js.map +1 -0
  283. package/dist/core/extensions/virtual-modules.d.ts +3 -0
  284. package/dist/core/extensions/virtual-modules.d.ts.map +1 -0
  285. package/dist/core/extensions/virtual-modules.js +42 -0
  286. package/dist/core/extensions/virtual-modules.js.map +1 -0
  287. package/dist/core/extensions/wrapper.d.ts +20 -0
  288. package/dist/core/extensions/wrapper.d.ts.map +1 -0
  289. package/dist/core/extensions/wrapper.js +22 -0
  290. package/dist/core/extensions/wrapper.js.map +1 -0
  291. package/dist/core/footer-data-provider.d.ts +64 -0
  292. package/dist/core/footer-data-provider.d.ts.map +1 -0
  293. package/dist/core/footer-data-provider.js +338 -0
  294. package/dist/core/footer-data-provider.js.map +1 -0
  295. package/dist/core/http-dispatcher.d.ts +22 -0
  296. package/dist/core/http-dispatcher.d.ts.map +1 -0
  297. package/dist/core/http-dispatcher.js +98 -0
  298. package/dist/core/http-dispatcher.js.map +1 -0
  299. package/dist/core/index.d.ts +14 -0
  300. package/dist/core/index.d.ts.map +1 -0
  301. package/dist/core/index.js +13 -0
  302. package/dist/core/index.js.map +1 -0
  303. package/dist/core/key-id-schema.d.ts +6 -0
  304. package/dist/core/key-id-schema.d.ts.map +1 -0
  305. package/dist/core/key-id-schema.js +16 -0
  306. package/dist/core/key-id-schema.js.map +1 -0
  307. package/dist/core/keybindings-schema.d.ts +4 -0
  308. package/dist/core/keybindings-schema.d.ts.map +1 -0
  309. package/dist/core/keybindings-schema.js +16 -0
  310. package/dist/core/keybindings-schema.js.map +1 -0
  311. package/dist/core/keybindings.d.ts +560 -0
  312. package/dist/core/keybindings.d.ts.map +1 -0
  313. package/dist/core/keybindings.js +324 -0
  314. package/dist/core/keybindings.js.map +1 -0
  315. package/dist/core/mcp-servers.d.ts +121 -0
  316. package/dist/core/mcp-servers.d.ts.map +1 -0
  317. package/dist/core/mcp-servers.js +163 -0
  318. package/dist/core/mcp-servers.js.map +1 -0
  319. package/dist/core/messages.d.ts +77 -0
  320. package/dist/core/messages.d.ts.map +1 -0
  321. package/dist/core/messages.js +124 -0
  322. package/dist/core/messages.js.map +1 -0
  323. package/dist/core/model-config.d.ts +2000 -0
  324. package/dist/core/model-config.d.ts.map +1 -0
  325. package/dist/core/model-config.js +167 -0
  326. package/dist/core/model-config.js.map +1 -0
  327. package/dist/core/model-registry.d.ts +63 -0
  328. package/dist/core/model-registry.d.ts.map +1 -0
  329. package/dist/core/model-registry.js +144 -0
  330. package/dist/core/model-registry.js.map +1 -0
  331. package/dist/core/model-resolver.d.ts +139 -0
  332. package/dist/core/model-resolver.d.ts.map +1 -0
  333. package/dist/core/model-resolver.js +495 -0
  334. package/dist/core/model-resolver.js.map +1 -0
  335. package/dist/core/model-runtime.d.ts +150 -0
  336. package/dist/core/model-runtime.d.ts.map +1 -0
  337. package/dist/core/model-runtime.js +774 -0
  338. package/dist/core/model-runtime.js.map +1 -0
  339. package/dist/core/models-store.d.ts +22 -0
  340. package/dist/core/models-store.d.ts.map +1 -0
  341. package/dist/core/models-store.js +115 -0
  342. package/dist/core/models-store.js.map +1 -0
  343. package/dist/core/nested-tool-calls.d.ts +103 -0
  344. package/dist/core/nested-tool-calls.d.ts.map +1 -0
  345. package/dist/core/nested-tool-calls.js +179 -0
  346. package/dist/core/nested-tool-calls.js.map +1 -0
  347. package/dist/core/output-guard.d.ts +7 -0
  348. package/dist/core/output-guard.d.ts.map +1 -0
  349. package/dist/core/output-guard.js +89 -0
  350. package/dist/core/output-guard.js.map +1 -0
  351. package/dist/core/package-manager.d.ts +240 -0
  352. package/dist/core/package-manager.d.ts.map +1 -0
  353. package/dist/core/package-manager.js +2383 -0
  354. package/dist/core/package-manager.js.map +1 -0
  355. package/dist/core/pi-ai-schemas.d.ts +166 -0
  356. package/dist/core/pi-ai-schemas.d.ts.map +1 -0
  357. package/dist/core/pi-ai-schemas.js +21 -0
  358. package/dist/core/pi-ai-schemas.js.map +1 -0
  359. package/dist/core/pi-manifest.d.ts +9 -0
  360. package/dist/core/pi-manifest.d.ts.map +1 -0
  361. package/dist/core/pi-manifest.js +30 -0
  362. package/dist/core/pi-manifest.js.map +1 -0
  363. package/dist/core/project-trust.d.ts +15 -0
  364. package/dist/core/project-trust.d.ts.map +1 -0
  365. package/dist/core/project-trust.js +60 -0
  366. package/dist/core/project-trust.js.map +1 -0
  367. package/dist/core/prompt-templates.d.ts +59 -0
  368. package/dist/core/prompt-templates.d.ts.map +1 -0
  369. package/dist/core/prompt-templates.js +267 -0
  370. package/dist/core/prompt-templates.js.map +1 -0
  371. package/dist/core/provider-composer.d.ts +81 -0
  372. package/dist/core/provider-composer.d.ts.map +1 -0
  373. package/dist/core/provider-composer.js +492 -0
  374. package/dist/core/provider-composer.js.map +1 -0
  375. package/dist/core/radius.d.ts +7 -0
  376. package/dist/core/radius.d.ts.map +1 -0
  377. package/dist/core/radius.js +10 -0
  378. package/dist/core/radius.js.map +1 -0
  379. package/dist/core/remote-catalog-provider.d.ts +23 -0
  380. package/dist/core/remote-catalog-provider.d.ts.map +1 -0
  381. package/dist/core/remote-catalog-provider.js +190 -0
  382. package/dist/core/remote-catalog-provider.js.map +1 -0
  383. package/dist/core/resolve-config-value.d.ts +30 -0
  384. package/dist/core/resolve-config-value.d.ts.map +1 -0
  385. package/dist/core/resolve-config-value.js +247 -0
  386. package/dist/core/resolve-config-value.js.map +1 -0
  387. package/dist/core/resource-loader.d.ts +233 -0
  388. package/dist/core/resource-loader.d.ts.map +1 -0
  389. package/dist/core/resource-loader.js +1025 -0
  390. package/dist/core/resource-loader.js.map +1 -0
  391. package/dist/core/runtime-credentials.d.ts +23 -0
  392. package/dist/core/runtime-credentials.d.ts.map +1 -0
  393. package/dist/core/runtime-credentials.js +53 -0
  394. package/dist/core/runtime-credentials.js.map +1 -0
  395. package/dist/core/sdk.d.ts +117 -0
  396. package/dist/core/sdk.d.ts.map +1 -0
  397. package/dist/core/sdk.js +329 -0
  398. package/dist/core/sdk.js.map +1 -0
  399. package/dist/core/session-cwd.d.ts +19 -0
  400. package/dist/core/session-cwd.d.ts.map +1 -0
  401. package/dist/core/session-cwd.js +38 -0
  402. package/dist/core/session-cwd.js.map +1 -0
  403. package/dist/core/session-export.d.ts +8 -0
  404. package/dist/core/session-export.d.ts.map +1 -0
  405. package/dist/core/session-export.js +33 -0
  406. package/dist/core/session-export.js.map +1 -0
  407. package/dist/core/session-manager.d.ts +423 -0
  408. package/dist/core/session-manager.d.ts.map +1 -0
  409. package/dist/core/session-manager.js +1542 -0
  410. package/dist/core/session-manager.js.map +1 -0
  411. package/dist/core/settings-defaults.d.ts +66 -0
  412. package/dist/core/settings-defaults.d.ts.map +1 -0
  413. package/dist/core/settings-defaults.js +69 -0
  414. package/dist/core/settings-defaults.js.map +1 -0
  415. package/dist/core/settings-diagnostics.d.ts +9 -0
  416. package/dist/core/settings-diagnostics.d.ts.map +1 -0
  417. package/dist/core/settings-diagnostics.js +21 -0
  418. package/dist/core/settings-diagnostics.js.map +1 -0
  419. package/dist/core/settings-manager.d.ts +253 -0
  420. package/dist/core/settings-manager.d.ts.map +1 -0
  421. package/dist/core/settings-manager.js +1154 -0
  422. package/dist/core/settings-manager.js.map +1 -0
  423. package/dist/core/settings-schema.d.ts +232 -0
  424. package/dist/core/settings-schema.d.ts.map +1 -0
  425. package/dist/core/settings-schema.js +301 -0
  426. package/dist/core/settings-schema.js.map +1 -0
  427. package/dist/core/skills.d.ts +63 -0
  428. package/dist/core/skills.d.ts.map +1 -0
  429. package/dist/core/skills.js +404 -0
  430. package/dist/core/skills.js.map +1 -0
  431. package/dist/core/slash-commands.d.ts +15 -0
  432. package/dist/core/slash-commands.d.ts.map +1 -0
  433. package/dist/core/slash-commands.js +32 -0
  434. package/dist/core/slash-commands.js.map +1 -0
  435. package/dist/core/source-info.d.ts +35 -0
  436. package/dist/core/source-info.d.ts.map +1 -0
  437. package/dist/core/source-info.js +48 -0
  438. package/dist/core/source-info.js.map +1 -0
  439. package/dist/core/system-prompt.d.ts +77 -0
  440. package/dist/core/system-prompt.d.ts.map +1 -0
  441. package/dist/core/system-prompt.js +150 -0
  442. package/dist/core/system-prompt.js.map +1 -0
  443. package/dist/core/telemetry.d.ts +3 -0
  444. package/dist/core/telemetry.d.ts.map +1 -0
  445. package/dist/core/telemetry.js +9 -0
  446. package/dist/core/telemetry.js.map +1 -0
  447. package/dist/core/timings.d.ts +10 -0
  448. package/dist/core/timings.d.ts.map +1 -0
  449. package/dist/core/timings.js +41 -0
  450. package/dist/core/timings.js.map +1 -0
  451. package/dist/core/tools/bash.d.ts +100 -0
  452. package/dist/core/tools/bash.d.ts.map +1 -0
  453. package/dist/core/tools/bash.js +363 -0
  454. package/dist/core/tools/bash.js.map +1 -0
  455. package/dist/core/tools/edit-diff.d.ts +101 -0
  456. package/dist/core/tools/edit-diff.d.ts.map +1 -0
  457. package/dist/core/tools/edit-diff.js +421 -0
  458. package/dist/core/tools/edit-diff.js.map +1 -0
  459. package/dist/core/tools/edit.d.ts +44 -0
  460. package/dist/core/tools/edit.d.ts.map +1 -0
  461. package/dist/core/tools/edit.js +145 -0
  462. package/dist/core/tools/edit.js.map +1 -0
  463. package/dist/core/tools/file-mutation-queue.d.ts +6 -0
  464. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
  465. package/dist/core/tools/file-mutation-queue.js +52 -0
  466. package/dist/core/tools/file-mutation-queue.js.map +1 -0
  467. package/dist/core/tools/find.d.ts +42 -0
  468. package/dist/core/tools/find.d.ts.map +1 -0
  469. package/dist/core/tools/find.js +267 -0
  470. package/dist/core/tools/find.js.map +1 -0
  471. package/dist/core/tools/grep.d.ts +39 -0
  472. package/dist/core/tools/grep.d.ts.map +1 -0
  473. package/dist/core/tools/grep.js +257 -0
  474. package/dist/core/tools/grep.js.map +1 -0
  475. package/dist/core/tools/index.d.ts +43 -0
  476. package/dist/core/tools/index.d.ts.map +1 -0
  477. package/dist/core/tools/index.js +129 -0
  478. package/dist/core/tools/index.js.map +1 -0
  479. package/dist/core/tools/ls.d.ts +41 -0
  480. package/dist/core/tools/ls.d.ts.map +1 -0
  481. package/dist/core/tools/ls.js +127 -0
  482. package/dist/core/tools/ls.js.map +1 -0
  483. package/dist/core/tools/output-accumulator.d.ts +63 -0
  484. package/dist/core/tools/output-accumulator.d.ts.map +1 -0
  485. package/dist/core/tools/output-accumulator.js +214 -0
  486. package/dist/core/tools/output-accumulator.js.map +1 -0
  487. package/dist/core/tools/path-utils.d.ts +10 -0
  488. package/dist/core/tools/path-utils.d.ts.map +1 -0
  489. package/dist/core/tools/path-utils.js +99 -0
  490. package/dist/core/tools/path-utils.js.map +1 -0
  491. package/dist/core/tools/powershell.d.ts +16 -0
  492. package/dist/core/tools/powershell.d.ts.map +1 -0
  493. package/dist/core/tools/powershell.js +39 -0
  494. package/dist/core/tools/powershell.js.map +1 -0
  495. package/dist/core/tools/read.d.ts +63 -0
  496. package/dist/core/tools/read.d.ts.map +1 -0
  497. package/dist/core/tools/read.js +302 -0
  498. package/dist/core/tools/read.js.map +1 -0
  499. package/dist/core/tools/render-utils.d.ts +50 -0
  500. package/dist/core/tools/render-utils.d.ts.map +1 -0
  501. package/dist/core/tools/render-utils.js +153 -0
  502. package/dist/core/tools/render-utils.js.map +1 -0
  503. package/dist/core/tools/renderers/bash.d.ts +12 -0
  504. package/dist/core/tools/renderers/bash.d.ts.map +1 -0
  505. package/dist/core/tools/renderers/bash.js +89 -0
  506. package/dist/core/tools/renderers/bash.js.map +1 -0
  507. package/dist/core/tools/renderers/edit.d.ts +23 -0
  508. package/dist/core/tools/renderers/edit.d.ts.map +1 -0
  509. package/dist/core/tools/renderers/edit.js +168 -0
  510. package/dist/core/tools/renderers/edit.js.map +1 -0
  511. package/dist/core/tools/renderers/find.d.ts +10 -0
  512. package/dist/core/tools/renderers/find.d.ts.map +1 -0
  513. package/dist/core/tools/renderers/find.js +64 -0
  514. package/dist/core/tools/renderers/find.js.map +1 -0
  515. package/dist/core/tools/renderers/grep.d.ts +10 -0
  516. package/dist/core/tools/renderers/grep.d.ts.map +1 -0
  517. package/dist/core/tools/renderers/grep.js +69 -0
  518. package/dist/core/tools/renderers/grep.js.map +1 -0
  519. package/dist/core/tools/renderers/index.d.ts +28 -0
  520. package/dist/core/tools/renderers/index.d.ts.map +1 -0
  521. package/dist/core/tools/renderers/index.js +47 -0
  522. package/dist/core/tools/renderers/index.js.map +1 -0
  523. package/dist/core/tools/renderers/ls.d.ts +10 -0
  524. package/dist/core/tools/renderers/ls.d.ts.map +1 -0
  525. package/dist/core/tools/renderers/ls.js +58 -0
  526. package/dist/core/tools/renderers/ls.js.map +1 -0
  527. package/dist/core/tools/renderers/read.d.ts +11 -0
  528. package/dist/core/tools/renderers/read.d.ts.map +1 -0
  529. package/dist/core/tools/renderers/read.js +126 -0
  530. package/dist/core/tools/renderers/read.js.map +1 -0
  531. package/dist/core/tools/renderers/write.d.ts +10 -0
  532. package/dist/core/tools/renderers/write.d.ts.map +1 -0
  533. package/dist/core/tools/renderers/write.js +153 -0
  534. package/dist/core/tools/renderers/write.js.map +1 -0
  535. package/dist/core/tools/tool-definition-wrapper.d.ts +26 -0
  536. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
  537. package/dist/core/tools/tool-definition-wrapper.js +38 -0
  538. package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
  539. package/dist/core/tools/truncate.d.ts +74 -0
  540. package/dist/core/tools/truncate.d.ts.map +1 -0
  541. package/dist/core/tools/truncate.js +238 -0
  542. package/dist/core/tools/truncate.js.map +1 -0
  543. package/dist/core/tools/write.d.ts +30 -0
  544. package/dist/core/tools/write.d.ts.map +1 -0
  545. package/dist/core/tools/write.js +61 -0
  546. package/dist/core/tools/write.js.map +1 -0
  547. package/dist/core/trust-manager.d.ts +36 -0
  548. package/dist/core/trust-manager.d.ts.map +1 -0
  549. package/dist/core/trust-manager.js +210 -0
  550. package/dist/core/trust-manager.js.map +1 -0
  551. package/dist/core/usage-totals.d.ts +21 -0
  552. package/dist/core/usage-totals.d.ts.map +1 -0
  553. package/dist/core/usage-totals.js +81 -0
  554. package/dist/core/usage-totals.js.map +1 -0
  555. package/dist/core/virtual-models.d.ts +117 -0
  556. package/dist/core/virtual-models.d.ts.map +1 -0
  557. package/dist/core/virtual-models.js +124 -0
  558. package/dist/core/virtual-models.js.map +1 -0
  559. package/dist/extensions/codemode/execute.d.ts +16 -0
  560. package/dist/extensions/codemode/execute.d.ts.map +1 -0
  561. package/dist/extensions/codemode/execute.js +740 -0
  562. package/dist/extensions/codemode/execute.js.map +1 -0
  563. package/dist/extensions/codemode/execute.lazy.d.ts +3 -0
  564. package/dist/extensions/codemode/execute.lazy.d.ts.map +1 -0
  565. package/dist/extensions/codemode/execute.lazy.js +3 -0
  566. package/dist/extensions/codemode/execute.lazy.js.map +1 -0
  567. package/dist/extensions/codemode/index.d.ts +21 -0
  568. package/dist/extensions/codemode/index.d.ts.map +1 -0
  569. package/dist/extensions/codemode/index.js +33 -0
  570. package/dist/extensions/codemode/index.js.map +1 -0
  571. package/dist/extensions/codemode/renderer.d.ts +12 -0
  572. package/dist/extensions/codemode/renderer.d.ts.map +1 -0
  573. package/dist/extensions/codemode/renderer.js +147 -0
  574. package/dist/extensions/codemode/renderer.js.map +1 -0
  575. package/dist/extensions/codemode/tool.d.ts +125 -0
  576. package/dist/extensions/codemode/tool.d.ts.map +1 -0
  577. package/dist/extensions/codemode/tool.js +313 -0
  578. package/dist/extensions/codemode/tool.js.map +1 -0
  579. package/dist/extensions/codemode/worker.d.ts +7 -0
  580. package/dist/extensions/codemode/worker.d.ts.map +1 -0
  581. package/dist/extensions/codemode/worker.js +7 -0
  582. package/dist/extensions/codemode/worker.js.map +1 -0
  583. package/dist/extensions/index.d.ts +3 -0
  584. package/dist/extensions/index.d.ts.map +1 -0
  585. package/dist/extensions/index.js +19 -0
  586. package/dist/extensions/index.js.map +1 -0
  587. package/dist/extensions/llama/client.d.ts +71 -0
  588. package/dist/extensions/llama/client.d.ts.map +1 -0
  589. package/dist/extensions/llama/client.js +334 -0
  590. package/dist/extensions/llama/client.js.map +1 -0
  591. package/dist/extensions/llama/huggingface.d.ts +23 -0
  592. package/dist/extensions/llama/huggingface.d.ts.map +1 -0
  593. package/dist/extensions/llama/huggingface.js +141 -0
  594. package/dist/extensions/llama/huggingface.js.map +1 -0
  595. package/dist/extensions/llama/index.d.ts +3 -0
  596. package/dist/extensions/llama/index.d.ts.map +1 -0
  597. package/dist/extensions/llama/index.js +219 -0
  598. package/dist/extensions/llama/index.js.map +1 -0
  599. package/dist/extensions/llama/provider.d.ts +12 -0
  600. package/dist/extensions/llama/provider.d.ts.map +1 -0
  601. package/dist/extensions/llama/provider.js +236 -0
  602. package/dist/extensions/llama/provider.js.map +1 -0
  603. package/dist/extensions/llama/ui.d.ts +42 -0
  604. package/dist/extensions/llama/ui.d.ts.map +1 -0
  605. package/dist/extensions/llama/ui.js +440 -0
  606. package/dist/extensions/llama/ui.js.map +1 -0
  607. package/dist/extensions/marsai/index.d.ts +18 -0
  608. package/dist/extensions/marsai/index.d.ts.map +1 -0
  609. package/dist/extensions/marsai/index.js +179 -0
  610. package/dist/extensions/marsai/index.js.map +1 -0
  611. package/dist/extensions/marsai/oauth.d.ts +49 -0
  612. package/dist/extensions/marsai/oauth.d.ts.map +1 -0
  613. package/dist/extensions/marsai/oauth.js +291 -0
  614. package/dist/extensions/marsai/oauth.js.map +1 -0
  615. package/dist/extensions/marsai/web-tools.d.ts +31 -0
  616. package/dist/extensions/marsai/web-tools.d.ts.map +1 -0
  617. package/dist/extensions/marsai/web-tools.js +298 -0
  618. package/dist/extensions/marsai/web-tools.js.map +1 -0
  619. package/dist/extensions/mcp/cli.d.ts +23 -0
  620. package/dist/extensions/mcp/cli.d.ts.map +1 -0
  621. package/dist/extensions/mcp/cli.js +558 -0
  622. package/dist/extensions/mcp/cli.js.map +1 -0
  623. package/dist/extensions/mcp/cli.lazy.d.ts +3 -0
  624. package/dist/extensions/mcp/cli.lazy.d.ts.map +1 -0
  625. package/dist/extensions/mcp/cli.lazy.js +3 -0
  626. package/dist/extensions/mcp/cli.lazy.js.map +1 -0
  627. package/dist/extensions/mcp/config.d.ts +84 -0
  628. package/dist/extensions/mcp/config.d.ts.map +1 -0
  629. package/dist/extensions/mcp/config.js +192 -0
  630. package/dist/extensions/mcp/config.js.map +1 -0
  631. package/dist/extensions/mcp/index.d.ts +79 -0
  632. package/dist/extensions/mcp/index.d.ts.map +1 -0
  633. package/dist/extensions/mcp/index.js +1206 -0
  634. package/dist/extensions/mcp/index.js.map +1 -0
  635. package/dist/extensions/mcp/log.d.ts +16 -0
  636. package/dist/extensions/mcp/log.d.ts.map +1 -0
  637. package/dist/extensions/mcp/log.js +66 -0
  638. package/dist/extensions/mcp/log.js.map +1 -0
  639. package/dist/extensions/mcp/oauth.d.ts +64 -0
  640. package/dist/extensions/mcp/oauth.d.ts.map +1 -0
  641. package/dist/extensions/mcp/oauth.js +188 -0
  642. package/dist/extensions/mcp/oauth.js.map +1 -0
  643. package/dist/extensions/mcp/resources.d.ts +36 -0
  644. package/dist/extensions/mcp/resources.d.ts.map +1 -0
  645. package/dist/extensions/mcp/resources.js +262 -0
  646. package/dist/extensions/mcp/resources.js.map +1 -0
  647. package/dist/extensions/mcp/runtime.d.ts +99 -0
  648. package/dist/extensions/mcp/runtime.d.ts.map +1 -0
  649. package/dist/extensions/mcp/runtime.js +380 -0
  650. package/dist/extensions/mcp/runtime.js.map +1 -0
  651. package/dist/extensions/mcp/runtime.lazy.d.ts +3 -0
  652. package/dist/extensions/mcp/runtime.lazy.d.ts.map +1 -0
  653. package/dist/extensions/mcp/runtime.lazy.js +3 -0
  654. package/dist/extensions/mcp/runtime.lazy.js.map +1 -0
  655. package/dist/extensions/mcp/tools.d.ts +65 -0
  656. package/dist/extensions/mcp/tools.d.ts.map +1 -0
  657. package/dist/extensions/mcp/tools.js +257 -0
  658. package/dist/extensions/mcp/tools.js.map +1 -0
  659. package/dist/extensions/mcp/ui.d.ts +61 -0
  660. package/dist/extensions/mcp/ui.d.ts.map +1 -0
  661. package/dist/extensions/mcp/ui.js +195 -0
  662. package/dist/extensions/mcp/ui.js.map +1 -0
  663. package/dist/extensions/subagent/agents.d.ts +23 -0
  664. package/dist/extensions/subagent/agents.d.ts.map +1 -0
  665. package/dist/extensions/subagent/agents.js +121 -0
  666. package/dist/extensions/subagent/agents.js.map +1 -0
  667. package/dist/extensions/subagent/index.d.ts +16 -0
  668. package/dist/extensions/subagent/index.d.ts.map +1 -0
  669. package/dist/extensions/subagent/index.js +1080 -0
  670. package/dist/extensions/subagent/index.js.map +1 -0
  671. package/dist/extensions/subagent/recon-child.d.ts +9 -0
  672. package/dist/extensions/subagent/recon-child.d.ts.map +1 -0
  673. package/dist/extensions/subagent/recon-child.js +80 -0
  674. package/dist/extensions/subagent/recon-child.js.map +1 -0
  675. package/dist/extensions/subagent/recon.d.ts +17 -0
  676. package/dist/extensions/subagent/recon.d.ts.map +1 -0
  677. package/dist/extensions/subagent/recon.js +56 -0
  678. package/dist/extensions/subagent/recon.js.map +1 -0
  679. package/dist/extensions/tool-search/index.d.ts +12 -0
  680. package/dist/extensions/tool-search/index.d.ts.map +1 -0
  681. package/dist/extensions/tool-search/index.js +15 -0
  682. package/dist/extensions/tool-search/index.js.map +1 -0
  683. package/dist/extensions/tool-search/tool.d.ts +86 -0
  684. package/dist/extensions/tool-search/tool.d.ts.map +1 -0
  685. package/dist/extensions/tool-search/tool.js +255 -0
  686. package/dist/extensions/tool-search/tool.js.map +1 -0
  687. package/dist/index.d.ts +45 -0
  688. package/dist/index.d.ts.map +1 -0
  689. package/dist/index.js +54 -0
  690. package/dist/index.js.map +1 -0
  691. package/dist/main.d.ts +16 -0
  692. package/dist/main.d.ts.map +1 -0
  693. package/dist/main.js +835 -0
  694. package/dist/main.js.map +1 -0
  695. package/dist/migrations.d.ts +33 -0
  696. package/dist/migrations.d.ts.map +1 -0
  697. package/dist/migrations.js +282 -0
  698. package/dist/migrations.js.map +1 -0
  699. package/dist/modes/index.d.ts +10 -0
  700. package/dist/modes/index.d.ts.map +1 -0
  701. package/dist/modes/index.js +8 -0
  702. package/dist/modes/index.js.map +1 -0
  703. package/dist/modes/interactive/assets/clankolas.png +0 -0
  704. package/dist/modes/interactive/bug-report.d.ts +16 -0
  705. package/dist/modes/interactive/bug-report.d.ts.map +1 -0
  706. package/dist/modes/interactive/bug-report.js +210 -0
  707. package/dist/modes/interactive/bug-report.js.map +1 -0
  708. package/dist/modes/interactive/chat-viewport.d.ts +20 -0
  709. package/dist/modes/interactive/chat-viewport.d.ts.map +1 -0
  710. package/dist/modes/interactive/chat-viewport.js +28 -0
  711. package/dist/modes/interactive/chat-viewport.js.map +1 -0
  712. package/dist/modes/interactive/components/armin.d.ts +37 -0
  713. package/dist/modes/interactive/components/armin.d.ts.map +1 -0
  714. package/dist/modes/interactive/components/armin.js +335 -0
  715. package/dist/modes/interactive/components/armin.js.map +1 -0
  716. package/dist/modes/interactive/components/assistant-message.d.ts +29 -0
  717. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
  718. package/dist/modes/interactive/components/assistant-message.js +182 -0
  719. package/dist/modes/interactive/components/assistant-message.js.map +1 -0
  720. package/dist/modes/interactive/components/auth-url.d.ts +14 -0
  721. package/dist/modes/interactive/components/auth-url.d.ts.map +1 -0
  722. package/dist/modes/interactive/components/auth-url.js +37 -0
  723. package/dist/modes/interactive/components/auth-url.js.map +1 -0
  724. package/dist/modes/interactive/components/bash-execution.d.ts +38 -0
  725. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
  726. package/dist/modes/interactive/components/bash-execution.js +178 -0
  727. package/dist/modes/interactive/components/bash-execution.js.map +1 -0
  728. package/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
  729. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
  730. package/dist/modes/interactive/components/bordered-loader.js +54 -0
  731. package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
  732. package/dist/modes/interactive/components/branch-summary-message.d.ts +21 -0
  733. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
  734. package/dist/modes/interactive/components/branch-summary-message.js +62 -0
  735. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
  736. package/dist/modes/interactive/components/compaction-summary-message.d.ts +21 -0
  737. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
  738. package/dist/modes/interactive/components/compaction-summary-message.js +63 -0
  739. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
  740. package/dist/modes/interactive/components/config-selector.d.ts +102 -0
  741. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
  742. package/dist/modes/interactive/components/config-selector.js +758 -0
  743. package/dist/modes/interactive/components/config-selector.js.map +1 -0
  744. package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
  745. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
  746. package/dist/modes/interactive/components/countdown-timer.js +33 -0
  747. package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
  748. package/dist/modes/interactive/components/custom-editor.d.ts +30 -0
  749. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
  750. package/dist/modes/interactive/components/custom-editor.js +122 -0
  751. package/dist/modes/interactive/components/custom-editor.js.map +1 -0
  752. package/dist/modes/interactive/components/custom-entry.d.ts +21 -0
  753. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -0
  754. package/dist/modes/interactive/components/custom-entry.js +59 -0
  755. package/dist/modes/interactive/components/custom-entry.js.map +1 -0
  756. package/dist/modes/interactive/components/custom-message.d.ts +25 -0
  757. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
  758. package/dist/modes/interactive/components/custom-message.js +96 -0
  759. package/dist/modes/interactive/components/custom-message.js.map +1 -0
  760. package/dist/modes/interactive/components/diff.d.ts +12 -0
  761. package/dist/modes/interactive/components/diff.d.ts.map +1 -0
  762. package/dist/modes/interactive/components/diff.js +139 -0
  763. package/dist/modes/interactive/components/diff.js.map +1 -0
  764. package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
  765. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
  766. package/dist/modes/interactive/components/dynamic-border.js +21 -0
  767. package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
  768. package/dist/modes/interactive/components/earendil-announcement.d.ts +5 -0
  769. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -0
  770. package/dist/modes/interactive/components/earendil-announcement.js +40 -0
  771. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -0
  772. package/dist/modes/interactive/components/easter-egg-3d.d.ts +104 -0
  773. package/dist/modes/interactive/components/easter-egg-3d.d.ts.map +1 -0
  774. package/dist/modes/interactive/components/easter-egg-3d.js +1139 -0
  775. package/dist/modes/interactive/components/easter-egg-3d.js.map +1 -0
  776. package/dist/modes/interactive/components/easter-egg-3d.lazy.d.ts +6 -0
  777. package/dist/modes/interactive/components/easter-egg-3d.lazy.d.ts.map +1 -0
  778. package/dist/modes/interactive/components/easter-egg-3d.lazy.js +23 -0
  779. package/dist/modes/interactive/components/easter-egg-3d.lazy.js.map +1 -0
  780. package/dist/modes/interactive/components/extension-editor.d.ts +26 -0
  781. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
  782. package/dist/modes/interactive/components/extension-editor.js +107 -0
  783. package/dist/modes/interactive/components/extension-editor.js.map +1 -0
  784. package/dist/modes/interactive/components/extension-input.d.ts +25 -0
  785. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
  786. package/dist/modes/interactive/components/extension-input.js +67 -0
  787. package/dist/modes/interactive/components/extension-input.js.map +1 -0
  788. package/dist/modes/interactive/components/extension-selector.d.ts +27 -0
  789. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
  790. package/dist/modes/interactive/components/extension-selector.js +95 -0
  791. package/dist/modes/interactive/components/extension-selector.js.map +1 -0
  792. package/dist/modes/interactive/components/first-time-setup.d.ts +26 -0
  793. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
  794. package/dist/modes/interactive/components/first-time-setup.js +118 -0
  795. package/dist/modes/interactive/components/first-time-setup.js.map +1 -0
  796. package/dist/modes/interactive/components/footer.d.ts +39 -0
  797. package/dist/modes/interactive/components/footer.d.ts.map +1 -0
  798. package/dist/modes/interactive/components/footer.js +265 -0
  799. package/dist/modes/interactive/components/footer.js.map +1 -0
  800. package/dist/modes/interactive/components/index.d.ts +33 -0
  801. package/dist/modes/interactive/components/index.d.ts.map +1 -0
  802. package/dist/modes/interactive/components/index.js +34 -0
  803. package/dist/modes/interactive/components/index.js.map +1 -0
  804. package/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
  805. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
  806. package/dist/modes/interactive/components/keybinding-hints.js +36 -0
  807. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
  808. package/dist/modes/interactive/components/login-dialog.d.ts +59 -0
  809. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
  810. package/dist/modes/interactive/components/login-dialog.js +289 -0
  811. package/dist/modes/interactive/components/login-dialog.js.map +1 -0
  812. package/dist/modes/interactive/components/markdown-transform.d.ts +4 -0
  813. package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -0
  814. package/dist/modes/interactive/components/markdown-transform.js +20 -0
  815. package/dist/modes/interactive/components/markdown-transform.js.map +1 -0
  816. package/dist/modes/interactive/components/mermaid.d.ts +12 -0
  817. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -0
  818. package/dist/modes/interactive/components/mermaid.js +80 -0
  819. package/dist/modes/interactive/components/mermaid.js.map +1 -0
  820. package/dist/modes/interactive/components/model-selector.d.ts +61 -0
  821. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
  822. package/dist/modes/interactive/components/model-selector.js +380 -0
  823. package/dist/modes/interactive/components/model-selector.js.map +1 -0
  824. package/dist/modes/interactive/components/oauth-selector.d.ts +40 -0
  825. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
  826. package/dist/modes/interactive/components/oauth-selector.js +175 -0
  827. package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
  828. package/dist/modes/interactive/components/pi-logo.d.ts +20 -0
  829. package/dist/modes/interactive/components/pi-logo.d.ts.map +1 -0
  830. package/dist/modes/interactive/components/pi-logo.js +41 -0
  831. package/dist/modes/interactive/components/pi-logo.js.map +1 -0
  832. package/dist/modes/interactive/components/radius-login-selector.d.ts +15 -0
  833. package/dist/modes/interactive/components/radius-login-selector.d.ts.map +1 -0
  834. package/dist/modes/interactive/components/radius-login-selector.js +85 -0
  835. package/dist/modes/interactive/components/radius-login-selector.js.map +1 -0
  836. package/dist/modes/interactive/components/scoped-models-selector.d.ts +47 -0
  837. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
  838. package/dist/modes/interactive/components/scoped-models-selector.js +337 -0
  839. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
  840. package/dist/modes/interactive/components/session-selector-search.d.ts +27 -0
  841. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
  842. package/dist/modes/interactive/components/session-selector-search.js +219 -0
  843. package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
  844. package/dist/modes/interactive/components/session-selector.d.ts +96 -0
  845. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
  846. package/dist/modes/interactive/components/session-selector.js +885 -0
  847. package/dist/modes/interactive/components/session-selector.js.map +1 -0
  848. package/dist/modes/interactive/components/settings-selector.d.ts +98 -0
  849. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
  850. package/dist/modes/interactive/components/settings-selector.js +753 -0
  851. package/dist/modes/interactive/components/settings-selector.js.map +1 -0
  852. package/dist/modes/interactive/components/settings-submenu.d.ts +72 -0
  853. package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -0
  854. package/dist/modes/interactive/components/settings-submenu.js +167 -0
  855. package/dist/modes/interactive/components/settings-submenu.js.map +1 -0
  856. package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
  857. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
  858. package/dist/modes/interactive/components/show-images-selector.js +39 -0
  859. package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
  860. package/dist/modes/interactive/components/skill-invocation-message.d.ts +22 -0
  861. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
  862. package/dist/modes/interactive/components/skill-invocation-message.js +65 -0
  863. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
  864. package/dist/modes/interactive/components/status-indicator.d.ts +32 -0
  865. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -0
  866. package/dist/modes/interactive/components/status-indicator.js +88 -0
  867. package/dist/modes/interactive/components/status-indicator.js.map +1 -0
  868. package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
  869. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
  870. package/dist/modes/interactive/components/theme-selector.js +50 -0
  871. package/dist/modes/interactive/components/theme-selector.js.map +1 -0
  872. package/dist/modes/interactive/components/themed-text.d.ts +17 -0
  873. package/dist/modes/interactive/components/themed-text.d.ts.map +1 -0
  874. package/dist/modes/interactive/components/themed-text.js +29 -0
  875. package/dist/modes/interactive/components/themed-text.js.map +1 -0
  876. package/dist/modes/interactive/components/thinking-selector.d.ts +23 -0
  877. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
  878. package/dist/modes/interactive/components/thinking-selector.js +109 -0
  879. package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
  880. package/dist/modes/interactive/components/tool-execution.d.ts +79 -0
  881. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
  882. package/dist/modes/interactive/components/tool-execution.js +336 -0
  883. package/dist/modes/interactive/components/tool-execution.js.map +1 -0
  884. package/dist/modes/interactive/components/tree-selector.d.ts +96 -0
  885. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
  886. package/dist/modes/interactive/components/tree-selector.js +1255 -0
  887. package/dist/modes/interactive/components/tree-selector.js.map +1 -0
  888. package/dist/modes/interactive/components/trust-selector.d.ts +23 -0
  889. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -0
  890. package/dist/modes/interactive/components/trust-selector.js +91 -0
  891. package/dist/modes/interactive/components/trust-selector.js.map +1 -0
  892. package/dist/modes/interactive/components/user-message-selector.d.ts +31 -0
  893. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
  894. package/dist/modes/interactive/components/user-message-selector.js +122 -0
  895. package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
  896. package/dist/modes/interactive/components/user-message.d.ts +18 -0
  897. package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
  898. package/dist/modes/interactive/components/user-message.js +54 -0
  899. package/dist/modes/interactive/components/user-message.js.map +1 -0
  900. package/dist/modes/interactive/components/visual-truncate.d.ts +48 -0
  901. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
  902. package/dist/modes/interactive/components/visual-truncate.js +66 -0
  903. package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
  904. package/dist/modes/interactive/external-editor.d.ts +13 -0
  905. package/dist/modes/interactive/external-editor.d.ts.map +1 -0
  906. package/dist/modes/interactive/external-editor.js +50 -0
  907. package/dist/modes/interactive/external-editor.js.map +1 -0
  908. package/dist/modes/interactive/interactive-mode.d.ts +528 -0
  909. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
  910. package/dist/modes/interactive/interactive-mode.js +6347 -0
  911. package/dist/modes/interactive/interactive-mode.js.map +1 -0
  912. package/dist/modes/interactive/model-catalog-refresh.d.ts +7 -0
  913. package/dist/modes/interactive/model-catalog-refresh.d.ts.map +1 -0
  914. package/dist/modes/interactive/model-catalog-refresh.js +34 -0
  915. package/dist/modes/interactive/model-catalog-refresh.js.map +1 -0
  916. package/dist/modes/interactive/model-search.d.ts +22 -0
  917. package/dist/modes/interactive/model-search.d.ts.map +1 -0
  918. package/dist/modes/interactive/model-search.js +36 -0
  919. package/dist/modes/interactive/model-search.js.map +1 -0
  920. package/dist/modes/interactive/program-status-reporter.d.ts +34 -0
  921. package/dist/modes/interactive/program-status-reporter.d.ts.map +1 -0
  922. package/dist/modes/interactive/program-status-reporter.js +110 -0
  923. package/dist/modes/interactive/program-status-reporter.js.map +1 -0
  924. package/dist/modes/interactive/session-share.d.ts +18 -0
  925. package/dist/modes/interactive/session-share.d.ts.map +1 -0
  926. package/dist/modes/interactive/session-share.js +195 -0
  927. package/dist/modes/interactive/session-share.js.map +1 -0
  928. package/dist/modes/interactive/theme/dark.json +78 -0
  929. package/dist/modes/interactive/theme/light.json +78 -0
  930. package/dist/modes/interactive/theme/system-theme.d.ts +55 -0
  931. package/dist/modes/interactive/theme/system-theme.d.ts.map +1 -0
  932. package/dist/modes/interactive/theme/system-theme.js +546 -0
  933. package/dist/modes/interactive/theme/system-theme.js.map +1 -0
  934. package/dist/modes/interactive/theme/theme-controller.d.ts +81 -0
  935. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -0
  936. package/dist/modes/interactive/theme/theme-controller.js +210 -0
  937. package/dist/modes/interactive/theme/theme-controller.js.map +1 -0
  938. package/dist/modes/interactive/theme/theme-schema.d.ts +28 -0
  939. package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -0
  940. package/dist/modes/interactive/theme/theme-schema.js +105 -0
  941. package/dist/modes/interactive/theme/theme-schema.js.map +1 -0
  942. package/dist/modes/interactive/theme/theme-tokens.d.ts +257 -0
  943. package/dist/modes/interactive/theme/theme-tokens.d.ts.map +1 -0
  944. package/dist/modes/interactive/theme/theme-tokens.js +94 -0
  945. package/dist/modes/interactive/theme/theme-tokens.js.map +1 -0
  946. package/dist/modes/interactive/theme/theme.d.ts +165 -0
  947. package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
  948. package/dist/modes/interactive/theme/theme.js +917 -0
  949. package/dist/modes/interactive/theme/theme.js.map +1 -0
  950. package/dist/modes/interactive/tui-renderer.d.ts +22 -0
  951. package/dist/modes/interactive/tui-renderer.d.ts.map +1 -0
  952. package/dist/modes/interactive/tui-renderer.js +67 -0
  953. package/dist/modes/interactive/tui-renderer.js.map +1 -0
  954. package/dist/modes/json-event.d.ts +34 -0
  955. package/dist/modes/json-event.d.ts.map +1 -0
  956. package/dist/modes/json-event.js +29 -0
  957. package/dist/modes/json-event.js.map +1 -0
  958. package/dist/modes/print-mode.d.ts +28 -0
  959. package/dist/modes/print-mode.d.ts.map +1 -0
  960. package/dist/modes/print-mode.js +155 -0
  961. package/dist/modes/print-mode.js.map +1 -0
  962. package/dist/modes/rpc/jsonl.d.ts +17 -0
  963. package/dist/modes/rpc/jsonl.d.ts.map +1 -0
  964. package/dist/modes/rpc/jsonl.js +49 -0
  965. package/dist/modes/rpc/jsonl.js.map +1 -0
  966. package/dist/modes/rpc/rpc-client.d.ts +254 -0
  967. package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
  968. package/dist/modes/rpc/rpc-client.js +499 -0
  969. package/dist/modes/rpc/rpc-client.js.map +1 -0
  970. package/dist/modes/rpc/rpc-mode.d.ts +20 -0
  971. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
  972. package/dist/modes/rpc/rpc-mode.js +685 -0
  973. package/dist/modes/rpc/rpc-mode.js.map +1 -0
  974. package/dist/modes/rpc/rpc-types.d.ts +478 -0
  975. package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
  976. package/dist/modes/rpc/rpc-types.js +8 -0
  977. package/dist/modes/rpc/rpc-types.js.map +1 -0
  978. package/dist/package-manager-cli.d.ts +9 -0
  979. package/dist/package-manager-cli.d.ts.map +1 -0
  980. package/dist/package-manager-cli.js +1076 -0
  981. package/dist/package-manager-cli.js.map +1 -0
  982. package/dist/rpc-entry.d.ts +3 -0
  983. package/dist/rpc-entry.d.ts.map +1 -0
  984. package/dist/rpc-entry.js +11 -0
  985. package/dist/rpc-entry.js.map +1 -0
  986. package/dist/utils/abort.d.ts +5 -0
  987. package/dist/utils/abort.d.ts.map +1 -0
  988. package/dist/utils/abort.js +48 -0
  989. package/dist/utils/abort.js.map +1 -0
  990. package/dist/utils/ansi.d.ts +10 -0
  991. package/dist/utils/ansi.d.ts.map +1 -0
  992. package/dist/utils/ansi.js +74 -0
  993. package/dist/utils/ansi.js.map +1 -0
  994. package/dist/utils/changelog.d.ts +22 -0
  995. package/dist/utils/changelog.d.ts.map +1 -0
  996. package/dist/utils/changelog.js +171 -0
  997. package/dist/utils/changelog.js.map +1 -0
  998. package/dist/utils/child-process.d.ts +18 -0
  999. package/dist/utils/child-process.d.ts.map +1 -0
  1000. package/dist/utils/child-process.js +106 -0
  1001. package/dist/utils/child-process.js.map +1 -0
  1002. package/dist/utils/cli-invocation.d.ts +11 -0
  1003. package/dist/utils/cli-invocation.d.ts.map +1 -0
  1004. package/dist/utils/cli-invocation.js +23 -0
  1005. package/dist/utils/cli-invocation.js.map +1 -0
  1006. package/dist/utils/clipboard-command.d.ts +7 -0
  1007. package/dist/utils/clipboard-command.d.ts.map +1 -0
  1008. package/dist/utils/clipboard-command.js +52 -0
  1009. package/dist/utils/clipboard-command.js.map +1 -0
  1010. package/dist/utils/clipboard-image.d.ts +11 -0
  1011. package/dist/utils/clipboard-image.d.ts.map +1 -0
  1012. package/dist/utils/clipboard-image.js +214 -0
  1013. package/dist/utils/clipboard-image.js.map +1 -0
  1014. package/dist/utils/clipboard.d.ts +6 -0
  1015. package/dist/utils/clipboard.d.ts.map +1 -0
  1016. package/dist/utils/clipboard.js +162 -0
  1017. package/dist/utils/clipboard.js.map +1 -0
  1018. package/dist/utils/deprecation.d.ts +4 -0
  1019. package/dist/utils/deprecation.d.ts.map +1 -0
  1020. package/dist/utils/deprecation.js +13 -0
  1021. package/dist/utils/deprecation.js.map +1 -0
  1022. package/dist/utils/exif-orientation.d.ts +5 -0
  1023. package/dist/utils/exif-orientation.d.ts.map +1 -0
  1024. package/dist/utils/exif-orientation.js +157 -0
  1025. package/dist/utils/exif-orientation.js.map +1 -0
  1026. package/dist/utils/frontmatter.d.ts +8 -0
  1027. package/dist/utils/frontmatter.d.ts.map +1 -0
  1028. package/dist/utils/frontmatter.js +27 -0
  1029. package/dist/utils/frontmatter.js.map +1 -0
  1030. package/dist/utils/fs-watch.d.ts +5 -0
  1031. package/dist/utils/fs-watch.d.ts.map +1 -0
  1032. package/dist/utils/fs-watch.js +25 -0
  1033. package/dist/utils/fs-watch.js.map +1 -0
  1034. package/dist/utils/git.d.ts +26 -0
  1035. package/dist/utils/git.d.ts.map +1 -0
  1036. package/dist/utils/git.js +195 -0
  1037. package/dist/utils/git.js.map +1 -0
  1038. package/dist/utils/html.d.ts +7 -0
  1039. package/dist/utils/html.d.ts.map +1 -0
  1040. package/dist/utils/html.js +40 -0
  1041. package/dist/utils/html.js.map +1 -0
  1042. package/dist/utils/image-convert.d.ts +22 -0
  1043. package/dist/utils/image-convert.d.ts.map +1 -0
  1044. package/dist/utils/image-convert.js +84 -0
  1045. package/dist/utils/image-convert.js.map +1 -0
  1046. package/dist/utils/image-process.d.ts +18 -0
  1047. package/dist/utils/image-process.d.ts.map +1 -0
  1048. package/dist/utils/image-process.js +83 -0
  1049. package/dist/utils/image-process.js.map +1 -0
  1050. package/dist/utils/image-resize-core.d.ts +42 -0
  1051. package/dist/utils/image-resize-core.d.ts.map +1 -0
  1052. package/dist/utils/image-resize-core.js +131 -0
  1053. package/dist/utils/image-resize-core.js.map +1 -0
  1054. package/dist/utils/image-resize-worker.d.ts +2 -0
  1055. package/dist/utils/image-resize-worker.d.ts.map +1 -0
  1056. package/dist/utils/image-resize-worker.js +32 -0
  1057. package/dist/utils/image-resize-worker.js.map +1 -0
  1058. package/dist/utils/image-resize.d.ts +16 -0
  1059. package/dist/utils/image-resize.d.ts.map +1 -0
  1060. package/dist/utils/image-resize.js +96 -0
  1061. package/dist/utils/image-resize.js.map +1 -0
  1062. package/dist/utils/json.d.ts +3 -0
  1063. package/dist/utils/json.d.ts.map +1 -0
  1064. package/dist/utils/json.js +7 -0
  1065. package/dist/utils/json.js.map +1 -0
  1066. package/dist/utils/management-http.d.ts +25 -0
  1067. package/dist/utils/management-http.d.ts.map +1 -0
  1068. package/dist/utils/management-http.js +54 -0
  1069. package/dist/utils/management-http.js.map +1 -0
  1070. package/dist/utils/mime.d.ts +3 -0
  1071. package/dist/utils/mime.d.ts.map +1 -0
  1072. package/dist/utils/mime.js +110 -0
  1073. package/dist/utils/mime.js.map +1 -0
  1074. package/dist/utils/open-browser.d.ts +9 -0
  1075. package/dist/utils/open-browser.d.ts.map +1 -0
  1076. package/dist/utils/open-browser.js +25 -0
  1077. package/dist/utils/open-browser.js.map +1 -0
  1078. package/dist/utils/output-files.d.ts +15 -0
  1079. package/dist/utils/output-files.d.ts.map +1 -0
  1080. package/dist/utils/output-files.js +30 -0
  1081. package/dist/utils/output-files.js.map +1 -0
  1082. package/dist/utils/paths.d.ts +51 -0
  1083. package/dist/utils/paths.d.ts.map +1 -0
  1084. package/dist/utils/paths.js +156 -0
  1085. package/dist/utils/paths.js.map +1 -0
  1086. package/dist/utils/photon.d.ts +21 -0
  1087. package/dist/utils/photon.d.ts.map +1 -0
  1088. package/dist/utils/photon.js +121 -0
  1089. package/dist/utils/photon.js.map +1 -0
  1090. package/dist/utils/pi-user-agent.d.ts +3 -0
  1091. package/dist/utils/pi-user-agent.d.ts.map +1 -0
  1092. package/dist/utils/pi-user-agent.js +6 -0
  1093. package/dist/utils/pi-user-agent.js.map +1 -0
  1094. package/dist/utils/shell.d.ts +32 -0
  1095. package/dist/utils/shell.d.ts.map +1 -0
  1096. package/dist/utils/shell.js +235 -0
  1097. package/dist/utils/shell.js.map +1 -0
  1098. package/dist/utils/sleep.d.ts +5 -0
  1099. package/dist/utils/sleep.d.ts.map +1 -0
  1100. package/dist/utils/sleep.js +17 -0
  1101. package/dist/utils/sleep.js.map +1 -0
  1102. package/dist/utils/syntax-highlight.d.ts +18 -0
  1103. package/dist/utils/syntax-highlight.d.ts.map +1 -0
  1104. package/dist/utils/syntax-highlight.js +191 -0
  1105. package/dist/utils/syntax-highlight.js.map +1 -0
  1106. package/dist/utils/text.d.ts +8 -0
  1107. package/dist/utils/text.d.ts.map +1 -0
  1108. package/dist/utils/text.js +9 -0
  1109. package/dist/utils/text.js.map +1 -0
  1110. package/dist/utils/tool-result-images.d.ts +21 -0
  1111. package/dist/utils/tool-result-images.d.ts.map +1 -0
  1112. package/dist/utils/tool-result-images.js +48 -0
  1113. package/dist/utils/tool-result-images.js.map +1 -0
  1114. package/dist/utils/tools-manager.d.ts +13 -0
  1115. package/dist/utils/tools-manager.d.ts.map +1 -0
  1116. package/dist/utils/tools-manager.js +339 -0
  1117. package/dist/utils/tools-manager.js.map +1 -0
  1118. package/dist/utils/version-check.d.ts +19 -0
  1119. package/dist/utils/version-check.d.ts.map +1 -0
  1120. package/dist/utils/version-check.js +81 -0
  1121. package/dist/utils/version-check.js.map +1 -0
  1122. package/dist/utils/windows-self-update.d.ts +3 -0
  1123. package/dist/utils/windows-self-update.d.ts.map +1 -0
  1124. package/dist/utils/windows-self-update.js +77 -0
  1125. package/dist/utils/windows-self-update.js.map +1 -0
  1126. package/dist/utils/wsl.d.ts +3 -0
  1127. package/dist/utils/wsl.d.ts.map +1 -0
  1128. package/dist/utils/wsl.js +15 -0
  1129. package/dist/utils/wsl.js.map +1 -0
  1130. package/dist/utils/zip.d.ts +7 -0
  1131. package/dist/utils/zip.d.ts.map +1 -0
  1132. package/dist/utils/zip.js +60 -0
  1133. package/dist/utils/zip.js.map +1 -0
  1134. package/docs/cli-integration.md +106 -0
  1135. package/docs/cli.md +343 -0
  1136. package/docs/codemode.md +230 -0
  1137. package/docs/compaction.md +463 -0
  1138. package/docs/configuration.md +47 -0
  1139. package/docs/containerization.md +183 -0
  1140. package/docs/custom-provider.md +227 -0
  1141. package/docs/docs.json +220 -0
  1142. package/docs/environment-variables.md +103 -0
  1143. package/docs/extensions.md +3366 -0
  1144. package/docs/how-pi-works.md +49 -0
  1145. package/docs/images/doom-extension.png +0 -0
  1146. package/docs/images/exy.png +0 -0
  1147. package/docs/images/interactive-mode.png +0 -0
  1148. package/docs/images/tree-view.png +0 -0
  1149. package/docs/index.md +39 -0
  1150. package/docs/json.md +226 -0
  1151. package/docs/keybindings.md +195 -0
  1152. package/docs/llama-cpp.md +129 -0
  1153. package/docs/mcp.md +274 -0
  1154. package/docs/message-types.md +279 -0
  1155. package/docs/models-configuration.md +200 -0
  1156. package/docs/models.md +226 -0
  1157. package/docs/nvidia-rtx-llama-cpp.md +96 -0
  1158. package/docs/packages.md +153 -0
  1159. package/docs/prompt-templates.md +59 -0
  1160. package/docs/providers.md +247 -0
  1161. package/docs/quickstart.md +140 -0
  1162. package/docs/rpc-commands.md +860 -0
  1163. package/docs/rpc-extension-ui.md +200 -0
  1164. package/docs/rpc.md +195 -0
  1165. package/docs/sdk.md +147 -0
  1166. package/docs/security.md +99 -0
  1167. package/docs/session-format.md +293 -0
  1168. package/docs/sessions.md +74 -0
  1169. package/docs/settings.md +173 -0
  1170. package/docs/shell-aliases.md +93 -0
  1171. package/docs/skills.md +93 -0
  1172. package/docs/slash-commands.md +61 -0
  1173. package/docs/terminal-setup.md +235 -0
  1174. package/docs/termux.md +117 -0
  1175. package/docs/themes.md +138 -0
  1176. package/docs/tmux.md +61 -0
  1177. package/docs/tui.md +197 -0
  1178. package/docs/usage.md +94 -0
  1179. package/docs/virtual-models.md +114 -0
  1180. package/docs/windows.md +108 -0
  1181. package/package.json +37 -37
  1182. package/schemas/keybindings.schema.json +393 -0
  1183. package/schemas/models.schema.json +1236 -0
  1184. package/schemas/settings.schema.json +800 -0
  1185. package/schemas/theme.schema.json +365 -0
  1186. package/LICENSE +0 -21
  1187. package/bin/mars.cjs +0 -133
@@ -0,0 +1,7 @@
1
+ import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url);
2
+ import{clampOpenAIPromptCacheKey}from"./chunk-PRRNXB7S.js";import{OpenAI}from"./chunk-CF5GWZHW.js";import{applyOpenRouterReportedCost,isOpenRouterModel}from"./chunk-P7FPUEYA.js";import{buildCopilotDynamicHeaders,hasCopilotVisionInput}from"./chunk-PGXDEOVV.js";import{shortHash}from"./chunk-PJACZCIR.js";import{appendGrammarToolInputJsonDelta,buildBaseOptions,clampThinkingBudgetToAnswerRoom,closeGrammarToolInputJson,createGrammarToolInputProperties,getGrammarToolInput,getJsonSchemaToolParameters,resolveGrammarConstrainedSampling,resolveJsonSchemaStrictSampling,resolveSamplingParams,thinkingBudgetForLevel,transformMessages}from"./chunk-K5TQM7UY.js";import{sanitizeSurrogates}from"./chunk-L2ZPNLYD.js";import{retryProviderRequest}from"./chunk-PMRZO46Y.js";import{formatProviderError,normalizeProviderError}from"./chunk-FR2OJIAF.js";import{calculateCost,clampThinkingLevel,getDeclaredTools,resolveTranscript,resolveTranscriptTools}from"./chunk-GXW3X65X.js";import{headersToRecord}from"./chunk-UTB4DTYQ.js";import{ToolCallArgumentsStream}from"./chunk-FFMDRXC4.js";import{getProviderEnvValue}from"./chunk-7DDKXS2Q.js";import{AssistantMessageEventStream}from"./chunk-LPXNMA2W.js";import{getIdentityHeaders,getSystemMessageText,renderSystemMessageUpdate}from"./chunk-V6KH5QG4.js";import"./chunk-JXWJOIH4.js";function hasHeader(headers,name){if(!headers)return!1;let expected=name.toLowerCase();for(let[key,value]of Object.entries(headers))if(key.toLowerCase()===expected&&value!==null&&value.trim().length>0)return!0;return!1}function getClientApiKey(provider,apiKey,headers){if(apiKey)return apiKey;if(hasHeader(headers,"authorization")||hasHeader(headers,"cf-aig-authorization"))return"unused";throw new Error(`No API key for provider: ${provider}`)}function hasToolHistory(messages){for(let msg of messages)if(msg.role==="toolResult"||msg.role==="assistant"&&msg.content.some(block=>block.type==="toolCall"))return!0;return!1}function isTextContentBlock(block){return block.type==="text"}function isThinkingContentBlock(block){return block.type==="thinking"}function isToolCallBlock(block){return block.type==="toolCall"}function isImageContentBlock(block){return block.type==="image"}function isReasoningDetailObject(detail){return typeof detail=="object"&&detail!==null&&!Array.isArray(detail)}function hasValidCommonReasoningDetailFields(candidate){return(candidate.id===void 0||candidate.id===null||typeof candidate.id=="string")&&(candidate.format===void 0||typeof candidate.format=="string")&&(candidate.index===void 0||typeof candidate.index=="number")}function isOpenAIReasoningDetail(detail){if(!isReasoningDetailObject(detail)||!hasValidCommonReasoningDetailFields(detail))return!1;switch(detail.type){case"reasoning.summary":return typeof detail.summary=="string";case"reasoning.encrypted":return typeof detail.data=="string";case"reasoning.text":return typeof detail.text=="string"&&(detail.signature===void 0||detail.signature===null||typeof detail.signature=="string");default:return!1}}function parseOpenAIReasoningDetails(signature){if(signature)try{let parsed=JSON.parse(signature);return Array.isArray(parsed)&&parsed.length>0&&parsed.every(isOpenAIReasoningDetail)?parsed:void 0}catch{return}}function parseLegacyEncryptedReasoningDetail(signature){if(signature)try{let parsed=JSON.parse(signature);return isOpenAIReasoningDetail(parsed)&&parsed.type==="reasoning.encrypted"&&typeof parsed.id=="string"&&parsed.id.length>0&&parsed.data.length>0?parsed:void 0}catch{return}}function fillMissingCommonReasoningDetailFields(target,source){target.id??=source.id,target.format||=source.format,target.index??=source.index}function appendOpenAIReasoningDetail(details,detail){let lastDetail=details[details.length-1];if(detail.type==="reasoning.text"&&lastDetail?.type==="reasoning.text"){lastDetail.text+=detail.text,lastDetail.signature||=detail.signature,fillMissingCommonReasoningDetailFields(lastDetail,detail);return}if(detail.type==="reasoning.summary"&&lastDetail?.type==="reasoning.summary"){lastDetail.summary+=detail.summary,fillMissingCommonReasoningDetailFields(lastDetail,detail);return}details.push({...detail})}var OPENAI_COMPLETIONS_REASONING_FIELDS=["reasoning","reasoning_content","reasoning_text"];function isOpenAICompletionsReasoningField(field){return OPENAI_COMPLETIONS_REASONING_FIELDS.includes(field)}function resolveCacheRetention(cacheRetention,env){return cacheRetention||(getProviderEnvValue("PI_CACHE_RETENTION",env)==="long"?"long":"short")}var stream=(model,context,options)=>{let stream2=new AssistantMessageEventStream,normalizedContext=resolveTranscript(context,getCompat(model).supportsMidConvoSystemMessages);return(async()=>{let output={role:"assistant",content:[],api:model.api,provider:model.provider,model:model.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"pending",timestamp:Date.now()},streamedReasoningDetails,applyStreamedReasoningDetails=block=>{streamedReasoningDetails!==void 0&&(block.thinkingSignature=JSON.stringify(streamedReasoningDetails))};try{let apiKey=getClientApiKey(model.provider,options?.apiKey,options?.headers),compat=getCompat(model),grammarToolInputProperties=createGrammarToolInputProperties(getDeclaredTools(normalizedContext.messages),compat.supportsOpenAIGrammarTools),cacheRetention=resolveCacheRetention(options?.cacheRetention,options?.env),cacheSessionId=cacheRetention==="none"?void 0:options?.sessionId,client=createClient(model,normalizedContext,apiKey,options?.headers,options?.identity,options?.fetch,cacheSessionId,compat),params=buildParams(model,normalizedContext,options,compat,cacheRetention,grammarToolInputProperties),nextParams=await options?.onPayload?.(params,model);nextParams!==void 0&&(params=nextParams);let requestOptions={...options?.signal?{signal:options.signal}:{},...options?.timeoutMs!==void 0?{timeout:options.timeoutMs}:{},maxRetries:0},{data:openaiStream,response}=await retryProviderRequest(()=>client.chat.completions.create(params,requestOptions).withResponse(),{maxRetries:options?.maxRetries,maxRetryDelayMs:options?.maxRetryDelayMs,signal:options?.signal});await options?.onResponse?.({status:response.status,headers:headersToRecord(response.headers)},model),stream2.push({type:"start",partial:output});let textBlock=null,thinkingBlock=null,hasFinishReason=!1,toolCallBlocksByIndex=new Map,toolCallBlocksById=new Map,toolCallStates=new Map,blocks=output.content,getContentIndex=block=>blocks.indexOf(block),customInput=property=>({kind:"custom",property,buffer:{input:"",started:!1,closed:!1}}),finishBlock=block=>{let contentIndex=getContentIndex(block);if(contentIndex!==-1){if(block.type==="text")stream2.push({type:"text_end",contentIndex,content:block.text,partial:output});else if(block.type==="thinking")applyStreamedReasoningDetails(block),stream2.push({type:"thinking_end",contentIndex,content:block.thinking,partial:output});else if(block.type==="toolCall"){let input=toolCallStates.get(block).input;if(toolCallStates.delete(block),input.kind==="custom"){let delta=closeGrammarToolInputJson(input.buffer,input.property,void 0);delta!==void 0&&stream2.push({type:"toolcall_delta",contentIndex,delta,partial:output})}else Object.assign(block,input.arguments.finish());stream2.push({type:"toolcall_end",contentIndex,toolCall:block,partial:output})}}},ensureTextBlock=()=>(textBlock||(textBlock={type:"text",text:""},blocks.push(textBlock),stream2.push({type:"text_start",contentIndex:getContentIndex(textBlock),partial:output})),textBlock),ensureThinkingBlock=thinkingSignature=>(thinkingBlock||(thinkingBlock={type:"thinking",thinking:"",thinkingSignature},blocks.push(thinkingBlock),stream2.push({type:"thinking_start",contentIndex:getContentIndex(thinkingBlock),partial:output})),thinkingBlock),ensureToolCallBlock=toolCall=>{let streamIndex=typeof toolCall.index=="number"?toolCall.index:void 0,name=toolCall.function?.name??toolCall.custom?.name??"",block=streamIndex!==void 0?toolCallBlocksByIndex.get(streamIndex):void 0;if(!block&&toolCall.id&&(block=toolCallBlocksById.get(toolCall.id)),!block){let customInputProperty=toolCall.custom&&!toolCall.function?grammarToolInputProperties.get(name)??"input":void 0;block={type:"toolCall",id:toolCall.id||"",name,arguments:customInputProperty!==void 0?{[customInputProperty]:""}:{}},toolCallStates.set(block,{streamIndex,input:customInputProperty!==void 0?customInput(customInputProperty):{kind:"json",arguments:new ToolCallArgumentsStream}}),streamIndex!==void 0&&toolCallBlocksByIndex.set(streamIndex,block),toolCall.id&&toolCallBlocksById.set(toolCall.id,block),blocks.push(block),stream2.push({type:"toolcall_start",contentIndex:getContentIndex(block),partial:output})}let state=toolCallStates.get(block);if(streamIndex!==void 0&&state.streamIndex===void 0&&(state.streamIndex=streamIndex,toolCallBlocksByIndex.set(streamIndex,block)),toolCall.id&&toolCallBlocksById.set(toolCall.id,block),!block.name&&name&&(block.name=name),toolCall.custom&&!toolCall.function&&state.input.kind!=="custom"){let customInputProperty=grammarToolInputProperties.get(block.name)??"input";block.arguments={[customInputProperty]:""},state.input=customInput(customInputProperty)}return{block,state}};for await(let chunk of openaiStream){if(await options?.onProviderStreamEvent?.(chunk,model),!chunk||typeof chunk!="object")continue;output.responseId||=chunk.id,typeof chunk.model=="string"&&chunk.model.length>0&&chunk.model!==model.id&&(output.responseModel||=chunk.model),chunk.usage&&(output.usage=parseChunkUsage(chunk.usage,model));let choice=Array.isArray(chunk.choices)?chunk.choices[0]:void 0;if(choice){if(!chunk.usage&&choice.usage&&(output.usage=parseChunkUsage(choice.usage,model)),choice.finish_reason){output.rawStopReason=choice.finish_reason;let finishReasonResult=mapStopReason(choice.finish_reason);output.stopReason=finishReasonResult.stopReason,finishReasonResult.errorMessage&&(output.errorMessage=finishReasonResult.errorMessage),hasFinishReason=!0}if(choice.delta){let reasoningFields=["reasoning_content","reasoning","reasoning_text"],deltaFields=choice.delta,foundReasoningField=null;for(let field of reasoningFields){let value=deltaFields[field];if(typeof value=="string"&&value.length>0){foundReasoningField=field;break}}if(foundReasoningField){let delta=deltaFields[foundReasoningField];if(typeof delta=="string"&&delta.length>0){let thinkingSignature=model.provider==="opencode-go"&&foundReasoningField==="reasoning"?"reasoning_content":foundReasoningField,block=ensureThinkingBlock(thinkingSignature);block.thinking+=delta,stream2.push({type:"thinking_delta",contentIndex:getContentIndex(block),delta,partial:output})}}let reasoningDetails=choice.delta.reasoning_details;if(Array.isArray(reasoningDetails))for(let detail of reasoningDetails)isOpenAIReasoningDetail(detail)&&(ensureThinkingBlock(""),streamedReasoningDetails??=[],appendOpenAIReasoningDetail(streamedReasoningDetails,detail));if(choice.delta.content!==null&&choice.delta.content!==void 0&&choice.delta.content.length>0){let block=ensureTextBlock();block.text+=choice.delta.content,stream2.push({type:"text_delta",contentIndex:getContentIndex(block),delta:choice.delta.content,partial:output})}if(choice?.delta?.tool_calls)for(let toolCall of choice.delta.tool_calls){let{block,state}=ensureToolCallBlock(toolCall);!block.id&&toolCall.id&&(block.id=toolCall.id,toolCallBlocksById.set(toolCall.id,block));let name=toolCall.function?.name??toolCall.custom?.name;!block.name&&name&&(block.name=name);let delta="",input=state.input;toolCall.function?.arguments&&input.kind==="json"?(delta=toolCall.function.arguments,block.arguments=input.arguments.append(delta)):toolCall.custom?.input&&input.kind==="custom"&&(delta=appendGrammarToolInputJsonDelta(input.buffer,input.property,toolCall.custom.input)??"",block.arguments={[input.property]:input.buffer.input}),stream2.push({type:"toolcall_delta",contentIndex:getContentIndex(block),delta,partial:output})}}}}for(let block of blocks)finishBlock(block);if(options?.signal?.aborted)throw new Error("Request was aborted");if(output.stopReason==="aborted")throw new Error("Request was aborted");if(!hasFinishReason&&!compat.supportsFinishReason&&(output.stopReason=output.content.some(block=>block.type==="toolCall")?"toolUse":"stop"),output.stopReason==="error")throw new Error(output.errorMessage||"Provider returned an error stop reason");if(compat.supportsFinishReason&&!hasFinishReason||output.stopReason==="pending")throw new Error("Stream ended without finish_reason");stream2.push({type:"done",reason:output.stopReason,message:output}),stream2.end()}catch(error){for(let block of output.content)block.type==="thinking"&&applyStreamedReasoningDetails(block);output.stopReason=options?.signal?.aborted?"aborted":"error",output.errorMessage=formatProviderError(normalizeProviderError(error));let rawMetadata=error?.error?.metadata?.raw;rawMetadata&&!output.errorMessage.includes(String(rawMetadata))&&(output.errorMessage+=`
3
+ ${rawMetadata}`),stream2.push({type:"error",reason:output.stopReason,error:output}),stream2.end()}})(),stream2},streamSimple=(model,context,options)=>{getClientApiKey(model.provider,options?.apiKey,options?.headers);let base={...buildBaseOptions(model,context,options,options?.apiKey),toolChoice:options?.toolChoice},clampedReasoning=options?.reasoning?clampThinkingLevel(model,options.reasoning):void 0;return stream(model,context,{...base,reasoningEffort:clampedReasoning==="off"?void 0:clampedReasoning,thinkingBudgets:options?.thinkingBudgets})};function createClient(model,context,apiKey,optionsHeaders,identity,fetch,sessionId,compat=getCompat(model)){let headers={...getIdentityHeaders(model,identity),...model.headers};if(model.provider==="github-copilot"){let hasImages=hasCopilotVisionInput(context.messages),copilotHeaders=buildCopilotDynamicHeaders({messages:context.messages,hasImages});Object.assign(headers,copilotHeaders)}return sessionId&&compat.sendSessionAffinityHeaders&&(compat.sessionAffinityFormat==="openrouter"?headers["x-session-id"]=sessionId:(compat.sessionAffinityFormat==="openai"&&(headers.session_id=sessionId),headers["x-client-request-id"]=sessionId,headers["x-session-affinity"]=sessionId)),optionsHeaders&&Object.assign(headers,optionsHeaders),new OpenAI({apiKey,baseURL:model.baseUrl,dangerouslyAllowBrowser:!0,fetch,defaultHeaders:headers})}function buildParams(model,context,options,compat=getCompat(model),cacheRetention=resolveCacheRetention(options?.cacheRetention,options?.env),grammarToolInputProperties=createGrammarToolInputProperties(getDeclaredTools(context.messages),compat.supportsOpenAIGrammarTools)){let transcriptTools=resolveTranscriptTools(context.messages,compat.supportsMidConvoSystemMessages===!0&&compat.supportsMidConvoToolAdditions===!0?"additions":"none"),messages=convertMessages(model,context,compat,{grammarToolInputProperties}),cacheControl=getCompatCacheControl(compat,cacheRetention),promptCacheKeyMode=compat.promptCacheKeyMode??"auto",supportsPromptCacheKey=promptCacheKeyMode==="enabled"||promptCacheKeyMode==="auto"&&(model.baseUrl.includes("api.openai.com")||cacheRetention==="long"&&compat.supportsLongCacheRetention),params={model:model.id,messages,stream:!0,prompt_cache_key:cacheRetention!=="none"&&supportsPromptCacheKey?clampOpenAIPromptCacheKey(options?.sessionId):void 0,prompt_cache_retention:cacheRetention==="long"&&compat.supportsLongCacheRetention?"24h":void 0};compat.supportsUsageInStreaming!==!1&&(params.stream_options={include_usage:!0}),compat.supportsStore&&(params.store=!1),options?.maxTokens&&(compat.maxTokensField==="max_tokens"?params.max_tokens=options.maxTokens:params.max_completion_tokens=options.maxTokens),options?.temperature!==void 0&&(params.temperature=options.temperature),transcriptTools.requestTools.length>0?(params.tools=convertTools(transcriptTools.requestTools,compat),compat.zaiToolStream&&(params.tool_stream=!0)):hasToolHistory(context.messages)&&(params.tools=[]),cacheControl&&applyAnthropicCacheControl(messages,params.tools,cacheControl),options?.toolChoice&&(params.tool_choice=options.toolChoice),compat.vllmPriority!==void 0&&(params.priority=compat.vllmPriority);let thinkingTokenBudgetField=resolveThinkingTokenBudgetField(compat),thinkingBudget=resolveClampedThinkingBudget(model,options,params);if(compat.thinkingFormat==="zai"&&model.reasoning){let zaiParams=params;if(zaiParams.thinking=options?.reasoningEffort?{type:"enabled",clear_thinking:!1}:{type:"disabled"},options?.reasoningEffort&&compat.supportsReasoningEffort){let mappedEffort=model.thinkingLevelMap?.[options.reasoningEffort],effort=mappedEffort===void 0?options.reasoningEffort:mappedEffort;typeof effort=="string"&&(zaiParams.reasoning_effort=effort)}}else if(compat.thinkingFormat==="qwen"&&model.reasoning){if(params.enable_thinking=!!options?.reasoningEffort,options?.reasoningEffort&&compat.supportsReasoningEffort){let effort=model.thinkingLevelMap?.[options.reasoningEffort]??options.reasoningEffort;typeof effort=="string"&&(params.reasoning_effort=effort)}}else if(compat.thinkingFormat==="qwen-chat-template"&&model.reasoning)params.chat_template_kwargs={enable_thinking:!!options?.reasoningEffort,preserve_thinking:!0};else if(compat.thinkingFormat==="chat-template"&&model.reasoning){let chatTemplateKwargs=buildChatTemplateValues(model,options,compat.chatTemplateKwargs,thinkingBudget);chatTemplateKwargs&&(params.chat_template_kwargs=chatTemplateKwargs)}else if(compat.thinkingFormat==="baseten"&&model.reasoning){let basetenParams=params,chatTemplateArgs=buildChatTemplateValues(model,options,compat.chatTemplateArgs,thinkingBudget);if(chatTemplateArgs&&(basetenParams.chat_template_args=chatTemplateArgs),compat.supportsReasoningEffort){let requestedEffort=options?.reasoningEffort,mappedEffort=requestedEffort?model.thinkingLevelMap?.[requestedEffort]:model.thinkingLevelMap?.off,effort=mappedEffort===void 0?requestedEffort:mappedEffort;typeof effort=="string"&&(basetenParams.reasoning_effort=effort)}}else if(compat.thinkingFormat==="deepseek"&&model.reasoning)options?.reasoningEffort?params.thinking={type:"enabled"}:model.thinkingLevelMap?.off!==null&&(params.thinking={type:"disabled"}),options?.reasoningEffort&&compat.supportsReasoningEffort&&(params.reasoning_effort=model.thinkingLevelMap?.[options.reasoningEffort]??options.reasoningEffort);else if(compat.thinkingFormat==="openrouter"&&model.reasoning){let openRouterParams=params;options?.reasoningEffort?openRouterParams.reasoning={effort:model.thinkingLevelMap?.[options.reasoningEffort]??options.reasoningEffort}:model.thinkingLevelMap?.off!==null&&(openRouterParams.reasoning={effort:model.thinkingLevelMap?.off??"none"})}else if(compat.thinkingFormat==="ant-ling"&&model.reasoning&&options?.reasoningEffort){let effort=model.thinkingLevelMap?.[options.reasoningEffort];typeof effort=="string"&&(params.reasoning={effort})}else if(compat.thinkingFormat==="together"&&model.reasoning){let togetherParams=params;togetherParams.reasoning={enabled:!!options?.reasoningEffort},options?.reasoningEffort&&compat.supportsReasoningEffort&&(togetherParams.reasoning_effort=model.thinkingLevelMap?.[options.reasoningEffort]??options.reasoningEffort)}else if(compat.thinkingFormat==="string-thinking"&&model.reasoning){let stringThinkingParams=params;options?.reasoningEffort?stringThinkingParams.thinking=model.thinkingLevelMap?.[options.reasoningEffort]??options.reasoningEffort:model.thinkingLevelMap?.off!==null&&(stringThinkingParams.thinking=model.thinkingLevelMap?.off??"none")}else if(options?.reasoningEffort&&model.reasoning&&compat.supportsReasoningEffort)params.reasoning_effort=model.thinkingLevelMap?.[options.reasoningEffort]??options.reasoningEffort;else if(!options?.reasoningEffort&&model.reasoning&&compat.supportsReasoningEffort){let offValue=model.thinkingLevelMap?.off;typeof offValue=="string"&&(params.reasoning_effort=offValue)}if(thinkingTokenBudgetField&&thinkingBudget!==void 0&&Object.assign(params,{[thinkingTokenBudgetField]:thinkingBudget}),model.compat?.openRouterRouting&&(params.provider=model.compat.openRouterRouting),model.compat?.vercelGatewayRouting){let routing=model.compat.vercelGatewayRouting;if(routing.only||routing.order){let gatewayOptions={};routing.only&&(gatewayOptions.only=routing.only),routing.order&&(gatewayOptions.order=routing.order),params.providerOptions={gateway:gatewayOptions}}}let samplingParams=resolveSamplingParams(model,options?.reasoningEffort??"off",options?.samplingParams);return samplingParams&&Object.assign(params,samplingParams),params}function resolveThinkingTokenBudgetField(compat){if(compat.thinkingTokenBudgetField)return compat.thinkingTokenBudgetField;if(compat.supportsThinkingTokenBudget)return"thinking_token_budget"}function resolveClampedThinkingBudget(model,options,params){if(!options?.reasoningEffort||!model.reasoning)return;let ceiling=params.max_tokens??params.max_completion_tokens??model.maxTokens,budget=clampThinkingBudgetToAnswerRoom(thinkingBudgetForLevel(options.reasoningEffort,options.thinkingBudgets),ceiling);return budget>0?budget:void 0}function buildChatTemplateValues(model,options,values,thinkingBudget){let resolvedValues={};for(let[key,value]of Object.entries(values)){let resolved=resolveChatTemplateKwargValue(model,options,value,thinkingBudget);resolved!==void 0&&(resolvedValues[key]=resolved)}return Object.keys(resolvedValues).length>0?resolvedValues:void 0}function resolveChatTemplateKwargValue(model,options,value,thinkingBudget){if(typeof value!="object"||value===null)return value;let reasoningEffort=options?.reasoningEffort;if(!reasoningEffort&&value.omitWhenOff)return;if(value.$var==="thinking.enabled")return!!reasoningEffort;if(value.$var==="thinking.budget")return thinkingBudget;let mappedValue=reasoningEffort?model.thinkingLevelMap?.[reasoningEffort]:model.thinkingLevelMap?.off;return mappedValue===void 0?reasoningEffort:typeof mappedValue=="string"?mappedValue:void 0}function getCompatCacheControl(compat,cacheRetention){if(compat.cacheControlFormat!=="anthropic"||cacheRetention==="none")return;let ttl=cacheRetention==="long"&&compat.supportsLongCacheRetention?"1h":void 0;return{type:"ephemeral",...ttl?{ttl}:{}}}function applyAnthropicCacheControl(messages,tools,cacheControl){addCacheControlToSystemPrompt(messages,cacheControl),addCacheControlToLastTool(tools,cacheControl),addCacheControlToLastConversationMessage(messages,cacheControl)}function addCacheControlToSystemPrompt(messages,cacheControl){for(let message of messages)if(message.role==="system"||message.role==="developer"){addCacheControlToInstructionMessage(message,cacheControl);return}}function addCacheControlToLastConversationMessage(messages,cacheControl){for(let i=messages.length-1;i>=0;i--){let message=messages[i];if((message.role==="user"||message.role==="assistant"||message.role==="tool")&&addCacheControlToMessage(message,cacheControl))return}}function addCacheControlToLastTool(tools,cacheControl){if(!tools||tools.length===0)return;let lastTool=tools[tools.length-1];lastTool.cache_control=cacheControl}function addCacheControlToInstructionMessage(message,cacheControl){return addCacheControlToTextContent(message,cacheControl)}function addCacheControlToMessage(message,cacheControl){return message.role==="user"||message.role==="assistant"||message.role==="tool"?addCacheControlToTextContent(message,cacheControl):!1}function addCacheControlToTextContent(message,cacheControl){let content=message.content;if(typeof content=="string")return content.length===0?!1:(message.content=[{type:"text",text:content,cache_control:cacheControl}],!0);if(!Array.isArray(content))return!1;for(let i=content.length-1;i>=0;i--){let part=content[i];if(part?.type==="text"){let textPart=part;return textPart.cache_control=cacheControl,!0}}return!1}function convertMessages(model,context,compat,options){let normalizedContext=resolveTranscript(context,compat.supportsMidConvoSystemMessages),params=[],normalizeToolCallId=id=>{if(id.includes("|")){let separatorIndex=id.indexOf("|"),callId=id.slice(0,separatorIndex).replace(/[^a-zA-Z0-9_-]/g,"_"),itemId=id.slice(separatorIndex+1).replace(/[^a-zA-Z0-9_-]/g,"_"),combinedId=itemId.length>0?`${callId}_${itemId}`:callId;if(combinedId.length<=40)return combinedId;let hash=shortHash(id).slice(0,8);return`${callId.slice(0,Math.max(1,40-hash.length-1))}_${hash}`}return model.provider==="openai"&&id.length>40?id.slice(0,40):id},transformedMessages=transformMessages(normalizedContext.messages,model,id=>normalizeToolCallId(id)),transcriptTools=resolveTranscriptTools(normalizedContext.messages,compat.supportsMidConvoSystemMessages===!0&&compat.supportsMidConvoToolAdditions===!0?"additions":"none"),instructionRole=model.reasoning&&compat.supportsDeveloperRole?"developer":"system",lastRole=null,systemIndex=0;for(let i=0;i<transformedMessages.length;i++){let msg=transformedMessages[i];if(compat.requiresAssistantAfterToolResult&&lastRole==="toolResult"&&msg.role==="user"&&params.push({role:"assistant",content:"I have processed the tool results."}),msg.role==="system"){let addedTools=systemIndex++>=transcriptTools.foldedSystemMessages?msg.toolsAdded??[]:[];if(addedTools.length>0){let kimiToolMessage={role:"system",tools:convertTools(addedTools,compat)};params.push(kimiToolMessage)}let text=i===0?getSystemMessageText(msg):renderSystemMessageUpdate(msg);text.length>0&&params.push({role:instructionRole,content:sanitizeSurrogates(text)})}else if(msg.role==="user")if(typeof msg.content=="string")params.push({role:"user",content:sanitizeSurrogates(msg.content)});else{let content=msg.content.filter(item=>item.type!=="text"||item.text.length>0).map(item=>item.type==="text"?{type:"text",text:sanitizeSurrogates(item.text)}:{type:"image_url",image_url:{url:`data:${item.mimeType};base64,${item.data}`}});if(content.length===0)continue;params.push({role:"user",content})}else if(msg.role==="assistant"){let assistantMsg={role:"assistant",content:compat.requiresAssistantAfterToolResult||compat.requiresNonNullAssistantContent?"":null},assistantTextParts=msg.content.filter(isTextContentBlock).filter(block=>block.text.trim().length>0).map(block=>({type:"text",text:sanitizeSurrogates(block.text)})),assistantText=assistantTextParts.map(part=>part.text).join(""),thinkingBlocks=msg.content.filter(isThinkingContentBlock),toolCalls=msg.content.filter(isToolCallBlock),signedReasoningDetails=thinkingBlocks.map(block=>parseOpenAIReasoningDetails(block.thinkingSignature)).find(details=>details!==void 0),legacyReasoningDetails=toolCalls.map(toolCall=>parseLegacyEncryptedReasoningDetail(toolCall.thoughtSignature)).filter(detail=>detail!==void 0),preservedReasoningDetails=signedReasoningDetails??(legacyReasoningDetails.length>0?legacyReasoningDetails:void 0),nonEmptyThinkingBlocks=thinkingBlocks.filter(block=>block.thinking.trim().length>0);if(nonEmptyThinkingBlocks.length>0){if(compat.requiresThinkingAsText){let thinkingText=nonEmptyThinkingBlocks.map(block=>sanitizeSurrogates(block.thinking)).join(`
4
+
5
+ `);assistantMsg.content=[{type:"text",text:thinkingText},...assistantTextParts]}else if(assistantText.length>0&&(assistantMsg.content=assistantText),!preservedReasoningDetails){let signature=nonEmptyThinkingBlocks[0].thinkingSignature;model.provider==="opencode-go"&&signature==="reasoning"&&(signature="reasoning_content"),signature&&isOpenAICompletionsReasoningField(signature)&&(assistantMsg[signature]=nonEmptyThinkingBlocks.map(block=>block.thinking).join(`
6
+ `))}}else assistantText.length>0&&(assistantMsg.content=assistantText);toolCalls.length>0&&(assistantMsg.tool_calls=toolCalls.map(tc=>{let customInputProperty=options?.grammarToolInputProperties?.get(tc.name);return customInputProperty!==void 0?{id:tc.id,type:"custom",custom:{name:tc.name,input:sanitizeSurrogates(getGrammarToolInput(tc.name,tc.arguments,customInputProperty))}}:{id:tc.id,type:"function",function:{name:tc.name,arguments:JSON.stringify(tc.arguments)}}})),preservedReasoningDetails&&(assistantMsg.reasoning_details=preservedReasoningDetails),compat.requiresReasoningContentOnAssistantMessages&&model.reasoning&&assistantMsg.reasoning_content===void 0&&(assistantMsg.reasoning_content="");let content=assistantMsg.content;if(!(content!=null&&content.length>0)&&!assistantMsg.tool_calls)continue;params.push(assistantMsg)}else if(msg.role==="toolResult"){let imageBlocks=[],j=i;for(;j<transformedMessages.length&&transformedMessages[j].role==="toolResult";j++){let toolMsg=transformedMessages[j],textResult=toolMsg.content.filter(isTextContentBlock).map(block=>block.text).join(`
7
+ `),hasImages=toolMsg.content.some(c=>c.type==="image"),toolResultText=textResult.trim().length>0?textResult:hasImages?"(see attached image)":"(no tool output)",toolResultMsg={role:"tool",content:sanitizeSurrogates(toolResultText),tool_call_id:toolMsg.toolCallId};if(compat.requiresToolResultName&&toolMsg.toolName&&(toolResultMsg.name=toolMsg.toolName),params.push(toolResultMsg),hasImages&&model.input.includes("image"))for(let block of toolMsg.content)isImageContentBlock(block)&&imageBlocks.push({type:"image_url",image_url:{url:`data:${block.mimeType};base64,${block.data}`}})}i=j-1,imageBlocks.length>0?(compat.requiresAssistantAfterToolResult&&params.push({role:"assistant",content:"I have processed the tool results."}),params.push({role:"user",content:[{type:"text",text:"Attached image(s) from tool result:"},...imageBlocks]}),lastRole="user"):lastRole="toolResult";continue}lastRole=msg.role}return params}function convertTools(tools,compat){return tools.map(tool=>{let grammar=resolveGrammarConstrainedSampling(tool,compat.supportsOpenAIGrammarTools);if(grammar)return{type:"custom",custom:{name:tool.name,description:tool.description,format:{type:"grammar",grammar:{syntax:grammar.format,definition:grammar.definition}}}};let strict=resolveJsonSchemaStrictSampling(tool,compat.supportsStrictMode!==!1);return{type:"function",function:{name:tool.name,description:tool.description,parameters:getJsonSchemaToolParameters(tool,strict),...compat.supportsStrictMode!==!1&&{strict:strict??!1}}}})}function parseChunkUsage(rawUsage,model){let promptTokens=rawUsage.prompt_tokens||0,cacheReadTokens=rawUsage.prompt_tokens_details?.cached_tokens??rawUsage.prompt_cache_hit_tokens??rawUsage.cached_tokens??0,cacheWriteTokens=rawUsage.prompt_tokens_details?.cache_write_tokens||0,input=Math.max(0,promptTokens-cacheReadTokens-cacheWriteTokens),outputTokens=rawUsage.completion_tokens||0,usage={input,output:outputTokens,cacheRead:cacheReadTokens,cacheWrite:cacheWriteTokens,reasoning:rawUsage.completion_tokens_details?.reasoning_tokens||0,totalTokens:input+outputTokens+cacheReadTokens+cacheWriteTokens,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}};return calculateCost(model,usage),isOpenRouterModel(model)&&applyOpenRouterReportedCost(usage,rawUsage),usage}function mapStopReason(reason){if(reason===null)return{stopReason:"stop"};switch(reason){case"stop":case"end":return{stopReason:"stop"};case"length":return{stopReason:"length"};case"function_call":case"tool_calls":return{stopReason:"toolUse"};case"content_filter":return{stopReason:"error",errorMessage:"Provider finish_reason: content_filter"};case"network_error":return{stopReason:"error",errorMessage:"Provider finish_reason: network_error"};default:return{stopReason:"error",errorMessage:`Provider finish_reason: ${reason}`}}}function detectCompat(model){let provider=model.provider,baseUrl=model.baseUrl,isZai=provider==="zai"||provider==="zai-coding-cn"||baseUrl.includes("api.z.ai")||baseUrl.includes("open.bigmodel.cn"),isTogether=provider==="together"||baseUrl.includes("api.together.ai")||baseUrl.includes("api.together.xyz"),isMoonshot=provider==="moonshotai"||provider==="moonshotai-cn"||baseUrl.includes("api.moonshot."),isOpenRouter=provider==="openrouter"||baseUrl.includes("openrouter.ai"),isCloudflareWorkersAI=provider==="cloudflare-workers-ai"||baseUrl.includes("api.cloudflare.com"),isCloudflareAiGateway=provider==="cloudflare-ai-gateway"||baseUrl.includes("gateway.ai.cloudflare.com"),isNvidia=provider==="nvidia"||baseUrl.includes("integrate.api.nvidia.com"),isAntLing=provider==="ant-ling"||baseUrl.includes("api.ant-ling.com"),isCerebras=provider==="cerebras"||baseUrl.includes("cerebras.ai"),isDeepSeek=provider==="deepseek"||baseUrl.toLowerCase().includes("deepseek.com"),isNonStandard=isNvidia||isCerebras||provider==="xai"||baseUrl.includes("api.x.ai")||isTogether||baseUrl.includes("chutes.ai")||isDeepSeek||isZai||isMoonshot||provider==="opencode"||baseUrl.includes("opencode.ai")||isCloudflareWorkersAI||isCloudflareAiGateway||isAntLing,useMaxTokens=baseUrl.includes("chutes.ai")||isDeepSeek||isMoonshot||isCloudflareAiGateway||isTogether||isNvidia||isAntLing||isZai,isGrok=provider==="xai"||baseUrl.includes("api.x.ai"),isOpenRouterDeveloperRoleModel=isOpenRouter&&(model.id.startsWith("anthropic/")||model.id.startsWith("openai/")),cacheControlFormat=provider==="openrouter"&&model.id.startsWith("anthropic/")?"anthropic":void 0;return{supportsStore:!isNonStandard,supportsDeveloperRole:isOpenRouterDeveloperRoleModel||!isNonStandard&&!isOpenRouter,supportsReasoningEffort:!isGrok&&!isZai&&!isMoonshot&&!isTogether&&!isCloudflareAiGateway&&!isNvidia&&!isAntLing,supportsUsageInStreaming:!0,supportsFinishReason:!0,maxTokensField:useMaxTokens?"max_tokens":"max_completion_tokens",requiresToolResultName:!1,requiresAssistantAfterToolResult:!1,requiresNonNullAssistantContent:!1,requiresThinkingAsText:!1,requiresReasoningContentOnAssistantMessages:isDeepSeek,thinkingFormat:isDeepSeek?"deepseek":isZai?"zai":isTogether?"together":isAntLing?"ant-ling":isOpenRouter?"openrouter":"openai",openRouterRouting:{},vercelGatewayRouting:{},chatTemplateKwargs:{},chatTemplateArgs:{},zaiToolStream:!1,supportsThinkingTokenBudget:!1,thinkingTokenBudgetField:void 0,supportsStrictMode:!1,supportsOpenAIGrammarTools:!1,supportsMidConvoSystemMessages:!1,supportsMidConvoToolAdditions:!1,cacheControlFormat,sendSessionAffinityHeaders:isOpenRouter,sessionAffinityFormat:isOpenRouter?"openrouter":"openai",supportsLongCacheRetention:!(isTogether||isCloudflareWorkersAI||isCloudflareAiGateway||isNvidia||isAntLing)}}function getCompat(model){let detected=detectCompat(model);return model.compat?{supportsStore:model.compat.supportsStore??detected.supportsStore,supportsDeveloperRole:model.compat.supportsDeveloperRole??detected.supportsDeveloperRole,supportsReasoningEffort:model.compat.supportsReasoningEffort??detected.supportsReasoningEffort,supportsUsageInStreaming:model.compat.supportsUsageInStreaming??detected.supportsUsageInStreaming,supportsFinishReason:model.compat.supportsFinishReason??detected.supportsFinishReason,maxTokensField:model.compat.maxTokensField??detected.maxTokensField,requiresToolResultName:model.compat.requiresToolResultName??detected.requiresToolResultName,requiresAssistantAfterToolResult:model.compat.requiresAssistantAfterToolResult??detected.requiresAssistantAfterToolResult,requiresNonNullAssistantContent:model.compat.requiresNonNullAssistantContent??detected.requiresNonNullAssistantContent,requiresThinkingAsText:model.compat.requiresThinkingAsText??detected.requiresThinkingAsText,requiresReasoningContentOnAssistantMessages:model.compat.requiresReasoningContentOnAssistantMessages??detected.requiresReasoningContentOnAssistantMessages,thinkingFormat:model.compat.thinkingFormat??detected.thinkingFormat,openRouterRouting:model.compat.openRouterRouting??{},vercelGatewayRouting:model.compat.vercelGatewayRouting??detected.vercelGatewayRouting,chatTemplateKwargs:model.compat.chatTemplateKwargs??detected.chatTemplateKwargs,chatTemplateArgs:model.compat.chatTemplateArgs??detected.chatTemplateArgs,zaiToolStream:model.compat.zaiToolStream??detected.zaiToolStream,supportsThinkingTokenBudget:model.compat.supportsThinkingTokenBudget??detected.supportsThinkingTokenBudget,thinkingTokenBudgetField:model.compat.thinkingTokenBudgetField??detected.thinkingTokenBudgetField,supportsStrictMode:model.compat.supportsStrictMode??detected.supportsStrictMode,supportsOpenAIGrammarTools:model.compat.supportsOpenAIGrammarTools??detected.supportsOpenAIGrammarTools,supportsMidConvoSystemMessages:model.compat.supportsMidConvoSystemMessages??detected.supportsMidConvoSystemMessages,supportsMidConvoToolAdditions:model.compat.supportsMidConvoToolAdditions??detected.supportsMidConvoToolAdditions,cacheControlFormat:model.compat.cacheControlFormat??detected.cacheControlFormat,sendSessionAffinityHeaders:model.compat.sendSessionAffinityHeaders??detected.sendSessionAffinityHeaders,sessionAffinityFormat:model.compat.sessionAffinityFormat??detected.sessionAffinityFormat,supportsLongCacheRetention:model.compat.supportsLongCacheRetention??detected.supportsLongCacheRetention,promptCacheKeyMode:model.compat.promptCacheKeyMode,vllmPriority:model.compat.vllmPriority}:detected}export{convertMessages,stream,streamSimple};
@@ -0,0 +1,4 @@
1
+ import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url);
2
+ import{convertResponsesMessages,convertResponsesTools,getResponsesToolSupport,processResponsesStream}from"./chunk-JXUDILQJ.js";import{clampOpenAIPromptCacheKey}from"./chunk-PRRNXB7S.js";import{OpenAI}from"./chunk-CF5GWZHW.js";import{buildCopilotDynamicHeaders,hasCopilotVisionInput}from"./chunk-PGXDEOVV.js";import"./chunk-PJACZCIR.js";import{buildBaseOptions,createGrammarToolInputProperties,resolveSamplingParams}from"./chunk-K5TQM7UY.js";import"./chunk-L2ZPNLYD.js";import{retryProviderRequest}from"./chunk-PMRZO46Y.js";import{formatProviderError,normalizeProviderError}from"./chunk-FR2OJIAF.js";import{clampThinkingLevel,getDeclaredTools,resolveTranscript,resolveTranscriptTools}from"./chunk-GXW3X65X.js";import{headersToRecord}from"./chunk-UTB4DTYQ.js";import"./chunk-FFMDRXC4.js";import{getProviderEnvValue}from"./chunk-7DDKXS2Q.js";import{AssistantMessageEventStream}from"./chunk-LPXNMA2W.js";import{getIdentityHeaders}from"./chunk-V6KH5QG4.js";import"./chunk-JXWJOIH4.js";var OPENAI_TOOL_CALL_PROVIDERS=new Set(["openai","openai-codex","opencode"]),OPENAI_RESPONSES_MIN_OUTPUT_TOKENS=16,CHATGPT_USAGE_URL="https://chatgpt.com/settings/usage",CHATGPT_WORKSPACE_LIMIT_HINT="You've reached your ChatGPT workspace's usage limit. Ask your workspace admin to increase it at admin.openai.com \u2192 Workspace \u2192 Usage limits.",CONFIGURATION_UPDATE_REQUEST_EFFORT="medium";function isChatGPTSignIn(model,apiKey){return model.provider==="openai"&&model.baseUrl==="https://api.openai.com/v1"&&apiKey!==void 0&&!apiKey.startsWith("sk-")}function hasHeader(headers,name){if(!headers)return!1;let expected=name.toLowerCase();for(let[key,value]of Object.entries(headers))if(key.toLowerCase()===expected&&value!==null&&value.trim().length>0)return!0;return!1}function getClientApiKey(provider,apiKey,headers){if(apiKey)return apiKey;if(hasHeader(headers,"authorization")||hasHeader(headers,"cf-aig-authorization"))return"unused";throw new Error(`No API key for provider: ${provider}`)}function detectSessionAffinityFormat(model){return model.provider==="openrouter"||model.baseUrl.includes("openrouter.ai")?"openrouter":"openai"}function resolveCacheRetention(cacheRetention,env){return cacheRetention||(getProviderEnvValue("PI_CACHE_RETENTION",env)==="long"?"long":"short")}function getCompat(model){return{supportsDeveloperRole:model.compat?.supportsDeveloperRole??!0,supportsMidConvoSystemMessages:model.compat?.supportsMidConvoSystemMessages??!1,sessionAffinityFormat:model.compat?.sessionAffinityFormat??detectSessionAffinityFormat(model),promptCacheKeyMode:model.compat?.promptCacheKeyMode??"auto",supportsLongCacheRetention:model.compat?.supportsLongCacheRetention??!0,supportsStrictMode:model.compat?.supportsStrictMode??!1,supportsOpenAIGrammarTools:model.compat?.supportsOpenAIGrammarTools??!1,supportsAdditionalTools:model.compat?.supportsAdditionalTools??!1,supportsToolSearch:model.compat?.supportsToolSearch??!1,supportsExplicitPromptCacheMode:model.compat?.supportsExplicitPromptCacheMode??!1,supportsMaxOutputTokens:model.compat?.supportsMaxOutputTokens??!0,supportsMidConvoEffort:model.compat?.supportsMidConvoEffort??!1}}function getConfigurationUpdateEffort(model,options,compat){if(!(!compat.supportsMidConvoEffort||!options?.reasoningEffort||isChatGPTSignIn(model,options.apiKey)))return model.thinkingLevelMap?.[options.reasoningEffort]??options.reasoningEffort}function getPromptCacheRetention(compat,cacheRetention){return cacheRetention==="long"&&compat.supportsLongCacheRetention&&!compat.supportsExplicitPromptCacheMode?"24h":void 0}function getPromptCacheOptions(compat,cacheRetention){if(compat.supportsExplicitPromptCacheMode){if(cacheRetention==="none")return{mode:"explicit"};if(cacheRetention==="long"&&compat.supportsLongCacheRetention)return{ttl:"30m"}}}var stream=(model,context,options)=>{let stream2=new AssistantMessageEventStream,normalizedContext=resolveTranscript(context,getCompat(model).supportsMidConvoSystemMessages);return(async()=>{let compat=getCompat(model),configurationUpdateEffort=getConfigurationUpdateEffort(model,options,compat),output={role:"assistant",content:[],api:model.api,provider:model.provider,model:model.id,...configurationUpdateEffort===void 0?{}:{providerThinkingLevel:configurationUpdateEffort},usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"pending",timestamp:Date.now()};try{let apiKey=getClientApiKey(model.provider,options?.apiKey,options?.headers),cacheSessionId=resolveCacheRetention(options?.cacheRetention,options?.env)==="none"?void 0:options?.sessionId,grammarToolInputProperties=createGrammarToolInputProperties(getDeclaredTools(normalizedContext.messages),compat.supportsOpenAIGrammarTools),client=createClient(model,normalizedContext,apiKey,options?.headers,options?.identity,options?.fetch,cacheSessionId),params=buildParams(model,normalizedContext,options,compat,grammarToolInputProperties,configurationUpdateEffort),nextParams=await options?.onPayload?.(params,model);nextParams!==void 0&&(params=nextParams);let requestOptions={...options?.signal?{signal:options.signal}:{},...options?.timeoutMs!==void 0?{timeout:options.timeoutMs}:{},maxRetries:0},{data:openaiStream,response}=await retryProviderRequest(()=>client.responses.create(params,requestOptions).withResponse(),{maxRetries:options?.maxRetries,maxRetryDelayMs:options?.maxRetryDelayMs,signal:options?.signal});if(await options?.onResponse?.({status:response.status,headers:headersToRecord(response.headers)},model),stream2.push({type:"start",partial:output}),await processResponsesStream(openaiStream,output,stream2,model,{onProviderStreamEvent:options?.onProviderStreamEvent,serviceTier:options?.serviceTier,grammarToolInputProperties,applyServiceTierPricing:(usage,serviceTier)=>applyServiceTierPricing(usage,serviceTier,model)}),options?.signal?.aborted)throw new Error("Request was aborted");if(output.stopReason==="pending")throw new Error("OpenAI Responses stream ended without a stop reason");if(output.stopReason==="aborted"||output.stopReason==="error")throw new Error(output.errorMessage||"An unknown error occurred");stream2.push({type:"done",reason:output.stopReason,message:output}),stream2.end()}catch(error){output.stopReason=options?.signal?.aborted?"aborted":"error";let errorMessage=formatProviderError(normalizeProviderError(error),`${model.provider==="openai"?"OpenAI":model.provider} API error`);errorMessage.includes("subscription_sharing_usage_limit_exceeded")?output.errorMessage=`${errorMessage}
3
+ Check your ChatGPT usage: ${CHATGPT_USAGE_URL}`:errorMessage.includes("subscription_sharing_workplace_individual_usage_limit_exceeded")?output.errorMessage=`${errorMessage}
4
+ ${CHATGPT_WORKSPACE_LIMIT_HINT}`:output.errorMessage=errorMessage,stream2.push({type:"error",reason:output.stopReason,error:output}),stream2.end()}})(),stream2},streamSimple=(model,context,options)=>{getClientApiKey(model.provider,options?.apiKey,options?.headers);let base={...buildBaseOptions(model,context,options,options?.apiKey),toolChoice:options?.toolChoice},clampedReasoning=options?.reasoning?clampThinkingLevel(model,options.reasoning):void 0;return stream(model,context,{...base,reasoningEffort:clampedReasoning==="off"?void 0:clampedReasoning})};function createClient(model,context,apiKey,optionsHeaders,identity,fetch,sessionId){let compat=getCompat(model),headers={...getIdentityHeaders(model,identity),...model.headers};if(model.provider==="github-copilot"){let hasImages=hasCopilotVisionInput(context.messages),copilotHeaders=buildCopilotDynamicHeaders({messages:context.messages,hasImages});Object.assign(headers,copilotHeaders)}return sessionId&&(compat.sessionAffinityFormat==="openrouter"?headers["x-session-id"]=sessionId:(compat.sessionAffinityFormat==="openai"&&(headers["session-id"]=sessionId),headers["x-client-request-id"]=sessionId)),optionsHeaders&&Object.assign(headers,optionsHeaders),new OpenAI({apiKey,baseURL:model.baseUrl,dangerouslyAllowBrowser:!0,fetch,defaultHeaders:headers})}function buildParams(model,context,options,compat,grammarToolInputProperties,configurationUpdateEffort){let transcriptTools=resolveTranscriptTools(context.messages,getResponsesToolSupport(compat)),messages=convertResponsesMessages(model,context,OPENAI_TOOL_CALL_PROVIDERS,{grammarToolInputProperties,supportsMidConvoSystemMessages:compat.supportsMidConvoSystemMessages,supportsAdditionalTools:compat.supportsAdditionalTools,supportsToolSearch:compat.supportsToolSearch,toolOptions:{supportsStrictMode:compat.supportsStrictMode,supportsOpenAIGrammarTools:compat.supportsOpenAIGrammarTools},configurationUpdateEffort}),cacheRetention=resolveCacheRetention(options?.cacheRetention,options?.env),sendPromptCacheKey=cacheRetention!=="none"&&compat.promptCacheKeyMode!=="disabled",omitUnsupportedFields=isChatGPTSignIn(model,options?.apiKey),params={model:model.id,input:messages,stream:!0,prompt_cache_key:sendPromptCacheKey?clampOpenAIPromptCacheKey(options?.sessionId):void 0,prompt_cache_retention:omitUnsupportedFields?void 0:getPromptCacheRetention(compat,cacheRetention),prompt_cache_options:omitUnsupportedFields?void 0:getPromptCacheOptions(compat,cacheRetention),store:!1};options?.maxTokens&&compat.supportsMaxOutputTokens&&!omitUnsupportedFields&&(params.max_output_tokens=Math.max(options.maxTokens,OPENAI_RESPONSES_MIN_OUTPUT_TOKENS)),options?.temperature!==void 0&&!omitUnsupportedFields&&(params.temperature=options?.temperature),options?.serviceTier!==void 0&&(params.service_tier=options.serviceTier),transcriptTools.requestTools.length>0&&(params.tools=convertResponsesTools(transcriptTools.requestTools,{supportsStrictMode:compat.supportsStrictMode,supportsOpenAIGrammarTools:compat.supportsOpenAIGrammarTools})),options?.toolChoice!==void 0&&(params.tool_choice=options.toolChoice);let reasoningEffort=options?.reasoningEffort??(options?.reasoningSummary?"medium":void 0);if(model.reasoning){if(reasoningEffort){let requestedEffort=options?.reasoningEffort?model.thinkingLevelMap?.[options.reasoningEffort]??options.reasoningEffort:reasoningEffort,effort=configurationUpdateEffort===void 0?requestedEffort:CONFIGURATION_UPDATE_REQUEST_EFFORT;params.reasoning={effort,summary:options?.reasoningSummary||"auto"},params.include=["reasoning.encrypted_content"]}else model.provider!=="github-copilot"&&model.thinkingLevelMap?.off!==null&&(params.reasoning={effort:model.thinkingLevelMap?.off??"none"});model.provider==="xai"&&(params.include=["reasoning.encrypted_content"])}let samplingParams=resolveSamplingParams(model,reasoningEffort??"off",options?.samplingParams);return samplingParams&&Object.assign(params,samplingParams),params}function getServiceTierCostMultiplier(model,serviceTier){switch(serviceTier){case"flex":return .5;case"priority":case"fast":return model.id==="gpt-5.5"?2.5:2;default:return 1}}function applyServiceTierPricing(usage,serviceTier,model){let multiplier=getServiceTierCostMultiplier(model,serviceTier);multiplier!==1&&(usage.cost.input*=multiplier,usage.cost.output*=multiplier,usage.cost.cacheRead*=multiplier,usage.cost.cacheWrite*=multiplier,usage.cost.total=usage.cost.input+usage.cost.output+usage.cost.cacheRead+usage.cost.cacheWrite)}export{stream,streamSimple};
@@ -0,0 +1,2 @@
1
+ import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url);
2
+ import{OpenAI}from"./chunk-CF5GWZHW.js";import{sanitizeSurrogates}from"./chunk-L2ZPNLYD.js";import{retryProviderRequest}from"./chunk-PMRZO46Y.js";import{formatProviderError,normalizeProviderError}from"./chunk-FR2OJIAF.js";import{headersToRecord,providerHeadersToRecord}from"./chunk-UTB4DTYQ.js";import{getIdentityHeaders}from"./chunk-V6KH5QG4.js";import"./chunk-JXWJOIH4.js";var generateImages=async(model,context,options)=>{let output={api:model.api,provider:model.provider,model:model.id,output:[],stopReason:"stop",timestamp:Date.now()};try{let apiKey=options?.apiKey;if(!apiKey)throw new Error(`No API key for provider: ${model.provider}`);let client=createClient(model,apiKey,options?.headers,options?.fetch,options?.identity),params=buildParams(model,context),nextParams=await options?.onPayload?.(params,model);nextParams!==void 0&&(params=nextParams);let requestOptions={...options?.signal?{signal:options.signal}:{},...options?.timeoutMs!==void 0?{timeout:options.timeoutMs}:{},maxRetries:0},{data:response,response:rawResponse}=await retryProviderRequest(()=>client.chat.completions.create(params,requestOptions).withResponse(),{maxRetries:options?.maxRetries,maxRetryDelayMs:options?.maxRetryDelayMs,signal:options?.signal});await options?.onResponse?.({status:rawResponse.status,headers:headersToRecord(rawResponse.headers)},model);let imageResponse=response;output.responseId=imageResponse.id,imageResponse.usage&&(output.usage=parseUsage(imageResponse.usage,model));let choice=imageResponse.choices[0];if(choice){let content=choice.message.content;typeof content=="string"&&content.length>0&&output.output.push({type:"text",text:content});for(let image of choice.message.images??[]){let imageUrl=typeof image.image_url=="string"?image.image_url:image.image_url?.url;if(!imageUrl?.startsWith("data:"))continue;let matches=imageUrl.match(/^data:([^;]+);base64,(.+)$/);matches&&output.output.push({type:"image",mimeType:matches[1],data:matches[2]})}}return output}catch(error){return output.stopReason=options?.signal?.aborted?"aborted":"error",output.errorMessage=formatProviderError(normalizeProviderError(error)),output}};function createClient(model,apiKey,optionsHeaders,fetch,identity){return new OpenAI({apiKey,baseURL:model.baseUrl,dangerouslyAllowBrowser:!0,fetch,defaultHeaders:providerHeadersToRecord(getIdentityHeaders(model,identity),model.headers,optionsHeaders)})}function buildParams(model,context){let content=context.input.map(item=>item.type==="text"?{type:"text",text:sanitizeSurrogates(item.text)}:{type:"image_url",image_url:{url:`data:${item.mimeType};base64,${item.data}`}});return{model:model.id,messages:[{role:"user",content}],stream:!1,modalities:model.output.includes("text")?["image","text"]:["image"]}}function parseUsage(rawUsage,model){let promptTokens=rawUsage.prompt_tokens||0,reportedCachedTokens=rawUsage.prompt_tokens_details?.cached_tokens||0,cacheWriteTokens=rawUsage.prompt_tokens_details?.cache_write_tokens||0,cacheReadTokens=cacheWriteTokens>0?Math.max(0,reportedCachedTokens-cacheWriteTokens):reportedCachedTokens,input=Math.max(0,promptTokens-cacheReadTokens-cacheWriteTokens),output=rawUsage.completion_tokens||0,usage={input,output,cacheRead:cacheReadTokens,cacheWrite:cacheWriteTokens,totalTokens:input+output+cacheReadTokens+cacheWriteTokens,cost:{input:model.cost.input/1e6*input,output:model.cost.output/1e6*output,cacheRead:model.cost.cacheRead/1e6*cacheReadTokens,cacheWrite:model.cost.cacheWrite/1e6*cacheWriteTokens,total:0,totalFromProvider:!1}};return usage.cost.total=usage.cost.input+usage.cost.output+usage.cost.cacheRead+usage.cost.cacheWrite,usage}export{generateImages};
@@ -0,0 +1,75 @@
1
+ import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url);
2
+ var __require=(x=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(x,{get:(a,b)=>(typeof require<"u"?require:a)[b]}):x)(function(x){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+x+'" is not supported')});var procEnvCache=null;function getBunSandboxEnvValue(name){if(!(typeof process>"u"||!process.versions?.bun||Object.keys(process.env).length>0)){if(procEnvCache===null){procEnvCache=new Map;try{let{readFileSync}=__require("node:fs"),data=readFileSync("/proc/self/environ","utf-8");for(let entry of data.split("\0")){let idx=entry.indexOf("=");idx>0&&procEnvCache.set(entry.slice(0,idx),entry.slice(idx+1))}}catch{}}return procEnvCache.get(name)}}function getProviderEnvValue(name,env){return env?.[name]||(typeof process<"u"?process.env[name]:void 0)||getBunSandboxEnvValue(name)||void 0}import{createServer}from"node:http";var LOGO_SVG='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 800" aria-hidden="true"><path fill="#F09082" d="M165.29 165.29H517.36V400H400V282.65H165.29Z"/><path fill="#4D9ABF" d="M165.29 282.65H282.65V400H400V517.36H282.65V634.72H165.29Z"/><path fill="#F1BE58" d="M517.36 400H634.72V634.72H517.36Z"/></svg>';function escapeHtml(value){return value.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#39;")}function renderPage(options){let title=escapeHtml(options.title),heading=escapeHtml(options.heading),message=escapeHtml(options.message),details=options.details?escapeHtml(options.details):void 0;return`<!doctype html>
3
+ <html lang="en">
4
+ <head>
5
+ <meta charset="utf-8" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
7
+ <title>${title}</title>
8
+ <style>
9
+ :root {
10
+ --text: #fafafa;
11
+ --text-dim: #a1a1aa;
12
+ --page-bg: #09090b;
13
+ --font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
14
+ --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
15
+ }
16
+ * { box-sizing: border-box; }
17
+ html { color-scheme: dark; }
18
+ body {
19
+ margin: 0;
20
+ min-height: 100vh;
21
+ display: flex;
22
+ align-items: center;
23
+ justify-content: center;
24
+ padding: 24px;
25
+ background: var(--page-bg);
26
+ color: var(--text);
27
+ font-family: var(--font-sans);
28
+ text-align: center;
29
+ }
30
+ main {
31
+ width: 100%;
32
+ max-width: 560px;
33
+ display: flex;
34
+ flex-direction: column;
35
+ align-items: center;
36
+ justify-content: center;
37
+ }
38
+ .logo {
39
+ width: 72px;
40
+ height: 72px;
41
+ display: block;
42
+ margin-bottom: 24px;
43
+ }
44
+ h1 {
45
+ margin: 0 0 10px;
46
+ font-size: 28px;
47
+ line-height: 1.15;
48
+ font-weight: 650;
49
+ color: var(--text);
50
+ }
51
+ p {
52
+ margin: 0;
53
+ line-height: 1.7;
54
+ color: var(--text-dim);
55
+ font-size: 15px;
56
+ }
57
+ .details {
58
+ margin-top: 16px;
59
+ font-family: var(--font-mono);
60
+ font-size: 13px;
61
+ color: var(--text-dim);
62
+ white-space: pre-wrap;
63
+ word-break: break-word;
64
+ }
65
+ </style>
66
+ </head>
67
+ <body>
68
+ <main>
69
+ <div class="logo">${LOGO_SVG}</div>
70
+ <h1>${heading}</h1>
71
+ <p>${message}</p>
72
+ ${details?`<div class="details">${details}</div>`:""}
73
+ </main>
74
+ </body>
75
+ </html>`}function oauthSuccessHtml(message){return renderPage({title:"Authentication successful",heading:"Authentication successful",message})}function oauthErrorHtml(message,details){return renderPage({title:"Authentication failed",heading:"Authentication failed",message,details})}function sendPage(response,status,html){response.writeHead(status,{"content-type":"text/html; charset=utf-8","cache-control":"no-store"}),response.end(html)}async function startOAuthCallbackServer(options){let{providerName,signal}=options;if(signal?.aborted)throw new Error("Login cancelled");let resolveWait=()=>{},rejectWait=()=>{},waitPromise=new Promise((resolve,reject)=>{resolveWait=resolve,rejectWait=reject});waitPromise.catch(()=>{});let claimed=!1,settled=!1,timer,onAbort=()=>finish({error:new Error("Login cancelled")}),finish=result=>{settled||(settled=!0,timer&&clearTimeout(timer),signal?.removeEventListener("abort",onAbort),"error"in result?rejectWait(result.error):resolveWait(result.value))},server=createServer((request,response)=>{(async()=>{let url=new URL(request.url??"/","http://localhost");if(request.method!=="GET"||url.pathname!==options.path){sendPage(response,404,oauthErrorHtml("Callback route not found."));return}if(options.state!==void 0&&url.searchParams.get("state")!==options.state){sendPage(response,400,oauthErrorHtml("State mismatch."));return}if(claimed||settled){sendPage(response,409,oauthErrorHtml("This sign-in has already been handled."));return}let error=url.searchParams.get("error");if(error){let description=url.searchParams.get("error_description")??error;sendPage(response,400,oauthErrorHtml(`${providerName} authorization failed.`,description)),finish({error:new Error(`${providerName} authorization failed: ${description}`)});return}let code=url.searchParams.get("code");if(!code){sendPage(response,400,oauthErrorHtml("Missing authorization code."));return}claimed=!0;try{let value=await options.complete(code);sendPage(response,200,oauthSuccessHtml(`Signed in to ${providerName}. You may now close this page.`)),finish({value})}catch(error2){let failure=error2 instanceof Error?error2:new Error(String(error2));sendPage(response,502,oauthErrorHtml(`${providerName} sign-in failed.`,failure.message)),finish({error:failure})}})()});await new Promise((resolve,reject)=>{server.once("error",reject),server.listen(options.port,options.host,()=>{server.off("error",reject),resolve()})});let address=server.address();if(!address||typeof address=="string")throw server.close(),new Error("OAuth callback server did not bind to TCP");server.on("error",error=>finish({error})),signal?.addEventListener("abort",onAbort,{once:!0}),options.timeoutMs!==void 0&&(timer=setTimeout(()=>finish({error:new Error(`${providerName} sign-in timed out`)}),options.timeoutMs));let redirectHost=options.redirectHost??options.host;return{redirectUri:`http://${redirectHost.includes(":")?`[${redirectHost}]`:redirectHost}:${address.port}${options.path}`,wait:()=>waitPromise,cancel:()=>{claimed||finish({value:void 0})},close:()=>{finish({error:new Error("OAuth callback server closed")}),server.close()}}}async function waitForCallbackOrManualInput(interaction,callback,prompt){let manualAbort=new AbortController,manualError,manual=interaction.prompt({type:"manual_code",...prompt,signal:manualAbort.signal}).then(input=>(callback?.cancel(),input)).catch(error=>{manualError=error instanceof Error?error:new Error(String(error)),callback?.cancel()});try{let value=await callback?.wait();if(manualError)throw manualError;if(value!==void 0)return{type:"callback",value};let input=await manual;if(manualError)throw manualError;return{type:"manual",input:input??""}}finally{manualAbort.abort()}}function base64urlEncode(bytes){let binary="";for(let byte of bytes)binary+=String.fromCharCode(byte);return btoa(binary).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}async function generatePKCE(){let verifierBytes=new Uint8Array(32);crypto.getRandomValues(verifierBytes);let verifier=base64urlEncode(verifierBytes),data=new TextEncoder().encode(verifier),hashBuffer=await crypto.subtle.digest("SHA-256",data),challenge=base64urlEncode(new Uint8Array(hashBuffer));return{verifier,challenge}}var AUTHORIZE_URL="https://openrouter.ai/auth",TOKEN_URL="https://openrouter.ai/api/v1/auth/keys",LOGIN_TIMEOUT_MS=300*1e3,TOKEN_EXCHANGE_TIMEOUT_MS=3e4;function getCallbackHost(){return getProviderEnvValue("PI_OAUTH_CALLBACK_HOST")||"127.0.0.1"}function parseAuthorizationInput(input){let value=input.trim();if(value){try{return new URL(value).searchParams.get("code")??void 0}catch{}return value.includes("code=")?new URLSearchParams(value).get("code")??void 0:value}}function errorDetail(body){if(typeof body.error_description=="string")return body.error_description;if(typeof body.message=="string")return body.message;if(typeof body.error=="string")return body.error;if(body.error&&typeof body.error=="object"&&!Array.isArray(body.error)){let message=body.error.message;if(typeof message=="string")return message}}async function exchangeAuthorizationCode(code,verifier,signal){if(signal.aborted)throw new Error("Login cancelled");let controller=new AbortController,onAbort=()=>controller.abort(signal.reason);signal.addEventListener("abort",onAbort,{once:!0});let timeout=setTimeout(()=>controller.abort(new Error("OpenRouter OAuth token exchange timed out")),TOKEN_EXCHANGE_TIMEOUT_MS),response,body={};try{response=await fetch(TOKEN_URL,{method:"POST",headers:{accept:"application/json","content-type":"application/json"},body:JSON.stringify({code,code_verifier:verifier,code_challenge_method:"S256"}),signal:controller.signal});try{let parsed=await response.json();parsed&&typeof parsed=="object"&&!Array.isArray(parsed)&&(body=parsed)}catch{if(response.ok)throw new Error("OpenRouter OAuth returned invalid JSON")}}catch(error){throw signal.aborted?new Error("Login cancelled"):controller.signal.aborted?new Error("OpenRouter OAuth token exchange timed out"):error}finally{clearTimeout(timeout),signal.removeEventListener("abort",onAbort)}if(!response.ok){let detail=errorDetail(body);throw new Error(`OpenRouter OAuth key exchange failed (HTTP ${response.status})${detail?`: ${detail}`:""}`)}if(typeof body.key!="string"||body.key.length===0)throw new Error('OpenRouter OAuth response carries no "key"');return{type:"oauth",access:body.key,refresh:"",expires:Number.MAX_SAFE_INTEGER}}async function loginOpenRouter(interaction){let{verifier,challenge}=await generatePKCE(),callback=await startOAuthCallbackServer({providerName:"OpenRouter",host:getCallbackHost(),port:0,path:`/oauth/callback/${crypto.randomUUID()}`,complete:code=>exchangeAuthorizationCode(code,verifier,interaction.signal),signal:interaction.signal,timeoutMs:LOGIN_TIMEOUT_MS});try{let authorizeUrl=new URL(AUTHORIZE_URL);authorizeUrl.search=new URLSearchParams({callback_url:callback.redirectUri,code_challenge:challenge,code_challenge_method:"S256"}).toString(),interaction.notify({type:"progress",message:`Listening for OpenRouter OAuth callback on ${callback.redirectUri}`}),interaction.notify({type:"auth_url",url:authorizeUrl.toString(),instructions:"Complete sign-in in your browser. If the browser is on another machine, paste the final redirect URL here."});let result=await waitForCallbackOrManualInput(interaction,callback,{message:"Complete sign-in in your browser, or paste the authorization code / redirect URL here:",placeholder:callback.redirectUri});if(result.type==="callback")return result.value;let code=parseAuthorizationInput(result.input);if(!code)throw new Error("Missing authorization code");return interaction.notify({type:"progress",message:"Exchanging authorization code for an API key..."}),await exchangeAuthorizationCode(code,verifier,interaction.signal)}finally{callback.close()}}var openRouterOAuth={name:"OpenRouter OAuth",loginLabel:"Sign in with OpenRouter",login:loginOpenRouter,async refresh(credential,_signal){return credential},async toAuth(credential){return{apiKey:credential.access}}};export{openRouterOAuth};
@@ -0,0 +1,8 @@
1
+ import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url);
2
+ import{headersToRecord,providerHeadersToRecord}from"./chunk-UTB4DTYQ.js";import{ToolCallArgumentsStream}from"./chunk-FFMDRXC4.js";import{getProviderEnvValue}from"./chunk-7DDKXS2Q.js";import{AssistantMessageEventStream,appendAssistantMessageDiagnostic,createAssistantMessageDiagnostic}from"./chunk-LPXNMA2W.js";import{getIdentityHeaders,ownedSlice}from"./chunk-V6KH5QG4.js";import"./chunk-JXWJOIH4.js";var PiMessagesResponseError=class extends Error{code;diagnosticDetails;constructor(message,code,diagnosticDetails){super(message),this.name="PiMessagesResponseError",this.code=code,this.diagnosticDetails=diagnosticDetails}};function parsePiMessagesErrorBody(body){try{let parsed=JSON.parse(body),error=parsed?.error;return parsed&&typeof error=="object"&&error!==null&&!Array.isArray(error)?parsed:void 0}catch{return}}function truncateDiagnosticString(value){return value.length>8192?`${ownedSlice(value,0,8192)}\u2026`:value}function formatPiMessagesResponseError(response,body,errorBody){let message=typeof errorBody?.error?.message=="string"?errorBody.error.message:void 0,code=typeof errorBody?.error?.code=="string"?errorBody.error.code:void 0,suffix=message??body,codeSuffix=code?` (${code})`:"";return`${response.status} ${response.statusText}: ${suffix}${codeSuffix}`}function createPiMessagesResponseError(model,url,response,body){let errorBody=parsePiMessagesErrorBody(body),code=typeof errorBody?.error?.code=="string"?errorBody.error.code:void 0;return new PiMessagesResponseError(formatPiMessagesResponseError(response,body,errorBody),code,{version:1,provider:model.provider,model:model.id,url:url.toString(),status:response.status,statusText:response.statusText,...errorBody?.error===void 0?{}:{error:errorBody.error},...errorBody?{}:{body:truncateDiagnosticString(body)},timestampMs:Date.now()})}function createEmptyUsage(){return{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}}}function appendRewriteDiagnostic(message,rewrite){rewrite&&appendAssistantMessageDiagnostic(message,{type:"pi_messages_rewrite",timestamp:Date.now(),details:{...rewrite}})}function createEventConverter(model){let partial={role:"assistant",content:[],api:model.api,provider:model.provider,model:model.id,usage:createEmptyUsage(),stopReason:"pending",timestamp:Date.now()},toolArguments=new Map;return event=>{if("contentIndex"in event){let index=event.contentIndex,limit=event.type.endsWith("_start")?partial.content.length:partial.content.length-1;if(typeof index!="number"||!Number.isInteger(index)||index<0||index>limit)throw new Error(`Invalid contentIndex ${JSON.stringify(index)} in pi-messages ${event.type} event`)}switch(event.type){case"done":return Object.assign(partial,{stopReason:event.reason,usage:event.usage,responseId:event.responseId}),event.responseModel!==void 0&&(partial.responseModel=event.responseModel),event.providerThinkingLevel!==void 0&&(partial.providerThinkingLevel=event.providerThinkingLevel),appendRewriteDiagnostic(partial,event.rewrite),{type:"done",reason:event.reason,message:partial};case"error":return Object.assign(partial,{stopReason:event.reason,usage:event.usage,errorMessage:event.errorMessage,responseId:event.responseId}),event.responseModel!==void 0&&(partial.responseModel=event.responseModel),event.providerThinkingLevel!==void 0&&(partial.providerThinkingLevel=event.providerThinkingLevel),appendRewriteDiagnostic(partial,event.rewrite),{type:"error",reason:event.reason,error:partial};case"start":break;case"text_start":partial.content[event.contentIndex]={type:"text",text:""};break;case"text_delta":partial.content[event.contentIndex].text+=event.delta;break;case"text_end":Object.assign(partial.content[event.contentIndex],{text:event.content,textSignature:event.contentSignature});break;case"thinking_start":partial.content[event.contentIndex]={type:"thinking",thinking:""};break;case"thinking_delta":partial.content[event.contentIndex].thinking+=event.delta;break;case"thinking_end":Object.assign(partial.content[event.contentIndex],{thinking:event.content,thinkingSignature:event.contentSignature,redacted:event.redacted});break;case"toolcall_start":partial.content[event.contentIndex]={type:"toolCall",id:event.id,name:event.toolName,arguments:{}},toolArguments.set(event.contentIndex,new ToolCallArgumentsStream);break;case"toolcall_delta":{let args=toolArguments.get(event.contentIndex);args!==void 0&&(partial.content[event.contentIndex].arguments=args.append(event.delta));break}case"toolcall_end":return Object.assign(partial.content[event.contentIndex],event.toolCall),toolArguments.delete(event.contentIndex),{type:"toolcall_end",contentIndex:event.contentIndex,toolCall:partial.content[event.contentIndex],partial}}return{...event,partial}}}async function*readPiMessagesEvents(stream2){let decoder=new TextDecoder,reader=stream2.getReader(),buffer="";try{for(;;){let{done,value}=await reader.read();buffer+=done?decoder.decode():decoder.decode(value,{stream:!0}),buffer=buffer.replace(/\r\n/g,`
3
+ `);let split=buffer.indexOf(`
4
+
5
+ `);for(;split!==-1;){let event=parsePiMessagesEvent(buffer.slice(0,split));event&&(yield event),buffer=buffer.slice(split+2),split=buffer.indexOf(`
6
+
7
+ `)}if(done)break}if(buffer.trim()){let event=parsePiMessagesEvent(buffer);event&&(yield event)}}finally{reader.releaseLock()}}function parsePiMessagesEvent(raw){let data=raw.split(`
8
+ `).find(line=>line.startsWith("data:"))?.slice(5).trim();return data&&data!=="[DONE]"?JSON.parse(data):void 0}function createErrorEvent(model,error,aborted){let reason=aborted?"aborted":"error",assistantMessage={role:"assistant",content:[],api:model.api,provider:model.provider,model:model.id,usage:createEmptyUsage(),stopReason:reason,errorMessage:error instanceof Error?error.message:String(error),timestamp:Date.now()};return!aborted&&error instanceof PiMessagesResponseError&&appendAssistantMessageDiagnostic(assistantMessage,createAssistantMessageDiagnostic("pi_messages_response_failure",error,error.diagnosticDetails)),{type:"error",reason,error:assistantMessage}}function resolveCacheRetention(cacheRetention,env){return cacheRetention||(getProviderEnvValue("PI_CACHE_RETENTION",env)==="long"?"long":void 0)}var stream=(model,context,options)=>{let eventStream=new AssistantMessageEventStream,convertEvent=createEventConverter(model);return(async()=>{try{let apiKey=options?.apiKey;if(!apiKey)throw new Error(`No API key provided for provider "${model.provider}"`);let url=new URL(`${model.baseUrl.replace(/\/+$/u,"")}/messages`);options?.debug&&url.searchParams.set("debug","1");let payload={model:model.id,context,options:{temperature:options?.temperature,maxTokens:options?.maxTokens,reasoning:options?.reasoning,cacheRetention:resolveCacheRetention(options?.cacheRetention,options?.env),sessionId:options?.sessionId,toolChoice:options?.toolChoice}},nextPayload=await options?.onPayload?.(payload,model);nextPayload!==void 0&&(payload=nextPayload);let response=await(options?.fetch??globalThis.fetch)(url,{method:"POST",headers:providerHeadersToRecord(getIdentityHeaders(model,options?.identity),{authorization:`Bearer ${apiKey}`,accept:"text/event-stream","content-type":"application/json"},options?.headers),body:JSON.stringify(payload),signal:options?.signal});if(await options?.onResponse?.({status:response.status,headers:headersToRecord(response.headers)},model),!response.ok){let body=await response.text();throw createPiMessagesResponseError(model,url,response,body)}if(!response.body)throw new Error(`${model.provider} response has no body`);for await(let piEvent of readPiMessagesEvents(response.body)){await options?.onProviderStreamEvent?.(piEvent,model);let event=convertEvent(piEvent);if(eventStream.push(event),event.type==="done"||event.type==="error")return}throw new Error(`${model.provider} stream ended without a terminal event`)}catch(error){eventStream.push(createErrorEvent(model,error,options?.signal?.aborted??!1))}})(),eventStream},streamSimple=(model,context,options)=>{let extra=options;return stream(model,context,{...options,reasoning:options?.reasoning,toolChoice:options?.toolChoice,debug:extra?.debug})};export{PiMessagesResponseError,stream,streamSimple};
@@ -0,0 +1,75 @@
1
+ import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url);
2
+ function normalizeRadiusGatewayUrl(value){return(/^https?:\/\//iu.test(value)?value:`https://${value}`).replace(/\/+$/u,"")}import{createServer}from"node:http";var LOGO_SVG='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 800" aria-hidden="true"><path fill="#F09082" d="M165.29 165.29H517.36V400H400V282.65H165.29Z"/><path fill="#4D9ABF" d="M165.29 282.65H282.65V400H400V517.36H282.65V634.72H165.29Z"/><path fill="#F1BE58" d="M517.36 400H634.72V634.72H517.36Z"/></svg>';function escapeHtml(value){return value.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#39;")}function renderPage(options){let title=escapeHtml(options.title),heading=escapeHtml(options.heading),message=escapeHtml(options.message),details=options.details?escapeHtml(options.details):void 0;return`<!doctype html>
3
+ <html lang="en">
4
+ <head>
5
+ <meta charset="utf-8" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
7
+ <title>${title}</title>
8
+ <style>
9
+ :root {
10
+ --text: #fafafa;
11
+ --text-dim: #a1a1aa;
12
+ --page-bg: #09090b;
13
+ --font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
14
+ --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
15
+ }
16
+ * { box-sizing: border-box; }
17
+ html { color-scheme: dark; }
18
+ body {
19
+ margin: 0;
20
+ min-height: 100vh;
21
+ display: flex;
22
+ align-items: center;
23
+ justify-content: center;
24
+ padding: 24px;
25
+ background: var(--page-bg);
26
+ color: var(--text);
27
+ font-family: var(--font-sans);
28
+ text-align: center;
29
+ }
30
+ main {
31
+ width: 100%;
32
+ max-width: 560px;
33
+ display: flex;
34
+ flex-direction: column;
35
+ align-items: center;
36
+ justify-content: center;
37
+ }
38
+ .logo {
39
+ width: 72px;
40
+ height: 72px;
41
+ display: block;
42
+ margin-bottom: 24px;
43
+ }
44
+ h1 {
45
+ margin: 0 0 10px;
46
+ font-size: 28px;
47
+ line-height: 1.15;
48
+ font-weight: 650;
49
+ color: var(--text);
50
+ }
51
+ p {
52
+ margin: 0;
53
+ line-height: 1.7;
54
+ color: var(--text-dim);
55
+ font-size: 15px;
56
+ }
57
+ .details {
58
+ margin-top: 16px;
59
+ font-family: var(--font-mono);
60
+ font-size: 13px;
61
+ color: var(--text-dim);
62
+ white-space: pre-wrap;
63
+ word-break: break-word;
64
+ }
65
+ </style>
66
+ </head>
67
+ <body>
68
+ <main>
69
+ <div class="logo">${LOGO_SVG}</div>
70
+ <h1>${heading}</h1>
71
+ <p>${message}</p>
72
+ ${details?`<div class="details">${details}</div>`:""}
73
+ </main>
74
+ </body>
75
+ </html>`}function oauthSuccessHtml(message){return renderPage({title:"Authentication successful",heading:"Authentication successful",message})}function oauthErrorHtml(message,details){return renderPage({title:"Authentication failed",heading:"Authentication failed",message,details})}function sendPage(response,status,html){response.writeHead(status,{"content-type":"text/html; charset=utf-8","cache-control":"no-store"}),response.end(html)}async function startOAuthCallbackServer(options){let{providerName,signal}=options;if(signal?.aborted)throw new Error("Login cancelled");let resolveWait=()=>{},rejectWait=()=>{},waitPromise=new Promise((resolve,reject)=>{resolveWait=resolve,rejectWait=reject});waitPromise.catch(()=>{});let claimed=!1,settled=!1,timer,onAbort=()=>finish({error:new Error("Login cancelled")}),finish=result=>{settled||(settled=!0,timer&&clearTimeout(timer),signal?.removeEventListener("abort",onAbort),"error"in result?rejectWait(result.error):resolveWait(result.value))},server=createServer((request,response)=>{(async()=>{let url=new URL(request.url??"/","http://localhost");if(request.method!=="GET"||url.pathname!==options.path){sendPage(response,404,oauthErrorHtml("Callback route not found."));return}if(options.state!==void 0&&url.searchParams.get("state")!==options.state){sendPage(response,400,oauthErrorHtml("State mismatch."));return}if(claimed||settled){sendPage(response,409,oauthErrorHtml("This sign-in has already been handled."));return}let error=url.searchParams.get("error");if(error){let description=url.searchParams.get("error_description")??error;sendPage(response,400,oauthErrorHtml(`${providerName} authorization failed.`,description)),finish({error:new Error(`${providerName} authorization failed: ${description}`)});return}let code=url.searchParams.get("code");if(!code){sendPage(response,400,oauthErrorHtml("Missing authorization code."));return}claimed=!0;try{let value=await options.complete(code);sendPage(response,200,oauthSuccessHtml(`Signed in to ${providerName}. You may now close this page.`)),finish({value})}catch(error2){let failure=error2 instanceof Error?error2:new Error(String(error2));sendPage(response,502,oauthErrorHtml(`${providerName} sign-in failed.`,failure.message)),finish({error:failure})}})()});await new Promise((resolve,reject)=>{server.once("error",reject),server.listen(options.port,options.host,()=>{server.off("error",reject),resolve()})});let address=server.address();if(!address||typeof address=="string")throw server.close(),new Error("OAuth callback server did not bind to TCP");server.on("error",error=>finish({error})),signal?.addEventListener("abort",onAbort,{once:!0}),options.timeoutMs!==void 0&&(timer=setTimeout(()=>finish({error:new Error(`${providerName} sign-in timed out`)}),options.timeoutMs));let redirectHost=options.redirectHost??options.host;return{redirectUri:`http://${redirectHost.includes(":")?`[${redirectHost}]`:redirectHost}:${address.port}${options.path}`,wait:()=>waitPromise,cancel:()=>{claimed||finish({value:void 0})},close:()=>{finish({error:new Error("OAuth callback server closed")}),server.close()}}}var CANCEL_MESSAGE="Login cancelled",TIMEOUT_MESSAGE="Device flow timed out",SLOW_DOWN_TIMEOUT_MESSAGE="Device flow timed out after one or more slow_down responses. This is often caused by clock drift in WSL or VM environments. Please sync or restart the VM clock and try again.";function abortableSleep(ms,signal,cancelMessage){return new Promise((resolve,reject)=>{if(signal.aborted){reject(new Error(cancelMessage));return}let onAbort=()=>{clearTimeout(timeout),reject(new Error(cancelMessage))},timeout=setTimeout(()=>{signal.removeEventListener("abort",onAbort),resolve()},ms);signal.addEventListener("abort",onAbort,{once:!0})})}async function pollOAuthDeviceCodeFlow(options){let deadline=typeof options.expiresInSeconds=="number"?Date.now()+options.expiresInSeconds*1e3:Number.POSITIVE_INFINITY,intervalMs=Math.max(1e3,Math.floor((options.intervalSeconds??5)*1e3)),slowDownResponses=0;if(options.waitBeforeFirstPoll){let remainingMs=deadline-Date.now();remainingMs>0&&await abortableSleep(Math.min(intervalMs,remainingMs),options.signal,CANCEL_MESSAGE)}for(;Date.now()<deadline;){if(options.signal.aborted)throw new Error(CANCEL_MESSAGE);let result=await options.poll();if(result.status==="complete")return result.value;if(result.status==="failed")throw new Error(result.message);result.status==="slow_down"&&(slowDownResponses+=1,intervalMs=typeof result.intervalSeconds=="number"&&Number.isFinite(result.intervalSeconds)&&result.intervalSeconds>0?Math.max(1e3,Math.floor(result.intervalSeconds*1e3)):Math.max(1e3,intervalMs+5e3));let remainingMs=deadline-Date.now();if(remainingMs<=0)break;await abortableSleep(Math.min(intervalMs,remainingMs),options.signal,CANCEL_MESSAGE)}throw new Error(slowDownResponses>0?SLOW_DOWN_TIMEOUT_MESSAGE:TIMEOUT_MESSAGE)}function base64urlEncode(bytes){let binary="";for(let byte of bytes)binary+=String.fromCharCode(byte);return btoa(binary).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}async function generatePKCE(){let verifierBytes=new Uint8Array(32);crypto.getRandomValues(verifierBytes);let verifier=base64urlEncode(verifierBytes),data=new TextEncoder().encode(verifier),hashBuffer=await crypto.subtle.digest("SHA-256",data),challenge=base64urlEncode(new Uint8Array(hashBuffer));return{verifier,challenge}}function trustedHttpUrl(value){if(typeof value!="string"||!URL.canParse(value))return null;let url=new URL(value);return url.protocol==="https:"||url.protocol==="http:"?url.href:null}var CALLBACK_HOST="127.0.0.1",CALLBACK_PORT=1456,CALLBACK_PATH="/oauth/callback",REDIRECT_URI=`http://${CALLBACK_HOST}:${CALLBACK_PORT}${CALLBACK_PATH}`,TOKEN_EXPIRY_SKEW_MS=6e4,LOGIN_METHOD_BROWSER="browser",LOGIN_METHOD_DEVICE_CODE="device-code",OAUTH_CLIENT_ID="pi-gateway",OAUTH_SCOPE="gateway offline_access",OAUTH_DEVICE_CODE_GRANT_TYPE="urn:ietf:params:oauth:grant-type:device_code";async function loadRadiusOAuthDiscovery(gateway,signal){let response=await fetch(new URL("/v1/oauth",gateway),{headers:{accept:"application/json"},signal});if(!response.ok)throw new Error(`Could not load Radius OAuth config from ${gateway}: ${response.status} ${await response.text()}`);let discovery=await response.json(),authorizationEndpoint=trustedHttpUrl(discovery.authorizationEndpoint);if(!authorizationEndpoint)throw new Error(`Invalid Radius OAuth config from ${gateway}`);return{authorizationEndpoint}}var OAuthResponseError=class extends Error{status;oauthError;constructor(status,oauthError,description,message){let detail=oauthError?description?`${oauthError}: ${description}`:oauthError:description||String(status);super(`${message}: ${detail}`),this.status=status,this.oauthError=oauthError}};async function readOAuthResponseError(response,message){let text=await response.text().catch(()=>""),oauthError,description;if(text)try{let data=JSON.parse(text);oauthError=typeof data.error=="string"?data.error:void 0,description=typeof data.error_description=="string"?data.error_description:void 0}catch{description=text}return new OAuthResponseError(response.status,oauthError,description,message)}async function requestOAuthToken(gateway,body,signal){let response;try{response=await fetch(new URL("/v1/oauth/token",gateway),{method:"POST",headers:{accept:"application/json","content-type":"application/x-www-form-urlencoded"},body,signal})}catch(error){throw signal.aborted?new Error("Login cancelled"):error}if(!response.ok)throw await readOAuthResponseError(response,"Radius OAuth token request failed");let data=await response.json();return{type:"oauth",access:data.access_token,refresh:data.refresh_token,expires:Date.now()+data.expires_in*1e3-TOKEN_EXPIRY_SKEW_MS,scope:data.scope}}async function loginWithBrowser(gateway,authorizationEndpoint,interaction){let{verifier,challenge}=await generatePKCE(),state=crypto.randomUUID(),authorizeUrl=new URL(authorizationEndpoint);authorizeUrl.search=new URLSearchParams({response_type:"code",client_id:OAUTH_CLIENT_ID,redirect_uri:REDIRECT_URI,scope:OAUTH_SCOPE,code_challenge:challenge,code_challenge_method:"S256",handoff:"url",state}).toString();let callback=await startOAuthCallbackServer({providerName:"Radius",host:CALLBACK_HOST,port:CALLBACK_PORT,path:CALLBACK_PATH,state,complete:code=>requestOAuthToken(gateway,new URLSearchParams({grant_type:"authorization_code",client_id:OAUTH_CLIENT_ID,redirect_uri:REDIRECT_URI,code,code_verifier:verifier}),interaction.signal),signal:interaction.signal});interaction.notify({type:"progress",message:`Listening for OAuth callback on ${REDIRECT_URI}`}),interaction.notify({type:"auth_url",url:authorizeUrl.toString(),instructions:"Continue in your browser."});try{let credential=await callback.wait();if(!credential)throw new Error("OAuth callback did not complete.");return credential}finally{callback.close()}}async function requestDeviceAuthorization(gateway,signal){let response;try{response=await fetch(new URL("/v1/oauth/device",gateway),{method:"POST",headers:{accept:"application/json","content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:OAUTH_CLIENT_ID,scope:OAUTH_SCOPE}),signal})}catch(error){throw signal.aborted?new Error("Login cancelled"):error}if(!response.ok)throw await readOAuthResponseError(response,"Radius OAuth device authorization failed");let data=await response.json();if(!data.device_code||!data.user_code||!data.verification_uri||!data.expires_in)throw new Error("Radius OAuth device authorization response is missing required fields");let verificationUri=trustedHttpUrl(data.verification_uri);if(!verificationUri)throw new Error("Untrusted verification_uri in Radius OAuth device authorization response");return{device_code:data.device_code,user_code:data.user_code,verification_uri:verificationUri,expires_in:data.expires_in,interval:data.interval}}async function loginWithDeviceCode(gateway,interaction){let device=await requestDeviceAuthorization(gateway,interaction.signal);return interaction.notify({type:"device_code",userCode:device.user_code,verificationUri:device.verification_uri,intervalSeconds:device.interval,expiresInSeconds:device.expires_in}),pollOAuthDeviceCodeFlow({intervalSeconds:device.interval,expiresInSeconds:device.expires_in,signal:interaction.signal,poll:async()=>{try{return{status:"complete",value:await requestOAuthToken(gateway,new URLSearchParams({grant_type:OAUTH_DEVICE_CODE_GRANT_TYPE,client_id:OAUTH_CLIENT_ID,device_code:device.device_code}),interaction.signal)}}catch(error){if(!(error instanceof OAuthResponseError))throw error;switch(error.oauthError){case"authorization_pending":return{status:"pending"};case"slow_down":return{status:"slow_down"};case"expired_token":return{status:"failed",message:"Device authorization expired."};case"access_denied":return{status:"failed",message:"Device authorization was denied."};default:throw error}}}})}function createRadiusOAuth(options){let gateway=normalizeRadiusGatewayUrl(options.gateway);return{name:options.name,async login(interaction){let loginMethod=await interaction.prompt({type:"select",message:`Sign in to ${options.name}:`,options:[{id:LOGIN_METHOD_BROWSER,label:"Sign in with browser (recommended)"},{id:LOGIN_METHOD_DEVICE_CODE,label:"Sign in with device code (when signing in from another device)"}]});if(loginMethod===LOGIN_METHOD_DEVICE_CODE)return loginWithDeviceCode(gateway,interaction);if(loginMethod===LOGIN_METHOD_BROWSER){let discovery=await loadRadiusOAuthDiscovery(gateway,interaction.signal);return loginWithBrowser(gateway,discovery.authorizationEndpoint,interaction)}throw new Error(`Unknown ${options.name} sign-in method: ${loginMethod}`)},async refresh(credential,signal){return await requestOAuthToken(gateway,new URLSearchParams({grant_type:"refresh_token",client_id:OAUTH_CLIENT_ID,refresh_token:credential.refresh}),signal)},async toAuth(credential){return{apiKey:credential.access}}}}export{createRadiusOAuth};
@@ -0,0 +1,2 @@
1
+ import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url);
2
+ import{McpOAuthCredentialStore,McpServerConnection,McpServerLog,McpSignInCancelledError,createDefaultTransport,signInMcpServer}from"./chunk-AZEKCFSR.js";import"./chunk-MTY47RPT.js";import"./chunk-OLNSR6Z3.js";import"./chunk-45GGYWI5.js";import"./chunk-JXWJOIH4.js";export{McpOAuthCredentialStore,McpServerConnection,McpServerLog,McpSignInCancelledError,createDefaultTransport,signInMcpServer};
@@ -0,0 +1,4 @@
1
+ import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url);
2
+ import{FormData,blobFrom,blobFromSync,fetch_blob_default,fileFrom,fileFromSync,file_default,formDataToBlob,init_esm_min,init_fetch_blob,init_from}from"./chunk-LVVZS2NO.js";import{__esm}from"./chunk-JXWJOIH4.js";function dataUriToBuffer(uri){if(!/^data:/i.test(uri))throw new TypeError('`uri` does not appear to be a Data URI (must begin with "data:")');uri=uri.replace(/\r?\n/g,"");let firstComma=uri.indexOf(",");if(firstComma===-1||firstComma<=4)throw new TypeError("malformed data: URI");let meta=uri.substring(5,firstComma).split(";"),charset="",base64=!1,type=meta[0]||"text/plain",typeFull=type;for(let i=1;i<meta.length;i++)meta[i]==="base64"?base64=!0:meta[i]&&(typeFull+=`;${meta[i]}`,meta[i].indexOf("charset=")===0&&(charset=meta[i].substring(8)));!meta[0]&&!charset.length&&(typeFull+=";charset=US-ASCII",charset="US-ASCII");let encoding=base64?"base64":"ascii",data=unescape(uri.substring(firstComma+1)),buffer=Buffer.from(data,encoding);return buffer.type=type,buffer.typeFull=typeFull,buffer.charset=charset,buffer}var dist_default,init_dist=__esm({"node_modules/data-uri-to-buffer/dist/index.js"(){dist_default=dataUriToBuffer}});var FetchBaseError,init_base=__esm({"node_modules/node-fetch/src/errors/base.js"(){FetchBaseError=class extends Error{constructor(message,type){super(message),Error.captureStackTrace(this,this.constructor),this.type=type}get name(){return this.constructor.name}get[Symbol.toStringTag](){return this.constructor.name}}}});var FetchError,init_fetch_error=__esm({"node_modules/node-fetch/src/errors/fetch-error.js"(){init_base();FetchError=class extends FetchBaseError{constructor(message,type,systemError){super(message,type),systemError&&(this.code=this.errno=systemError.code,this.erroredSysCall=systemError.syscall)}}}});var NAME,isURLSearchParameters,isBlob,isAbortSignal,isDomainOrSubdomain,isSameProtocol,init_is=__esm({"node_modules/node-fetch/src/utils/is.js"(){NAME=Symbol.toStringTag,isURLSearchParameters=object=>typeof object=="object"&&typeof object.append=="function"&&typeof object.delete=="function"&&typeof object.get=="function"&&typeof object.getAll=="function"&&typeof object.has=="function"&&typeof object.set=="function"&&typeof object.sort=="function"&&object[NAME]==="URLSearchParams",isBlob=object=>object&&typeof object=="object"&&typeof object.arrayBuffer=="function"&&typeof object.type=="string"&&typeof object.stream=="function"&&typeof object.constructor=="function"&&/^(Blob|File)$/.test(object[NAME]),isAbortSignal=object=>typeof object=="object"&&(object[NAME]==="AbortSignal"||object[NAME]==="EventTarget"),isDomainOrSubdomain=(destination,original)=>{let orig=new URL(original).hostname,dest=new URL(destination).hostname;return orig===dest||orig.endsWith(`.${dest}`)},isSameProtocol=(destination,original)=>{let orig=new URL(original).protocol,dest=new URL(destination).protocol;return orig===dest}}});import Stream,{PassThrough}from"node:stream";import{types,deprecate,promisify}from"node:util";import{Buffer as Buffer2}from"node:buffer";async function consumeBody(data){if(data[INTERNALS].disturbed)throw new TypeError(`body used already for: ${data.url}`);if(data[INTERNALS].disturbed=!0,data[INTERNALS].error)throw data[INTERNALS].error;let{body}=data;if(body===null)return Buffer2.alloc(0);if(!(body instanceof Stream))return Buffer2.alloc(0);let accum=[],accumBytes=0;try{for await(let chunk of body){if(data.size>0&&accumBytes+chunk.length>data.size){let error=new FetchError(`content size at ${data.url} over limit: ${data.size}`,"max-size");throw body.destroy(error),error}accumBytes+=chunk.length,accum.push(chunk)}}catch(error){throw error instanceof FetchBaseError?error:new FetchError(`Invalid response body while trying to fetch ${data.url}: ${error.message}`,"system",error)}if(body.readableEnded===!0||body._readableState.ended===!0)try{return accum.every(c=>typeof c=="string")?Buffer2.from(accum.join("")):Buffer2.concat(accum,accumBytes)}catch(error){throw new FetchError(`Could not create Buffer from response body for ${data.url}: ${error.message}`,"system",error)}else throw new FetchError(`Premature close of server response while trying to fetch ${data.url}`)}var pipeline,INTERNALS,Body,clone,getNonSpecFormDataBoundary,extractContentType,getTotalBytes,writeToStream,init_body=__esm({"node_modules/node-fetch/src/body.js"(){init_fetch_blob();init_esm_min();init_fetch_error();init_base();init_is();pipeline=promisify(Stream.pipeline),INTERNALS=Symbol("Body internals"),Body=class{constructor(body,{size=0}={}){let boundary=null;body===null?body=null:isURLSearchParameters(body)?body=Buffer2.from(body.toString()):isBlob(body)||Buffer2.isBuffer(body)||(types.isAnyArrayBuffer(body)?body=Buffer2.from(body):ArrayBuffer.isView(body)?body=Buffer2.from(body.buffer,body.byteOffset,body.byteLength):body instanceof Stream||(body instanceof FormData?(body=formDataToBlob(body),boundary=body.type.split("=")[1]):body=Buffer2.from(String(body))));let stream=body;Buffer2.isBuffer(body)?stream=Stream.Readable.from(body):isBlob(body)&&(stream=Stream.Readable.from(body.stream())),this[INTERNALS]={body,stream,boundary,disturbed:!1,error:null},this.size=size,body instanceof Stream&&body.on("error",error_=>{let error=error_ instanceof FetchBaseError?error_:new FetchError(`Invalid response body while trying to fetch ${this.url}: ${error_.message}`,"system",error_);this[INTERNALS].error=error})}get body(){return this[INTERNALS].stream}get bodyUsed(){return this[INTERNALS].disturbed}async arrayBuffer(){let{buffer,byteOffset,byteLength}=await consumeBody(this);return buffer.slice(byteOffset,byteOffset+byteLength)}async formData(){let ct=this.headers.get("content-type");if(ct.startsWith("application/x-www-form-urlencoded")){let formData=new FormData,parameters=new URLSearchParams(await this.text());for(let[name,value]of parameters)formData.append(name,value);return formData}let{toFormData}=await import("./multipart-parser-FMGQ7342.js");return toFormData(this.body,ct)}async blob(){let ct=this.headers&&this.headers.get("content-type")||this[INTERNALS].body&&this[INTERNALS].body.type||"",buf=await this.arrayBuffer();return new fetch_blob_default([buf],{type:ct})}async json(){let text=await this.text();return JSON.parse(text)}async text(){let buffer=await consumeBody(this);return new TextDecoder().decode(buffer)}buffer(){return consumeBody(this)}};Body.prototype.buffer=deprecate(Body.prototype.buffer,"Please use 'response.arrayBuffer()' instead of 'response.buffer()'","node-fetch#buffer");Object.defineProperties(Body.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0},data:{get:deprecate(()=>{},"data doesn't exist, use json(), text(), arrayBuffer(), or body instead","https://github.com/node-fetch/node-fetch/issues/1000 (response)")}});clone=(instance,highWaterMark)=>{let p1,p2,{body}=instance[INTERNALS];if(instance.bodyUsed)throw new Error("cannot clone body after it is used");return body instanceof Stream&&typeof body.getBoundary!="function"&&(p1=new PassThrough({highWaterMark}),p2=new PassThrough({highWaterMark}),body.pipe(p1),body.pipe(p2),instance[INTERNALS].stream=p1,body=p2),body},getNonSpecFormDataBoundary=deprecate(body=>body.getBoundary(),"form-data doesn't follow the spec and requires special treatment. Use alternative package","https://github.com/node-fetch/node-fetch/issues/1167"),extractContentType=(body,request)=>body===null?null:typeof body=="string"?"text/plain;charset=UTF-8":isURLSearchParameters(body)?"application/x-www-form-urlencoded;charset=UTF-8":isBlob(body)?body.type||null:Buffer2.isBuffer(body)||types.isAnyArrayBuffer(body)||ArrayBuffer.isView(body)?null:body instanceof FormData?`multipart/form-data; boundary=${request[INTERNALS].boundary}`:body&&typeof body.getBoundary=="function"?`multipart/form-data;boundary=${getNonSpecFormDataBoundary(body)}`:body instanceof Stream?null:"text/plain;charset=UTF-8",getTotalBytes=request=>{let{body}=request[INTERNALS];return body===null?0:isBlob(body)?body.size:Buffer2.isBuffer(body)?body.length:body&&typeof body.getLengthSync=="function"&&body.hasKnownLength&&body.hasKnownLength()?body.getLengthSync():null},writeToStream=async(dest,{body})=>{body===null?dest.end():await pipeline(body,dest)}}});import{types as types2}from"node:util";import http from"node:http";function fromRawHeaders(headers=[]){return new Headers(headers.reduce((result,value,index,array)=>(index%2===0&&result.push(array.slice(index,index+2)),result),[]).filter(([name,value])=>{try{return validateHeaderName(name),validateHeaderValue(name,String(value)),!0}catch{return!1}}))}var validateHeaderName,validateHeaderValue,Headers,init_headers=__esm({"node_modules/node-fetch/src/headers.js"(){validateHeaderName=typeof http.validateHeaderName=="function"?http.validateHeaderName:name=>{if(!/^[\^`\-\w!#$%&'*+.|~]+$/.test(name)){let error=new TypeError(`Header name must be a valid HTTP token [${name}]`);throw Object.defineProperty(error,"code",{value:"ERR_INVALID_HTTP_TOKEN"}),error}},validateHeaderValue=typeof http.validateHeaderValue=="function"?http.validateHeaderValue:(name,value)=>{if(/[^\t\u0020-\u007E\u0080-\u00FF]/.test(value)){let error=new TypeError(`Invalid character in header content ["${name}"]`);throw Object.defineProperty(error,"code",{value:"ERR_INVALID_CHAR"}),error}},Headers=class _Headers extends URLSearchParams{constructor(init){let result=[];if(init instanceof _Headers){let raw=init.raw();for(let[name,values]of Object.entries(raw))result.push(...values.map(value=>[name,value]))}else if(init!=null)if(typeof init=="object"&&!types2.isBoxedPrimitive(init)){let method=init[Symbol.iterator];if(method==null)result.push(...Object.entries(init));else{if(typeof method!="function")throw new TypeError("Header pairs must be iterable");result=[...init].map(pair=>{if(typeof pair!="object"||types2.isBoxedPrimitive(pair))throw new TypeError("Each header pair must be an iterable object");return[...pair]}).map(pair=>{if(pair.length!==2)throw new TypeError("Each header pair must be a name/value tuple");return[...pair]})}}else throw new TypeError("Failed to construct 'Headers': The provided value is not of type '(sequence<sequence<ByteString>> or record<ByteString, ByteString>)");return result=result.length>0?result.map(([name,value])=>(validateHeaderName(name),validateHeaderValue(name,String(value)),[String(name).toLowerCase(),String(value)])):void 0,super(result),new Proxy(this,{get(target,p,receiver){switch(p){case"append":case"set":return(name,value)=>(validateHeaderName(name),validateHeaderValue(name,String(value)),URLSearchParams.prototype[p].call(target,String(name).toLowerCase(),String(value)));case"delete":case"has":case"getAll":return name=>(validateHeaderName(name),URLSearchParams.prototype[p].call(target,String(name).toLowerCase()));case"keys":return()=>(target.sort(),new Set(URLSearchParams.prototype.keys.call(target)).keys());default:return Reflect.get(target,p,receiver)}}})}get[Symbol.toStringTag](){return this.constructor.name}toString(){return Object.prototype.toString.call(this)}get(name){let values=this.getAll(name);if(values.length===0)return null;let value=values.join(", ");return/^content-encoding$/i.test(name)&&(value=value.toLowerCase()),value}forEach(callback,thisArg=void 0){for(let name of this.keys())Reflect.apply(callback,thisArg,[this.get(name),name,this])}*values(){for(let name of this.keys())yield this.get(name)}*entries(){for(let name of this.keys())yield[name,this.get(name)]}[Symbol.iterator](){return this.entries()}raw(){return[...this.keys()].reduce((result,key)=>(result[key]=this.getAll(key),result),{})}[Symbol.for("nodejs.util.inspect.custom")](){return[...this.keys()].reduce((result,key)=>{let values=this.getAll(key);return key==="host"?result[key]=values[0]:result[key]=values.length>1?values:values[0],result},{})}};Object.defineProperties(Headers.prototype,["get","entries","forEach","values"].reduce((result,property)=>(result[property]={enumerable:!0},result),{}))}});var redirectStatus,isRedirect,init_is_redirect=__esm({"node_modules/node-fetch/src/utils/is-redirect.js"(){redirectStatus=new Set([301,302,303,307,308]),isRedirect=code=>redirectStatus.has(code)}});var INTERNALS2,Response,init_response=__esm({"node_modules/node-fetch/src/response.js"(){init_headers();init_body();init_is_redirect();INTERNALS2=Symbol("Response internals"),Response=class _Response extends Body{constructor(body=null,options={}){super(body,options);let status=options.status!=null?options.status:200,headers=new Headers(options.headers);if(body!==null&&!headers.has("Content-Type")){let contentType=extractContentType(body,this);contentType&&headers.append("Content-Type",contentType)}this[INTERNALS2]={type:"default",url:options.url,status,statusText:options.statusText||"",headers,counter:options.counter,highWaterMark:options.highWaterMark}}get type(){return this[INTERNALS2].type}get url(){return this[INTERNALS2].url||""}get status(){return this[INTERNALS2].status}get ok(){return this[INTERNALS2].status>=200&&this[INTERNALS2].status<300}get redirected(){return this[INTERNALS2].counter>0}get statusText(){return this[INTERNALS2].statusText}get headers(){return this[INTERNALS2].headers}get highWaterMark(){return this[INTERNALS2].highWaterMark}clone(){return new _Response(clone(this,this.highWaterMark),{type:this.type,url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected,size:this.size,highWaterMark:this.highWaterMark})}static redirect(url,status=302){if(!isRedirect(status))throw new RangeError('Failed to execute "redirect" on "response": Invalid status code');return new _Response(null,{headers:{location:new URL(url).toString()},status})}static error(){let response=new _Response(null,{status:0,statusText:""});return response[INTERNALS2].type="error",response}static json(data=void 0,init={}){let body=JSON.stringify(data);if(body===void 0)throw new TypeError("data is not JSON serializable");let headers=new Headers(init&&init.headers);return headers.has("content-type")||headers.set("content-type","application/json"),new _Response(body,{...init,headers})}get[Symbol.toStringTag](){return"Response"}};Object.defineProperties(Response.prototype,{type:{enumerable:!0},url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}})}});var getSearch,init_get_search=__esm({"node_modules/node-fetch/src/utils/get-search.js"(){getSearch=parsedURL=>{if(parsedURL.search)return parsedURL.search;let lastOffset=parsedURL.href.length-1,hash=parsedURL.hash||(parsedURL.href[lastOffset]==="#"?"#":"");return parsedURL.href[lastOffset-hash.length]==="?"?"?":""}}});import{isIP}from"node:net";function stripURLForUseAsAReferrer(url,originOnly=!1){return url==null||(url=new URL(url),/^(about|blob|data):$/.test(url.protocol))?"no-referrer":(url.username="",url.password="",url.hash="",originOnly&&(url.pathname="",url.search=""),url)}function validateReferrerPolicy(referrerPolicy){if(!ReferrerPolicy.has(referrerPolicy))throw new TypeError(`Invalid referrerPolicy: ${referrerPolicy}`);return referrerPolicy}function isOriginPotentiallyTrustworthy(url){if(/^(http|ws)s:$/.test(url.protocol))return!0;let hostIp=url.host.replace(/(^\[)|(]$)/g,""),hostIPVersion=isIP(hostIp);return hostIPVersion===4&&/^127\./.test(hostIp)||hostIPVersion===6&&/^(((0+:){7})|(::(0+:){0,6}))0*1$/.test(hostIp)?!0:url.host==="localhost"||url.host.endsWith(".localhost")?!1:url.protocol==="file:"}function isUrlPotentiallyTrustworthy(url){return/^about:(blank|srcdoc)$/.test(url)||url.protocol==="data:"||/^(blob|filesystem):$/.test(url.protocol)?!0:isOriginPotentiallyTrustworthy(url)}function determineRequestsReferrer(request,{referrerURLCallback,referrerOriginCallback}={}){if(request.referrer==="no-referrer"||request.referrerPolicy==="")return null;let policy=request.referrerPolicy;if(request.referrer==="about:client")return"no-referrer";let referrerSource=request.referrer,referrerURL=stripURLForUseAsAReferrer(referrerSource),referrerOrigin=stripURLForUseAsAReferrer(referrerSource,!0);referrerURL.toString().length>4096&&(referrerURL=referrerOrigin),referrerURLCallback&&(referrerURL=referrerURLCallback(referrerURL)),referrerOriginCallback&&(referrerOrigin=referrerOriginCallback(referrerOrigin));let currentURL=new URL(request.url);switch(policy){case"no-referrer":return"no-referrer";case"origin":return referrerOrigin;case"unsafe-url":return referrerURL;case"strict-origin":return isUrlPotentiallyTrustworthy(referrerURL)&&!isUrlPotentiallyTrustworthy(currentURL)?"no-referrer":referrerOrigin.toString();case"strict-origin-when-cross-origin":return referrerURL.origin===currentURL.origin?referrerURL:isUrlPotentiallyTrustworthy(referrerURL)&&!isUrlPotentiallyTrustworthy(currentURL)?"no-referrer":referrerOrigin;case"same-origin":return referrerURL.origin===currentURL.origin?referrerURL:"no-referrer";case"origin-when-cross-origin":return referrerURL.origin===currentURL.origin?referrerURL:referrerOrigin;case"no-referrer-when-downgrade":return isUrlPotentiallyTrustworthy(referrerURL)&&!isUrlPotentiallyTrustworthy(currentURL)?"no-referrer":referrerURL;default:throw new TypeError(`Invalid referrerPolicy: ${policy}`)}}function parseReferrerPolicyFromHeader(headers){let policyTokens=(headers.get("referrer-policy")||"").split(/[,\s]+/),policy="";for(let token of policyTokens)token&&ReferrerPolicy.has(token)&&(policy=token);return policy}var ReferrerPolicy,DEFAULT_REFERRER_POLICY,init_referrer=__esm({"node_modules/node-fetch/src/utils/referrer.js"(){ReferrerPolicy=new Set(["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"]),DEFAULT_REFERRER_POLICY="strict-origin-when-cross-origin"}});import{format as formatUrl}from"node:url";import{deprecate as deprecate2}from"node:util";var INTERNALS3,isRequest,doBadDataWarn,Request,getNodeRequestOptions,init_request=__esm({"node_modules/node-fetch/src/request.js"(){init_headers();init_body();init_is();init_get_search();init_referrer();INTERNALS3=Symbol("Request internals"),isRequest=object=>typeof object=="object"&&typeof object[INTERNALS3]=="object",doBadDataWarn=deprecate2(()=>{},".data is not a valid RequestInit property, use .body instead","https://github.com/node-fetch/node-fetch/issues/1000 (request)"),Request=class _Request extends Body{constructor(input,init={}){let parsedURL;if(isRequest(input)?parsedURL=new URL(input.url):(parsedURL=new URL(input),input={}),parsedURL.username!==""||parsedURL.password!=="")throw new TypeError(`${parsedURL} is an url with embedded credentials.`);let method=init.method||input.method||"GET";if(/^(delete|get|head|options|post|put)$/i.test(method)&&(method=method.toUpperCase()),!isRequest(init)&&"data"in init&&doBadDataWarn(),(init.body!=null||isRequest(input)&&input.body!==null)&&(method==="GET"||method==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body");let inputBody=init.body?init.body:isRequest(input)&&input.body!==null?clone(input):null;super(inputBody,{size:init.size||input.size||0});let headers=new Headers(init.headers||input.headers||{});if(inputBody!==null&&!headers.has("Content-Type")){let contentType=extractContentType(inputBody,this);contentType&&headers.set("Content-Type",contentType)}let signal=isRequest(input)?input.signal:null;if("signal"in init&&(signal=init.signal),signal!=null&&!isAbortSignal(signal))throw new TypeError("Expected signal to be an instanceof AbortSignal or EventTarget");let referrer=init.referrer==null?input.referrer:init.referrer;if(referrer==="")referrer="no-referrer";else if(referrer){let parsedReferrer=new URL(referrer);referrer=/^about:(\/\/)?client$/.test(parsedReferrer)?"client":parsedReferrer}else referrer=void 0;this[INTERNALS3]={method,redirect:init.redirect||input.redirect||"follow",headers,parsedURL,signal,referrer},this.follow=init.follow===void 0?input.follow===void 0?20:input.follow:init.follow,this.compress=init.compress===void 0?input.compress===void 0?!0:input.compress:init.compress,this.counter=init.counter||input.counter||0,this.agent=init.agent||input.agent,this.highWaterMark=init.highWaterMark||input.highWaterMark||16384,this.insecureHTTPParser=init.insecureHTTPParser||input.insecureHTTPParser||!1,this.referrerPolicy=init.referrerPolicy||input.referrerPolicy||""}get method(){return this[INTERNALS3].method}get url(){return formatUrl(this[INTERNALS3].parsedURL)}get headers(){return this[INTERNALS3].headers}get redirect(){return this[INTERNALS3].redirect}get signal(){return this[INTERNALS3].signal}get referrer(){if(this[INTERNALS3].referrer==="no-referrer")return"";if(this[INTERNALS3].referrer==="client")return"about:client";if(this[INTERNALS3].referrer)return this[INTERNALS3].referrer.toString()}get referrerPolicy(){return this[INTERNALS3].referrerPolicy}set referrerPolicy(referrerPolicy){this[INTERNALS3].referrerPolicy=validateReferrerPolicy(referrerPolicy)}clone(){return new _Request(this)}get[Symbol.toStringTag](){return"Request"}};Object.defineProperties(Request.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0},referrer:{enumerable:!0},referrerPolicy:{enumerable:!0}});getNodeRequestOptions=request=>{let{parsedURL}=request[INTERNALS3],headers=new Headers(request[INTERNALS3].headers);headers.has("Accept")||headers.set("Accept","*/*");let contentLengthValue=null;if(request.body===null&&/^(post|put)$/i.test(request.method)&&(contentLengthValue="0"),request.body!==null){let totalBytes=getTotalBytes(request);typeof totalBytes=="number"&&!Number.isNaN(totalBytes)&&(contentLengthValue=String(totalBytes))}contentLengthValue&&headers.set("Content-Length",contentLengthValue),request.referrerPolicy===""&&(request.referrerPolicy=DEFAULT_REFERRER_POLICY),request.referrer&&request.referrer!=="no-referrer"?request[INTERNALS3].referrer=determineRequestsReferrer(request):request[INTERNALS3].referrer="no-referrer",request[INTERNALS3].referrer instanceof URL&&headers.set("Referer",request.referrer),headers.has("User-Agent")||headers.set("User-Agent","node-fetch"),request.compress&&!headers.has("Accept-Encoding")&&headers.set("Accept-Encoding","gzip, deflate, br");let{agent}=request;typeof agent=="function"&&(agent=agent(parsedURL));let search=getSearch(parsedURL),options={path:parsedURL.pathname+search,method:request.method,headers:headers[Symbol.for("nodejs.util.inspect.custom")](),insecureHTTPParser:request.insecureHTTPParser,agent};return{parsedURL,options}}}});var AbortError,init_abort_error=__esm({"node_modules/node-fetch/src/errors/abort-error.js"(){init_base();AbortError=class extends FetchBaseError{constructor(message,type="aborted"){super(message,type)}}}});import http2 from"node:http";import https from"node:https";import zlib from"node:zlib";import Stream2,{PassThrough as PassThrough2,pipeline as pump}from"node:stream";import{Buffer as Buffer3}from"node:buffer";async function fetch(url,options_){return new Promise((resolve,reject)=>{let request=new Request(url,options_),{parsedURL,options}=getNodeRequestOptions(request);if(!supportedSchemas.has(parsedURL.protocol))throw new TypeError(`node-fetch cannot load ${url}. URL scheme "${parsedURL.protocol.replace(/:$/,"")}" is not supported.`);if(parsedURL.protocol==="data:"){let data=dist_default(request.url),response2=new Response(data,{headers:{"Content-Type":data.typeFull}});resolve(response2);return}let send=(parsedURL.protocol==="https:"?https:http2).request,{signal}=request,response=null,abort=()=>{let error=new AbortError("The operation was aborted.");reject(error),request.body&&request.body instanceof Stream2.Readable&&request.body.destroy(error),!(!response||!response.body)&&response.body.emit("error",error)};if(signal&&signal.aborted){abort();return}let abortAndFinalize=()=>{abort(),finalize()},request_=send(parsedURL.toString(),options);signal&&signal.addEventListener("abort",abortAndFinalize);let finalize=()=>{request_.abort(),signal&&signal.removeEventListener("abort",abortAndFinalize)};request_.on("error",error=>{reject(new FetchError(`request to ${request.url} failed, reason: ${error.message}`,"system",error)),finalize()}),fixResponseChunkedTransferBadEnding(request_,error=>{response&&response.body&&response.body.destroy(error)}),process.version<"v14"&&request_.on("socket",s=>{let endedWithEventsCount;s.prependListener("end",()=>{endedWithEventsCount=s._eventsCount}),s.prependListener("close",hadError=>{if(response&&endedWithEventsCount<s._eventsCount&&!hadError){let error=new Error("Premature close");error.code="ERR_STREAM_PREMATURE_CLOSE",response.body.emit("error",error)}})}),request_.on("response",response_=>{request_.setTimeout(0);let headers=fromRawHeaders(response_.rawHeaders);if(isRedirect(response_.statusCode)){let location=headers.get("Location"),locationURL=null;try{locationURL=location===null?null:new URL(location,request.url)}catch{if(request.redirect!=="manual"){reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`,"invalid-redirect")),finalize();return}}switch(request.redirect){case"error":reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`,"no-redirect")),finalize();return;case"manual":break;case"follow":{if(locationURL===null)break;if(request.counter>=request.follow){reject(new FetchError(`maximum redirect reached at: ${request.url}`,"max-redirect")),finalize();return}let requestOptions={headers:new Headers(request.headers),follow:request.follow,counter:request.counter+1,agent:request.agent,compress:request.compress,method:request.method,body:clone(request),signal:request.signal,size:request.size,referrer:request.referrer,referrerPolicy:request.referrerPolicy};if(!isDomainOrSubdomain(request.url,locationURL)||!isSameProtocol(request.url,locationURL))for(let name of["authorization","www-authenticate","cookie","cookie2"])requestOptions.headers.delete(name);if(response_.statusCode!==303&&request.body&&options_.body instanceof Stream2.Readable){reject(new FetchError("Cannot follow redirect with body being a readable stream","unsupported-redirect")),finalize();return}(response_.statusCode===303||(response_.statusCode===301||response_.statusCode===302)&&request.method==="POST")&&(requestOptions.method="GET",requestOptions.body=void 0,requestOptions.headers.delete("content-length"));let responseReferrerPolicy=parseReferrerPolicyFromHeader(headers);responseReferrerPolicy&&(requestOptions.referrerPolicy=responseReferrerPolicy),resolve(fetch(new Request(locationURL,requestOptions))),finalize();return}default:return reject(new TypeError(`Redirect option '${request.redirect}' is not a valid value of RequestRedirect`))}}signal&&response_.once("end",()=>{signal.removeEventListener("abort",abortAndFinalize)});let body=pump(response_,new PassThrough2,error=>{error&&reject(error)});process.version<"v12.10"&&response_.on("aborted",abortAndFinalize);let responseOptions={url:request.url,status:response_.statusCode,statusText:response_.statusMessage,headers,size:request.size,counter:request.counter,highWaterMark:request.highWaterMark},codings=headers.get("Content-Encoding");if(!request.compress||request.method==="HEAD"||codings===null||response_.statusCode===204||response_.statusCode===304){response=new Response(body,responseOptions),resolve(response);return}let zlibOptions={flush:zlib.Z_SYNC_FLUSH,finishFlush:zlib.Z_SYNC_FLUSH};if(codings==="gzip"||codings==="x-gzip"){body=pump(body,zlib.createGunzip(zlibOptions),error=>{error&&reject(error)}),response=new Response(body,responseOptions),resolve(response);return}if(codings==="deflate"||codings==="x-deflate"){let raw=pump(response_,new PassThrough2,error=>{error&&reject(error)});raw.once("data",chunk=>{(chunk[0]&15)===8?body=pump(body,zlib.createInflate(),error=>{error&&reject(error)}):body=pump(body,zlib.createInflateRaw(),error=>{error&&reject(error)}),response=new Response(body,responseOptions),resolve(response)}),raw.once("end",()=>{response||(response=new Response(body,responseOptions),resolve(response))});return}if(codings==="br"){body=pump(body,zlib.createBrotliDecompress(),error=>{error&&reject(error)}),response=new Response(body,responseOptions),resolve(response);return}response=new Response(body,responseOptions),resolve(response)}),writeToStream(request_,request).catch(reject)})}function fixResponseChunkedTransferBadEnding(request,errorCallback){let LAST_CHUNK=Buffer3.from(`0\r
3
+ \r
4
+ `),isChunkedTransfer=!1,properLastChunkReceived=!1,previousChunk;request.on("response",response=>{let{headers}=response;isChunkedTransfer=headers["transfer-encoding"]==="chunked"&&!headers["content-length"]}),request.on("socket",socket=>{let onSocketClose=()=>{if(isChunkedTransfer&&!properLastChunkReceived){let error=new Error("Premature close");error.code="ERR_STREAM_PREMATURE_CLOSE",errorCallback(error)}},onData=buf=>{properLastChunkReceived=Buffer3.compare(buf.slice(-5),LAST_CHUNK)===0,!properLastChunkReceived&&previousChunk&&(properLastChunkReceived=Buffer3.compare(previousChunk.slice(-3),LAST_CHUNK.slice(0,3))===0&&Buffer3.compare(buf.slice(-2),LAST_CHUNK.slice(3))===0),previousChunk=buf};socket.prependListener("close",onSocketClose),socket.on("data",onData),request.on("close",()=>{socket.removeListener("close",onSocketClose),socket.removeListener("data",onData)})})}var supportedSchemas,init_src=__esm({"node_modules/node-fetch/src/index.js"(){init_dist();init_body();init_response();init_headers();init_request();init_fetch_error();init_abort_error();init_is_redirect();init_esm_min();init_is();init_referrer();init_from();supportedSchemas=new Set(["data:","http:","https:"])}});init_src();export{AbortError,fetch_blob_default as Blob,FetchError,file_default as File,FormData,Headers,Request,Response,blobFrom,blobFromSync,fetch as default,fileFrom,fileFromSync,isRedirect};
@@ -0,0 +1,2 @@
1
+ import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url);
2
+ import{retryProviderRequest}from"./chunk-PMRZO46Y.js";import{formatProviderError,normalizeProviderError}from"./chunk-FR2OJIAF.js";import{calculateCost}from"./chunk-GXW3X65X.js";import{headersToRecord,providerHeadersToRecord}from"./chunk-UTB4DTYQ.js";import"./chunk-LPXNMA2W.js";import{getIdentityHeaders}from"./chunk-V6KH5QG4.js";import"./chunk-JXWJOIH4.js";function httpError(label,response,body){let error=new Error(`${label} returned ${response.status}`);return error.status=response.status,error.headers=response.headers,error.body=body,error}function timeoutError(timeoutMs){let error=new Error(`Request timed out after ${timeoutMs}ms`);return error.name="TimeoutError",error.status=void 0,error.headers=void 0,error.body="",error}function isRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function requiredNumber(label,value,field){if(typeof value!="number"||!Number.isFinite(value))throw new Error(`${label} returned an invalid ${field}`);return value}function requestHeaders(model,apiKey,optionsHeaders,identity){return providerHeadersToRecord(getIdentityHeaders(model,identity),{authorization:`Bearer ${apiKey}`,"content-type":"application/json"},model.headers,optionsHeaders)??{}}async function postClassifierRequest(label,url,model,body,options,noRetryStatuses){if(!options?.apiKey)throw new Error(`No API key for provider: ${model.provider}`);let apiKey=options.apiKey,payload=body,transformed=await options.onPayload?.(payload,model);transformed!==void 0&&(payload=transformed);let requestFetch=options.fetch??globalThis.fetch,{response,json}=await retryProviderRequest(async()=>{let timeoutSignal=options.timeoutMs!==void 0?AbortSignal.timeout(options.timeoutMs):void 0,signal=options.signal&&timeoutSignal?AbortSignal.any([options.signal,timeoutSignal]):options.signal??timeoutSignal;try{let next=await requestFetch(url,{method:"POST",headers:requestHeaders(model,apiKey,options.headers,options.identity),body:JSON.stringify(payload),signal});if(!next.ok)throw httpError(label,next,await next.text());return{response:next,json:await next.json()}}catch(error){throw timeoutSignal?.aborted&&!options.signal?.aborted?timeoutError(options.timeoutMs):error}},{maxRetries:options.maxRetries??2,maxRetryDelayMs:options.maxRetryDelayMs,signal:options.signal,noRetryStatuses});return await options.onResponse?.({status:response.status,headers:headersToRecord(response.headers)},model),json}function tokenCount(value){return typeof value=="number"&&Number.isFinite(value)&&value>0?value:0}function parseClassifierUsage(value,model){if(!isRecord(value)||value.input_tokens===void 0&&value.output_tokens===void 0)return;let input=tokenCount(value.input_tokens),output=tokenCount(value.output_tokens),usage={input,output,cacheRead:0,cacheWrite:0,totalTokens:input+output,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}};return calculateCost(model,usage),usage}var IMAGE_OPT_IN_HEADERS={"TypeSafe-Danger-Zone-Images":"true"};function probabilities(label,value,id){if(!isRecord(value))throw new Error(`${label} returned invalid probabilities for ${id}`);return Object.fromEntries(Object.entries(value).map(([key,probability])=>[key,requiredNumber(label,probability,`probability for ${id}.${key}`)]))}function parseAnswers(label,value,context){if(!isRecord(value))throw new Error(`${label} returned an unexpected response`);let answers=[];for(let[id,question]of Object.entries(context.questions)){let answer=value[id];if(!isRecord(answer))throw new Error(`${label} did not return an answer for ${id}`);if(question.type==="choice"){if(answer.type!=="choice"||typeof answer.choice!="string")throw new Error(`${label} did not return a choice answer for ${id}`);answers.push([id,{type:"choice",choice:answer.choice,probabilities:probabilities(label,answer.probabilities,id),confidence:requiredNumber(label,answer.confidence,`confidence for ${id}`)}])}else if(question.type==="score"){if(answer.type!=="score")throw new Error(`${label} did not return a score answer for ${id}`);answers.push([id,{type:"score",score:requiredNumber(label,answer.score,`score for ${id}`),confidence:requiredNumber(label,answer.confidence,`confidence for ${id}`)}])}else{if(answer.type!=="noul")throw new Error(`${label} did not return a bool answer for ${id}`);answers.push([id,{type:"bool",probability:requiredNumber(label,answer.noul,`probability for ${id}`)}])}}return Object.fromEntries(answers)}var ASSET_FORMATS={"image/png":"png","image/jpeg":"jpeg"},DATA_URL_TYPES=new Set(["image/png","image/jpeg","image/webp"]),MAX_DATA_URL_IMAGES=4;function addImages(label,model,input,images,request){if(input==="images"){if(images.length>MAX_DATA_URL_IMAGES)throw new Error(`${label} accepts at most ${MAX_DATA_URL_IMAGES} images for ${model.id}, got ${images.length}`);request.images=images.map(image=>{if(!DATA_URL_TYPES.has(image.mimeType))throw new Error(`${label} accepts PNG, JPEG, and WebP images for ${model.id}, got ${image.mimeType}`);return`data:${image.mimeType};base64,${image.data}`});return}if(input==="state-image-urls"){let parts=images.map(image=>({type:"image_url",image_url:{url:`data:${image.mimeType};base64,${image.data}`}}));request.state=[...parts,request.state];return}let assets={};images.forEach((image,index)=>{let format=ASSET_FORMATS[image.mimeType];if(!format)throw new Error(`${label} accepts PNG and JPEG images for ${model.id}, got ${image.mimeType}`);assets[`<image-${index+1}>`]={type:"image",format,data_base64:image.data}}),request.assets=assets,request.state=[...Object.keys(assets),request.state]}function wireRequest(context){return{state:context.state,questions:Object.fromEntries(Object.entries(context.questions).map(([id,question])=>[id,question.type==="bool"?{...question,type:"noul"}:question]))}}async function classifySystemOne(transport2,model,context,options){let output={api:model.api,provider:model.provider,model:model.id,answers:{},stopReason:"stop",timestamp:Date.now()};try{if(model.api!==transport2.api)throw new Error(`Unsupported classifier API: ${model.api}`);let request=wireRequest(context),requestOptions=options;if(context.images?.length){if(!model.input.includes("image"))throw new Error(`${transport2.label} does not support image input for ${model.id}`);let detected=transport2.detectCompat(model),imageInput=model.compat?.imageInput??detected.imageInput;addImages(transport2.label,model,imageInput,context.images,request),(model.compat?.sendImageOptInHeader??detected.sendImageOptInHeader)&&(requestOptions={...options,headers:{...IMAGE_OPT_IN_HEADERS,...options?.headers}})}let body=await postClassifierRequest(transport2.label,transport2.url(model),model,transport2.payload(model,request),requestOptions),result=transport2.output(body),usage=parseClassifierUsage(result.usage,model);return usage&&(output.usage=usage),output.answers=parseAnswers(transport2.label,result.answers,context),output}catch(error){return output.stopReason=options?.signal?.aborted?"aborted":"error",output.errorMessage=formatProviderError(normalizeProviderError(error),`${transport2.label} error`),output}}var transport={api:"typesafe-system-one",label:"System One API",detectCompat:model=>model.provider==="openrouter"||model.baseUrl.includes("openrouter.ai")?{imageInput:"state-image-urls",sendImageOptInHeader:!1}:{imageInput:"assets",sendImageOptInHeader:!0},url:model=>new URL("systemone",`${model.baseUrl.replace(/\/+$/u,"")}/`),payload:(model,request)=>({model:model.id,...request}),output:body=>{if(!isRecord(body))throw new Error("System One API returned an unexpected response");return body}},classify=(model,context,options)=>classifySystemOne(transport,model,context,options);export{classify};
@@ -0,0 +1,2 @@
1
+ import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url);
2
+ import{dist_exports as dist_exports3}from"./chunk-UNAPBUIX.js";import{dist_exports as dist_exports2,pi_ai_extension_view_exports}from"./chunk-BUEFMMN7.js";import"./chunk-JEIXS66U.js";import{all_exports,compile_exports,value_exports}from"./chunk-G4QXDUQL.js";import"./chunk-IEBK4HQA.js";import"./chunk-TVDA4NZP.js";import{dist_exports}from"./chunk-ICLDQMTM.js";import{build_exports}from"./chunk-5ZIVIB55.js";import"./chunk-6QGV3IWD.js";import"./chunk-5AGIVGSV.js";import"./chunk-MTY47RPT.js";import"./chunk-OLNSR6Z3.js";import"./chunk-45GGYWI5.js";import"./chunk-GFUN2N5K.js";import"./chunk-ZG74NES2.js";import{models_exports}from"./chunk-GXW3X65X.js";import"./chunk-FFMDRXC4.js";import"./chunk-7DDKXS2Q.js";import"./chunk-LPXNMA2W.js";import"./chunk-V6KH5QG4.js";import"./chunk-JXWJOIH4.js";var oauth_exports={};var VIRTUAL_MODULES={typebox:build_exports,"typebox/compile":compile_exports,"typebox/value":value_exports,"@sinclair/typebox":build_exports,"@sinclair/typebox/compile":compile_exports,"@sinclair/typebox/value":value_exports,"@earendil-works/pi-agent-core":dist_exports2,"@earendil-works/pi-tui":dist_exports,"@earendil-works/pi-ai":pi_ai_extension_view_exports,"@earendil-works/pi-ai/compat":pi_ai_extension_view_exports,"@earendil-works/pi-ai/models":models_exports,"@earendil-works/pi-ai/oauth":oauth_exports,"@earendil-works/pi-ai/providers/all":all_exports,"@earendil-works/pi-coding-agent":dist_exports3,"@mariozechner/pi-agent-core":dist_exports2,"@mariozechner/pi-tui":dist_exports,"@mariozechner/pi-ai":pi_ai_extension_view_exports,"@mariozechner/pi-ai/compat":pi_ai_extension_view_exports,"@mariozechner/pi-ai/models":models_exports,"@mariozechner/pi-ai/oauth":oauth_exports,"@mariozechner/pi-ai/providers/all":all_exports,"@mariozechner/pi-coding-agent":dist_exports3};export{VIRTUAL_MODULES};
@@ -0,0 +1,2 @@
1
+ import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url);
2
+ var CANCEL_MESSAGE="Login cancelled",TIMEOUT_MESSAGE="Device flow timed out",SLOW_DOWN_TIMEOUT_MESSAGE="Device flow timed out after one or more slow_down responses. This is often caused by clock drift in WSL or VM environments. Please sync or restart the VM clock and try again.";function abortableSleep(ms,signal,cancelMessage){return new Promise((resolve,reject)=>{if(signal.aborted){reject(new Error(cancelMessage));return}let onAbort=()=>{clearTimeout(timeout),reject(new Error(cancelMessage))},timeout=setTimeout(()=>{signal.removeEventListener("abort",onAbort),resolve()},ms);signal.addEventListener("abort",onAbort,{once:!0})})}async function pollOAuthDeviceCodeFlow(options){let deadline=typeof options.expiresInSeconds=="number"?Date.now()+options.expiresInSeconds*1e3:Number.POSITIVE_INFINITY,intervalMs=Math.max(1e3,Math.floor((options.intervalSeconds??5)*1e3)),slowDownResponses=0;if(options.waitBeforeFirstPoll){let remainingMs=deadline-Date.now();remainingMs>0&&await abortableSleep(Math.min(intervalMs,remainingMs),options.signal,CANCEL_MESSAGE)}for(;Date.now()<deadline;){if(options.signal.aborted)throw new Error(CANCEL_MESSAGE);let result=await options.poll();if(result.status==="complete")return result.value;if(result.status==="failed")throw new Error(result.message);result.status==="slow_down"&&(slowDownResponses+=1,intervalMs=typeof result.intervalSeconds=="number"&&Number.isFinite(result.intervalSeconds)&&result.intervalSeconds>0?Math.max(1e3,Math.floor(result.intervalSeconds*1e3)):Math.max(1e3,intervalMs+5e3));let remainingMs=deadline-Date.now();if(remainingMs<=0)break;await abortableSleep(Math.min(intervalMs,remainingMs),options.signal,CANCEL_MESSAGE)}throw new Error(slowDownResponses>0?SLOW_DOWN_TIMEOUT_MESSAGE:TIMEOUT_MESSAGE)}var XAI_CLIENT_ID="b1a00492-073a-47ea-816f-4c329264a828",XAI_SCOPE="openid profile email offline_access grok-cli:access api:access",XAI_DEVICE_CODE_URL="https://auth.x.ai/oauth2/device/code",XAI_TOKEN_URL="https://auth.x.ai/oauth2/token",REFRESH_SKEW_MS=300*1e3,DEFAULT_TOKEN_LIFETIME_SECONDS=3600;function requiredString(body,field){let value=body[field];if(typeof value!="string"||value.length===0)throw new Error(`Invalid xAI OAuth response field: ${field}`);return value}function positiveNumber(body,field){let value=body[field];if(typeof value!="number"||!Number.isFinite(value)||value<=0)throw new Error(`Invalid xAI OAuth response field: ${field}`);return value}function validateVerificationUri(raw){let url;try{url=new URL(raw)}catch{throw new Error("Untrusted verification URI in xAI OAuth response")}if(url.protocol!=="https:")throw new Error("Untrusted verification URI in xAI OAuth response");return url.href}async function postForm(url,fields,signal){let response;try{response=await fetch(url,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(fields),signal})}catch(error){throw signal.aborted?new Error("Login cancelled"):error}let body;try{let parsed=await response.json();body=parsed&&typeof parsed=="object"&&!Array.isArray(parsed)?parsed:{}}catch{throw signal.aborted?new Error("Login cancelled"):new Error(`xAI OAuth returned invalid JSON (HTTP ${response.status})`)}return{ok:response.ok,status:response.status,body}}function requestFailure(action,response){let error=typeof response.body.error=="string"?response.body.error:void 0,description=typeof response.body.error_description=="string"?response.body.error_description:void 0,detail=[error,description].filter(Boolean).join(": ");return new Error(`xAI OAuth ${action} failed (HTTP ${response.status})${detail?`: ${detail}`:""}`)}function parseDeviceCode(body){let interval=body.interval,intervalSeconds=typeof interval=="number"&&Number.isFinite(interval)&&interval>0?interval:void 0,verificationUriComplete=typeof body.verification_uri_complete=="string"&&body.verification_uri_complete.length>0?validateVerificationUri(body.verification_uri_complete):void 0;return{deviceCode:requiredString(body,"device_code"),userCode:requiredString(body,"user_code"),verificationUri:validateVerificationUri(requiredString(body,"verification_uri")),verificationUriComplete,intervalSeconds,expiresInSeconds:positiveNumber(body,"expires_in")}}function credentialsFromTokenResponse(body,previousRefreshToken){let access=requiredString(body,"access_token"),refresh=body.refresh_token===void 0&&previousRefreshToken?previousRefreshToken:requiredString(body,"refresh_token"),expiresInSeconds=body.expires_in===void 0?DEFAULT_TOKEN_LIFETIME_SECONDS:positiveNumber(body,"expires_in");return{type:"oauth",access,refresh,expires:Date.now()+expiresInSeconds*1e3-REFRESH_SKEW_MS}}async function requestDeviceCode(signal){let response=await postForm(XAI_DEVICE_CODE_URL,{client_id:XAI_CLIENT_ID,scope:XAI_SCOPE,referrer:"pi"},signal);if(!response.ok)throw requestFailure("device authorization",response);return parseDeviceCode(response.body)}async function pollForTokens(device,signal){return pollOAuthDeviceCodeFlow({intervalSeconds:device.intervalSeconds,expiresInSeconds:device.expiresInSeconds,waitBeforeFirstPoll:!0,signal,poll:async()=>{let response=await postForm(XAI_TOKEN_URL,{grant_type:"urn:ietf:params:oauth:grant-type:device_code",client_id:XAI_CLIENT_ID,device_code:device.deviceCode},signal);if(response.ok)return{status:"complete",value:credentialsFromTokenResponse(response.body)};let error=response.body.error;if(error==="authorization_pending")return{status:"pending"};if(error==="slow_down"){let interval=response.body.interval;return{status:"slow_down",intervalSeconds:typeof interval=="number"?interval:void 0}}return error==="access_denied"||error==="authorization_denied"?{status:"failed",message:"xAI device authorization was denied"}:error==="expired_token"?{status:"failed",message:"xAI device code expired"}:{status:"failed",message:requestFailure("device token polling",response).message}}})}async function loginXai(interaction){let device=await requestDeviceCode(interaction.signal);return interaction.notify({type:"device_code",userCode:device.userCode,verificationUri:device.verificationUriComplete??device.verificationUri,intervalSeconds:device.intervalSeconds,expiresInSeconds:device.expiresInSeconds}),pollForTokens(device,interaction.signal)}async function refreshXaiToken(refreshToken,signal){let response=await postForm(XAI_TOKEN_URL,{grant_type:"refresh_token",client_id:XAI_CLIENT_ID,refresh_token:refreshToken},signal);if(!response.ok)throw requestFailure("token refresh",response);return credentialsFromTokenResponse(response.body,refreshToken)}var xaiOAuth={name:"xAI (Grok/X subscription)",isSubscription:!0,loginLabel:"Sign in with SuperGrok or X Premium",login:loginXai,refresh:(credential,signal)=>refreshXaiToken(credential.refresh,signal),async toAuth(credential){return{apiKey:credential.access}}};export{xaiOAuth};
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url);
3
+ import{configureHttpDispatcher,main}from"./chunks/chunk-BUEFMMN7.js";import"./chunks/chunk-JEIXS66U.js";import"./chunks/chunk-G4QXDUQL.js";import"./chunks/chunk-IEBK4HQA.js";import"./chunks/chunk-TVDA4NZP.js";import"./chunks/chunk-ICLDQMTM.js";import"./chunks/chunk-5ZIVIB55.js";import"./chunks/chunk-6QGV3IWD.js";import"./chunks/chunk-5AGIVGSV.js";import"./chunks/chunk-MTY47RPT.js";import"./chunks/chunk-OLNSR6Z3.js";import{APP_NAME}from"./chunks/chunk-45GGYWI5.js";import"./chunks/chunk-GFUN2N5K.js";import"./chunks/chunk-ZG74NES2.js";import"./chunks/chunk-GXW3X65X.js";import"./chunks/chunk-FFMDRXC4.js";import"./chunks/chunk-7DDKXS2Q.js";import"./chunks/chunk-LPXNMA2W.js";import"./chunks/chunk-V6KH5QG4.js";import"./chunks/chunk-JXWJOIH4.js";function setupCli(){process.title=APP_NAME,process.env.PI_CODING_AGENT="true",process.env.AI_AGENT="mars",process.emitWarning=(()=>{}),configureHttpDispatcher()}setupCli();main(process.argv.slice(2));
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire, enableCompileCache } from "node:module";
3
+
4
+ enableCompileCache();
5
+ createRequire(import.meta.url)("./cli-runtime.js");
@@ -0,0 +1,2 @@
1
+ import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url);
2
+ import{ShowImagesSelectorComponent,ThemeSelectorComponent}from"./chunks/chunk-UNAPBUIX.js";import{AgentSession,AgentSessionRuntime,AssistantMessageComponent,BashExecutionComponent,BorderedLoader,BranchSummaryMessageComponent,CURRENT_SESSION_VERSION,CompactionSummaryMessageComponent,CustomEditor,CustomMessageComponent,DEFAULT_COMPACTION_SETTINGS,DefaultPackageManager,DefaultResourceLoader,DynamicBorder,ExtensionEditorComponent,ExtensionInputComponent,ExtensionRunner,ExtensionSelectorComponent,FooterComponent,InteractiveMode,LoginDialogComponent,ModelRegistry,ModelSelectorComponent,OAuthSelectorComponent,RpcClient,SessionManager,SessionSelectorComponent,SettingsManager,SettingsSelectorComponent,SkillInvocationMessageComponent,ThinkingSelectorComponent,ToolExecutionComponent,TreeSelectorComponent,UserMessageComponent,UserMessageSelectorComponent,buildContextEntries,buildSessionContext,buildSessionProjection,calculateContextTokens,collectEntriesForBranchSummary,compact,convertToLlm,convertToPng,copyToClipboard,createAgentSession,createAgentSessionFromServices,createAgentSessionRuntime,createAgentSessionServices,createBashTool,createBashToolDefinition,createCodemodeExtension,createCodingTools,createEditTool,createEditToolDefinition,createEventBus,createExtensionRuntime,createFindTool,createFindToolDefinition,createGrepTool,createGrepToolDefinition,createLocalBashOperations,createLocalPowerShellOperations,createLsTool,createLsToolDefinition,createMcpExtension,createPowerShellTool,createPowerShellToolDefinition,createReadOnlyTools,createReadTool,createReadToolDefinition,createSyntheticSourceInfo,createToolSearchExtension,createWriteTool,createWriteToolDefinition,defineTool,detectSupportedImageMimeTypeFromFile,discoverAndLoadExtensions,estimateTokens,findCutPoint,findTurnStartIndex,formatDimensionNote,formatSkillsForPrompt,generateBranchSummary,generateDiffString,generateSummary,generateSummaryWithUsage,generateUnifiedPatch,getLastAssistantUsage,getLatestCompactionEntry,isBashToolResult,isEditToolResult,isFindToolResult,isGrepToolResult,isLsToolResult,isPowerShellToolResult,isReadToolResult,isToolCallEventType,isWriteToolResult,loadProjectContextFiles,loadSkills,loadSkillsFromDir,main,migrateSessionEntries,parseArgs,parseFrontmatter,parseSessionEntries,parseSkillBlock,prepareBranchEntries,renderDiff,resizeImage,resolveCliModel,resolveModelScopeWithDiagnostics,runPrintMode,runRpcMode,serializeConversation,sessionEntryToContextMessages,shouldCompact,stripFrontmatter,withFileMutationQueue,wrapRegisteredTool,wrapRegisteredTools}from"./chunks/chunk-BUEFMMN7.js";import{ArminComponent}from"./chunks/chunk-JEIXS66U.js";import{CredentialSynchronizationError,ModelRuntime,ProjectTrustStore,VIRTUAL_MODEL_STATE_ENTRY,hasTrustRequiringProjectResources}from"./chunks/chunk-G4QXDUQL.js";import"./chunks/chunk-IEBK4HQA.js";import{formatReadLineRange,truncateToVisualLines}from"./chunks/chunk-TVDA4NZP.js";import{Theme,getLanguageFromPath,getMarkdownTheme,getSelectListTheme,getSettingsListTheme,highlightCode,initTheme,keyHint,keyText,rawKeyHint}from"./chunks/chunk-ICLDQMTM.js";import"./chunks/chunk-5ZIVIB55.js";import"./chunks/chunk-6QGV3IWD.js";import"./chunks/chunk-5AGIVGSV.js";import{readStoredCredential}from"./chunks/chunk-MTY47RPT.js";import{DEFAULT_MAX_BYTES,DEFAULT_MAX_LINES,formatSize,getPowerShellConfig,getShellConfig,truncateHead,truncateLine,truncateTail}from"./chunks/chunk-OLNSR6Z3.js";import{CONFIG_DIR_NAME,VERSION,getAgentDir,getDocsPath,getExamplesPath,getPackageDir,getReadmePath}from"./chunks/chunk-45GGYWI5.js";import"./chunks/chunk-GFUN2N5K.js";import"./chunks/chunk-ZG74NES2.js";import"./chunks/chunk-GXW3X65X.js";import"./chunks/chunk-FFMDRXC4.js";import"./chunks/chunk-7DDKXS2Q.js";import"./chunks/chunk-LPXNMA2W.js";import"./chunks/chunk-V6KH5QG4.js";import"./chunks/chunk-JXWJOIH4.js";export{AgentSession,AgentSessionRuntime,ArminComponent,AssistantMessageComponent,BashExecutionComponent,BorderedLoader,BranchSummaryMessageComponent,CONFIG_DIR_NAME,CURRENT_SESSION_VERSION,CompactionSummaryMessageComponent,CredentialSynchronizationError,CustomEditor,CustomMessageComponent,DEFAULT_COMPACTION_SETTINGS,DEFAULT_MAX_BYTES,DEFAULT_MAX_LINES,DefaultPackageManager,DefaultResourceLoader,DynamicBorder,ExtensionEditorComponent,ExtensionInputComponent,ExtensionRunner,ExtensionSelectorComponent,FooterComponent,InteractiveMode,LoginDialogComponent,ModelRegistry,ModelRuntime,ModelSelectorComponent,OAuthSelectorComponent,ProjectTrustStore,RpcClient,SessionManager,SessionSelectorComponent,SettingsManager,SettingsSelectorComponent,ShowImagesSelectorComponent,SkillInvocationMessageComponent,Theme,ThemeSelectorComponent,ThinkingSelectorComponent,ToolExecutionComponent,TreeSelectorComponent,UserMessageComponent,UserMessageSelectorComponent,VERSION,VIRTUAL_MODEL_STATE_ENTRY,buildContextEntries,buildSessionContext,buildSessionProjection,calculateContextTokens,collectEntriesForBranchSummary,compact,convertToLlm,convertToPng,copyToClipboard,createAgentSession,createAgentSessionFromServices,createAgentSessionRuntime,createAgentSessionServices,createBashTool,createBashToolDefinition,createCodemodeExtension,createCodingTools,createEditTool,createEditToolDefinition,createEventBus,createExtensionRuntime,createFindTool,createFindToolDefinition,createGrepTool,createGrepToolDefinition,createLocalBashOperations,createLocalPowerShellOperations,createLsTool,createLsToolDefinition,createMcpExtension,createPowerShellTool,createPowerShellToolDefinition,createReadOnlyTools,createReadTool,createReadToolDefinition,createSyntheticSourceInfo,createToolSearchExtension,createWriteTool,createWriteToolDefinition,defineTool,detectSupportedImageMimeTypeFromFile,discoverAndLoadExtensions,estimateTokens,findCutPoint,findTurnStartIndex,formatDimensionNote,formatReadLineRange,formatSize,formatSkillsForPrompt,generateBranchSummary,generateDiffString,generateSummary,generateSummaryWithUsage,generateUnifiedPatch,getAgentDir,getDocsPath,getExamplesPath,getLanguageFromPath,getLastAssistantUsage,getLatestCompactionEntry,getMarkdownTheme,getPackageDir,getPowerShellConfig,getReadmePath,getSelectListTheme,getSettingsListTheme,getShellConfig,hasTrustRequiringProjectResources,highlightCode,initTheme,isBashToolResult,isEditToolResult,isFindToolResult,isGrepToolResult,isLsToolResult,isPowerShellToolResult,isReadToolResult,isToolCallEventType,isWriteToolResult,keyHint,keyText,loadProjectContextFiles,loadSkills,loadSkillsFromDir,main,migrateSessionEntries,parseArgs,parseFrontmatter,parseSessionEntries,parseSkillBlock,prepareBranchEntries,rawKeyHint,readStoredCredential,renderDiff,resizeImage,resolveCliModel,resolveModelScopeWithDiagnostics,runPrintMode,runRpcMode,serializeConversation,sessionEntryToContextMessages,shouldCompact,stripFrontmatter,truncateHead,truncateLine,truncateTail,truncateToVisualLines,withFileMutationQueue,wrapRegisteredTool,wrapRegisteredTools};
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url);
3
+ import{configureHttpDispatcher,main}from"./chunks/chunk-BUEFMMN7.js";import"./chunks/chunk-JEIXS66U.js";import"./chunks/chunk-G4QXDUQL.js";import"./chunks/chunk-IEBK4HQA.js";import"./chunks/chunk-TVDA4NZP.js";import"./chunks/chunk-ICLDQMTM.js";import"./chunks/chunk-5ZIVIB55.js";import"./chunks/chunk-6QGV3IWD.js";import"./chunks/chunk-5AGIVGSV.js";import"./chunks/chunk-MTY47RPT.js";import"./chunks/chunk-OLNSR6Z3.js";import{APP_NAME}from"./chunks/chunk-45GGYWI5.js";import"./chunks/chunk-GFUN2N5K.js";import"./chunks/chunk-ZG74NES2.js";import"./chunks/chunk-GXW3X65X.js";import"./chunks/chunk-FFMDRXC4.js";import"./chunks/chunk-7DDKXS2Q.js";import"./chunks/chunk-LPXNMA2W.js";import"./chunks/chunk-V6KH5QG4.js";import"./chunks/chunk-JXWJOIH4.js";process.title=`${APP_NAME}-rpc`;process.env.PI_CODING_AGENT="true";process.env.AI_AGENT="mars";process.emitWarning=(()=>{});configureHttpDispatcher();main(["--mode","rpc",...process.argv.slice(2)]);