@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
@@ -1,7 +1,7 @@
1
1
  import { installBunShim as __installBunShim } from "./bun-shim.mjs";
2
2
  __installBunShim();
3
- import { C as classifyMessage, s as ProviderResponseError } from "./error-C-f_Wnw4.mjs";
4
- //#region node_modules/.pnpm/@oh-my-pi+pi-ai@17.3.5/node_modules/@oh-my-pi/pi-ai/src/utils/event-stream.ts
3
+ import { s as ProviderResponseError, w as classifyMessage } from "./error-CORgGg5a.mjs";
4
+ //#region node_modules/.pnpm/@oh-my-pi+pi-ai@18.1.17/node_modules/@oh-my-pi/pi-ai/src/utils/event-stream.ts
5
5
  var EventStream = class {
6
6
  queue = [];
7
7
  waiting = [];
@@ -18,6 +18,13 @@ var EventStream = class {
18
18
  * not a provider stall; idle watchdogs consult {@link hasPendingLocalWork}.
19
19
  */
20
20
  #pendingLocalWork = 0;
21
+ /**
22
+ * A downstream stream whose local work also counts as ours — set when this
23
+ * stream forwards another stream's events (e.g. the Cursor discovered-id
24
+ * retry drains an inner stream), so the watchdog on this stream sees the
25
+ * inner exec bridge's busy state instead of aborting a healthy tool run.
26
+ */
27
+ #localWorkDelegate;
21
28
  finalResultPromise;
22
29
  resolveFinalResult;
23
30
  rejectFinalResult;
@@ -99,9 +106,18 @@ var EventStream = class {
99
106
  result() {
100
107
  return this.finalResultPromise;
101
108
  }
102
- /** True while local work tracked via {@link trackLocalWork} is pending. */
109
+ /** True while local work tracked via {@link trackLocalWork} — on this stream or a forwarded delegate — is pending. */
103
110
  get hasPendingLocalWork() {
104
- return this.#pendingLocalWork > 0;
111
+ return this.#pendingLocalWork > 0 || (this.#localWorkDelegate?.hasPendingLocalWork ?? false);
112
+ }
113
+ /**
114
+ * Count `source`'s pending local work as this stream's own. Used when this
115
+ * stream forwards another's events (Cursor discovered-id retry) so the
116
+ * watchdog does not abort a live tool run happening on the inner stream.
117
+ * Pass `undefined` to detach once forwarding ends.
118
+ */
119
+ forwardLocalWorkFrom(source) {
120
+ this.#localWorkDelegate = source;
105
121
  }
106
122
  /**
107
123
  * Track a local-work promise so idle watchdogs on this stream do not treat
@@ -1,6 +1,6 @@
1
1
  import { installBunShim as __installBunShim } from "./bun-shim.mjs";
2
2
  __installBunShim();
3
- //#region node_modules/.pnpm/@oh-my-pi+pi-catalog@17.3.5/node_modules/@oh-my-pi/pi-catalog/src/wire/gemini-headers.ts
3
+ //#region node_modules/.pnpm/@oh-my-pi+pi-catalog@18.1.17/node_modules/@oh-my-pi/pi-catalog/src/wire/gemini-headers.ts
4
4
  /**
5
5
  * Build a User-Agent string that identifies as Gemini CLI to unlock higher rate limits.
6
6
  * Uses the same format as the official Gemini CLI (v0.35+):
@@ -51,4 +51,4 @@ function getAntigravityModelWireProfile(wireModelId) {
51
51
  return ANTIGRAVITY_MODEL_WIRE_PROFILES[wireModelId];
52
52
  }
53
53
  //#endregion
54
- export { getGeminiCliHeaders as i, getAntigravityUserAgent as n, getAntigravityVersion as r, getAntigravityModelWireProfile as t };
54
+ export { getAntigravityUserAgent as n, getGeminiCliHeaders as r, getAntigravityModelWireProfile as t };
@@ -1,14 +1,40 @@
1
1
  import { installBunShim as __installBunShim } from "./bun-shim.mjs";
2
2
  __installBunShim();
3
- import { V as ProviderHttpError, c as OAuthError, h as LoginCancelledError } from "./error-C-f_Wnw4.mjs";
4
- import { r as getBundledModels } from "./models-DRA2c_8U.mjs";
5
- import { a as getGitHubCopilotBaseUrl, c as normalizeDomain, i as discoverGitHubCopilotApiEndpoint, l as normalizeGitHubCopilotEnterpriseDomain, n as OPENCODE_HEADERS, s as isPublicGitHubHost, t as COPILOT_API_HEADERS } from "./github-copilot-B3kQl0g0.mjs";
3
+ import { V as ProviderHttpError, f as OAuthError, g as OnPromptRequiredError, m as LoginCancelledError } from "./error-CORgGg5a.mjs";
4
+ import { r as getBundledModels } from "./models-DnXMYGcJ.mjs";
5
+ import { _ as normalizeCopilotIntegrationId, f as discoverGitHubCopilotApiEndpoint, h as isPublicGitHubHost, o as wrapFetchForCopilotFallback, p as getGitHubCopilotBaseUrl, r as resolveCopilotIntegrationIdOverride, s as COPILOT_API_HEADERS, v as normalizeDomain, y as normalizeGitHubCopilotEnterpriseDomain } from "./github-copilot-headers-DOh1gt_w.mjs";
6
6
  import { scheduler } from "node:timers/promises";
7
- //#region node_modules/.pnpm/@oh-my-pi+pi-ai@17.3.5/node_modules/@oh-my-pi/pi-ai/src/registry/oauth/github-copilot.ts
7
+ //#region node_modules/.pnpm/@oh-my-pi+pi-ai@18.1.17/node_modules/@oh-my-pi/pi-ai/src/registry/oauth/github-copilot.ts
8
8
  /**
9
- * GitHub Copilot OAuth flow (opencode OAuth app)
9
+ * GitHub Copilot OAuth flow (OpenCode OAuth app, minimal read:user grant).
10
+ *
11
+ * The device flow intentionally uses the OpenCode app identity rather than
12
+ * the official Copilot CLI app: GitHub renders each app's existing per-user
13
+ * grant (Existing access) on the consent page, and Enterprise orgs that
14
+ * restrict OAuth apps block the CLI app's broad historic grant
15
+ * (repo/gist/codespace) no matter what scope this request asks for
16
+ * (issue #11275). API request identity still mimics the Copilot CLI via
17
+ * COPILOT_API_HEADERS. Enterprise domains keep the GitHub-owned Copilot CLI
18
+ * client: private instances run their own OAuth registry and reject the
19
+ * github.com-registered OpenCode client.
20
+ */
21
+ const OPENCODE_CLIENT_ID = "Ov23li8tweQw6odWQebz";
22
+ const COPILOT_CLI_CLIENT_ID = "Ov23ctDVkRmgkPke0Mmm";
23
+ /**
24
+ * OAuth client for the device flow. Public github.com uses the minimal-grant
25
+ * OpenCode app (narrow consent, issue #11275); private GitHub Enterprise
26
+ * instances run their own OAuth registry, which does not know that github.com
27
+ * registration, so they keep the GitHub-owned Copilot CLI client.
10
28
  */
11
- const CLIENT_ID = "Ov23li8tweQw6odWQebz";
29
+ function resolveOAuthClientId(domain) {
30
+ return isPublicGitHubHost(domain) ? OPENCODE_CLIENT_ID : COPILOT_CLI_CLIENT_ID;
31
+ }
32
+ const OAUTH_SCOPE = "read:user";
33
+ const OAUTH_HEADERS = {
34
+ Accept: "application/json",
35
+ "Content-Type": "application/x-www-form-urlencoded",
36
+ "User-Agent": "copilot-developer-action/0.0.1"
37
+ };
12
38
  const INITIAL_POLL_INTERVAL_MULTIPLIER = 1.2;
13
39
  const SLOW_DOWN_POLL_INTERVAL_MULTIPLIER = 1.4;
14
40
  function getUrls(domain) {
@@ -28,14 +54,10 @@ async function fetchJson(url, init, fetchImpl) {
28
54
  async function startDeviceFlow(domain, fetchImpl) {
29
55
  const data = await fetchJson(getUrls(domain).deviceCodeUrl, {
30
56
  method: "POST",
31
- headers: {
32
- Accept: "application/json",
33
- "Content-Type": "application/json",
34
- ...OPENCODE_HEADERS
35
- },
36
- body: JSON.stringify({
37
- client_id: CLIENT_ID,
38
- scope: "read:user"
57
+ headers: OAUTH_HEADERS,
58
+ body: new URLSearchParams({
59
+ client_id: resolveOAuthClientId(domain),
60
+ scope: OAUTH_SCOPE
39
61
  })
40
62
  }, fetchImpl);
41
63
  if (!data || typeof data !== "object") throw new OAuthError("Invalid device code response", {
@@ -76,13 +98,9 @@ async function pollForGitHubAccessToken(domain, deviceCode, intervalSeconds, exp
76
98
  }
77
99
  const raw = await fetchJson(urls.accessTokenUrl, {
78
100
  method: "POST",
79
- headers: {
80
- Accept: "application/json",
81
- "Content-Type": "application/json",
82
- ...OPENCODE_HEADERS
83
- },
84
- body: JSON.stringify({
85
- client_id: CLIENT_ID,
101
+ headers: OAUTH_HEADERS,
102
+ body: new URLSearchParams({
103
+ client_id: resolveOAuthClientId(domain),
86
104
  device_code: deviceCode,
87
105
  grant_type: "urn:ietf:params:oauth:grant-type:device_code"
88
106
  })
@@ -117,7 +135,8 @@ async function pollForGitHubAccessToken(domain, deviceCode, intervalSeconds, exp
117
135
  const FAR_FUTURE_MS = Date.now() + 315576e6;
118
136
  /**
119
137
  * Refresh GitHub Copilot token.
120
- * With the opencode OAuth flow, the GitHub token is used directly — no JWT exchange needed.
138
+ * GitHub OAuth tokens from both the OpenCode app and the Copilot CLI app
139
+ * remain directly usable, so existing logins need no token exchange or migration.
121
140
  */
122
141
  function refreshGitHubCopilotToken(refreshToken, enterpriseDomain, apiEndpoint) {
123
142
  return {
@@ -128,11 +147,14 @@ function refreshGitHubCopilotToken(refreshToken, enterpriseDomain, apiEndpoint)
128
147
  apiEndpoint
129
148
  };
130
149
  }
150
+ async function refreshGitHubCopilotHook(credentials) {
151
+ return refreshGitHubCopilotToken(credentials.refresh, credentials.enterpriseUrl, credentials.apiEndpoint);
152
+ }
131
153
  /**
132
154
  * Enable a model for the user's GitHub Copilot account.
133
155
  * This is required for some models (like Claude, Grok) before they can be used.
134
156
  */
135
- async function enableGitHubCopilotModel(token, modelId, fetchImpl, enterpriseDomain, apiEndpoint) {
157
+ async function enableGitHubCopilotModel(token, modelId, fetchImpl, enterpriseDomain, apiEndpoint, integrationId) {
136
158
  const url = `${apiEndpoint ?? getGitHubCopilotBaseUrl(enterpriseDomain)}/models/${modelId}/policy`;
137
159
  try {
138
160
  return (await fetchImpl(url, {
@@ -141,8 +163,10 @@ async function enableGitHubCopilotModel(token, modelId, fetchImpl, enterpriseDom
141
163
  "Content-Type": "application/json",
142
164
  Authorization: `Bearer ${token}`,
143
165
  ...COPILOT_API_HEADERS,
144
- "openai-intent": "chat-policy",
145
- "x-interaction-type": "chat-policy"
166
+ "Copilot-Integration-Id": integrationId ?? "copilot-chat",
167
+ "Openai-Intent": "chat-policy",
168
+ "X-Initiator": "user",
169
+ "X-Interaction-Type": "chat-policy"
146
170
  },
147
171
  body: JSON.stringify({ state: "enabled" })
148
172
  })).ok;
@@ -154,13 +178,15 @@ async function enableGitHubCopilotModel(token, modelId, fetchImpl, enterpriseDom
154
178
  * Enable all known GitHub Copilot models that may require policy acceptance.
155
179
  * Called after successful login to ensure all models are available.
156
180
  */
157
- async function enableAllGitHubCopilotModels(token, enterpriseDomain, apiEndpoint, fetchImpl, onProgress) {
181
+ async function enableAllGitHubCopilotModels(token, enterpriseDomain, apiEndpoint, fetchImpl, onProgress, integrationId) {
158
182
  const wireModelIds = [...new Set(getBundledModels("github-copilot").map((model) => model.requestModelId ?? model.id))];
183
+ const resolvedId = normalizeCopilotIntegrationId(integrationId) ?? resolveCopilotIntegrationIdOverride();
184
+ const copilotFetch = wrapFetchForCopilotFallback(fetchImpl, true, resolvedId);
159
185
  const BATCH_SIZE = 5;
160
186
  for (let i = 0; i < wireModelIds.length; i += BATCH_SIZE) {
161
187
  const batch = wireModelIds.slice(i, i + BATCH_SIZE);
162
188
  await Promise.all(batch.map(async (modelId) => {
163
- const success = await enableGitHubCopilotModel(token, modelId, fetchImpl, enterpriseDomain, apiEndpoint);
189
+ const success = await enableGitHubCopilotModel(token, modelId, copilotFetch, enterpriseDomain, apiEndpoint, resolvedId);
164
190
  onProgress?.(modelId, success);
165
191
  }));
166
192
  }
@@ -201,8 +227,22 @@ async function loginGitHubCopilot(options) {
201
227
  apiEndpoint
202
228
  };
203
229
  options.onProgress?.("Enabling models...");
204
- await enableAllGitHubCopilotModels(githubAccessToken, enterpriseDomain ?? void 0, apiEndpoint, fetchImpl);
230
+ await enableAllGitHubCopilotModels(githubAccessToken, enterpriseDomain ?? void 0, apiEndpoint, fetchImpl, void 0, options.copilotIntegrationId);
205
231
  return credentials;
206
232
  }
233
+ async function loginGitHubCopilotHook(callbacks) {
234
+ const onPrompt = callbacks.onPrompt;
235
+ if (!onPrompt) throw new OnPromptRequiredError("GitHub Copilot");
236
+ return loginGitHubCopilot({
237
+ onAuth: (url, instructions) => callbacks.onAuth?.({
238
+ url,
239
+ instructions
240
+ }),
241
+ onPrompt,
242
+ onProgress: callbacks.onProgress,
243
+ signal: callbacks.signal,
244
+ fetch: callbacks.fetch
245
+ });
246
+ }
207
247
  //#endregion
208
- export { loginGitHubCopilot, refreshGitHubCopilotToken };
248
+ export { loginGitHubCopilotHook, refreshGitHubCopilotHook };
@@ -0,0 +1,312 @@
1
+ import { installBunShim as __installBunShim } from "./bun-shim.mjs";
2
+ __installBunShim();
3
+ import { C as warn, N as $env } from "./src-BwW51vA5.mjs";
4
+ import { n as isRecord } from "./type-guards-CttAANEx.mjs";
5
+ import "./utils-DeWqNWV8.mjs";
6
+ //#region node_modules/.pnpm/@oh-my-pi+pi-catalog@18.1.17/node_modules/@oh-my-pi/pi-catalog/src/wire/github-copilot.ts
7
+ const COPILOT_CLI_USER_AGENT = `copilot/1.0.82`;
8
+ /** Headers sent by Copilot CLI to GitHub API and OAuth endpoints. */
9
+ const COPILOT_GITHUB_HEADERS = { "User-Agent": COPILOT_CLI_USER_AGENT };
10
+ /** Copilot CLI identity sent to the Copilot API. */
11
+ const COPILOT_CAPI_IDENTITY_HEADERS = {
12
+ ...COPILOT_GITHUB_HEADERS,
13
+ "Editor-Version": COPILOT_CLI_USER_AGENT,
14
+ "Copilot-Integration-Id": "copilot-developer-cli",
15
+ "Copilot-Harness-Id": "copilot-sdk",
16
+ "Openai-Intent": "conversation-agent"
17
+ };
18
+ /**
19
+ * Chat-surface identity for Copilot chat and model-policy requests.
20
+ * Some Business organizations gate premium models per client surface and
21
+ * block the CLI identity while allowing chat (issue #11372), so chat traffic
22
+ * defaults to this id with `COPILOT_INTEGRATION_ID` as an explicit pin and a
23
+ * one-shot CLI retry on denial. Model discovery keeps the CLI identity above:
24
+ * it unlocks enterprise/experimental models and listing is not policy-gated
25
+ * the way chat completions are.
26
+ */
27
+ const COPILOT_CHAT_INTEGRATION_ID = "copilot-chat";
28
+ /**
29
+ * Copilot API version sent on `api.githubcopilot.com` requests (`/models`,
30
+ * chat endpoints). Newer versions unlock tiered context metadata: `/models`
31
+ * reports the full long-context window in `capabilities.limits` plus per-tier
32
+ * boundaries/prices under `billing.token_prices.{default,long_context}`.
33
+ * Without it the endpoint serves default-tier limits only (e.g. 264k instead
34
+ * of 1M for Claude Opus). Never send this to `api.github.com` REST endpoints —
35
+ * they validate `X-GitHub-Api-Version` against the REST version vocabulary.
36
+ */
37
+ const COPILOT_API_VERSION = "2026-08-01";
38
+ /** Headers shared by Copilot API model requests and model definitions. */
39
+ const COPILOT_API_HEADERS = {
40
+ ...COPILOT_CAPI_IDENTITY_HEADERS,
41
+ "X-GitHub-Api-Version": COPILOT_API_VERSION
42
+ };
43
+ /** Copilot CLI headers for user-initiated model discovery. */
44
+ const COPILOT_DISCOVERY_HEADERS = {
45
+ ...COPILOT_API_HEADERS,
46
+ "X-Initiator": "user"
47
+ };
48
+ const MANAGED_COPILOT_HEADER_NAMES = {
49
+ "user-agent": true,
50
+ "editor-version": true,
51
+ "copilot-integration-id": true,
52
+ "copilot-harness-id": true,
53
+ "openai-intent": true,
54
+ "x-github-api-version": true,
55
+ "x-initiator": true,
56
+ "x-interaction-type": true
57
+ };
58
+ /** Preserve model-specific headers while enforcing the current Copilot API identity. */
59
+ function mergeCopilotApiHeaders(headers) {
60
+ const merged = {};
61
+ if (headers) for (const name in headers) {
62
+ const value = headers[name];
63
+ if (value !== void 0 && !MANAGED_COPILOT_HEADER_NAMES[name.toLowerCase()]) merged[name] = value;
64
+ }
65
+ return {
66
+ ...merged,
67
+ ...COPILOT_API_HEADERS
68
+ };
69
+ }
70
+ /**
71
+ * Validate an explicit `Copilot-Integration-Id` override.
72
+ * omp identifies as the Copilot CLI (`copilot-developer-cli`); some Business
73
+ * organizations allow Chat clients but block CLI/agentic ones, rejecting every
74
+ * model with HTTP 403 on an otherwise valid token (issue #11372). Callers pass
75
+ * the raw `COPILOT_INTEGRATION_ID` value; blank or CR/LF-bearing values are
76
+ * rejected so the header stays well-formed and the default identity applies.
77
+ */
78
+ function normalizeCopilotIntegrationId(value) {
79
+ if (typeof value !== "string") return void 0;
80
+ const trimmed = value.trim();
81
+ if (!trimmed || /[\r\n]/.test(trimmed)) return void 0;
82
+ return trimmed;
83
+ }
84
+ const PUBLIC_GITHUB_HOSTS = /* @__PURE__ */ new Set([
85
+ "api.github.com",
86
+ "github.com",
87
+ "www.github.com"
88
+ ]);
89
+ function isPublicGitHubHost(host) {
90
+ return PUBLIC_GITHUB_HOSTS.has(host.trim().toLowerCase());
91
+ }
92
+ /** Canonical personal-Copilot API host. */
93
+ const PERSONAL_GITHUB_COPILOT_BASE_URL = "https://api.githubcopilot.com";
94
+ /** `true` when the resolved base URL is the canonical personal-Copilot host. */
95
+ function isPersonalGitHubCopilotBaseUrl(baseUrl) {
96
+ return baseUrl === PERSONAL_GITHUB_COPILOT_BASE_URL;
97
+ }
98
+ function normalizeGitHubCopilotEnterpriseDomain(input) {
99
+ const trimmed = input?.trim();
100
+ if (!trimmed) return void 0;
101
+ const normalized = normalizeDomain(trimmed) ?? trimmed.toLowerCase();
102
+ if (!normalized || isPublicGitHubHost(normalized)) return void 0;
103
+ return normalized;
104
+ }
105
+ function normalizeGitHubCopilotApiEndpoint(input) {
106
+ const trimmed = input?.trim();
107
+ if (!trimmed?.startsWith("https://")) return void 0;
108
+ try {
109
+ const url = new URL(trimmed);
110
+ if (url.protocol !== "https:" || !url.hostname) return void 0;
111
+ return trimmed.replace(/\/+$/, "");
112
+ } catch {
113
+ return;
114
+ }
115
+ }
116
+ /**
117
+ * Resolve the plan-specific Copilot API endpoint advertised for a GitHub token.
118
+ * Login and raw environment-token discovery share this best-effort probe. Pass
119
+ * a `signal` to bound it against the same discovery deadline as `/models`; a
120
+ * stalled probe otherwise blocks discovery indefinitely.
121
+ */
122
+ async function discoverGitHubCopilotApiEndpoint(token, fetchImpl, signal) {
123
+ try {
124
+ const response = await fetchImpl("https://api.github.com/copilot_internal/user", {
125
+ headers: {
126
+ Accept: "application/json",
127
+ Authorization: `token ${token}`,
128
+ ...COPILOT_GITHUB_HEADERS
129
+ },
130
+ signal
131
+ });
132
+ if (!response.ok) return void 0;
133
+ const data = await response.json();
134
+ if (!isRecord(data) || !isRecord(data.endpoints)) return void 0;
135
+ const endpoint = data.endpoints.api;
136
+ return typeof endpoint === "string" ? normalizeGitHubCopilotApiEndpoint(endpoint) : void 0;
137
+ } catch {
138
+ return;
139
+ }
140
+ }
141
+ function parseGitHubCopilotApiKey(apiKeyRaw) {
142
+ try {
143
+ const parsed = JSON.parse(apiKeyRaw);
144
+ if (typeof parsed.token === "string") return {
145
+ accessToken: parsed.token,
146
+ enterpriseUrl: typeof parsed.enterpriseUrl === "string" ? normalizeGitHubCopilotEnterpriseDomain(parsed.enterpriseUrl) : void 0,
147
+ apiEndpoint: typeof parsed.apiEndpoint === "string" ? normalizeGitHubCopilotApiEndpoint(parsed.apiEndpoint) : void 0
148
+ };
149
+ } catch {}
150
+ return { accessToken: apiKeyRaw };
151
+ }
152
+ function normalizeDomain(input) {
153
+ const trimmed = input.trim();
154
+ if (!trimmed) return null;
155
+ try {
156
+ return (trimmed.includes("://") ? new URL(trimmed) : new URL(`https://${trimmed}`)).hostname;
157
+ } catch {
158
+ return null;
159
+ }
160
+ }
161
+ function getGitHubCopilotBaseUrl(enterpriseDomain) {
162
+ const normalizedEnterpriseDomain = normalizeGitHubCopilotEnterpriseDomain(enterpriseDomain);
163
+ if (!normalizedEnterpriseDomain) return "https://api.githubcopilot.com";
164
+ return `https://${normalizedEnterpriseDomain.startsWith("copilot-api.") ? normalizedEnterpriseDomain : `copilot-api.${normalizedEnterpriseDomain}`}`;
165
+ }
166
+ //#endregion
167
+ //#region node_modules/.pnpm/@oh-my-pi+pi-ai@18.1.17/node_modules/@oh-my-pi/pi-ai/src/providers/github-copilot-headers.ts
168
+ function resolveGitHubCopilotBaseUrl(baseUrl, apiKey) {
169
+ if (!apiKey) return baseUrl;
170
+ const { enterpriseUrl, apiEndpoint } = parseGitHubCopilotApiKey(apiKey);
171
+ if (apiEndpoint && (!baseUrl || baseUrl.includes("githubcopilot.com"))) return apiEndpoint;
172
+ if (!enterpriseUrl) return baseUrl;
173
+ if (baseUrl && !baseUrl.includes("githubcopilot.com")) return baseUrl;
174
+ return getGitHubCopilotBaseUrl(enterpriseUrl);
175
+ }
176
+ /**
177
+ * Opt-in `Copilot-Integration-Id` override for chat and model-policy requests.
178
+ * Reads `COPILOT_INTEGRATION_ID`; unset/invalid keeps the chat-surface default
179
+ * (`COPILOT_CHAT_INTEGRATION_ID`). Model discovery keeps the CLI identity: it
180
+ * unlocks enterprise/experimental models and listing models is not
181
+ * policy-gated the way chat completions are (#11372).
182
+ */
183
+ function resolveCopilotIntegrationIdOverride(env = $env) {
184
+ return normalizeCopilotIntegrationId(env.COPILOT_INTEGRATION_ID);
185
+ }
186
+ /**
187
+ * Explicit caller-supplied `Copilot-Integration-Id`, matched case-insensitively.
188
+ * Takes only caller layers (`extraHeaders` / `options.headers`) — never model
189
+ * catalog headers — so a catalog default can never masquerade as a choice.
190
+ */
191
+ function explicitCopilotIntegrationId(headers) {
192
+ if (!headers) return void 0;
193
+ for (const name of Object.keys(headers)) if (name.toLowerCase() === "copilot-integration-id") return headers[name];
194
+ }
195
+ /**
196
+ * Effective identity before the chat-surface default: explicit value, then
197
+ * request headers, then `COPILOT_INTEGRATION_ID`. Pure given its inputs, so
198
+ * tests inject literals instead of mutating process state.
199
+ */
200
+ function resolveCopilotRequestIdentity(headers, explicit, env = $env) {
201
+ return normalizeCopilotIntegrationId(explicit) ?? normalizeCopilotIntegrationId(explicitCopilotIntegrationId(headers)) ?? resolveCopilotIntegrationIdOverride(env);
202
+ }
203
+ /**
204
+ * Reissue chat-surface Copilot 403s once as the Copilot CLI.
205
+ *
206
+ * Chat is the default surface (`COPILOT_CHAT_INTEGRATION_ID`) because Business
207
+ * organizations that gate premium models per client surface commonly allow
208
+ * chat while blocking CLI/agentic clients (issue #11372). The retry fires
209
+ * only for requests carrying the chat default and only when the caller
210
+ * resolved no explicit identity — an explicit choice is never second-guessed.
211
+ * The denied body is drained before reissuing, and the retry carries the CLI
212
+ * identity so the guard passes it through: at most two requests, never a loop.
213
+ */
214
+ function wrapFetchForCopilotFallback(base, enabled, integrationId) {
215
+ const inner = base ?? fetch;
216
+ if (!enabled) return inner;
217
+ return async (input, init) => {
218
+ const response = await inner(input, init);
219
+ if (response.status !== 403) return response;
220
+ if (input instanceof Request) return response;
221
+ if (normalizeCopilotIntegrationId(integrationId) !== void 0) return response;
222
+ const outgoing = new Headers(init?.headers);
223
+ if (outgoing.get("Copilot-Integration-Id") !== "copilot-chat") return response;
224
+ try {
225
+ await response.arrayBuffer();
226
+ } catch {}
227
+ warn("GitHub Copilot chat identity denied (HTTP 403); retrying once as the Copilot CLI");
228
+ const retryHeaders = new Headers(outgoing);
229
+ retryHeaders.set("Copilot-Integration-Id", COPILOT_CAPI_IDENTITY_HEADERS["Copilot-Integration-Id"]);
230
+ return inner(input, {
231
+ ...init,
232
+ headers: retryHeaders
233
+ });
234
+ };
235
+ }
236
+ function inferCopilotInitiator(messages) {
237
+ if (messages.length === 0) return "user";
238
+ const last = messages[messages.length - 1];
239
+ const attribution = last.attribution;
240
+ if (typeof attribution === "string") {
241
+ const normalizedAttribution = attribution.trim().toLowerCase();
242
+ if (normalizedAttribution === "user" || normalizedAttribution === "agent") return normalizedAttribution;
243
+ }
244
+ const role = last.role;
245
+ if (!role) return "user";
246
+ if (role !== "user") return "agent";
247
+ const content = last.content;
248
+ if (Array.isArray(content) && content.length > 0) {
249
+ if (content[content.length - 1].type === "tool_result") return "agent";
250
+ }
251
+ return "user";
252
+ }
253
+ /** Check whether any message in the conversation contains image content. */
254
+ function hasCopilotVisionInput(messages) {
255
+ return messages.some((msg) => {
256
+ if (msg.role === "user" && Array.isArray(msg.content)) return msg.content.some((c) => c.type === "image");
257
+ if (msg.role === "toolResult" && Array.isArray(msg.content)) return msg.content.some((c) => c.type === "image");
258
+ return false;
259
+ });
260
+ }
261
+ /**
262
+ * Resolve an explicitly configured Copilot initiator header, if present.
263
+ * Handles case-insensitive X-Initiator keys and returns the last valid value.
264
+ */
265
+ function getCopilotInitiatorOverride(headers) {
266
+ if (!headers) return void 0;
267
+ let override;
268
+ for (const [key, value] of Object.entries(headers)) {
269
+ if (key.toLowerCase() !== "x-initiator") continue;
270
+ const normalized = value.trim().toLowerCase();
271
+ if (normalized === "user" || normalized === "agent") override = normalized;
272
+ }
273
+ return override;
274
+ }
275
+ function normalizeCopilotPlanTier(planTier) {
276
+ if (planTier === "paid") return "paid";
277
+ return "free";
278
+ }
279
+ function getCopilotPremiumMultiplier(premiumMultiplier, planTier) {
280
+ const normalizedMultiplier = premiumMultiplier ?? 1;
281
+ if (normalizeCopilotPlanTier(planTier) === "free" && normalizedMultiplier === 0) return 1;
282
+ return normalizedMultiplier;
283
+ }
284
+ function getCopilotPremiumRequests(params) {
285
+ if (params.initiator === "agent") return 0;
286
+ return getCopilotPremiumMultiplier(params.premiumMultiplier, params.planTier);
287
+ }
288
+ /**
289
+ * Build dynamic Copilot headers that vary per-request.
290
+ * Static headers (User-Agent, Editor-Version, etc.) come from model.headers.
291
+ */
292
+ function buildCopilotDynamicHeaders(params) {
293
+ const initiator = params.initiatorOverride ?? getCopilotInitiatorOverride(params.headers) ?? inferCopilotInitiator(params.messages);
294
+ const headers = {
295
+ ...COPILOT_CAPI_IDENTITY_HEADERS,
296
+ "X-Initiator": initiator,
297
+ "X-Interaction-Type": `conversation-${initiator}`
298
+ };
299
+ headers["Copilot-Integration-Id"] = normalizeCopilotIntegrationId(params.integrationId) ?? "copilot-chat";
300
+ if (params.hasImages) headers["Copilot-Vision-Request"] = "true";
301
+ return {
302
+ headers,
303
+ initiator,
304
+ premiumRequests: getCopilotPremiumRequests({
305
+ initiator,
306
+ premiumMultiplier: params.premiumMultiplier,
307
+ planTier: params.planTier
308
+ })
309
+ };
310
+ }
311
+ //#endregion
312
+ export { normalizeCopilotIntegrationId as _, resolveGitHubCopilotBaseUrl as a, parseGitHubCopilotApiKey as b, COPILOT_CHAT_INTEGRATION_ID as c, PERSONAL_GITHUB_COPILOT_BASE_URL as d, discoverGitHubCopilotApiEndpoint as f, mergeCopilotApiHeaders as g, isPublicGitHubHost as h, resolveCopilotRequestIdentity as i, COPILOT_DISCOVERY_HEADERS as l, isPersonalGitHubCopilotBaseUrl as m, hasCopilotVisionInput as n, wrapFetchForCopilotFallback as o, getGitHubCopilotBaseUrl as p, resolveCopilotIntegrationIdOverride as r, COPILOT_API_HEADERS as s, buildCopilotDynamicHeaders as t, COPILOT_GITHUB_HEADERS as u, normalizeDomain as v, normalizeGitHubCopilotEnterpriseDomain as y };
@@ -0,0 +1,11 @@
1
+ import { installBunShim as __installBunShim } from "./bun-shim.mjs";
2
+ __installBunShim();
3
+ import { i as clearGitLabDuoDirectAccessCache } from "./stream-B_7qN-bA.mjs";
4
+ //#region node_modules/.pnpm/@oh-my-pi+pi-ai@18.1.17/node_modules/@oh-my-pi/pi-ai/src/registry/oauth/gitlab-duo.ts
5
+ /** GitLab Duo OAuth residue: invalidate direct-access credentials after token rotation. */
6
+ const gitLabDuoClearCacheHook = async (credentials) => {
7
+ clearGitLabDuoDirectAccessCache();
8
+ return credentials;
9
+ };
10
+ //#endregion
11
+ export { gitLabDuoClearCacheHook };
@@ -0,0 +1,38 @@
1
+ import { installBunShim as __installBunShim } from "./bun-shim.mjs";
2
+ __installBunShim();
3
+ import { h as MissingApiKeyError } from "./error-CORgGg5a.mjs";
4
+ import { Ct as applyInferenceHeaders, n as getEnvApiKey } from "./stream-B_7qN-bA.mjs";
5
+ import { p as streamGoogleGenAI, t as buildGoogleGenerateContentParams } from "./google-shared-B0aNCYEH.mjs";
6
+ //#region node_modules/.pnpm/@oh-my-pi+pi-ai@18.1.17/node_modules/@oh-my-pi/pi-ai/src/providers/google.ts
7
+ const DEFAULT_GENERATIVE_LANGUAGE_BASE = "https://generativelanguage.googleapis.com/v1beta";
8
+ const streamGoogle = (model, context, options) => {
9
+ const apiKey = options?.apiKey || getEnvApiKey(model.provider);
10
+ if (!apiKey) throw new MissingApiKeyError(void 0, "Google Generative AI requires an API key (GEMINI_API_KEY or options.apiKey).");
11
+ return streamGoogleGenAI({
12
+ model,
13
+ options,
14
+ api: "google-generative-ai",
15
+ prepare: () => {
16
+ const params = buildGoogleGenerateContentParams(model, context, options ?? {});
17
+ const url = `${model.baseUrl?.trim() || DEFAULT_GENERATIVE_LANGUAGE_BASE}/models/${model.id}:streamGenerateContent?alt=sse`;
18
+ const headers = {
19
+ "x-goog-api-key": apiKey,
20
+ ...model.headers,
21
+ ...options?.headers
22
+ };
23
+ applyInferenceHeaders(headers, {
24
+ provider: model.provider,
25
+ protocol: "google",
26
+ sessionId: options?.sessionId ?? options?.promptCacheKey
27
+ });
28
+ return {
29
+ params,
30
+ url,
31
+ headers,
32
+ fetch: options?.fetch
33
+ };
34
+ }
35
+ });
36
+ };
37
+ //#endregion
38
+ export { streamGoogle };