@xiaoso/dsh-tool-plus 0.1.6 → 0.1.7-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (357) hide show
  1. package/THIRD_PARTY_NOTICES.md +9 -3
  2. package/lib/{abort-Cwwm4Err.mjs → abort-Caqff3M6.mjs} +2 -2
  3. package/lib/alibaba-coding-plan-DTupMiAi.mjs +73 -0
  4. package/lib/alibaba-token-plan-CHGyWOfX.mjs +46 -0
  5. package/lib/alibaba-token-plan-Dj3OZhEE.mjs +82 -0
  6. package/lib/{amazon-bedrock-TVMpUTRG.mjs → amazon-bedrock-DbFSYXfJ.mjs} +117 -38
  7. package/lib/{anthropic-BL6LFDQS.mjs → anthropic-CTJ3IQVa.mjs} +675 -166
  8. package/lib/anthropic-CXfWlp-x.mjs +105 -0
  9. package/lib/{aws-credentials-B20dliS7.mjs → anthropic-wire-CKuhDwZ1.mjs} +74 -14
  10. package/lib/{api-key-login-CIDnXeYd.mjs → api-key-validation-CGCJFbFr.mjs} +27 -68
  11. package/lib/{azure-openai-responses-BkhsLmN3.mjs → azure-openai-responses-ChFbWaGj.mjs} +27 -16
  12. package/lib/{browser-render-CmgvSNte.mjs → browser-render-9o0Rknop.mjs} +4 -4
  13. package/lib/bun-shim.mjs +71 -2
  14. package/lib/{bundled-references-ChZSPDFw.mjs → bundled-references-DY3EJxZV.mjs} +6 -5
  15. package/lib/cline-pass-Bwg3esu9.mjs +44 -0
  16. package/lib/cloudflare-ai-gateway-BupNXyKK.mjs +35 -0
  17. package/lib/cloudflare-ai-gateway-EWo0VkP5.mjs +44 -0
  18. package/lib/collapse-DOR8sOGf.mjs +2304 -0
  19. package/lib/coreweave-C82HrLpb.mjs +31 -0
  20. package/lib/coreweave-Ct8cF-da.mjs +14 -0
  21. package/lib/{cursor-B6HcmplF.mjs → cursor-B95LzVWV.mjs} +11 -3
  22. package/lib/{cursor-CRpLpaZ3.mjs → cursor-DJV_dcgB.mjs} +887 -1784
  23. package/lib/{cursor-B8m6SqAH.mjs → cursor-LKGjucn2.mjs} +48 -38
  24. package/lib/cursor-proto-B8Wj8bv9.mjs +10513 -0
  25. package/lib/{deterministic-id-D-yIV_eI.mjs → deterministic-id-CUEIMSqR.mjs} +1 -1
  26. package/lib/devin-BMTdx_hx.mjs +316 -0
  27. package/lib/{devin-DUAfvBsW.mjs → devin-DSp0Rw_E.mjs} +172 -86
  28. package/lib/devin-ExGIghmx.mjs +69 -0
  29. package/lib/devin-proto-Br8fdyNl.mjs +2888 -0
  30. package/lib/{dom-CawWi8fa.mjs → dom-DG3sPESc.mjs} +8 -8
  31. package/lib/effort-BdtQMN-_.mjs +23 -0
  32. package/lib/{error-C-f_Wnw4.mjs → error-CORgGg5a.mjs} +275 -154
  33. package/lib/{event-stream-Dh2guZxS.mjs → event-stream-ulcDenZD.mjs} +20 -4
  34. package/lib/{gemini-headers-DKUShltF.mjs → gemini-headers-Co9cVvex.mjs} +2 -2
  35. package/lib/{github-copilot-suDymKrx.mjs → github-copilot-Dstq1D3s.mjs} +69 -29
  36. package/lib/github-copilot-headers-DOh1gt_w.mjs +312 -0
  37. package/lib/gitlab-duo-DSCMrU0m.mjs +11 -0
  38. package/lib/google-CtsKkOQK.mjs +38 -0
  39. package/lib/google-antigravity-z-5KsEci.mjs +252 -0
  40. package/lib/{google-auth-DYJLM792.mjs → google-auth-ieLBaneO.mjs} +4 -4
  41. package/lib/{google-gemini-cli-8BT513Ul.mjs → google-gemini-cli-C6NE5mWz.mjs} +28 -54
  42. package/lib/{google-gemini-cli-D6cSmfvB.mjs → google-gemini-cli-CAIPSl7e.mjs} +23 -29
  43. package/lib/google-oauth-shared-DhMllAkt.mjs +53 -0
  44. package/lib/{google-shared-CVbHK5vZ.mjs → google-shared-B0aNCYEH.mjs} +140 -44
  45. package/lib/{google-validation-Cgbn3tWJ.mjs → google-validation-BEkNs-Bx.mjs} +1 -1
  46. package/lib/{google-vertex-Bui-ypAe.mjs → google-vertex-Bbd1tYNc.mjs} +8 -8
  47. package/lib/hosts-00rjRzUD.mjs +203 -0
  48. package/lib/id-AL5obQzR.mjs +71 -0
  49. package/lib/{idle-iterator-CYAxUkSD.mjs → idle-iterator-DlUkEfzW.mjs} +3 -3
  50. package/lib/index.mjs +598 -5275
  51. package/lib/kilo-ChJL54wq.mjs +81 -0
  52. package/lib/kimi-C2c_Zq8A.mjs +67 -0
  53. package/lib/{launch-BmgEUycu.mjs → launch-DKDH71En.mjs} +1 -1
  54. package/lib/markit-CmRfm4E2.mjs +9885 -0
  55. package/lib/models-DnXMYGcJ.mjs +381604 -0
  56. package/lib/muse-code-Di1VZmB1.mjs +143 -0
  57. package/lib/{ollama-Df9ce-Cp.mjs → ollama-B8ic3sEp.mjs} +15 -30
  58. package/lib/{openai-codex-CAVI3Me-.mjs → openai-codex-DuJNC99x.mjs} +29 -99
  59. package/lib/{openai-codex-responses-BcnOotRB.mjs → openai-codex-responses-BL29nh9K.mjs} +204 -116
  60. package/lib/{openai-completions-Bq4WT47M.mjs → openai-completions-BK2f2dBv.mjs} +152 -82
  61. package/lib/openai-configuration-update-xMYUjaK_.mjs +150 -0
  62. package/lib/{openai-reasoning-fallback-DXsfiSXO.mjs → openai-reasoning-fallback-BdB3RCbj.mjs} +106 -12
  63. package/lib/{openai-responses-Mq_-PjvE.mjs → openai-responses-CGQPlIIy.mjs} +76 -82
  64. package/lib/{perplexity-XgLF73E7.mjs → perplexity-TBjz3VMB.mjs} +52 -9
  65. package/lib/{pkce-BlQikGPu.mjs → pkce-BYjmugmw.mjs} +1 -1
  66. package/lib/protobuf-aab1UGVn.mjs +717 -0
  67. package/lib/{provider-response-C6vcbQyO.mjs → provider-response-SqKSkkUc.mjs} +1 -1
  68. package/lib/{proxy-D9lm7ONA.mjs → proxy-5nWqRL1f.mjs} +45 -5
  69. package/lib/{readability-Cpm-ocau.mjs → readability-uGhqb4GC.mjs} +2 -2
  70. package/lib/reference-CtvM4zLU.mjs +114 -0
  71. package/lib/{request-debug-HJMoJncL.mjs → request-debug-NQN0BjHH.mjs} +1 -1
  72. package/lib/{sanitize-text-CfcXzw5X.mjs → sanitize-text-BCf5KmCf.mjs} +1 -1
  73. package/lib/{scrapers-Cg5w77td.mjs → scrapers-BpqEnqNM.mjs} +12 -12
  74. package/lib/{src-BcD0_rQR.mjs → src-BwW51vA5.mjs} +979 -388
  75. package/lib/{sse-debug-CYdjOC96.mjs → sse-debug-B-tkLCPW.mjs} +1 -1
  76. package/lib/{stream-Bjq8wjfr.mjs → stream-B_7qN-bA.mjs} +3802 -2623
  77. package/lib/stream-markup-healing-DKT1lnkW.mjs +267 -0
  78. package/lib/{strict-tool-validation-imVLUcbI.mjs → strict-tool-validation-CBTz1dAA.mjs} +2 -2
  79. package/lib/taxonomy-DSIM99rS.mjs +15392 -0
  80. package/lib/{stream-markup-healing-DZ6bVDxH.mjs → thinking-CiLa2LFB.mjs} +31 -186
  81. package/lib/{turndown-DN7ByzEI.mjs → turndown-DrX1M4WG.mjs} +4 -4
  82. package/lib/{type-guards-B9VVjRDK.mjs → type-guards-CttAANEx.mjs} +1 -1
  83. package/lib/types/client/BashPlusCard.d.ts +53 -0
  84. package/lib/types/client/ToolPlusSection.d.ts +36 -0
  85. package/lib/types/client/forms.d.ts +42 -0
  86. package/lib/types/client/index.d.ts +29 -0
  87. package/lib/types/client/locales.d.ts +19 -0
  88. package/lib/types/client/rm-safe-status-text.d.ts +15 -0
  89. package/lib/types/client/rows.d.ts +107 -0
  90. package/lib/types/client/web-connection-rpc.d.ts +22 -0
  91. package/lib/types/config/fields.d.ts +85 -0
  92. package/lib/types/config/omp-settings.d.ts +21 -0
  93. package/lib/types/config/settings.d.ts +212 -0
  94. package/lib/types/config/truncate.d.ts +27 -0
  95. package/lib/types/host/browser-probe-rpc.d.ts +29 -0
  96. package/lib/types/index.d.ts +6 -0
  97. package/lib/types/tools/ast-edit/adapter/index.d.ts +26 -0
  98. package/lib/types/tools/ast-edit/adapter/sdk.d.ts +49 -0
  99. package/lib/types/tools/ast-grep/adapter/index.d.ts +31 -0
  100. package/lib/types/tools/ast-grep/adapter/sdk.d.ts +44 -0
  101. package/lib/types/tools/bash/adapter/spill.d.ts +34 -0
  102. package/lib/types/tools/bash/background.d.ts +40 -0
  103. package/lib/types/tools/bash/bash-executor.d.ts +102 -0
  104. package/lib/types/tools/bash/bash-interceptor.d.ts +33 -0
  105. package/lib/types/tools/bash/cd-workdir.d.ts +35 -0
  106. package/lib/types/tools/bash/logger.d.ts +18 -0
  107. package/lib/types/tools/bash/non-interactive-env.d.ts +5 -0
  108. package/lib/types/tools/bash/render.d.ts +46 -0
  109. package/lib/types/tools/bash/rm-safe-status.d.ts +62 -0
  110. package/lib/types/tools/bash/rm-safe.d.ts +18 -0
  111. package/lib/types/tools/bash/sanitize-text.d.ts +34 -0
  112. package/lib/types/tools/bash/shell-snapshot.d.ts +31 -0
  113. package/lib/types/tools/bash/shell-tokenize.d.ts +60 -0
  114. package/lib/types/tools/bash/streaming-output.d.ts +32 -0
  115. package/lib/types/tools/bash/trash-cli-main.d.ts +1 -0
  116. package/lib/types/tools/bash/trash-cli.d.ts +77 -0
  117. package/lib/types/tools/bash/types.d.ts +107 -0
  118. package/lib/types/tools/bash/which.d.ts +20 -0
  119. package/lib/types/tools/bash/windows-shell.d.ts +31 -0
  120. package/lib/types/tools/bash/yield.d.ts +71 -0
  121. package/lib/types/tools/edit/adapter/index.d.ts +57 -0
  122. package/lib/types/tools/edit/adapter/tools/auto-generated-guard.d.ts +10 -0
  123. package/lib/types/tools/edit/adapter/tools/output-meta.d.ts +34 -0
  124. package/lib/types/tools/edit/adapter/tools/plan-mode-guard.d.ts +21 -0
  125. package/lib/types/tools/glob/adapter/index.d.ts +52 -0
  126. package/lib/types/tools/grep/adapter/index.d.ts +53 -0
  127. package/lib/types/tools/grep/adapter/match-path.d.ts +1 -0
  128. package/lib/types/tools/hashline/native/diff-preview.d.ts +37 -0
  129. package/lib/types/tools/hashline/native/index.d.ts +109 -0
  130. package/lib/types/tools/hashline/native/normalize.d.ts +29 -0
  131. package/lib/types/tools/hashline/native/policy.d.ts +98 -0
  132. package/lib/types/tools/hashline/native/writer.d.ts +42 -0
  133. package/lib/types/tools/omp/browser/launch.d.ts +28 -0
  134. package/lib/types/tools/omp/browser/readable.d.ts +17 -0
  135. package/lib/types/tools/omp/config/settings-schema.d.ts +12 -0
  136. package/lib/types/tools/omp/config/settings.d.ts +59 -0
  137. package/lib/types/tools/omp/edit/apply-patch/parser.d.ts +34 -0
  138. package/lib/types/tools/omp/edit/details.d.ts +54 -0
  139. package/lib/types/tools/omp/edit/diff.d.ts +60 -0
  140. package/lib/types/tools/omp/edit/dispatch.d.ts +43 -0
  141. package/lib/types/tools/omp/edit/file-snapshot-store.d.ts +81 -0
  142. package/lib/types/tools/omp/edit/hashline/execute.d.ts +40 -0
  143. package/lib/types/tools/omp/edit/hashline/params.d.ts +6 -0
  144. package/lib/types/tools/omp/edit/modes/apply-patch.d.ts +25 -0
  145. package/lib/types/tools/omp/edit/modes/patch.d.ts +109 -0
  146. package/lib/types/tools/omp/edit/modes/replace.d.ts +151 -0
  147. package/lib/types/tools/omp/edit/normalize.d.ts +31 -0
  148. package/lib/types/tools/omp/edit/notebook.d.ts +50 -0
  149. package/lib/types/tools/omp/edit/read-file.d.ts +2 -0
  150. package/lib/types/tools/omp/edit/snapshot-details.d.ts +33 -0
  151. package/lib/types/tools/omp/extensibility/skills.d.ts +22 -0
  152. package/lib/types/tools/omp/internal-urls/index.d.ts +100 -0
  153. package/lib/types/tools/omp/internal-urls/local-protocol.d.ts +12 -0
  154. package/lib/types/tools/omp/internal-urls/parse.d.ts +31 -0
  155. package/lib/types/tools/omp/internal-urls/types.d.ts +189 -0
  156. package/lib/types/tools/omp/internal-urls/xd-protocol.d.ts +19 -0
  157. package/lib/types/tools/omp/markit/converters/docx.d.ts +6 -0
  158. package/lib/types/tools/omp/markit/converters/epub.d.ts +15 -0
  159. package/lib/types/tools/omp/markit/converters/pdf/index.d.ts +7 -0
  160. package/lib/types/tools/omp/markit/converters/pptx.d.ts +57 -0
  161. package/lib/types/tools/omp/markit/converters/xlsx.d.ts +25 -0
  162. package/lib/types/tools/omp/markit/index.d.ts +2 -0
  163. package/lib/types/tools/omp/markit/registry.d.ts +16 -0
  164. package/lib/types/tools/omp/markit/types.d.ts +30 -0
  165. package/lib/types/tools/omp/sdk.d.ts +103 -0
  166. package/lib/types/tools/omp/session/agent-storage.d.ts +154 -0
  167. package/lib/types/tools/omp/session/streaming-output.d.ts +244 -0
  168. package/lib/types/tools/omp/task/spawn-policy.d.ts +22 -0
  169. package/lib/types/tools/omp/tools/approval.d.ts +62 -0
  170. package/lib/types/tools/omp/tools/ast-edit.d.ts +73 -0
  171. package/lib/types/tools/omp/tools/ast-grep.d.ts +61 -0
  172. package/lib/types/tools/omp/tools/auto-generated-guard.d.ts +20 -0
  173. package/lib/types/tools/omp/tools/conflict-detect.d.ts +237 -0
  174. package/lib/types/tools/omp/tools/fetch.d.ts +103 -0
  175. package/lib/types/tools/omp/tools/file-recorder.d.ts +13 -0
  176. package/lib/types/tools/omp/tools/fs-cache-invalidation.d.ts +15 -0
  177. package/lib/types/tools/omp/tools/glob.d.ts +86 -0
  178. package/lib/types/tools/omp/tools/grep.d.ts +102 -0
  179. package/lib/types/tools/omp/tools/grouped-file-output.d.ts +70 -0
  180. package/lib/types/tools/omp/tools/index.d.ts +23 -0
  181. package/lib/types/tools/omp/tools/list-limit.d.ts +12 -0
  182. package/lib/types/tools/omp/tools/match-line-format.d.ts +11 -0
  183. package/lib/types/tools/omp/tools/output-meta.d.ts +160 -0
  184. package/lib/types/tools/omp/tools/path-utils.d.ts +326 -0
  185. package/lib/types/tools/omp/tools/plan-mode-guard.d.ts +33 -0
  186. package/lib/types/tools/omp/tools/read-archive.d.ts +16 -0
  187. package/lib/types/tools/omp/tools/read-format.d.ts +104 -0
  188. package/lib/types/tools/omp/tools/read-path-resolution.d.ts +19 -0
  189. package/lib/types/tools/omp/tools/read-selector.d.ts +27 -0
  190. package/lib/types/tools/omp/tools/read-sqlite.d.ts +16 -0
  191. package/lib/types/tools/omp/tools/read-summary.d.ts +15 -0
  192. package/lib/types/tools/omp/tools/read.d.ts +70 -0
  193. package/lib/types/tools/omp/tools/render-utils.d.ts +28 -0
  194. package/lib/types/tools/omp/tools/report-tool-issue.d.ts +149 -0
  195. package/lib/types/tools/omp/tools/resolve.d.ts +127 -0
  196. package/lib/types/tools/omp/tools/sqlite-reader.d.ts +114 -0
  197. package/lib/types/tools/omp/tools/tool-errors.d.ts +33 -0
  198. package/lib/types/tools/omp/tools/tool-result.d.ts +33 -0
  199. package/lib/types/tools/omp/tools/tool-timeouts.d.ts +57 -0
  200. package/lib/types/tools/omp/tools/write.d.ts +53 -0
  201. package/lib/types/tools/omp/tools/writethrough.d.ts +24 -0
  202. package/lib/types/tools/omp/utils/block-context.d.ts +35 -0
  203. package/lib/types/tools/omp/utils/cpuprofile.d.ts +51 -0
  204. package/lib/types/tools/omp/utils/edit-mode.d.ts +13 -0
  205. package/lib/types/tools/omp/utils/file-display-mode.d.ts +27 -0
  206. package/lib/types/tools/omp/utils/image-loading.d.ts +51 -0
  207. package/lib/types/tools/omp/utils/image-resize.d.ts +42 -0
  208. package/lib/types/tools/omp/utils/lang-from-path.d.ts +9 -0
  209. package/lib/types/tools/omp/utils/markit-cache.d.ts +23 -0
  210. package/lib/types/tools/omp/utils/markit.d.ts +30 -0
  211. package/lib/types/tools/omp/utils/profile-tree.d.ts +47 -0
  212. package/lib/types/tools/omp/utils/sample-profile.d.ts +67 -0
  213. package/lib/types/tools/omp/utils/sixel.d.ts +21 -0
  214. package/lib/types/tools/omp/utils/tools-manager.d.ts +11 -0
  215. package/lib/types/tools/omp/utils/turndown.d.ts +15 -0
  216. package/lib/types/tools/omp/utils/zip.d.ts +129 -0
  217. package/lib/types/tools/omp/web/browser-render.d.ts +50 -0
  218. package/lib/types/tools/omp/web/parallel.d.ts +68 -0
  219. package/lib/types/tools/omp/web/scrapers/artifacthub.d.ts +6 -0
  220. package/lib/types/tools/omp/web/scrapers/arxiv.d.ts +5 -0
  221. package/lib/types/tools/omp/web/scrapers/aur.d.ts +5 -0
  222. package/lib/types/tools/omp/web/scrapers/biorxiv.d.ts +5 -0
  223. package/lib/types/tools/omp/web/scrapers/bluesky.d.ts +5 -0
  224. package/lib/types/tools/omp/web/scrapers/brew.d.ts +5 -0
  225. package/lib/types/tools/omp/web/scrapers/cheatsh.d.ts +8 -0
  226. package/lib/types/tools/omp/web/scrapers/chocolatey.d.ts +5 -0
  227. package/lib/types/tools/omp/web/scrapers/choosealicense.d.ts +2 -0
  228. package/lib/types/tools/omp/web/scrapers/cisa-kev.d.ts +5 -0
  229. package/lib/types/tools/omp/web/scrapers/clojars.d.ts +5 -0
  230. package/lib/types/tools/omp/web/scrapers/coingecko.d.ts +5 -0
  231. package/lib/types/tools/omp/web/scrapers/crates-io.d.ts +5 -0
  232. package/lib/types/tools/omp/web/scrapers/crossref.d.ts +2 -0
  233. package/lib/types/tools/omp/web/scrapers/devto.d.ts +5 -0
  234. package/lib/types/tools/omp/web/scrapers/discogs.d.ts +8 -0
  235. package/lib/types/tools/omp/web/scrapers/discourse.d.ts +5 -0
  236. package/lib/types/tools/omp/web/scrapers/dockerhub.d.ts +5 -0
  237. package/lib/types/tools/omp/web/scrapers/docs-rs.d.ts +9 -0
  238. package/lib/types/tools/omp/web/scrapers/fdroid.d.ts +5 -0
  239. package/lib/types/tools/omp/web/scrapers/firefox-addons.d.ts +2 -0
  240. package/lib/types/tools/omp/web/scrapers/flathub.d.ts +2 -0
  241. package/lib/types/tools/omp/web/scrapers/github-gist.d.ts +5 -0
  242. package/lib/types/tools/omp/web/scrapers/github.d.ts +34 -0
  243. package/lib/types/tools/omp/web/scrapers/gitlab.d.ts +5 -0
  244. package/lib/types/tools/omp/web/scrapers/go-pkg.d.ts +5 -0
  245. package/lib/types/tools/omp/web/scrapers/hackage.d.ts +5 -0
  246. package/lib/types/tools/omp/web/scrapers/hackernews.d.ts +2 -0
  247. package/lib/types/tools/omp/web/scrapers/hex.d.ts +5 -0
  248. package/lib/types/tools/omp/web/scrapers/huggingface.d.ts +2 -0
  249. package/lib/types/tools/omp/web/scrapers/iacr.d.ts +5 -0
  250. package/lib/types/tools/omp/web/scrapers/index.d.ts +84 -0
  251. package/lib/types/tools/omp/web/scrapers/jetbrains-marketplace.d.ts +2 -0
  252. package/lib/types/tools/omp/web/scrapers/lemmy.d.ts +2 -0
  253. package/lib/types/tools/omp/web/scrapers/lobsters.d.ts +5 -0
  254. package/lib/types/tools/omp/web/scrapers/mastodon.d.ts +5 -0
  255. package/lib/types/tools/omp/web/scrapers/maven.d.ts +6 -0
  256. package/lib/types/tools/omp/web/scrapers/mdn.d.ts +2 -0
  257. package/lib/types/tools/omp/web/scrapers/metacpan.d.ts +5 -0
  258. package/lib/types/tools/omp/web/scrapers/musicbrainz.d.ts +5 -0
  259. package/lib/types/tools/omp/web/scrapers/npm.d.ts +5 -0
  260. package/lib/types/tools/omp/web/scrapers/nuget.d.ts +5 -0
  261. package/lib/types/tools/omp/web/scrapers/nvd.d.ts +5 -0
  262. package/lib/types/tools/omp/web/scrapers/ollama.d.ts +2 -0
  263. package/lib/types/tools/omp/web/scrapers/open-vsx.d.ts +5 -0
  264. package/lib/types/tools/omp/web/scrapers/opencorporates.d.ts +5 -0
  265. package/lib/types/tools/omp/web/scrapers/openlibrary.d.ts +5 -0
  266. package/lib/types/tools/omp/web/scrapers/orcid.d.ts +5 -0
  267. package/lib/types/tools/omp/web/scrapers/osv.d.ts +5 -0
  268. package/lib/types/tools/omp/web/scrapers/packagist.d.ts +5 -0
  269. package/lib/types/tools/omp/web/scrapers/pub-dev.d.ts +5 -0
  270. package/lib/types/tools/omp/web/scrapers/pubmed.d.ts +5 -0
  271. package/lib/types/tools/omp/web/scrapers/pypi.d.ts +5 -0
  272. package/lib/types/tools/omp/web/scrapers/rawg.d.ts +2 -0
  273. package/lib/types/tools/omp/web/scrapers/readthedocs.d.ts +2 -0
  274. package/lib/types/tools/omp/web/scrapers/reddit.d.ts +5 -0
  275. package/lib/types/tools/omp/web/scrapers/repology.d.ts +5 -0
  276. package/lib/types/tools/omp/web/scrapers/rfc.d.ts +5 -0
  277. package/lib/types/tools/omp/web/scrapers/rubygems.d.ts +5 -0
  278. package/lib/types/tools/omp/web/scrapers/searchcode.d.ts +2 -0
  279. package/lib/types/tools/omp/web/scrapers/sec-edgar.d.ts +5 -0
  280. package/lib/types/tools/omp/web/scrapers/semantic-scholar.d.ts +2 -0
  281. package/lib/types/tools/omp/web/scrapers/snapcraft.d.ts +2 -0
  282. package/lib/types/tools/omp/web/scrapers/sourcegraph.d.ts +2 -0
  283. package/lib/types/tools/omp/web/scrapers/spdx.d.ts +5 -0
  284. package/lib/types/tools/omp/web/scrapers/spotify.d.ts +8 -0
  285. package/lib/types/tools/omp/web/scrapers/stackoverflow.d.ts +6 -0
  286. package/lib/types/tools/omp/web/scrapers/terraform.d.ts +5 -0
  287. package/lib/types/tools/omp/web/scrapers/tldr.d.ts +7 -0
  288. package/lib/types/tools/omp/web/scrapers/twitter.d.ts +5 -0
  289. package/lib/types/tools/omp/web/scrapers/types.d.ts +90 -0
  290. package/lib/types/tools/omp/web/scrapers/utils.d.ts +26 -0
  291. package/lib/types/tools/omp/web/scrapers/vimeo.d.ts +5 -0
  292. package/lib/types/tools/omp/web/scrapers/vscode-marketplace.d.ts +5 -0
  293. package/lib/types/tools/omp/web/scrapers/w3c.d.ts +2 -0
  294. package/lib/types/tools/omp/web/scrapers/wikidata.d.ts +5 -0
  295. package/lib/types/tools/omp/web/scrapers/wikipedia.d.ts +5 -0
  296. package/lib/types/tools/omp/web/scrapers/youtube.d.ts +5 -0
  297. package/lib/types/tools/omp/web/search/providers/utils.d.ts +49 -0
  298. package/lib/types/tools/omp/web/search/types.d.ts +501 -0
  299. package/lib/types/tools/omp/web/search/utils.d.ts +4 -0
  300. package/lib/types/tools/omp/workspace-tree.d.ts +42 -0
  301. package/lib/types/tools/read/adapter/index.d.ts +49 -0
  302. package/lib/types/tools/read/adapter/internal-urls/artifact-protocol.d.ts +15 -0
  303. package/lib/types/tools/read/adapter/internal-urls/registry-helpers.d.ts +44 -0
  304. package/lib/types/tools/read/adapter/registry/agent-registry.d.ts +29 -0
  305. package/lib/types/tools/shared/auto-generated-guard.dsh.d.ts +16 -0
  306. package/lib/types/tools/shared/browser-detect.d.ts +54 -0
  307. package/lib/types/tools/shared/browser-rpc-channel.d.ts +40 -0
  308. package/lib/types/tools/shared/bun-ffi-shim.d.ts +13 -0
  309. package/lib/types/tools/shared/bun-named-shim.d.ts +42 -0
  310. package/lib/types/tools/shared/bun-shim.d.ts +138 -0
  311. package/lib/types/tools/shared/bun-sqlite-shim.d.ts +49 -0
  312. package/lib/types/tools/shared/fs-promises-shim.d.ts +15 -0
  313. package/lib/types/tools/shared/image-bridge.d.ts +98 -0
  314. package/lib/types/tools/shared/omp-prompt.d.ts +47 -0
  315. package/lib/types/tools/shared/sandbox-policy.d.ts +38 -0
  316. package/lib/types/tools/shared/session-state.d.ts +51 -0
  317. package/lib/types/tools/shared/tool-errors.d.ts +33 -0
  318. package/lib/types/tools/shared/win-path-fixes.d.ts +16 -0
  319. package/lib/types/tools/write/adapter/index.d.ts +31 -0
  320. package/lib/{types-DX_bvuus.mjs → types-PVueGi9S.mjs} +2 -2
  321. package/lib/{utils-C-dSORPa.mjs → utils-B7A3Eu4L.mjs} +2364 -2676
  322. package/lib/{utils-Cp2Mxf_U.mjs → utils-CUPhpw9A.mjs} +413 -134
  323. package/lib/{utils-CQHPEQ3W.mjs → utils-DeWqNWV8.mjs} +2 -2
  324. package/lib/{vision-guard-mBmtAHx0.mjs → vision-guard-_XwsL1DF.mjs} +14 -29
  325. package/lib/xai-oauth-CXhnz0gO.mjs +210 -0
  326. package/lib/{xiaomi-7mE345KX.mjs → xiaomi-psoUItal.mjs} +8 -37
  327. package/lib/{zai-CeNpMV3W.mjs → zai-ApJ8HBgT.mjs} +8 -71
  328. package/lib/{zip-BK7UHCwX.mjs → zip-Kd602XNe.mjs} +1 -1
  329. package/package.json +12 -12
  330. package/presets/package.json +1 -1
  331. package/presets/tool-plus-ptc/agent.cordis.yml +1 -1
  332. package/presets/tool-plus-standard/agent.cordis.yml +1 -1
  333. package/scripts/patch-pi-natives.mjs +108 -108
  334. package/lib/agent_pb-Rizyt9Zg.mjs +0 -805
  335. package/lib/anthropic-CDmj476p.mjs +0 -262
  336. package/lib/api_server_pb-CDZgLMta.mjs +0 -252
  337. package/lib/callback-server-CFJK-jvK.mjs +0 -398
  338. package/lib/codex-P1dGpX7G.mjs +0 -54
  339. package/lib/device-code-CuXTWYwY.mjs +0 -51
  340. package/lib/devin-BcQwht1W.mjs +0 -114
  341. package/lib/devin-BvMfGevz.mjs +0 -95
  342. package/lib/github-copilot-B3kQl0g0.mjs +0 -104
  343. package/lib/gitlab-duo-BriUTP8k.mjs +0 -155
  344. package/lib/gitlab-duo-workflow-wK5Ljzmc.mjs +0 -91
  345. package/lib/google-CE5tFDod.mjs +0 -30
  346. package/lib/google-antigravity-C1jgNljz.mjs +0 -198
  347. package/lib/google-oauth-shared-BLVTvokk.mjs +0 -147
  348. package/lib/grammar-D-NqNUxQ.mjs +0 -49
  349. package/lib/identity-HNO1Oe9B.mjs +0 -219
  350. package/lib/kimi-DgcUpPtK.mjs +0 -236
  351. package/lib/markit-DtGoRE6M.mjs +0 -1417
  352. package/lib/minimax-code-Y3h5li9N.mjs +0 -53
  353. package/lib/models-DRA2c_8U.mjs +0 -104660
  354. package/lib/opencode-BsVw9rCD.mjs +0 -38
  355. package/lib/to-binary-B1BEBIPC.mjs +0 -6002
  356. package/lib/wafer-BlhWLweO.mjs +0 -17
  357. package/lib/xai-oauth-5pORHUrg.mjs +0 -446
