@kodycodes/cli 1.26.3 → 1.27.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/README.md +175 -167
- package/dist/add-mcp-install.d.ts +1 -1
- package/dist/api-token.d.ts +1 -1
- package/dist/{auth-4FW6GCLG.js → auth-6ZE6QQXA.js} +13 -8
- package/dist/auth-bootstrap.d.ts +1 -1
- package/dist/auth.d.ts +27 -3
- package/dist/bin.js +18 -18
- package/dist/capability-proxy.d.ts +1 -1
- package/dist/{chunk-D55XPY3T.js → chunk-2IHISXHN.js} +58 -27
- package/dist/chunk-2IHISXHN.js.map +6 -0
- package/dist/{chunk-SMURF26I.js → chunk-2XPH7L2P.js} +1 -1
- package/dist/chunk-2XPH7L2P.js.map +6 -0
- package/dist/{chunk-RM34N3KI.js → chunk-3H72XY5R.js} +16 -6
- package/dist/chunk-3H72XY5R.js.map +6 -0
- package/dist/{chunk-G4YN6XP5.js → chunk-4GIFJVGT.js} +1 -1
- package/dist/chunk-4GIFJVGT.js.map +6 -0
- package/dist/{chunk-R4IUV5P5.js → chunk-5JIRHJQP.js} +397 -45
- package/dist/chunk-5JIRHJQP.js.map +6 -0
- package/dist/chunk-5ZBJAP6G.js +2005 -0
- package/dist/chunk-5ZBJAP6G.js.map +6 -0
- package/dist/{chunk-6XQP5SWX.js → chunk-6ZYUGXVW.js} +1 -1
- package/dist/chunk-6ZYUGXVW.js.map +6 -0
- package/dist/{chunk-OVGXPRSY.js → chunk-7PRJ36I5.js} +4 -1
- package/dist/{chunk-OVGXPRSY.js.map → chunk-7PRJ36I5.js.map} +1 -1
- package/dist/{chunk-IHP6PV6X.js → chunk-BTL3PJ2H.js} +1 -12
- package/dist/chunk-BTL3PJ2H.js.map +6 -0
- package/dist/{chunk-VQS5YSCI.js → chunk-CPS7HW4T.js} +8 -6
- package/dist/{chunk-VQS5YSCI.js.map → chunk-CPS7HW4T.js.map} +1 -1
- package/dist/{chunk-TIL35OWA.js → chunk-D366STO5.js} +238 -146
- package/dist/chunk-D366STO5.js.map +6 -0
- package/dist/{chunk-BISUL7CE.js → chunk-DW5UTJ6T.js} +14 -5
- package/dist/chunk-DW5UTJ6T.js.map +6 -0
- package/dist/{target-3QHY7JT4.js → chunk-EJXEVGWF.js} +8 -6
- package/dist/chunk-EJXEVGWF.js.map +6 -0
- package/dist/{chunk-XDCOWU5R.js → chunk-FBEZ6PZ7.js} +64 -14
- package/dist/chunk-FBEZ6PZ7.js.map +6 -0
- package/dist/{chunk-SXHULGL4.js → chunk-JOMBXQOS.js} +18 -9
- package/dist/chunk-JOMBXQOS.js.map +6 -0
- package/dist/{chunk-64XN367G.js → chunk-LU7I7CQ4.js} +66 -44
- package/dist/chunk-LU7I7CQ4.js.map +6 -0
- package/dist/{chunk-EOCV74B2.js → chunk-OZDWOZLV.js} +41 -25
- package/dist/chunk-OZDWOZLV.js.map +6 -0
- package/dist/{chunk-75RZUXQL.js → chunk-SLNAWWQK.js} +4 -2
- package/dist/{chunk-75RZUXQL.js.map → chunk-SLNAWWQK.js.map} +1 -1
- package/dist/{chunk-64IM6G4Z.js → chunk-TUUFQYWP.js} +13 -6
- package/dist/chunk-TUUFQYWP.js.map +6 -0
- package/dist/{chunk-QHBCP4OB.js → chunk-UW6AWLXX.js} +6 -7
- package/dist/chunk-W2SAFAT4.js +1563 -0
- package/dist/chunk-W2SAFAT4.js.map +6 -0
- package/dist/{chunk-BPGY4IE7.js → chunk-XV6D6HSG.js} +1 -1
- package/dist/chunk-XV6D6HSG.js.map +6 -0
- package/dist/{chunk-XOPPGRUP.js → chunk-Y4FOJETX.js} +17 -6
- package/dist/chunk-Y4FOJETX.js.map +6 -0
- package/dist/{chunk-PDWCKWQF.js → chunk-YDWTXEKQ.js} +26 -10
- package/dist/chunk-YDWTXEKQ.js.map +6 -0
- package/dist/{chunk-JWEFKKAD.js → chunk-ZILB2HWE.js} +1 -1
- package/dist/chunk-ZILB2HWE.js.map +6 -0
- package/dist/cli.js +19 -19
- package/dist/defaults.d.ts +1 -1
- package/dist/detect-running-hosts.d.ts +1 -1
- package/dist/dev/dev-assets.d.ts +1 -1
- package/dist/dev/dev-registry.d.ts +1 -1
- package/dist/dev/error-page.d.ts +1 -1
- package/dist/dev/live-reload.d.ts +2 -2
- package/dist/{dev-command-3LX234N6.js → dev-command-5PDEIWOC.js} +236 -111
- package/dist/dev-command-5PDEIWOC.js.map +6 -0
- package/dist/dev-command.d.ts +1 -1
- package/dist/discover-login-identity.d.ts +6 -7
- package/dist/discover-org.d.ts +2 -3
- package/dist/generated/openapi-routes.d.ts +6 -0
- package/dist/{git-credential-FUE3JE3T.js → git-credential-INB2UV4C.js} +32 -25
- package/dist/git-credential-INB2UV4C.js.map +6 -0
- package/dist/{install-ZML2TCDG.js → install-ONEJRYZ3.js} +147 -113
- package/dist/install-ONEJRYZ3.js.map +6 -0
- package/dist/install.d.ts +1 -1
- package/dist/{local-execute-SZV6XN4T.js → local-execute-I3BP5NEQ.js} +81 -54
- package/dist/local-execute-I3BP5NEQ.js.map +6 -0
- package/dist/local-execute-auth.d.ts +2 -2
- package/dist/local-execute.d.ts +1 -1
- package/dist/local-gateway-fetch-forward.d.ts +2 -2
- package/dist/local-package-run-JFKNSNWM.js +23 -0
- package/dist/local-package-run.d.ts +2 -2
- package/dist/mock/mock-fetch-gateway.d.ts +2 -2
- package/dist/mock/mock-supported.d.ts +1 -1
- package/dist/{mock-dep-resolve-TVABDNR7.js → mock-dep-resolve-B5ZH4U3H.js} +14 -6
- package/dist/mock-dep-resolve-B5ZH4U3H.js.map +6 -0
- package/dist/{mock-fetch-gateway-B5TFGGQS.js → mock-fetch-gateway-S2ULVFAI.js} +7 -6
- package/dist/{mock-local-deps-5SZT3PWT.js → mock-local-deps-2VVNJLFF.js} +20 -17
- package/dist/mock-local-deps-2VVNJLFF.js.map +6 -0
- package/dist/mock-local-deps.d.ts +1 -1
- package/dist/{mock-server-SV2IKC4I.js → mock-server-TFO7Q26H.js} +8 -7
- package/dist/oauth-browser.d.ts +42 -0
- package/dist/oauth-provider.d.ts +14 -19
- package/dist/{open-api-client-DVVMLY7P.js → open-api-client-SR4B7265.js} +11 -10
- package/dist/open-api-client.d.ts +2 -1
- package/dist/{org-X7B5BI4R.js → org-535LB4PD.js} +8 -6
- package/dist/org-535LB4PD.js.map +6 -0
- package/dist/org-resolve.d.ts +2 -0
- package/dist/package-app-dev.d.ts +2 -2
- package/dist/{package-manifest-QH2RU64C.js → package-manifest-DFF6XCPV.js} +5 -4
- package/dist/{remote-execute-QMQDVHOY.js → remote-execute-JN6DRFEU.js} +49 -30
- package/dist/remote-execute-JN6DRFEU.js.map +6 -0
- package/dist/remote-execute.d.ts +3 -3
- package/dist/{setup-git-5KCUBYPB.js → setup-git-MHK563LB.js} +11 -12
- package/dist/setup-git.d.ts +1 -1
- package/dist/{skill-ENPATRIW.js → skill-D74XVI6T.js} +26 -8
- package/dist/skill-D74XVI6T.js.map +6 -0
- package/dist/{store-WTMRH527.js → store-27J4CQZ2.js} +4 -4
- package/dist/{structured-error-C65GQ53Z.js → structured-error-5MLWXYR3.js} +4 -3
- package/dist/structured-error.d.ts +1 -1
- package/dist/target-33ATHDUF.js +17 -0
- package/package.json +6 -5
- package/skills/kody/SKILL.md +53 -50
- package/dist/chunk-4D6ORNXY.js +0 -24404
- package/dist/chunk-4D6ORNXY.js.map +0 -6
- package/dist/chunk-64IM6G4Z.js.map +0 -6
- package/dist/chunk-64XN367G.js.map +0 -6
- package/dist/chunk-6XQP5SWX.js.map +0 -6
- package/dist/chunk-BISUL7CE.js.map +0 -6
- package/dist/chunk-BPGY4IE7.js.map +0 -6
- package/dist/chunk-D55XPY3T.js.map +0 -6
- package/dist/chunk-EOCV74B2.js.map +0 -6
- package/dist/chunk-FBVNFWR6.js +0 -437
- package/dist/chunk-FBVNFWR6.js.map +0 -6
- package/dist/chunk-G4YN6XP5.js.map +0 -6
- package/dist/chunk-G6LJWROP.js +0 -18
- package/dist/chunk-G6LJWROP.js.map +0 -6
- package/dist/chunk-IHP6PV6X.js.map +0 -6
- package/dist/chunk-JWEFKKAD.js.map +0 -6
- package/dist/chunk-LWNB26KO.js +0 -147
- package/dist/chunk-LWNB26KO.js.map +0 -6
- package/dist/chunk-PDWCKWQF.js.map +0 -6
- package/dist/chunk-R4IUV5P5.js.map +0 -6
- package/dist/chunk-RM34N3KI.js.map +0 -6
- package/dist/chunk-RTWUNV76.js +0 -309
- package/dist/chunk-RTWUNV76.js.map +0 -6
- package/dist/chunk-SMURF26I.js.map +0 -6
- package/dist/chunk-SXHULGL4.js.map +0 -6
- package/dist/chunk-TIL35OWA.js.map +0 -6
- package/dist/chunk-XDCOWU5R.js.map +0 -6
- package/dist/chunk-XOPPGRUP.js.map +0 -6
- package/dist/dev-command-3LX234N6.js.map +0 -6
- package/dist/git-credential-FUE3JE3T.js.map +0 -6
- package/dist/install-ZML2TCDG.js.map +0 -6
- package/dist/local-execute-SZV6XN4T.js.map +0 -6
- package/dist/local-package-run-2TMCAZZ2.js +0 -23
- package/dist/mcp-G2AWTIXR.js +0 -21
- package/dist/mcp.d.ts +0 -34
- package/dist/mock-dep-resolve-TVABDNR7.js.map +0 -6
- package/dist/mock-local-deps-5SZT3PWT.js.map +0 -6
- package/dist/org-X7B5BI4R.js.map +0 -6
- package/dist/remote-execute-QMQDVHOY.js.map +0 -6
- package/dist/skill-ENPATRIW.js.map +0 -6
- package/dist/target-3QHY7JT4.js.map +0 -6
- package/dist/webapi-NTVP4BO3.js +0 -2482
- package/dist/webapi-NTVP4BO3.js.map +0 -6
- /package/dist/{auth-4FW6GCLG.js.map → auth-6ZE6QQXA.js.map} +0 -0
- /package/dist/{chunk-QHBCP4OB.js.map → chunk-UW6AWLXX.js.map} +0 -0
- /package/dist/{local-package-run-2TMCAZZ2.js.map → local-package-run-JFKNSNWM.js.map} +0 -0
- /package/dist/{mcp-G2AWTIXR.js.map → mock-fetch-gateway-S2ULVFAI.js.map} +0 -0
- /package/dist/{mock-fetch-gateway-B5TFGGQS.js.map → mock-server-TFO7Q26H.js.map} +0 -0
- /package/dist/{mock-server-SV2IKC4I.js.map → open-api-client-SR4B7265.js.map} +0 -0
- /package/dist/{open-api-client-DVVMLY7P.js.map → package-manifest-DFF6XCPV.js.map} +0 -0
- /package/dist/{package-manifest-QH2RU64C.js.map → setup-git-MHK563LB.js.map} +0 -0
- /package/dist/{setup-git-5KCUBYPB.js.map → store-27J4CQZ2.js.map} +0 -0
- /package/dist/{store-WTMRH527.js.map → structured-error-5MLWXYR3.js.map} +0 -0
- /package/dist/{structured-error-C65GQ53Z.js.map → target-33ATHDUF.js.map} +0 -0
|
@@ -1,23 +1,295 @@
|
|
|
1
1
|
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
describeNetworkError
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-4GIFJVGT.js";
|
|
5
5
|
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
capabilityProxyForbiddenMessage,
|
|
10
|
-
currentStoredTokenLifetimeAlias,
|
|
11
|
-
featureDisabledMessage,
|
|
12
|
-
insufficientScopeMessage,
|
|
13
|
-
isScopedApiToken,
|
|
14
|
-
readInsufficientScopeDetails,
|
|
15
|
-
rejectedOauthBearerMessage
|
|
16
|
-
} from "./chunk-RTWUNV76.js";
|
|
6
|
+
createFileBackend,
|
|
7
|
+
secretServiceKeyringOptions
|
|
8
|
+
} from "./chunk-3H72XY5R.js";
|
|
17
9
|
import {
|
|
18
10
|
apiTokenEnvVar,
|
|
19
|
-
cliName
|
|
20
|
-
|
|
11
|
+
cliName,
|
|
12
|
+
defaultApiUrl,
|
|
13
|
+
defaultMcpUrl,
|
|
14
|
+
keyringService
|
|
15
|
+
} from "./chunk-BTL3PJ2H.js";
|
|
16
|
+
|
|
17
|
+
// src/api-token-store.ts
|
|
18
|
+
import { Entry } from "@napi-rs/keyring";
|
|
19
|
+
import { homedir } from "node:os";
|
|
20
|
+
import { join } from "node:path";
|
|
21
|
+
function accountForApiUrl(apiUrl) {
|
|
22
|
+
return `cli-api-token:${new URL(apiUrl).origin}`;
|
|
23
|
+
}
|
|
24
|
+
function apiTokenFileStorePath(apiUrl, home = homedir()) {
|
|
25
|
+
const origin = new URL(apiUrl).host.replace(/[^a-zA-Z0-9.-]/g, "_");
|
|
26
|
+
const base = process.platform === "win32" ? join(process.env.APPDATA || join(home, "AppData", "Roaming"), "kody") : process.platform === "darwin" ? join(home, "Library", "Application Support", "kody") : join(process.env.XDG_CONFIG_HOME || join(home, ".config"), "kody");
|
|
27
|
+
return join(base, `api-token-${origin}.json`);
|
|
28
|
+
}
|
|
29
|
+
function createApiTokenKeyringBackend(apiUrl) {
|
|
30
|
+
const entry = new Entry(
|
|
31
|
+
keyringService,
|
|
32
|
+
accountForApiUrl(apiUrl),
|
|
33
|
+
secretServiceKeyringOptions
|
|
34
|
+
);
|
|
35
|
+
return {
|
|
36
|
+
kind: "keyring",
|
|
37
|
+
get() {
|
|
38
|
+
try {
|
|
39
|
+
return entry.getPassword();
|
|
40
|
+
} catch {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
set(value) {
|
|
45
|
+
entry.setPassword(value);
|
|
46
|
+
},
|
|
47
|
+
delete() {
|
|
48
|
+
try {
|
|
49
|
+
return entry.deleteCredential();
|
|
50
|
+
} catch {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function fileBackendFor(apiUrl, resolution) {
|
|
57
|
+
const path = resolution?.fileStorePath?.(apiUrl) ?? apiTokenFileStorePath(apiUrl);
|
|
58
|
+
return createFileBackend(path);
|
|
59
|
+
}
|
|
60
|
+
function resolveApiTokenBackend(apiUrl, preferred, resolution) {
|
|
61
|
+
if (preferred) return preferred;
|
|
62
|
+
try {
|
|
63
|
+
return (resolution?.createKeyring ?? createApiTokenKeyringBackend)(apiUrl);
|
|
64
|
+
} catch {
|
|
65
|
+
return fileBackendFor(apiUrl, resolution);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function parseStoredApiToken(raw) {
|
|
69
|
+
const parsed = JSON.parse(raw);
|
|
70
|
+
if (parsed.version !== 1 || typeof parsed.token !== "string" || !parsed.token.startsWith("kody_at_") || typeof parsed.apiUrl !== "string" || typeof parsed.tokenId !== "string") {
|
|
71
|
+
throw new Error(
|
|
72
|
+
"Stored Kody API token is invalid. Run `kody auth bootstrap --code \u2026` again."
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
return parsed;
|
|
76
|
+
}
|
|
77
|
+
function readParsed(store) {
|
|
78
|
+
const raw = store.get();
|
|
79
|
+
if (!raw) return null;
|
|
80
|
+
return parseStoredApiToken(raw);
|
|
81
|
+
}
|
|
82
|
+
function loadStoredApiToken(apiUrl = defaultApiUrl, backend, resolution) {
|
|
83
|
+
const store = resolveApiTokenBackend(apiUrl, backend, resolution);
|
|
84
|
+
try {
|
|
85
|
+
const loaded = readParsed(store);
|
|
86
|
+
if (loaded) return loaded;
|
|
87
|
+
} catch (error) {
|
|
88
|
+
if (!(store.kind === "keyring" && !backend)) throw error;
|
|
89
|
+
}
|
|
90
|
+
if (store.kind === "keyring" && !backend) {
|
|
91
|
+
return readParsed(fileBackendFor(apiUrl, resolution));
|
|
92
|
+
}
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
function saveStoredApiToken(credentials, backend, resolution) {
|
|
96
|
+
const store = resolveApiTokenBackend(credentials.apiUrl, backend, resolution);
|
|
97
|
+
try {
|
|
98
|
+
store.set(JSON.stringify(credentials));
|
|
99
|
+
return { backend: store };
|
|
100
|
+
} catch (error) {
|
|
101
|
+
if (store.kind === "keyring" && !backend) {
|
|
102
|
+
const fallback = fileBackendFor(credentials.apiUrl, resolution);
|
|
103
|
+
fallback.set(JSON.stringify(credentials));
|
|
104
|
+
return { backend: fallback };
|
|
105
|
+
}
|
|
106
|
+
throw error;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
function deleteStoredApiToken(apiUrl = defaultApiUrl, backend, resolution) {
|
|
110
|
+
const store = resolveApiTokenBackend(apiUrl, backend, resolution);
|
|
111
|
+
let deleted = false;
|
|
112
|
+
try {
|
|
113
|
+
deleted = store.delete();
|
|
114
|
+
} catch {
|
|
115
|
+
deleted = false;
|
|
116
|
+
}
|
|
117
|
+
if (store.kind === "keyring" && !backend) {
|
|
118
|
+
const file = fileBackendFor(apiUrl, resolution);
|
|
119
|
+
deleted = file.delete() || deleted;
|
|
120
|
+
}
|
|
121
|
+
return { deleted, backend: store };
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// src/api-token.ts
|
|
125
|
+
var shortAbsoluteLifetimeMs = 24 * 60 * 60 * 1e3;
|
|
126
|
+
var localExecuteOauthPlatformIssueUrl = "https://github.com/kentcdodds/kody/issues/2812";
|
|
127
|
+
var loopbackHosts = /* @__PURE__ */ new Set(["localhost", "127.0.0.1", "[::1]", "::1"]);
|
|
128
|
+
function tryParseUrl(value) {
|
|
129
|
+
try {
|
|
130
|
+
return new URL(value);
|
|
131
|
+
} catch {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
function isWorkersDevHostname(hostname) {
|
|
136
|
+
return hostname.endsWith(".workers.dev");
|
|
137
|
+
}
|
|
138
|
+
function isPairedApiUrl(apiUrl = defaultApiUrl, mcpUrl = defaultMcpUrl) {
|
|
139
|
+
const api = tryParseUrl(apiUrl);
|
|
140
|
+
const mcp = tryParseUrl(mcpUrl);
|
|
141
|
+
if (!api || !mcp) return false;
|
|
142
|
+
const apiIsLoopback = loopbackHosts.has(api.hostname.toLowerCase());
|
|
143
|
+
const mcpIsLoopback = loopbackHosts.has(mcp.hostname.toLowerCase());
|
|
144
|
+
if (apiIsLoopback && mcpIsLoopback) {
|
|
145
|
+
return ["http:", "https:"].includes(api.protocol) && ["http:", "https:"].includes(mcp.protocol);
|
|
146
|
+
}
|
|
147
|
+
if (api.protocol !== "https:" || mcp.protocol !== "https:") return false;
|
|
148
|
+
const apiIsWorkersDev = isWorkersDevHostname(api.hostname);
|
|
149
|
+
const mcpIsWorkersDev = isWorkersDevHostname(mcp.hostname);
|
|
150
|
+
if (apiIsWorkersDev || mcpIsWorkersDev) {
|
|
151
|
+
if (!apiIsWorkersDev || !mcpIsWorkersDev) return false;
|
|
152
|
+
const apiLabels = api.hostname.toLowerCase().split(".");
|
|
153
|
+
const mcpLabels = mcp.hostname.toLowerCase().split(".");
|
|
154
|
+
return apiLabels.length === mcpLabels.length && apiLabels.slice(1).join(".") === mcpLabels.slice(1).join(".") && apiLabels[0] === `${mcpLabels[0]}-api`;
|
|
155
|
+
}
|
|
156
|
+
return api.hostname.toLowerCase() === `api.${mcp.hostname.toLowerCase()}`;
|
|
157
|
+
}
|
|
158
|
+
function expectedPairedApiOrigin(mcpUrl) {
|
|
159
|
+
const mcp = tryParseUrl(mcpUrl);
|
|
160
|
+
if (!mcp) return "a paired API origin";
|
|
161
|
+
if (loopbackHosts.has(mcp.hostname.toLowerCase())) {
|
|
162
|
+
return "a loopback API origin";
|
|
163
|
+
}
|
|
164
|
+
const hostname = mcp.hostname.toLowerCase();
|
|
165
|
+
if (isWorkersDevHostname(hostname)) {
|
|
166
|
+
const labels = hostname.split(".");
|
|
167
|
+
labels[0] = `${labels[0]}-api`;
|
|
168
|
+
return `https://${labels.join(".")}`;
|
|
169
|
+
}
|
|
170
|
+
return `https://api.${hostname}`;
|
|
171
|
+
}
|
|
172
|
+
function readApiToken(values = {}, env = process.env) {
|
|
173
|
+
const token = (values.token ?? env[apiTokenEnvVar] ?? "").trim();
|
|
174
|
+
return token.length > 0 ? token : null;
|
|
175
|
+
}
|
|
176
|
+
function resolveScopedApiToken(input = {}) {
|
|
177
|
+
const token = readApiToken(input.tokenValues, input.env);
|
|
178
|
+
if (token) return token;
|
|
179
|
+
const apiUrl = input.apiUrl || defaultApiUrl;
|
|
180
|
+
const loadApi = input.loadApiToken ?? loadStoredApiToken;
|
|
181
|
+
return loadApi(apiUrl, input.apiTokenBackend, input.apiTokenResolution)?.token ?? null;
|
|
182
|
+
}
|
|
183
|
+
function isScopedApiToken(token) {
|
|
184
|
+
return token.startsWith("kody_at_");
|
|
185
|
+
}
|
|
186
|
+
function apiTokenMintInstructions() {
|
|
187
|
+
return `For CI/headless only: mint with the Kody MCP \`api\` tool \`tokenCreate\` (include \`org:execute\` plus the capability scopes this command needs, e.g. \`package:execute\` / \`integration:read\`) and pass --token or set ${apiTokenEnvVar}.`;
|
|
188
|
+
}
|
|
189
|
+
function capabilityProxyForbiddenMessage(input) {
|
|
190
|
+
const reason = input.serverMessage ? `: ${input.serverMessage}` : "";
|
|
191
|
+
return `The API token is not allowed to use CapabilityProxy (${input.code ?? "forbidden"})${reason}.
|
|
192
|
+
Fix: run \`npx @kodycodes/cli login\` (agents on Kody MCP: ${cliBootstrapInstructions()}; CI: tokenCreate with \`org:execute\`, passed via --token or ${apiTokenEnvVar}).`;
|
|
193
|
+
}
|
|
194
|
+
function cliBootstrapInstructions(lifetime = "short") {
|
|
195
|
+
return `From MCP, call \`cliCredentialBootstrap\` (MCP \`api\` / \`kody.cliCredentialBootstrap\`), then run \`npx @kodycodes/cli auth bootstrap --code <kody_bc_\u2026> --lifetime ${lifetime}\``;
|
|
196
|
+
}
|
|
197
|
+
function inferCliTokenLifetimeAlias(stored, nowMs = Date.now()) {
|
|
198
|
+
if (!stored) return "short";
|
|
199
|
+
const absoluteMs = Date.parse(stored.maxExpiresAt ?? "") || Date.parse(stored.expiresAt ?? "");
|
|
200
|
+
if (!Number.isFinite(absoluteMs)) return "short";
|
|
201
|
+
return absoluteMs - nowMs > shortAbsoluteLifetimeMs ? "long" : "short";
|
|
202
|
+
}
|
|
203
|
+
function cliBootstrapLifetimeFlags(lifetime = "short") {
|
|
204
|
+
return `--lifetime ${lifetime}`;
|
|
205
|
+
}
|
|
206
|
+
function cliBootstrapLifetimeMintFields(lifetime = "short") {
|
|
207
|
+
return { lifetime };
|
|
208
|
+
}
|
|
209
|
+
function currentStoredTokenLifetimeAlias(apiUrl = defaultApiUrl, nowMs = Date.now(), loadApiToken = loadStoredApiToken) {
|
|
210
|
+
return inferCliTokenLifetimeAlias(loadApiToken(apiUrl), nowMs);
|
|
211
|
+
}
|
|
212
|
+
function missingApiTokenMessage(purpose) {
|
|
213
|
+
return `${purpose} needs a scoped Kody API token. ${cliBootstrapInstructions()}, or ${apiTokenMintInstructions()}`;
|
|
214
|
+
}
|
|
215
|
+
function missingLocalExecuteAuthMessage(purpose = "execute --local") {
|
|
216
|
+
return `${purpose} needs auth. ${cliBootstrapInstructions()}; or run \`kody login\`; or for CI/headless, ${apiTokenMintInstructions()}`;
|
|
217
|
+
}
|
|
218
|
+
function missingCliAuthMessage() {
|
|
219
|
+
return `Not logged in, and no API token is set. ${cliBootstrapInstructions()}; or run \`kody login\` for browser OAuth (search, whoami, cloud execute, and login-backed \`execute --local\`); or for CI/headless, ${apiTokenMintInstructions()}`;
|
|
220
|
+
}
|
|
221
|
+
function rejectedOauthBearerMessage() {
|
|
222
|
+
return `Kody rejected the bearer from \`kody login\`: the Open API still accepts only scoped \`kody_at_\u2026\` API tokens on CapabilityProxy / package-graph (not MCP OAuth). See ${localExecuteOauthPlatformIssueUrl}. Until that lands, ${apiTokenMintInstructions()}`;
|
|
223
|
+
}
|
|
224
|
+
function readInsufficientScopeDetails(body) {
|
|
225
|
+
const details = isRecord(body) && isRecord(body.error) && isRecord(body.error.details) ? body.error.details : null;
|
|
226
|
+
if (!details) return { requiredScope: null, mintScopes: null, denial: null };
|
|
227
|
+
const requiredScope = readNonEmptyString(details.required_scope) ?? readNonEmptyString(details.required_permission) ?? readStringList(details.required_scopes)?.join(", ") ?? null;
|
|
228
|
+
return {
|
|
229
|
+
requiredScope,
|
|
230
|
+
mintScopes: readStringList(details.mint_scopes),
|
|
231
|
+
denial: readNonEmptyString(details.denial)
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
function cliBootstrapScopesCommand(scopes, lifetimeFlags = "short") {
|
|
235
|
+
const flags = lifetimeFlags === "short" || lifetimeFlags === "long" ? cliBootstrapLifetimeFlags(lifetimeFlags) : lifetimeFlags;
|
|
236
|
+
return `npx @kodycodes/cli auth bootstrap ${flags} --scopes ${scopes.join(",")}`;
|
|
237
|
+
}
|
|
238
|
+
function cliBootstrapMintCall(scopes, lifetime = "short") {
|
|
239
|
+
const fieldsRecord = lifetime === "short" || lifetime === "long" ? cliBootstrapLifetimeMintFields(lifetime) : lifetime;
|
|
240
|
+
const fields = [
|
|
241
|
+
...Object.entries(fieldsRecord).map(
|
|
242
|
+
([key, value]) => `${key}: ${JSON.stringify(value)}`
|
|
243
|
+
),
|
|
244
|
+
`scopes: [${scopes.map((scope) => JSON.stringify(scope)).join(", ")}]`
|
|
245
|
+
];
|
|
246
|
+
return `cliCredentialBootstrap({ ${fields.join(", ")} })`;
|
|
247
|
+
}
|
|
248
|
+
function insufficientScopeMessage(input) {
|
|
249
|
+
const required = input.requiredScope ?? null;
|
|
250
|
+
const lifetime = input.currentLifetime === "long" || input.currentLifetime === "short" ? input.currentLifetime : "short";
|
|
251
|
+
const lifetimeFlags = cliBootstrapLifetimeFlags(lifetime);
|
|
252
|
+
const lifetimeMint = cliBootstrapLifetimeMintFields(lifetime);
|
|
253
|
+
if (input.denial === "missing_permission") {
|
|
254
|
+
return `Kody returned insufficient_scope: your org role does not grant ${required ? `"${required}"` : "the required permission"}. A new token cannot add it; an org Owner can grant it.`;
|
|
255
|
+
}
|
|
256
|
+
if (!required) {
|
|
257
|
+
return `Kody returned insufficient_scope. Mint a token that includes the missing scope: run \`${cliBootstrapScopesCommand(["<scope>", "\u2026"], lifetimeFlags)}\` after \`kody login\`, or from Kody MCP call \`${cliBootstrapMintCall(["<scope>", "\u2026"], lifetimeMint)}\` and run its cli_command. Scopes replace the defaults, so list every scope you need. For CI/headless, mint with tokenCreate and pass --token or set ${apiTokenEnvVar}.`;
|
|
258
|
+
}
|
|
259
|
+
const mintScopes = input.mintScopes && input.mintScopes.length > 0 ? input.mintScopes : input.currentScopes && input.currentScopes.length > 0 ? [
|
|
260
|
+
.../* @__PURE__ */ new Set([...input.currentScopes, ...required.split(/,\s*/)])
|
|
261
|
+
].sort() : null;
|
|
262
|
+
if (!mintScopes) {
|
|
263
|
+
return `Kody returned insufficient_scope: this token is missing "${required}". Mint a token whose scopes include "${required}" plus the ones you already use (scopes replace the defaults): run \`${cliBootstrapScopesCommand(["<current scopes>", required], lifetimeFlags)}\` after \`kody login\`, or from Kody MCP call \`${cliBootstrapMintCall(["<current scopes>", required], lifetimeMint)}\` and run its cli_command. For CI/headless, mint with tokenCreate including "${required}" and pass --token or set ${apiTokenEnvVar}.`;
|
|
264
|
+
}
|
|
265
|
+
return `Kody returned insufficient_scope: this token is missing "${required}". Mint one that includes it: run \`${cliBootstrapScopesCommand(mintScopes, lifetimeFlags)}\` after \`kody login\`, or from Kody MCP call \`${cliBootstrapMintCall(mintScopes, lifetimeMint)}\` and run its cli_command. For CI/headless, mint with tokenCreate using those scopes and pass --token or set ${apiTokenEnvVar}.`;
|
|
266
|
+
}
|
|
267
|
+
function isRecord(value) {
|
|
268
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
269
|
+
}
|
|
270
|
+
function readNonEmptyString(value) {
|
|
271
|
+
return typeof value === "string" && value.trim() ? value.trim() : null;
|
|
272
|
+
}
|
|
273
|
+
function readStringList(value) {
|
|
274
|
+
if (!Array.isArray(value)) return null;
|
|
275
|
+
const list = value.filter((item) => typeof item === "string").map((item) => item.trim()).filter(Boolean);
|
|
276
|
+
return list.length > 0 ? list : null;
|
|
277
|
+
}
|
|
278
|
+
function featureDisabledMessage() {
|
|
279
|
+
return "Kody returned feature_disabled: CapabilityProxy is not enabled for this Kody account (feature flag `local-execute`). `execute --local` and token-auth cloud execute both stop here; minting another token does not bypass the flag. Browser `kody login` can still run cloud execute over MCP.";
|
|
280
|
+
}
|
|
281
|
+
function requireApiToken(values = {}, env = process.env, purpose = "this command", options = {}) {
|
|
282
|
+
const token = resolveScopedApiToken({
|
|
283
|
+
tokenValues: values,
|
|
284
|
+
env,
|
|
285
|
+
...options
|
|
286
|
+
});
|
|
287
|
+
if (!token) throw new Error(missingApiTokenMessage(purpose));
|
|
288
|
+
return token;
|
|
289
|
+
}
|
|
290
|
+
function hasExplicitTokenFlag(values) {
|
|
291
|
+
return typeof values.token === "string" && values.token.trim().length > 0;
|
|
292
|
+
}
|
|
21
293
|
|
|
22
294
|
// src/credential-call-map.ts
|
|
23
295
|
var credentialCallMapFeature = "credential-call-map";
|
|
@@ -150,7 +422,9 @@ function formatCredentialClientError(error) {
|
|
|
150
422
|
if (!credentials || typeof credentials !== "object" || Array.isArray(credentials)) {
|
|
151
423
|
continue;
|
|
152
424
|
}
|
|
153
|
-
for (const [key, pick] of Object.entries(
|
|
425
|
+
for (const [key, pick] of Object.entries(
|
|
426
|
+
credentials
|
|
427
|
+
)) {
|
|
154
428
|
const suggestion = formatCredentialFlagSuggestion(key, pick);
|
|
155
429
|
if (suggestion) {
|
|
156
430
|
for (const line of suggestion.split("\n")) {
|
|
@@ -162,6 +436,18 @@ function formatCredentialClientError(error) {
|
|
|
162
436
|
return lines.join("\n");
|
|
163
437
|
}
|
|
164
438
|
|
|
439
|
+
// src/package-info.ts
|
|
440
|
+
import { createRequire } from "node:module";
|
|
441
|
+
var require2 = createRequire(import.meta.url);
|
|
442
|
+
function readPackageVersion() {
|
|
443
|
+
try {
|
|
444
|
+
const pkg = require2("../package.json");
|
|
445
|
+
return typeof pkg.version === "string" && pkg.version.trim() ? pkg.version.trim() : "0.0.0";
|
|
446
|
+
} catch {
|
|
447
|
+
return "0.0.0";
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
|
|
165
451
|
// src/capability-proxy.ts
|
|
166
452
|
import { Readable } from "node:stream";
|
|
167
453
|
var capabilityProxySessionPath = "v1/capability-proxy/session";
|
|
@@ -202,7 +488,9 @@ function createCapabilityProxyFetch(options = {}) {
|
|
|
202
488
|
transports ??= loadTransports(useEnvProxy);
|
|
203
489
|
const transport = (await transports)[url.protocol];
|
|
204
490
|
if (!transport) {
|
|
205
|
-
throw new TypeError(
|
|
491
|
+
throw new TypeError(
|
|
492
|
+
`Unsupported protocol for the Kody API: ${url.protocol}`
|
|
493
|
+
);
|
|
206
494
|
}
|
|
207
495
|
const body = init.body;
|
|
208
496
|
if (body !== void 0 && body !== null && typeof body !== "string") {
|
|
@@ -221,7 +509,10 @@ function createCapabilityProxyFetch(options = {}) {
|
|
|
221
509
|
const chunks = [];
|
|
222
510
|
response.on("data", (chunk) => chunks.push(chunk));
|
|
223
511
|
response.on("error", reject);
|
|
224
|
-
response.on(
|
|
512
|
+
response.on(
|
|
513
|
+
"end",
|
|
514
|
+
() => resolve(toResponse(response, Buffer.concat(chunks)))
|
|
515
|
+
);
|
|
225
516
|
}
|
|
226
517
|
);
|
|
227
518
|
const connectTimer = setTimeout(() => {
|
|
@@ -250,7 +541,9 @@ function createCapabilityProxyFetch(options = {}) {
|
|
|
250
541
|
request.setTimeout(
|
|
251
542
|
timeoutMs,
|
|
252
543
|
() => request.destroy(
|
|
253
|
-
new Error(
|
|
544
|
+
new Error(
|
|
545
|
+
`Kody API sent nothing for ${timeoutMs}ms (${url.pathname}).`
|
|
546
|
+
)
|
|
254
547
|
)
|
|
255
548
|
);
|
|
256
549
|
request.on("error", (error) => {
|
|
@@ -267,7 +560,10 @@ function createCapabilityProxyFetch(options = {}) {
|
|
|
267
560
|
abort();
|
|
268
561
|
} else {
|
|
269
562
|
signal.addEventListener("abort", abort, { once: true });
|
|
270
|
-
request.once(
|
|
563
|
+
request.once(
|
|
564
|
+
"close",
|
|
565
|
+
() => signal.removeEventListener("abort", abort)
|
|
566
|
+
);
|
|
271
567
|
}
|
|
272
568
|
}
|
|
273
569
|
request.end(body ?? void 0);
|
|
@@ -275,11 +571,23 @@ function createCapabilityProxyFetch(options = {}) {
|
|
|
275
571
|
};
|
|
276
572
|
}
|
|
277
573
|
async function loadTransports(useEnvProxy) {
|
|
278
|
-
const [http, https] = await Promise.all([
|
|
279
|
-
|
|
574
|
+
const [http, https] = await Promise.all([
|
|
575
|
+
import("node:http"),
|
|
576
|
+
import("node:https")
|
|
577
|
+
]);
|
|
578
|
+
const agentOptions = {
|
|
579
|
+
keepAlive: true,
|
|
580
|
+
...useEnvProxy ? { proxyEnv: process.env } : {}
|
|
581
|
+
};
|
|
280
582
|
return {
|
|
281
|
-
"http:": {
|
|
282
|
-
|
|
583
|
+
"http:": {
|
|
584
|
+
agent: unrefFreeSockets(new http.Agent(agentOptions)),
|
|
585
|
+
request: http.request
|
|
586
|
+
},
|
|
587
|
+
"https:": {
|
|
588
|
+
agent: unrefFreeSockets(new https.Agent(agentOptions)),
|
|
589
|
+
request: https.request
|
|
590
|
+
}
|
|
283
591
|
};
|
|
284
592
|
}
|
|
285
593
|
function unrefFreeSockets(agent) {
|
|
@@ -331,7 +639,7 @@ var CapabilityProxyError = class extends Error {
|
|
|
331
639
|
this.code = options.code ?? null;
|
|
332
640
|
}
|
|
333
641
|
};
|
|
334
|
-
var
|
|
642
|
+
var loopbackHosts2 = /* @__PURE__ */ new Set(["localhost", "127.0.0.1", "[::1]"]);
|
|
335
643
|
function assertTokenSafeApiUrl(apiUrl) {
|
|
336
644
|
let url;
|
|
337
645
|
try {
|
|
@@ -340,7 +648,7 @@ function assertTokenSafeApiUrl(apiUrl) {
|
|
|
340
648
|
throw new Error(`Invalid Kody API URL: ${apiUrl}`);
|
|
341
649
|
}
|
|
342
650
|
if (url.protocol === "https:") return;
|
|
343
|
-
if (url.protocol === "http:" &&
|
|
651
|
+
if (url.protocol === "http:" && loopbackHosts2.has(url.hostname)) return;
|
|
344
652
|
throw new Error(
|
|
345
653
|
`Refusing to send the API token to ${url.origin}: use https (plain http is only allowed for localhost).`
|
|
346
654
|
);
|
|
@@ -363,11 +671,15 @@ async function openCapabilityProxySession(input) {
|
|
|
363
671
|
if (!response.ok) {
|
|
364
672
|
throw describeFailure(response.status, body, url, "session", input.token);
|
|
365
673
|
}
|
|
366
|
-
const record =
|
|
674
|
+
const record = isRecord2(body) ? body : {};
|
|
367
675
|
return {
|
|
368
|
-
scopes: Array.isArray(record.scopes) ? record.scopes.filter(
|
|
676
|
+
scopes: Array.isArray(record.scopes) ? record.scopes.filter(
|
|
677
|
+
(scope) => typeof scope === "string"
|
|
678
|
+
) : [],
|
|
369
679
|
expiresAt: typeof record.expiresAt === "string" ? record.expiresAt : null,
|
|
370
|
-
features: Array.isArray(record.features) ? record.features.filter(
|
|
680
|
+
features: Array.isArray(record.features) ? record.features.filter(
|
|
681
|
+
(feature) => typeof feature === "string"
|
|
682
|
+
) : []
|
|
371
683
|
};
|
|
372
684
|
}
|
|
373
685
|
async function callCapabilityProxy(input) {
|
|
@@ -376,7 +688,8 @@ async function callCapabilityProxy(input) {
|
|
|
376
688
|
input.org
|
|
377
689
|
);
|
|
378
690
|
const payload = { path: input.path, args: input.args };
|
|
379
|
-
if (input.conversationId !== void 0)
|
|
691
|
+
if (input.conversationId !== void 0)
|
|
692
|
+
payload.conversationId = input.conversationId;
|
|
380
693
|
if (input.credentials !== void 0) payload.credentials = input.credentials;
|
|
381
694
|
const response = await send(input, url, {
|
|
382
695
|
method: "POST",
|
|
@@ -389,9 +702,12 @@ async function callCapabilityProxy(input) {
|
|
|
389
702
|
}
|
|
390
703
|
const failure = readErrorBody(body);
|
|
391
704
|
if (failure) {
|
|
392
|
-
throw new CapabilityProxyError(failure.message, {
|
|
705
|
+
throw new CapabilityProxyError(failure.message, {
|
|
706
|
+
status: response.status,
|
|
707
|
+
code: failure.code
|
|
708
|
+
});
|
|
393
709
|
}
|
|
394
|
-
return
|
|
710
|
+
return isRecord2(body) ? body.result : void 0;
|
|
395
711
|
}
|
|
396
712
|
async function callCapabilityProxyGatewayFetchStream(input) {
|
|
397
713
|
assertTokenSafeApiUrl(input.apiUrl);
|
|
@@ -410,7 +726,9 @@ async function callCapabilityProxyGatewayFetchStream(input) {
|
|
|
410
726
|
const transports = await loadTransports(useEnvProxy);
|
|
411
727
|
const transport = transports[url.protocol];
|
|
412
728
|
if (!transport) {
|
|
413
|
-
throw new TypeError(
|
|
729
|
+
throw new TypeError(
|
|
730
|
+
`Unsupported protocol for the Kody API: ${url.protocol}`
|
|
731
|
+
);
|
|
414
732
|
}
|
|
415
733
|
const headers = {
|
|
416
734
|
accept: "*/*",
|
|
@@ -425,7 +743,9 @@ async function callCapabilityProxyGatewayFetchStream(input) {
|
|
|
425
743
|
headers[gatewayFetchPackageIdHeaderName] = input.gateway.packageId;
|
|
426
744
|
}
|
|
427
745
|
if (input.gateway.headers && Object.keys(input.gateway.headers).length > 0) {
|
|
428
|
-
headers[gatewayFetchHeadersHeaderName] = JSON.stringify(
|
|
746
|
+
headers[gatewayFetchHeadersHeaderName] = JSON.stringify(
|
|
747
|
+
input.gateway.headers
|
|
748
|
+
);
|
|
429
749
|
}
|
|
430
750
|
if (input.gateway.secretResolution) {
|
|
431
751
|
headers[secretResolutionHeaderName] = input.gateway.secretResolution;
|
|
@@ -476,7 +796,9 @@ async function callCapabilityProxyGatewayFetchStream(input) {
|
|
|
476
796
|
request.setTimeout(
|
|
477
797
|
timeoutMs,
|
|
478
798
|
() => request.destroy(
|
|
479
|
-
new Error(
|
|
799
|
+
new Error(
|
|
800
|
+
`Kody API sent nothing for ${timeoutMs}ms (${url.pathname}).`
|
|
801
|
+
)
|
|
480
802
|
)
|
|
481
803
|
);
|
|
482
804
|
request.on("error", (error) => {
|
|
@@ -552,16 +874,20 @@ async function checkCredentialCallMap(input) {
|
|
|
552
874
|
conversationId: input.conversationId,
|
|
553
875
|
credentials: input.credentials
|
|
554
876
|
});
|
|
555
|
-
if (!
|
|
556
|
-
throw new CapabilityProxyError(
|
|
877
|
+
if (!isRecord2(result)) {
|
|
878
|
+
throw new CapabilityProxyError(
|
|
879
|
+
"credentialClientCheck returned an unexpected result."
|
|
880
|
+
);
|
|
557
881
|
}
|
|
558
882
|
if (result.ok === false) {
|
|
559
|
-
const error =
|
|
883
|
+
const error = isRecord2(result.error) ? result.error : {};
|
|
560
884
|
const code = typeof error.code === "string" ? error.code : "credential_error";
|
|
561
885
|
throw new CapabilityProxyError(formatCredentialClientError(error), { code });
|
|
562
886
|
}
|
|
563
|
-
const value =
|
|
564
|
-
const warnings = Array.isArray(value?.warnings) ? value.warnings.filter(
|
|
887
|
+
const value = isRecord2(result.value) ? result.value : null;
|
|
888
|
+
const warnings = Array.isArray(value?.warnings) ? value.warnings.filter(
|
|
889
|
+
(warning) => typeof warning === "string"
|
|
890
|
+
) : [];
|
|
565
891
|
return { warnings };
|
|
566
892
|
}
|
|
567
893
|
async function send(input, url, init) {
|
|
@@ -594,10 +920,10 @@ async function readJson(response) {
|
|
|
594
920
|
}
|
|
595
921
|
}
|
|
596
922
|
function readErrorBody(body) {
|
|
597
|
-
if (!
|
|
923
|
+
if (!isRecord2(body) || body.error == null) return null;
|
|
598
924
|
const { error } = body;
|
|
599
925
|
if (typeof error === "string") return { code: null, message: error };
|
|
600
|
-
if (
|
|
926
|
+
if (isRecord2(error)) {
|
|
601
927
|
const code = typeof error.code === "string" ? error.code : null;
|
|
602
928
|
const message = typeof error.message === "string" ? error.message : code ?? JSON.stringify(error);
|
|
603
929
|
return { code, message };
|
|
@@ -613,7 +939,10 @@ function describeFailure(status, body, url, stage, token) {
|
|
|
613
939
|
return new CapabilityProxyError(message, { status, code });
|
|
614
940
|
}
|
|
615
941
|
if (code === "feature_disabled") {
|
|
616
|
-
return new CapabilityProxyError(`${featureDisabledMessage()}${detail}`, {
|
|
942
|
+
return new CapabilityProxyError(`${featureDisabledMessage()}${detail}`, {
|
|
943
|
+
status,
|
|
944
|
+
code
|
|
945
|
+
});
|
|
617
946
|
}
|
|
618
947
|
if (code === "insufficient_scope") {
|
|
619
948
|
return new CapabilityProxyError(
|
|
@@ -626,7 +955,10 @@ function describeFailure(status, body, url, stage, token) {
|
|
|
626
955
|
}
|
|
627
956
|
if (status === 403 && stage === "session") {
|
|
628
957
|
return new CapabilityProxyError(
|
|
629
|
-
capabilityProxyForbiddenMessage({
|
|
958
|
+
capabilityProxyForbiddenMessage({
|
|
959
|
+
code,
|
|
960
|
+
serverMessage: failure?.message
|
|
961
|
+
}),
|
|
630
962
|
{ status, code }
|
|
631
963
|
);
|
|
632
964
|
}
|
|
@@ -641,14 +973,34 @@ function describeFailure(status, body, url, stage, token) {
|
|
|
641
973
|
{ status, code }
|
|
642
974
|
);
|
|
643
975
|
}
|
|
644
|
-
function
|
|
976
|
+
function isRecord2(value) {
|
|
645
977
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
646
978
|
}
|
|
647
979
|
|
|
648
980
|
export {
|
|
981
|
+
loadStoredApiToken,
|
|
982
|
+
saveStoredApiToken,
|
|
983
|
+
deleteStoredApiToken,
|
|
984
|
+
isPairedApiUrl,
|
|
985
|
+
expectedPairedApiOrigin,
|
|
986
|
+
readApiToken,
|
|
987
|
+
resolveScopedApiToken,
|
|
988
|
+
isScopedApiToken,
|
|
989
|
+
capabilityProxyForbiddenMessage,
|
|
990
|
+
currentStoredTokenLifetimeAlias,
|
|
991
|
+
missingLocalExecuteAuthMessage,
|
|
992
|
+
missingCliAuthMessage,
|
|
993
|
+
rejectedOauthBearerMessage,
|
|
994
|
+
readInsufficientScopeDetails,
|
|
995
|
+
cliBootstrapMintCall,
|
|
996
|
+
insufficientScopeMessage,
|
|
997
|
+
featureDisabledMessage,
|
|
998
|
+
requireApiToken,
|
|
999
|
+
hasExplicitTokenFlag,
|
|
649
1000
|
parseCredentialFlags,
|
|
650
1001
|
sessionSupportsCredentialCallMap,
|
|
651
1002
|
missingCredentialCallMapFeatureMessage,
|
|
1003
|
+
readPackageVersion,
|
|
652
1004
|
gatewayFetchUrlHeaderName,
|
|
653
1005
|
gatewayFetchMethodHeaderName,
|
|
654
1006
|
gatewayFetchPackageIdHeaderName,
|
|
@@ -661,4 +1013,4 @@ export {
|
|
|
661
1013
|
callCapabilityProxyGatewayFetchStream,
|
|
662
1014
|
checkCredentialCallMap
|
|
663
1015
|
};
|
|
664
|
-
//# sourceMappingURL=chunk-
|
|
1016
|
+
//# sourceMappingURL=chunk-5JIRHJQP.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/api-token-store.ts", "../src/api-token.ts", "../src/credential-call-map.ts", "../src/package-info.ts", "../src/capability-proxy.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["require", "loopbackHosts", "isRecord"]
|
|
6
|
+
}
|