@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.
- package/lib/{abort-DZ54CaKU.mjs → abort-BTblp0Rt.mjs} +2 -2
- package/lib/{alibaba-coding-plan-DODpkcqi.mjs → alibaba-coding-plan-t3R4YKCB.mjs} +3 -3
- package/lib/{alibaba-token-plan-C6lpKCda.mjs → alibaba-token-plan-CO4djG1y.mjs} +4 -4
- package/lib/{alibaba-token-plan-CHGyWOfX.mjs → alibaba-token-plan-CUjYJX0-.mjs} +1 -1
- package/lib/{anthropic-Dv_GGX6g.mjs → anthropic-nf7w6so1.mjs} +48 -21
- package/lib/{api-key-validation-MnMf_ihX.mjs → api-key-validation-C_tZ7Y9a.mjs} +2 -2
- package/lib/behavior-BwvTUtag.mjs +111 -0
- package/lib/{browser-render-BZXt548F.mjs → browser-render-BQaEVK_n.mjs} +4 -4
- package/lib/{reference-CtvM4zLU.mjs → bundled-references-CrQ4dQcT.mjs} +57 -4
- package/lib/cascade-BWjRTD1q.mjs +30265 -0
- package/lib/{cline-pass-BT9CBEOj.mjs → cline-pass-Bjm-O8GG.mjs} +2 -2
- package/lib/cloudflare-CKXRJ0l9.mjs +37 -0
- package/lib/{cloudflare-ai-gateway-DReN6ohJ.mjs → cloudflare-ai-gateway-BpnBSjwV.mjs} +8 -4
- package/lib/cloudflare-workers-ai-odj9XswL.mjs +32 -0
- package/lib/collapse-_nkb2dn7.mjs +1945 -0
- package/lib/{coreweave-C82HrLpb.mjs → coreweave-CGDZOD8-.mjs} +1 -1
- package/lib/{coreweave-C68UgRQO.mjs → coreweave-DwffcgW5.mjs} +4 -4
- package/lib/cursor-BgOuV7Qf.mjs +794 -0
- package/lib/{cursor-_gHHq-Dq.mjs → cursor-CF1iHHbv.mjs} +68 -19
- package/lib/{cursor-proto-Cr_WEMuv.mjs → cursor-proto-BuNTjX3L.mjs} +823 -23
- package/lib/{devin-QpfTSl9H.mjs → devin-7OEeEb80.mjs} +112 -31
- package/lib/{devin-proto-DYhp4Ty6.mjs → devin-proto-C-QreeAv.mjs} +71 -5
- package/lib/{dom-DG3sPESc.mjs → dom-BmbZv4v9.mjs} +598 -182
- package/lib/{error-O63pC8zg.mjs → error-8LVo7tug.mjs} +725 -104
- package/lib/factory-droid-ChhmsGWb.mjs +71 -0
- package/lib/{fs-promises-shim-B2YFWkcd.mjs → fs-promises-shim-CANAxFWh.mjs} +10 -1
- package/lib/{github-copilot-BMEcw8N1.mjs → github-copilot-QwevdT30.mjs} +4 -4
- package/lib/{github-copilot-headers-DnjGEbko.mjs → github-copilot-headers-CAUZ0rUD.mjs} +138 -26
- package/lib/{gitlab-duo-DnHqJjFY.mjs → gitlab-duo-DigV7k_o.mjs} +2 -2
- package/lib/{google-antigravity-B1mSckrK.mjs → google-antigravity-D-oe0r8A.mjs} +6 -7
- package/lib/{google-gemini-cli-DJwThCCn.mjs → google-gemini-cli-CQBHgGJT.mjs} +5 -6
- package/lib/{google-oauth-shared-BctLpVUN.mjs → google-oauth-shared-CvgVIUwJ.mjs} +2 -2
- package/lib/google-validation-CdvRj4ec.mjs +126 -0
- package/lib/id-EJwVLDHE.mjs +2548 -0
- package/lib/index.mjs +248 -258
- package/lib/{kilo-BEgEwMJQ.mjs → kilo-5r6OffCa.mjs} +2 -2
- package/lib/{kimi-T9NldEIJ.mjs → kimi-DOOtbXmm.mjs} +9 -10
- package/lib/{launch-BIWNyrBB.mjs → launch-DkAjib7h.mjs} +1 -1
- package/lib/{markit-Dvp2JPdT.mjs → markit-CCcyeAds.mjs} +359 -140
- package/lib/{models-DnXMYGcJ.mjs → models-DCpDT_im.mjs} +199203 -112275
- package/lib/{muse-code-CNvqqAp6.mjs → muse-code-CYf8zj_B.mjs} +5 -5
- package/lib/{openai-codex-D5-CyTxa.mjs → openai-codex-Cj-TvSFh.mjs} +13 -10
- package/lib/{perplexity-A2PEoGaC.mjs → perplexity-Dh_Qgsmx.mjs} +68 -25
- package/lib/{pkce-BYjmugmw.mjs → pkce-DO-jBJLV.mjs} +1 -1
- package/lib/pricing-DusBEhwm.mjs +593 -0
- package/lib/{readability-uGhqb4GC.mjs → readability-XHK0o3bv.mjs} +287 -27
- package/lib/{scrapers-C1ujjV8k.mjs → scrapers-B6PADOVm.mjs} +13 -13
- package/lib/slugify-ynYWBIA5.mjs +11 -0
- package/lib/snowflake-B_jap6lz.mjs +666 -0
- package/lib/snowflake-Cu1ZyOp6.mjs +151 -0
- package/lib/{src-AELUUb5U.mjs → src-BhinCSpi.mjs} +1172 -458
- package/lib/{stream-AVOoe5Hj.mjs → stream-D2ivg3GH.mjs} +3740 -5311
- package/lib/{turndown-D6fof1OX.mjs → turndown-Vya8SavL.mjs} +82 -30
- package/lib/types/tools/hashline/native/index.d.ts +2 -2
- package/lib/types/tools/hashline/native/policy.d.ts +19 -21
- package/lib/types/tools/omp/session/agent-storage.d.ts +3 -3
- package/lib/types/tools/shared/bun-named-shim.d.ts +5 -0
- package/lib/{types-BLrLohwK.mjs → types-tH1v9uRm.mjs} +2 -2
- package/lib/{utils-cZX3f_Ls.mjs → utils-C_Ncya1r.mjs} +1737 -509
- package/lib/utils-D2tK38xq.mjs +34006 -0
- package/lib/{utils-I4I8azHN.mjs → utils-DrDwmNtu.mjs} +8 -3
- package/lib/{xai-oauth-CbeldUSV.mjs → xai-oauth-DLLzX6my.mjs} +4 -4
- package/lib/{xiaomi-Dl3VSs04.mjs → xiaomi-CqK-KivK.mjs} +2 -2
- package/lib/{zai-FyjGSypr.mjs → zai-DoJ2xPIH.mjs} +2 -2
- package/lib/{zip-DRrycScC.mjs → zip-DG1mUV6X.mjs} +1 -1
- package/package.json +8 -8
- package/lib/amazon-bedrock-Dx0rr9dY.mjs +0 -996
- package/lib/anthropic-ClCw0PV_.mjs +0 -3624
- package/lib/anthropic-wire-lbGAFzYb.mjs +0 -927
- package/lib/azure-openai-responses-WE_bgFWp.mjs +0 -285
- package/lib/bundled-references-DY3EJxZV.mjs +0 -56
- package/lib/cloudflare-ai-gateway-CrMa97Ap.mjs +0 -44
- package/lib/collapse-CkMNRNr7.mjs +0 -2304
- package/lib/cursor-C6jaIJDg.mjs +0 -283
- package/lib/cursor-D-XZYDf_.mjs +0 -4544
- package/lib/deterministic-id-CUEIMSqR.mjs +0 -17
- package/lib/devin-ExGIghmx.mjs +0 -69
- package/lib/devin-u0ljw5P6.mjs +0 -628
- package/lib/effort-BdtQMN-_.mjs +0 -23
- package/lib/event-stream-BKEtb45Y.mjs +0 -167
- package/lib/gemini-headers-Co9cVvex.mjs +0 -54
- package/lib/google-auth-qAN-6DMW.mjs +0 -232
- package/lib/google-gemini-cli-B2Aw1S5w.mjs +0 -844
- package/lib/google-lTxuq28n.mjs +0 -38
- package/lib/google-shared-Y01j9xOr.mjs +0 -856
- package/lib/google-validation-BEkNs-Bx.mjs +0 -18
- package/lib/google-vertex-DcM-FRC5.mjs +0 -99
- package/lib/hosts-00rjRzUD.mjs +0 -203
- package/lib/id-AL5obQzR.mjs +0 -71
- package/lib/idle-iterator-D0ZXEcUq.mjs +0 -366
- package/lib/ollama-6R0oXZks.mjs +0 -574
- package/lib/openai-codex-responses-C8bnBWOe.mjs +0 -3232
- package/lib/openai-completions-DNr3mUsn.mjs +0 -1430
- package/lib/openai-configuration-update-xMYUjaK_.mjs +0 -150
- package/lib/openai-reasoning-fallback-Ju-5pSR8.mjs +0 -380
- package/lib/openai-responses-CjpafAEr.mjs +0 -861
- package/lib/protobuf-BMgDYu_U.mjs +0 -717
- package/lib/provider-response-SqKSkkUc.mjs +0 -22
- package/lib/proxy-DxvCQOCA.mjs +0 -230
- package/lib/request-debug-BwPOqN_j.mjs +0 -183
- package/lib/sanitize-text-BCf5KmCf.mjs +0 -33
- package/lib/sse-debug-B-tkLCPW.mjs +0 -11
- package/lib/stream-markup-healing-CN3RsqG9.mjs +0 -267
- package/lib/strict-tool-validation-CBTz1dAA.mjs +0 -105
- package/lib/taxonomy-DSIM99rS.mjs +0 -15392
- package/lib/thinking-ngMwf_1Y.mjs +0 -336
- package/lib/type-guards-CttAANEx.mjs +0 -11
- package/lib/utils-CE3DSebh.mjs +0 -11763
- 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 {
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
|
|
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/
|
|
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(
|
|
98
|
+
async function refreshCursorToken(refreshToken) {
|
|
91
99
|
const response = await fetch(CURSOR_REFRESH_URL, {
|
|
92
100
|
method: "POST",
|
|
93
|
-
headers: {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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
|
-
|
|
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
|
-
|
|
110
|
-
|
|
111
|
-
expires: expiresAt
|
|
137
|
+
Accept: "application/json",
|
|
138
|
+
Cookie: `WorkosCursorSessionToken=${encodeURIComponent(`${userId}::${accessToken}`)}`
|
|
112
139
|
};
|
|
113
140
|
}
|
|
114
|
-
|
|
115
|
-
|
|
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 {
|
|
192
|
+
export { fetchCursorAccountEmail as i, cursor_exports as n, extractCursorAccessTokenUserId as r, cursorSessionHeaders as t };
|