@@ -0,0 +1,143 @@
1
+ import { installBunShim as __installBunShim } from "./bun-shim.mjs";
2
+ __installBunShim();
3
+ import { r as __exportAll } from "./fs-promises-shim-Bx0fpxuk.mjs";
4
+ import { f as OAuthError, t as ConfigurationError } from "./error-CORgGg5a.mjs";
5
+ import { type } from "@oh-my-pi/omptype";
6
+ //#region node_modules/.pnpm/@oh-my-pi+pi-ai@18.1.17/node_modules/@oh-my-pi/pi-ai/src/registry/oauth/muse-code.ts
7
+ var muse_code_exports = /* @__PURE__ */ __exportAll({
8
+ attachMuseCodeApiKey: () => attachMuseCodeApiKey,
9
+ parseMuseCodeCredential: () => parseMuseCodeCredential,
10
+ requestMuseCodeKey: () => requestMuseCodeKey
11
+ });
12
+ const PROVIDER = "muse-code";
13
+ const MUSE_KEY_URL = "https://api.meta.ai/muse-code/key";
14
+ const API_VERSION = "1.0.0";
15
+ const REQUEST_TIMEOUT_MS = 2e4;
16
+ const subscriptionWindowSchema = type({
17
+ "used_percent?": "number",
18
+ "resets_at?": "string | number",
19
+ "window_duration_mins?": "number"
20
+ });
21
+ const subscriptionUsageSchema = type({
22
+ "window?": subscriptionWindowSchema.or("null"),
23
+ "weekly?": subscriptionWindowSchema.or("null")
24
+ });
25
+ const museCodeKeyResponseSchema = type({
26
+ "api_key?": "string",
27
+ "require_payment_action_url?": "string",
28
+ "require_payment?": "boolean",
29
+ "action_url?": "string | null",
30
+ "user_email?": "string",
31
+ "user_id?": "string",
32
+ "is_subs_active?": "boolean",
33
+ "subs_tier_id?": "string",
34
+ "subs_tier_name?": "string",
35
+ "subs_usage?": subscriptionUsageSchema.or("null")
36
+ });
37
+ const museCodeCredentialSchema = type({
38
+ oauthAccessToken: "string",
39
+ apiKey: "string"
40
+ });
41
+ function requestSignal(signal) {
42
+ const timeout = AbortSignal.timeout(REQUEST_TIMEOUT_MS);
43
+ return signal ? AbortSignal.any([signal, timeout]) : timeout;
44
+ }
45
+ function parseMuseCodeCredential(value) {
46
+ let payload;
47
+ try {
48
+ payload = JSON.parse(value);
49
+ } catch (cause) {
50
+ throw new ConfigurationError("Muse Code credential is invalid; sign in again", { cause });
51
+ }
52
+ const parsed = museCodeCredentialSchema(payload);
53
+ if (parsed instanceof type.errors || !parsed.oauthAccessToken.trim() || !parsed.apiKey.trim()) throw new ConfigurationError("Muse Code credential is invalid; sign in again");
54
+ return parsed;
55
+ }
56
+ function encodeMuseCodeCredential(oauthAccessToken, apiKey) {
57
+ return JSON.stringify({
58
+ oauthAccessToken,
59
+ apiKey
60
+ });
61
+ }
62
+ async function requestMuseCodeKey(accessToken, options = {}) {
63
+ const response = await (options.fetch ?? fetch)(MUSE_KEY_URL, {
64
+ method: "POST",
65
+ headers: {
66
+ Accept: "application/json",
67
+ Authorization: `Bearer ${accessToken}`,
68
+ "Content-Type": "application/json",
69
+ "x-api-version": API_VERSION
70
+ },
71
+ body: JSON.stringify(options.onboard ? { onboard: true } : {}),
72
+ redirect: "error",
73
+ signal: requestSignal(options.signal)
74
+ });
75
+ const text = await response.text();
76
+ if (!response.ok) {
77
+ const excerpt = text.trim() ? ` ${text.slice(0, 500).trim()}` : "";
78
+ throw new OAuthError(`Muse Code key exchange failed: ${response.status}${excerpt}`, {
79
+ kind: "token-exchange",
80
+ provider: PROVIDER,
81
+ status: response.status
82
+ });
83
+ }
84
+ let payload;
85
+ try {
86
+ payload = JSON.parse(text);
87
+ } catch (cause) {
88
+ throw new OAuthError("Muse Code key exchange returned invalid JSON", {
89
+ kind: "validation",
90
+ provider: PROVIDER,
91
+ status: response.status,
92
+ cause
93
+ });
94
+ }
95
+ const parsed = museCodeKeyResponseSchema(payload);
96
+ if (parsed instanceof type.errors) throw new OAuthError(`Invalid Muse Code key response: ${parsed.summary}`, {
97
+ kind: "validation",
98
+ provider: PROVIDER
99
+ });
100
+ return parsed;
101
+ }
102
+ /** Exchange Meta account access for the Model API key authorized by a Muse subscription. */
103
+ const attachMuseCodeApiKey = async (credentials, context) => {
104
+ try {
105
+ if (parseMuseCodeCredential(credentials.access).apiKey.trim()) return credentials;
106
+ } catch {}
107
+ const payload = await requestMuseCodeKey(credentials.access, {
108
+ fetch: context.fetch,
109
+ signal: context.signal,
110
+ onboard: true
111
+ });
112
+ if (payload.is_subs_active === false) throw new OAuthError("invalid_grant: Muse Code subscription is inactive", {
113
+ kind: "token-exchange",
114
+ provider: PROVIDER,
115
+ status: 403
116
+ });
117
+ const apiKey = payload.api_key?.trim() || "";
118
+ if (!apiKey) {
119
+ const actionUrl = payload.action_url?.trim() || payload.require_payment_action_url?.trim();
120
+ if (payload.require_payment === true || actionUrl) throw new OAuthError(actionUrl ? `Muse Code subscription is required: ${actionUrl}` : "Muse Code subscription is required", {
121
+ kind: "entitlement",
122
+ provider: PROVIDER
123
+ });
124
+ throw new OAuthError("Muse Code key response is missing api_key", {
125
+ kind: "validation",
126
+ provider: PROVIDER
127
+ });
128
+ }
129
+ const email = payload.user_email?.trim().toLowerCase();
130
+ const accountId = payload.user_id?.trim() || email;
131
+ if (!accountId) throw new OAuthError("Muse Code key response is missing a stable account identity", {
132
+ kind: "validation",
133
+ provider: PROVIDER
134
+ });
135
+ return {
136
+ ...credentials,
137
+ access: encodeMuseCodeCredential(credentials.access, apiKey),
138
+ accountId,
139
+ email
140
+ };
141
+ };
142
+ //#endregion
143
+ export { parseMuseCodeCredential as n, requestMuseCodeKey as r, muse_code_exports as t };
@@ -1,15 +1,15 @@
1
1
  import { installBunShim as __installBunShim } from "./bun-shim.mjs";
