@xiaoso/dsh-tool-plus 0.1.16 → 0.1.17-beta.0

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 (109) hide show
  1. package/lib/{abort-DZ54CaKU.mjs → abort-BTblp0Rt.mjs} +2 -2
  2. package/lib/{alibaba-coding-plan-DODpkcqi.mjs → alibaba-coding-plan-t3R4YKCB.mjs} +3 -3
  3. package/lib/{alibaba-token-plan-C6lpKCda.mjs → alibaba-token-plan-CO4djG1y.mjs} +4 -4
  4. package/lib/{alibaba-token-plan-CHGyWOfX.mjs → alibaba-token-plan-CUjYJX0-.mjs} +1 -1
  5. package/lib/{anthropic-Dv_GGX6g.mjs → anthropic-nf7w6so1.mjs} +48 -21
  6. package/lib/{api-key-validation-MnMf_ihX.mjs → api-key-validation-C_tZ7Y9a.mjs} +2 -2
  7. package/lib/behavior-BwvTUtag.mjs +111 -0
  8. package/lib/{browser-render-BZXt548F.mjs → browser-render-BQaEVK_n.mjs} +4 -4
  9. package/lib/{reference-CtvM4zLU.mjs → bundled-references-CrQ4dQcT.mjs} +57 -4
  10. package/lib/cascade-BWjRTD1q.mjs +30265 -0
  11. package/lib/{cline-pass-BT9CBEOj.mjs → cline-pass-Bjm-O8GG.mjs} +2 -2
  12. package/lib/cloudflare-CKXRJ0l9.mjs +37 -0
  13. package/lib/{cloudflare-ai-gateway-DReN6ohJ.mjs → cloudflare-ai-gateway-BpnBSjwV.mjs} +8 -4
  14. package/lib/cloudflare-workers-ai-odj9XswL.mjs +32 -0
  15. package/lib/collapse-_nkb2dn7.mjs +1945 -0
  16. package/lib/{coreweave-C82HrLpb.mjs → coreweave-CGDZOD8-.mjs} +1 -1
  17. package/lib/{coreweave-C68UgRQO.mjs → coreweave-DwffcgW5.mjs} +4 -4
  18. package/lib/cursor-BgOuV7Qf.mjs +794 -0
  19. package/lib/{cursor-_gHHq-Dq.mjs → cursor-CF1iHHbv.mjs} +68 -19
  20. package/lib/{cursor-proto-Cr_WEMuv.mjs → cursor-proto-BuNTjX3L.mjs} +823 -23
  21. package/lib/{devin-QpfTSl9H.mjs → devin-7OEeEb80.mjs} +112 -31
  22. package/lib/{devin-proto-DYhp4Ty6.mjs → devin-proto-C-QreeAv.mjs} +71 -5
  23. package/lib/{dom-DG3sPESc.mjs → dom-BmbZv4v9.mjs} +598 -182
  24. package/lib/{error-O63pC8zg.mjs → error-8LVo7tug.mjs} +725 -104
  25. package/lib/factory-droid-ChhmsGWb.mjs +71 -0
  26. package/lib/{fs-promises-shim-B2YFWkcd.mjs → fs-promises-shim-CANAxFWh.mjs} +10 -1
  27. package/lib/{github-copilot-BMEcw8N1.mjs → github-copilot-QwevdT30.mjs} +4 -4
  28. package/lib/{github-copilot-headers-DnjGEbko.mjs → github-copilot-headers-CAUZ0rUD.mjs} +138 -26
  29. package/lib/{gitlab-duo-DnHqJjFY.mjs → gitlab-duo-DigV7k_o.mjs} +2 -2
  30. package/lib/{google-antigravity-B1mSckrK.mjs → google-antigravity-D-oe0r8A.mjs} +6 -7
  31. package/lib/{google-gemini-cli-DJwThCCn.mjs → google-gemini-cli-CQBHgGJT.mjs} +5 -6
  32. package/lib/{google-oauth-shared-BctLpVUN.mjs → google-oauth-shared-CvgVIUwJ.mjs} +2 -2
  33. package/lib/google-validation-CdvRj4ec.mjs +126 -0
  34. package/lib/id-EJwVLDHE.mjs +2548 -0
  35. package/lib/index.mjs +248 -258
  36. package/lib/{kilo-BEgEwMJQ.mjs → kilo-5r6OffCa.mjs} +2 -2
  37. package/lib/{kimi-T9NldEIJ.mjs → kimi-DOOtbXmm.mjs} +9 -10
  38. package/lib/{launch-BIWNyrBB.mjs → launch-DkAjib7h.mjs} +1 -1
  39. package/lib/{markit-Dvp2JPdT.mjs → markit-CCcyeAds.mjs} +359 -140
  40. package/lib/{models-DnXMYGcJ.mjs → models-DCpDT_im.mjs} +199203 -112275
  41. package/lib/{muse-code-CNvqqAp6.mjs → muse-code-CYf8zj_B.mjs} +5 -5
  42. package/lib/{openai-codex-D5-CyTxa.mjs → openai-codex-Cj-TvSFh.mjs} +13 -10
  43. package/lib/{perplexity-A2PEoGaC.mjs → perplexity-Dh_Qgsmx.mjs} +68 -25
  44. package/lib/{pkce-BYjmugmw.mjs → pkce-DO-jBJLV.mjs} +1 -1
  45. package/lib/pricing-DusBEhwm.mjs +593 -0
  46. package/lib/{readability-uGhqb4GC.mjs → readability-XHK0o3bv.mjs} +287 -27
  47. package/lib/{scrapers-C1ujjV8k.mjs → scrapers-B6PADOVm.mjs} +13 -13
  48. package/lib/slugify-ynYWBIA5.mjs +11 -0
  49. package/lib/snowflake-B_jap6lz.mjs +666 -0
  50. package/lib/snowflake-Cu1ZyOp6.mjs +151 -0
  51. package/lib/{src-AELUUb5U.mjs → src-BhinCSpi.mjs} +1172 -458
  52. package/lib/{stream-AVOoe5Hj.mjs → stream-D2ivg3GH.mjs} +3740 -5311
  53. package/lib/{turndown-D6fof1OX.mjs → turndown-Vya8SavL.mjs} +82 -30
  54. package/lib/types/tools/hashline/native/index.d.ts +2 -2
  55. package/lib/types/tools/hashline/native/policy.d.ts +19 -21
  56. package/lib/types/tools/omp/session/agent-storage.d.ts +3 -3
  57. package/lib/types/tools/shared/bun-named-shim.d.ts +5 -0
  58. package/lib/{types-BLrLohwK.mjs → types-tH1v9uRm.mjs} +2 -2
  59. package/lib/{utils-cZX3f_Ls.mjs → utils-C_Ncya1r.mjs} +1737 -509
  60. package/lib/utils-D2tK38xq.mjs +34006 -0
  61. package/lib/{utils-I4I8azHN.mjs → utils-DrDwmNtu.mjs} +8 -3
  62. package/lib/{xai-oauth-CbeldUSV.mjs → xai-oauth-DLLzX6my.mjs} +4 -4
  63. package/lib/{xiaomi-Dl3VSs04.mjs → xiaomi-CqK-KivK.mjs} +2 -2
  64. package/lib/{zai-FyjGSypr.mjs → zai-DoJ2xPIH.mjs} +2 -2
  65. package/lib/{zip-DRrycScC.mjs → zip-DG1mUV6X.mjs} +1 -1
  66. package/package.json +8 -8
  67. package/lib/amazon-bedrock-Dx0rr9dY.mjs +0 -996
  68. package/lib/anthropic-ClCw0PV_.mjs +0 -3624
  69. package/lib/anthropic-wire-lbGAFzYb.mjs +0 -927
  70. package/lib/azure-openai-responses-WE_bgFWp.mjs +0 -285
  71. package/lib/bundled-references-DY3EJxZV.mjs +0 -56
  72. package/lib/cloudflare-ai-gateway-CrMa97Ap.mjs +0 -44
  73. package/lib/collapse-CkMNRNr7.mjs +0 -2304
  74. package/lib/cursor-C6jaIJDg.mjs +0 -283
  75. package/lib/cursor-D-XZYDf_.mjs +0 -4544
  76. package/lib/deterministic-id-CUEIMSqR.mjs +0 -17
  77. package/lib/devin-ExGIghmx.mjs +0 -69
  78. package/lib/devin-u0ljw5P6.mjs +0 -628
  79. package/lib/effort-BdtQMN-_.mjs +0 -23
  80. package/lib/event-stream-BKEtb45Y.mjs +0 -167
  81. package/lib/gemini-headers-Co9cVvex.mjs +0 -54
  82. package/lib/google-auth-qAN-6DMW.mjs +0 -232
  83. package/lib/google-gemini-cli-B2Aw1S5w.mjs +0 -844
  84. package/lib/google-lTxuq28n.mjs +0 -38
  85. package/lib/google-shared-Y01j9xOr.mjs +0 -856
  86. package/lib/google-validation-BEkNs-Bx.mjs +0 -18
  87. package/lib/google-vertex-DcM-FRC5.mjs +0 -99
  88. package/lib/hosts-00rjRzUD.mjs +0 -203
  89. package/lib/id-AL5obQzR.mjs +0 -71
  90. package/lib/idle-iterator-D0ZXEcUq.mjs +0 -366
  91. package/lib/ollama-6R0oXZks.mjs +0 -574
  92. package/lib/openai-codex-responses-C8bnBWOe.mjs +0 -3232
  93. package/lib/openai-completions-DNr3mUsn.mjs +0 -1430
  94. package/lib/openai-configuration-update-xMYUjaK_.mjs +0 -150
  95. package/lib/openai-reasoning-fallback-Ju-5pSR8.mjs +0 -380
  96. package/lib/openai-responses-CjpafAEr.mjs +0 -861
  97. package/lib/protobuf-BMgDYu_U.mjs +0 -717
  98. package/lib/provider-response-SqKSkkUc.mjs +0 -22
  99. package/lib/proxy-DxvCQOCA.mjs +0 -230
  100. package/lib/request-debug-BwPOqN_j.mjs +0 -183
  101. package/lib/sanitize-text-BCf5KmCf.mjs +0 -33
  102. package/lib/sse-debug-B-tkLCPW.mjs +0 -11
  103. package/lib/stream-markup-healing-CN3RsqG9.mjs +0 -267
  104. package/lib/strict-tool-validation-CBTz1dAA.mjs +0 -105
  105. package/lib/taxonomy-DSIM99rS.mjs +0 -15392
  106. package/lib/thinking-ngMwf_1Y.mjs +0 -336
  107. package/lib/type-guards-CttAANEx.mjs +0 -11
  108. package/lib/utils-CE3DSebh.mjs +0 -11763
  109. package/lib/vision-guard-BCpXWUj3.mjs +0 -77