2
2
  __installBunShim();
3
3
  import { r as __exportAll } from "./fs-promises-shim-Bx0fpxuk.mjs";
4
- import { g as parseStreamingJson, i as readJsonl } from "./src-BcD0_rQR.mjs";
5
- import { G as fetchWithRetry, b as LLAMA_CPP_TOOL_CALL_PARSE_PATTERN, g as MissingApiKeyError, l as finalize, z as OllamaApiError } from "./error-C-f_Wnw4.mjs";
6
- import { C as kStreamingPartialJson, I as sanitizeSchemaForOllama, a as normalizeSystemPrompts, h as clearStreamingPartialJson, k as toolWireSchema, m as transformMessages } from "./utils-Cp2Mxf_U.mjs";
7
- import { Ct as withEmptyCompletionRetry, n as getEnvApiKey } from "./stream-Bjq8wjfr.mjs";
8
- import { i as partitionVisionContent, r as joinTextWithImagePlaceholder } from "./vision-guard-mBmtAHx0.mjs";
9
- import { t as AssistantMessageEventStream } from "./event-stream-Dh2guZxS.mjs";
10
- import { n as getOpenAIStreamFirstEventTimeoutMs, r as getOpenAIStreamIdleTimeoutMs, t as armPreResponseTimeout } from "./idle-iterator-CYAxUkSD.mjs";
11
- import { n as getStreamMarkupHealingPattern, t as StreamMarkupHealing } from "./stream-markup-healing-DZ6bVDxH.mjs";
12
- //#region node_modules/.pnpm/@oh-my-pi+pi-ai@17.3.5/node_modules/@oh-my-pi/pi-ai/src/providers/ollama.ts
4
+ import { _ as parseStreamingJson, i as readJsonl } from "./src-BwW51vA5.mjs";
5
+ import { G as fetchWithRetry, c as finalize, h as MissingApiKeyError, y as LLAMA_CPP_TOOL_CALL_PARSE_PATTERN, z as OllamaApiError } from "./error-CORgGg5a.mjs";
6
+ import { A as toolWireSchema, R as sanitizeSchemaForOllama, g as clearStreamingPartialJson, h as transformMessages, o as normalizeSystemPrompts, w as kStreamingPartialJson } from "./utils-CUPhpw9A.mjs";
7
+ import { At as withReplaySafeStreamRetry, n as getEnvApiKey } from "./stream-B_7qN-bA.mjs";
8
+ import { i as partitionVisionContent, r as joinTextWithImagePlaceholder } from "./vision-guard-_XwsL1DF.mjs";
9
+ import { t as AssistantMessageEventStream } from "./event-stream-ulcDenZD.mjs";
10
+ import { n as getOpenAIStreamFirstEventTimeoutMs, r as getOpenAIStreamIdleTimeoutMs, t as armPreResponseTimeout } from "./idle-iterator-DlUkEfzW.mjs";
11
+ import { n as getStreamMarkupHealingPattern, t as StreamMarkupHealing } from "./stream-markup-healing-DKT1lnkW.mjs";
12
+ //#region node_modules/.pnpm/@oh-my-pi+pi-ai@18.1.17/node_modules/@oh-my-pi/pi-ai/src/providers/ollama.ts
13
13
  var ollama_exports = /* @__PURE__ */ __exportAll({ streamOllama: () => streamOllama });
14
14
  function normalizeBaseUrl(baseUrl) {
15
15
  const value = baseUrl?.trim();
@@ -139,22 +139,6 @@ function convertTools(tools) {
139
139
  }
140
140
  }));
141
141
  }
142
- /**
143
- * Ollama Cloud rejects `num_predict` above this value with HTTP 400
144
- * (`max_tokens (...) exceeds model's maximum output tokens (65536)`).
145
- * The cap currently applies uniformly to cloud-served models; the cloud-side
146
- * limit was confirmed empirically against `deepseek-v4-pro`/`-flash` and is
147
- * the same cap surfaced for every other Ollama Cloud model we've probed.
148
- *
149
- * Acts as a wire-level safety net so stale `models.db` rows (or custom
150
- * `modelOverrides` re-enabling `num_predict`) cannot 400 the request — even
151
- * when `model.omitMaxOutputTokens` was never applied. See #3392.
152
- */
153
- const OLLAMA_CLOUD_NUM_PREDICT_CAP = 65536;
154
- function resolveNumPredict(model, requested) {
155
- if (model.provider === "ollama-cloud") return Math.min(requested, OLLAMA_CLOUD_NUM_PREDICT_CAP);
156
- return requested;
157
- }
158
142
  function createChatBody(model, context, options) {
159
143
  const think = mapReasoning(model, options?.reasoning, options?.disableReasoning);
160
144
  const toolChoice = mapToolChoice(options?.toolChoice);
@@ -162,7 +146,7 @@ function createChatBody(model, context, options) {
162
146
  const runtimeOptions = {};
163
147
  let hasRuntimeOptions = false;
164
148
  if (options?.maxTokens !== void 0 && !model.omitMaxOutputTokens) {
165
- runtimeOptions.num_predict = resolveNumPredict(model, options.maxTokens);
149
+ runtimeOptions.num_predict = model.provider === "ollama-cloud" ? Math.min(options.maxTokens, 65536) : options.maxTokens;
166
150
  hasRuntimeOptions = true;
167
151
  }
168
152
  if (options?.temperature !== void 0) {
@@ -292,7 +276,7 @@ const streamOllamaOnce = (model, context, options = {}) => {
292
276
  let activeThinkingIndex;
293
277
  let activeTextIndex;
294
278
  const activeToolIndices = /* @__PURE__ */ new Set();
295
- const streamMarkupHealingPattern = getStreamMarkupHealingPattern(model.provider, model.id);
279
+ const streamMarkupHealingPattern = getStreamMarkupHealingPattern(model);
296
280
  const streamMarkupHealing = streamMarkupHealingPattern ? new StreamMarkupHealing({ pattern: streamMarkupHealingPattern }) : void 0;
297
281
  let healedToolCallEmitted = false;
298
282
  let suppressHealedThinking = false;
@@ -522,9 +506,10 @@ const streamOllamaOnce = (model, context, options = {}) => {
522
506
  activeToolIndices.clear();
523
507
  output.stopReason = mapDoneReason(chunk.done_reason, output);
524
508
  if (healedToolCallEmitted && output.stopReason === "stop") output.stopReason = "toolUse";
525
- output.usage.input = chunk.prompt_eval_count ?? 0;
509
+ output.usage.cacheRead = chunk.prompt_eval_cached_count ?? 0;
510
+ output.usage.input = (chunk.prompt_eval_count ?? 0) - output.usage.cacheRead;
526
511
  output.usage.output = chunk.eval_count ?? 0;
527
- output.usage.totalTokens = output.usage.input + output.usage.output;
512
+ output.usage.totalTokens = output.usage.input + output.usage.output + output.usage.cacheRead;
528
513
  }
529
514
  }
530
515
  if (streamMarkupHealing) {
@@ -584,6 +569,6 @@ const streamOllamaOnce = (model, context, options = {}) => {
584
569
  return stream;
585
570
  };
586
571
  /** Retry EOS-only Ollama completions before the agent loop sees an empty stop. */
587
- const streamOllama = (model, context, options) => withEmptyCompletionRetry(model, context, options, streamOllamaOnce);
572
+ const streamOllama = (model, context, options) => withReplaySafeStreamRetry(model, context, options, streamOllamaOnce, { retryEmptyCompletion: true });
588
573
  //#endregion
589
574
  export { ollama_exports as t };
@@ -1,21 +1,11 @@
1
1
  import { installBunShim as __installBunShim } from "./bun-shim.mjs";
2
2
  __installBunShim();
3
- import { c as OAuthError, h as LoginCancelledError } from "./error-C-f_Wnw4.mjs";
4
- import "./utils-Cp2Mxf_U.mjs";
5
- import { n as isRecord } from "./type-guards-B9VVjRDK.mjs";
6
- import { t as OAuthCallbackFlow } from "./callback-server-CFJK-jvK.mjs";
7
- import { t as generatePKCE } from "./pkce-BlQikGPu.mjs";
8
- import { i as OPENAI_HEADER_VALUES } from "./codex-P1dGpX7G.mjs";
9
- //#region node_modules/.pnpm/@oh-my-pi+pi-ai@17.3.5/node_modules/@oh-my-pi/pi-ai/src/registry/oauth/openai-codex.ts
10
- /**
11
- * OpenAI Codex (ChatGPT OAuth) flow — browser and device-code flows.
12
- */
3
+ import { f as OAuthError, m as LoginCancelledError } from "./error-CORgGg5a.mjs";
4
+ import "./utils-CUPhpw9A.mjs";
5
+ import { n as isRecord } from "./type-guards-CttAANEx.mjs";
6
+ //#region node_modules/.pnpm/@oh-my-pi+pi-ai@18.1.17/node_modules/@oh-my-pi/pi-ai/src/registry/oauth/openai-codex.ts
13
7
  const CLIENT_ID = "app_EMoamEEZ73f0CkXaXp7hrann";
14
- const AUTHORIZE_URL = "https://auth.openai.com/oauth/authorize";
15
8
  const TOKEN_URL = "https://auth.openai.com/oauth/token";
16
- const CALLBACK_PORT = 1455;
17
- const CALLBACK_PATH = "/auth/callback";
18
- const SCOPE = "openid profile email offline_access api.connectors.read api.connectors.invoke";
19
9
  const JWT_CLAIM_PATH = "https://api.openai.com/auth";
20
10
  const JWT_PROFILE_CLAIM = "https://api.openai.com/profile";
21
11
  const TOKEN_REQUEST_TIMEOUT_MS = 15e3;
@@ -49,8 +39,8 @@ function getTokenProfile(accessToken, idToken) {
49
39
  const idPayload = idToken ? decodeJwt(idToken) : null;
50
40
  const auth = payload?.[JWT_CLAIM_PATH];
51
41
  const idAuth = idPayload?.[JWT_CLAIM_PATH];
52
- const accountId = auth?.chatgpt_account_id;
53
- const email = payload?.[JWT_PROFILE_CLAIM]?.email?.trim().toLowerCase();
42
+ const accountId = auth?.chatgpt_account_id ?? idAuth?.chatgpt_account_id;
43
+ const email = (payload?.[JWT_PROFILE_CLAIM]?.email ?? idPayload?.[JWT_PROFILE_CLAIM]?.email)?.trim().toLowerCase();
54
44
  const planType = (auth?.chatgpt_plan_type ?? idAuth?.chatgpt_plan_type)?.trim().toLowerCase();
55
45
  return {
56
46
  accountId: typeof accountId === "string" && accountId.length > 0 ? accountId : void 0,
@@ -70,7 +60,28 @@ function describeTokenEndpointValue(value) {
70
60
  if (code && message && code !== message) return `${code}: ${message}`;
71
61
  return code ?? message ?? JSON.stringify(value);
72
62
  }
73
- /** Formats OpenAI Codex OAuth token endpoint errors for login and refresh failures. */
63
+ /** Enriches declaratively exchanged Codex credentials from access/id-token JWT claims. */
64
+ const openAICodexProfileHook = async (credentials, context) => {
65
+ const idToken = isRecord(context.raw) && typeof context.raw.id_token === "string" ? context.raw.id_token : void 0;
66
+ const { accountId, email, planType } = getTokenProfile(credentials.access, idToken);
67
+ if (context.phase === "login" && !accountId) throw new OAuthError("Failed to extract accountId from token", {
68
+ kind: "validation",
69
+ provider: context.provider
70
+ });
71
+ const resolvedAccountId = accountId ?? context.stored?.accountId;
72
+ return {
73
+ ...credentials,
74
+ ...resolvedAccountId ? { accountId: resolvedAccountId } : {},
75
+ ...email ? { email } : context.stored?.email ? { email: context.stored.email } : {},
76
+ ...context.phase === "login" && resolvedAccountId ? { orgId: resolvedAccountId } : {},
77
+ ...context.phase === "login" && planType ? { orgName: planType } : {},
78
+ ...context.phase === "refresh" && context.stored?.orgId ? { orgId: context.stored.orgId } : {},
79
+ ...context.phase === "refresh" && context.stored?.orgName ? { orgName: context.stored.orgName } : {}
80
+ };
81
+ };
82
+ /**
83
+ * Formats OpenAI Codex OAuth token endpoint errors for login and refresh failures.
84
+ */
74
85
  function formatOpenAICodexTokenEndpointError(status, bodyText) {
75
86
  const trimmed = bodyText.trim();
76
87
  if (trimmed.length === 0) return `${status}`;
@@ -85,52 +96,6 @@ function formatOpenAICodexTokenEndpointError(status, bodyText) {
85
96
  return `${status} ${trimmed}`;
86
97
  }
87
98
  }
88
- /** Builds the Codex browser OAuth URL used by browser login; exported for auth regression tests. */
89
- function createOpenAICodexAuthorizationUrl(args) {
90
- const originator = args.originator?.trim() || OPENAI_HEADER_VALUES.ORIGINATOR_CODEX;
91
- const searchParams = new URLSearchParams({
92
- response_type: "code",
93
- client_id: CLIENT_ID,
94
- redirect_uri: args.redirectUri,
95
- scope: SCOPE,
96
- code_challenge: args.challenge,
97
- code_challenge_method: "S256",
98
- state: args.state,
99
- id_token_add_organizations: "true",
100
- codex_cli_simplified_flow: "true",
101
- originator
102
- });
103
- return `${AUTHORIZE_URL}?${searchParams.toString()}`;
104
- }
105
- var OpenAICodexOAuthFlow = class extends OAuthCallbackFlow {
106
- #pkce;
107
- #originator;
108
- #fetch;
109
- constructor(ctrl, pkce, originator, fetchImpl) {
110
- super(ctrl, {
111
- preferredPort: CALLBACK_PORT,
112
- callbackPath: CALLBACK_PATH,
113
- redirectUri: `http://localhost:${CALLBACK_PORT}${CALLBACK_PATH}`
114
- });
115
- this.#pkce = pkce;
116
- this.#originator = originator;
117
- this.#fetch = fetchImpl;
118
- }
119
- async generateAuthUrl(state, redirectUri) {
120
- return {
121
- url: createOpenAICodexAuthorizationUrl({
122
- state,
123
- redirectUri,
124
- challenge: this.#pkce.challenge,
125
- originator: this.#originator
126
- }),
127
- instructions: "A browser window should open. Complete login to finish."
128
- };
129
- }
130
- async exchangeToken(code, _state, redirectUri) {
131
- return exchangeCodeForToken(code, this.#pkce.verifier, redirectUri, this.#fetch);
132
- }
133
- };
134
99
  async function exchangeCodeForToken(code, verifier, redirectUri, fetchImpl = fetch) {
135
100
  const tokenResponse = await fetchImpl(TOKEN_URL, {
136
101
  method: "POST",
@@ -165,9 +130,6 @@ async function exchangeCodeForToken(code, verifier, redirectUri, fetchImpl = fet
165
130
  orgName: planType
166
131
  };
167
132
  }
168
- async function loginOpenAICodex(options) {
169
- return new OpenAICodexOAuthFlow(options, await generatePKCE(), options.originator?.trim() || OPENAI_HEADER_VALUES.ORIGINATOR_CODEX, options.fetch ?? fetch).login();
170
- }
171
133
  /**
172
134
  * Login with OpenAI Codex using the device-code (headless) flow.
173
135
  *
@@ -219,37 +181,5 @@ async function loginOpenAICodexDevice(ctrl) {
219
181
  }
220
182
  throw new OAuthError("Device authorization timed out — user did not complete login in time", { kind: "timeout" });
221
183
  }
222
- /**
223
- * Refresh OpenAI Codex OAuth token
224
- */
225
- async function refreshOpenAICodexToken(refreshToken) {
226
- const response = await fetch(TOKEN_URL, {
227
- method: "POST",
228
- headers: { "Content-Type": "application/x-www-form-urlencoded" },
229
- body: new URLSearchParams({
230
- grant_type: "refresh_token",
231
- refresh_token: refreshToken,
232
- client_id: CLIENT_ID
233
- }),
234
- signal: AbortSignal.timeout(TOKEN_REQUEST_TIMEOUT_MS)
235
- });
236
- if (!response.ok) {
237
- const bodyText = await response.text();
238
- throw new OAuthError(`OpenAI Codex token refresh failed: ${formatOpenAICodexTokenEndpointError(response.status, bodyText)}`, {
239
- kind: "token-refresh",
240
- status: response.status
241
- });
242
- }
243
- const tokenData = await response.json();
244
- if (!tokenData.access_token || !tokenData.refresh_token || typeof tokenData.expires_in !== "number") throw new OAuthError("Token response missing required fields", { kind: "validation" });
245
- const { accountId, email } = getTokenProfile(tokenData.access_token);
246
- return {
247
- access: tokenData.access_token,
248
- refresh: tokenData.refresh_token || refreshToken,
249
- expires: Date.now() + tokenData.expires_in * 1e3,
250
- accountId: accountId ?? void 0,
251
- email
252
- };
253
- }
254
184
  //#endregion
255
- export { loginOpenAICodex, loginOpenAICodexDevice, refreshOpenAICodexToken };
185
+ export { loginOpenAICodexDevice, openAICodexProfileHook };