@@ -1,11 +1,15 @@
1
1
  import { installBunShim as __installBunShim } from "./bun-shim.mjs";
2
2
  __installBunShim();
3
- import { r as __exportAll } from "./fs-promises-shim-B2YFWkcd.mjs";
4
- import { f as OAuthError } from "./error-O63pC8zg.mjs";
5
- import { t as generatePKCE } from "./pkce-BYjmugmw.mjs";
6
- //#region node_modules/.pnpm/@oh-my-pi+pi-ai@18.1.17/node_modules/@oh-my-pi/pi-ai/src/registry/oauth/cursor.ts
3
+ import { i as __exportAll } from "./fs-promises-shim-CANAxFWh.mjs";
4
+ import { X as ProviderHttpError, h as OAuthError } from "./error-8LVo7tug.mjs";
5
+ import "./utils-C_Ncya1r.mjs";
6
+ import { h as isRecord } from "./cascade-BWjRTD1q.mjs";
7
+ import { t as generatePKCE } from "./pkce-DO-jBJLV.mjs";
8
+ //#region node_modules/.pnpm/@oh-my-pi+pi-ai@18.12.6/node_modules/@oh-my-pi/pi-ai/src/registry/oauth/cursor.ts
7
9
  var cursor_exports = /* @__PURE__ */ __exportAll({
10
+ cursorSessionHeaders: () => cursorSessionHeaders,
8
11
  extractCursorAccessTokenUserId: () => extractCursorAccessTokenUserId,
12
+ fetchCursorAccountEmail: () => fetchCursorAccountEmail,
9
13
  generateCursorAuthParams: () => generateCursorAuthParams,
10
14
  loginCursor: () => loginCursor,
11
15
  loginCursorHook: () => loginCursorHook,
@@ -15,7 +19,11 @@ var cursor_exports = /* @__PURE__ */ __exportAll({
15
19
  });
16
20
  const CURSOR_LOGIN_URL = "https://cursor.com/loginDeepControl";
17
21
  const CURSOR_POLL_URL = "https://api2.cursor.sh/auth/poll";
18
- const CURSOR_REFRESH_URL = "https://api2.cursor.sh/auth/exchange_user_api_key";
22
+ const CURSOR_REFRESH_URL = "https://api2.cursor.sh/oauth/token";
23
+ /** OAuth client the Cursor IDE renews its login session with. */
24
+ const CURSOR_CLIENT_ID = "KbZUR41cY7W6zRSdpSUJ7I7mLYBKOCmB";
25
+ const CURSOR_PROFILE_URL = "https://cursor.com/api/auth/me";
26
+ const CURSOR_PROFILE_TIMEOUT_MS = 3e3;
19
27
  const POLL_MAX_ATTEMPTS = 150;
20
28
  const POLL_BASE_DELAY = 1e3;
21
29
  const POLL_MAX_DELAY = 1e4;
@@ -85,16 +93,17 @@ async function loginCursor(onAuthUrl, onPollStart) {
85
93
  };
86
94
  }
87
95
  async function loginCursorHook(callbacks) {
88
- return loginCursor((url) => callbacks.onAuth?.({ url }), callbacks.onProgress ? () => callbacks.onProgress?.("Waiting for browser authentication...") : void 0);
96
+ return withCursorAccountEmail(await loginCursor((url) => callbacks.onAuth?.({ url }), callbacks.onProgress ? () => callbacks.onProgress?.("Waiting for browser authentication...") : void 0), callbacks.fetch ?? fetch, callbacks.signal);
89
97
  }
90
- async function refreshCursorToken(apiKeyOrRefreshToken) {
98
+ async function refreshCursorToken(refreshToken) {
91
99
  const response = await fetch(CURSOR_REFRESH_URL, {
92
100
  method: "POST",
93
- headers: {
94
- Authorization: `Bearer ${apiKeyOrRefreshToken}`,
95
- "Content-Type": "application/json"
96
- },
97
- body: "{}"
101
+ headers: { "Content-Type": "application/json" },
102
+ body: JSON.stringify({
103
+ grant_type: "refresh_token",
104
+ client_id: CURSOR_CLIENT_ID,
105
+ refresh_token: refreshToken
106
+ })
98
107
  });
99
108
  if (!response.ok) {
100
109
  const error = await response.text();
@@ -104,15 +113,55 @@ async function refreshCursorToken(apiKeyOrRefreshToken) {
104
113
  });
105
114
  }
106
115
  const data = await response.json();
107
- const expiresAt = getTokenExpiry(data.accessToken);
116
+ if (data.shouldLogout === true) throw new OAuthError("invalid_grant: Cursor ended this session; run /login cursor again", {
117
+ kind: "token-refresh",
118
+ provider: "cursor"
119
+ });
120
+ if (!data.access_token) throw new OAuthError("Cursor token refresh returned no access token", {
121
+ kind: "token-refresh",
122
+ provider: "cursor"
123
+ });
124
+ return {
125
+ access: data.access_token,
126
+ refresh: data.refresh_token || refreshToken,
127
+ expires: getTokenExpiry(data.access_token)
128
+ };
129
+ }
130
+ async function refreshCursorHook(credentials, signal) {
131
+ const refreshed = await refreshCursorToken(credentials.refresh);
132
+ return credentials.email ? refreshed : withCursorAccountEmail(refreshed, fetch, signal);
133
+ }
134
+ /** Request headers that present `accessToken` to cursor.com as its user's web session. */
135
+ function cursorSessionHeaders(userId, accessToken) {
108
136
  return {
109
- access: data.accessToken,
110
- refresh: data.refreshToken || apiKeyOrRefreshToken,
111
- expires: expiresAt
137
+ Accept: "application/json",
138
+ Cookie: `WorkosCursorSessionToken=${encodeURIComponent(`${userId}::${accessToken}`)}`
112
139
  };
113
140
  }
114
- async function refreshCursorHook(credentials) {
115
- return refreshCursorToken(credentials.refresh);
141
+ /**
142
+ * Email of the Cursor account that owns `accessToken`, read from its cursor.com
143
+ * profile. Undefined when the token names no user or the profile names another.
144
+ */
145
+ async function fetchCursorAccountEmail(accessToken, fetchImpl = fetch, signal) {
146
+ const userId = extractCursorAccessTokenUserId(accessToken);
147
+ if (!userId) return void 0;
148
+ const response = await fetchImpl(CURSOR_PROFILE_URL, {
149
+ headers: cursorSessionHeaders(userId, accessToken),
150
+ signal
151
+ });
152
+ if (!response.ok) throw new ProviderHttpError(`Cursor profile request failed: ${response.status}`, response.status);
153
+ const payload = await response.json();
154
+ if (!isRecord(payload) || payload.sub !== userId || typeof payload.email !== "string") return void 0;
155
+ return payload.email.trim() || void 0;
156
+ }
157
+ /** Attach the account email so account policies and pickers can name this login; a failed lookup leaves it off. */
158
+ async function withCursorAccountEmail(credentials, fetchImpl, signal) {
159
+ const timeout = AbortSignal.timeout(CURSOR_PROFILE_TIMEOUT_MS);
160
+ const email = await fetchCursorAccountEmail(credentials.access, fetchImpl, signal ? AbortSignal.any([signal, timeout]) : timeout).catch(() => void 0);
161
+ return email ? {
162
+ ...credentials,
163
+ email
164
+ } : credentials;
116
165
  }
117
166
  function decodeCursorAccessTokenPayload(token) {
118
167
  const parts = token.split(".");
@@ -140,4 +189,4 @@ function getTokenExpiry(token) {
140
189
  return Date.now() + 36e5;
141
190
  }
142
191
  //#endregion
143
- export { extractCursorAccessTokenUserId as n, cursor_exports as t };
192
+ export { fetchCursorAccountEmail as i, cursor_exports as n, extractCursorAccessTokenUserId as r, cursorSessionHeaders as t };