@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.
Files changed (167) hide show
  1. package/README.md +175 -167
  2. package/dist/add-mcp-install.d.ts +1 -1
  3. package/dist/api-token.d.ts +1 -1
  4. package/dist/{auth-4FW6GCLG.js → auth-6ZE6QQXA.js} +13 -8
  5. package/dist/auth-bootstrap.d.ts +1 -1
  6. package/dist/auth.d.ts +27 -3
  7. package/dist/bin.js +18 -18
  8. package/dist/capability-proxy.d.ts +1 -1
  9. package/dist/{chunk-D55XPY3T.js → chunk-2IHISXHN.js} +58 -27
  10. package/dist/chunk-2IHISXHN.js.map +6 -0
  11. package/dist/{chunk-SMURF26I.js → chunk-2XPH7L2P.js} +1 -1
  12. package/dist/chunk-2XPH7L2P.js.map +6 -0
  13. package/dist/{chunk-RM34N3KI.js → chunk-3H72XY5R.js} +16 -6
  14. package/dist/chunk-3H72XY5R.js.map +6 -0
  15. package/dist/{chunk-G4YN6XP5.js → chunk-4GIFJVGT.js} +1 -1
  16. package/dist/chunk-4GIFJVGT.js.map +6 -0
  17. package/dist/{chunk-R4IUV5P5.js → chunk-5JIRHJQP.js} +397 -45
  18. package/dist/chunk-5JIRHJQP.js.map +6 -0
  19. package/dist/chunk-5ZBJAP6G.js +2005 -0
  20. package/dist/chunk-5ZBJAP6G.js.map +6 -0
  21. package/dist/{chunk-6XQP5SWX.js → chunk-6ZYUGXVW.js} +1 -1
  22. package/dist/chunk-6ZYUGXVW.js.map +6 -0
  23. package/dist/{chunk-OVGXPRSY.js → chunk-7PRJ36I5.js} +4 -1
  24. package/dist/{chunk-OVGXPRSY.js.map → chunk-7PRJ36I5.js.map} +1 -1
  25. package/dist/{chunk-IHP6PV6X.js → chunk-BTL3PJ2H.js} +1 -12
  26. package/dist/chunk-BTL3PJ2H.js.map +6 -0
  27. package/dist/{chunk-VQS5YSCI.js → chunk-CPS7HW4T.js} +8 -6
  28. package/dist/{chunk-VQS5YSCI.js.map → chunk-CPS7HW4T.js.map} +1 -1
  29. package/dist/{chunk-TIL35OWA.js → chunk-D366STO5.js} +238 -146
  30. package/dist/chunk-D366STO5.js.map +6 -0
  31. package/dist/{chunk-BISUL7CE.js → chunk-DW5UTJ6T.js} +14 -5
  32. package/dist/chunk-DW5UTJ6T.js.map +6 -0
  33. package/dist/{target-3QHY7JT4.js → chunk-EJXEVGWF.js} +8 -6
  34. package/dist/chunk-EJXEVGWF.js.map +6 -0
  35. package/dist/{chunk-XDCOWU5R.js → chunk-FBEZ6PZ7.js} +64 -14
  36. package/dist/chunk-FBEZ6PZ7.js.map +6 -0
  37. package/dist/{chunk-SXHULGL4.js → chunk-JOMBXQOS.js} +18 -9
  38. package/dist/chunk-JOMBXQOS.js.map +6 -0
  39. package/dist/{chunk-64XN367G.js → chunk-LU7I7CQ4.js} +66 -44
  40. package/dist/chunk-LU7I7CQ4.js.map +6 -0
  41. package/dist/{chunk-EOCV74B2.js → chunk-OZDWOZLV.js} +41 -25
  42. package/dist/chunk-OZDWOZLV.js.map +6 -0
  43. package/dist/{chunk-75RZUXQL.js → chunk-SLNAWWQK.js} +4 -2
  44. package/dist/{chunk-75RZUXQL.js.map → chunk-SLNAWWQK.js.map} +1 -1
  45. package/dist/{chunk-64IM6G4Z.js → chunk-TUUFQYWP.js} +13 -6
  46. package/dist/chunk-TUUFQYWP.js.map +6 -0
  47. package/dist/{chunk-QHBCP4OB.js → chunk-UW6AWLXX.js} +6 -7
  48. package/dist/chunk-W2SAFAT4.js +1563 -0
  49. package/dist/chunk-W2SAFAT4.js.map +6 -0
  50. package/dist/{chunk-BPGY4IE7.js → chunk-XV6D6HSG.js} +1 -1
  51. package/dist/chunk-XV6D6HSG.js.map +6 -0
  52. package/dist/{chunk-XOPPGRUP.js → chunk-Y4FOJETX.js} +17 -6
  53. package/dist/chunk-Y4FOJETX.js.map +6 -0
  54. package/dist/{chunk-PDWCKWQF.js → chunk-YDWTXEKQ.js} +26 -10
  55. package/dist/chunk-YDWTXEKQ.js.map +6 -0
  56. package/dist/{chunk-JWEFKKAD.js → chunk-ZILB2HWE.js} +1 -1
  57. package/dist/chunk-ZILB2HWE.js.map +6 -0
  58. package/dist/cli.js +19 -19
  59. package/dist/defaults.d.ts +1 -1
  60. package/dist/detect-running-hosts.d.ts +1 -1
  61. package/dist/dev/dev-assets.d.ts +1 -1
  62. package/dist/dev/dev-registry.d.ts +1 -1
  63. package/dist/dev/error-page.d.ts +1 -1
  64. package/dist/dev/live-reload.d.ts +2 -2
  65. package/dist/{dev-command-3LX234N6.js → dev-command-5PDEIWOC.js} +236 -111
  66. package/dist/dev-command-5PDEIWOC.js.map +6 -0
  67. package/dist/dev-command.d.ts +1 -1
  68. package/dist/discover-login-identity.d.ts +6 -7
  69. package/dist/discover-org.d.ts +2 -3
  70. package/dist/generated/openapi-routes.d.ts +6 -0
  71. package/dist/{git-credential-FUE3JE3T.js → git-credential-INB2UV4C.js} +32 -25
  72. package/dist/git-credential-INB2UV4C.js.map +6 -0
  73. package/dist/{install-ZML2TCDG.js → install-ONEJRYZ3.js} +147 -113
  74. package/dist/install-ONEJRYZ3.js.map +6 -0
  75. package/dist/install.d.ts +1 -1
  76. package/dist/{local-execute-SZV6XN4T.js → local-execute-I3BP5NEQ.js} +81 -54
  77. package/dist/local-execute-I3BP5NEQ.js.map +6 -0
  78. package/dist/local-execute-auth.d.ts +2 -2
  79. package/dist/local-execute.d.ts +1 -1
  80. package/dist/local-gateway-fetch-forward.d.ts +2 -2
  81. package/dist/local-package-run-JFKNSNWM.js +23 -0
  82. package/dist/local-package-run.d.ts +2 -2
  83. package/dist/mock/mock-fetch-gateway.d.ts +2 -2
  84. package/dist/mock/mock-supported.d.ts +1 -1
  85. package/dist/{mock-dep-resolve-TVABDNR7.js → mock-dep-resolve-B5ZH4U3H.js} +14 -6
  86. package/dist/mock-dep-resolve-B5ZH4U3H.js.map +6 -0
  87. package/dist/{mock-fetch-gateway-B5TFGGQS.js → mock-fetch-gateway-S2ULVFAI.js} +7 -6
  88. package/dist/{mock-local-deps-5SZT3PWT.js → mock-local-deps-2VVNJLFF.js} +20 -17
  89. package/dist/mock-local-deps-2VVNJLFF.js.map +6 -0
  90. package/dist/mock-local-deps.d.ts +1 -1
  91. package/dist/{mock-server-SV2IKC4I.js → mock-server-TFO7Q26H.js} +8 -7
  92. package/dist/oauth-browser.d.ts +42 -0
  93. package/dist/oauth-provider.d.ts +14 -19
  94. package/dist/{open-api-client-DVVMLY7P.js → open-api-client-SR4B7265.js} +11 -10
  95. package/dist/open-api-client.d.ts +2 -1
  96. package/dist/{org-X7B5BI4R.js → org-535LB4PD.js} +8 -6
  97. package/dist/org-535LB4PD.js.map +6 -0
  98. package/dist/org-resolve.d.ts +2 -0
  99. package/dist/package-app-dev.d.ts +2 -2
  100. package/dist/{package-manifest-QH2RU64C.js → package-manifest-DFF6XCPV.js} +5 -4
  101. package/dist/{remote-execute-QMQDVHOY.js → remote-execute-JN6DRFEU.js} +49 -30
  102. package/dist/remote-execute-JN6DRFEU.js.map +6 -0
  103. package/dist/remote-execute.d.ts +3 -3
  104. package/dist/{setup-git-5KCUBYPB.js → setup-git-MHK563LB.js} +11 -12
  105. package/dist/setup-git.d.ts +1 -1
  106. package/dist/{skill-ENPATRIW.js → skill-D74XVI6T.js} +26 -8
  107. package/dist/skill-D74XVI6T.js.map +6 -0
  108. package/dist/{store-WTMRH527.js → store-27J4CQZ2.js} +4 -4
  109. package/dist/{structured-error-C65GQ53Z.js → structured-error-5MLWXYR3.js} +4 -3
  110. package/dist/structured-error.d.ts +1 -1
  111. package/dist/target-33ATHDUF.js +17 -0
  112. package/package.json +6 -5
  113. package/skills/kody/SKILL.md +53 -50
  114. package/dist/chunk-4D6ORNXY.js +0 -24404
  115. package/dist/chunk-4D6ORNXY.js.map +0 -6
  116. package/dist/chunk-64IM6G4Z.js.map +0 -6
  117. package/dist/chunk-64XN367G.js.map +0 -6
  118. package/dist/chunk-6XQP5SWX.js.map +0 -6
  119. package/dist/chunk-BISUL7CE.js.map +0 -6
  120. package/dist/chunk-BPGY4IE7.js.map +0 -6
  121. package/dist/chunk-D55XPY3T.js.map +0 -6
  122. package/dist/chunk-EOCV74B2.js.map +0 -6
  123. package/dist/chunk-FBVNFWR6.js +0 -437
  124. package/dist/chunk-FBVNFWR6.js.map +0 -6
  125. package/dist/chunk-G4YN6XP5.js.map +0 -6
  126. package/dist/chunk-G6LJWROP.js +0 -18
  127. package/dist/chunk-G6LJWROP.js.map +0 -6
  128. package/dist/chunk-IHP6PV6X.js.map +0 -6
  129. package/dist/chunk-JWEFKKAD.js.map +0 -6
  130. package/dist/chunk-LWNB26KO.js +0 -147
  131. package/dist/chunk-LWNB26KO.js.map +0 -6
  132. package/dist/chunk-PDWCKWQF.js.map +0 -6
  133. package/dist/chunk-R4IUV5P5.js.map +0 -6
  134. package/dist/chunk-RM34N3KI.js.map +0 -6
  135. package/dist/chunk-RTWUNV76.js +0 -309
  136. package/dist/chunk-RTWUNV76.js.map +0 -6
  137. package/dist/chunk-SMURF26I.js.map +0 -6
  138. package/dist/chunk-SXHULGL4.js.map +0 -6
  139. package/dist/chunk-TIL35OWA.js.map +0 -6
  140. package/dist/chunk-XDCOWU5R.js.map +0 -6
  141. package/dist/chunk-XOPPGRUP.js.map +0 -6
  142. package/dist/dev-command-3LX234N6.js.map +0 -6
  143. package/dist/git-credential-FUE3JE3T.js.map +0 -6
  144. package/dist/install-ZML2TCDG.js.map +0 -6
  145. package/dist/local-execute-SZV6XN4T.js.map +0 -6
  146. package/dist/local-package-run-2TMCAZZ2.js +0 -23
  147. package/dist/mcp-G2AWTIXR.js +0 -21
  148. package/dist/mcp.d.ts +0 -34
  149. package/dist/mock-dep-resolve-TVABDNR7.js.map +0 -6
  150. package/dist/mock-local-deps-5SZT3PWT.js.map +0 -6
  151. package/dist/org-X7B5BI4R.js.map +0 -6
  152. package/dist/remote-execute-QMQDVHOY.js.map +0 -6
  153. package/dist/skill-ENPATRIW.js.map +0 -6
  154. package/dist/target-3QHY7JT4.js.map +0 -6
  155. package/dist/webapi-NTVP4BO3.js +0 -2482
  156. package/dist/webapi-NTVP4BO3.js.map +0 -6
  157. /package/dist/{auth-4FW6GCLG.js.map → auth-6ZE6QQXA.js.map} +0 -0
  158. /package/dist/{chunk-QHBCP4OB.js.map → chunk-UW6AWLXX.js.map} +0 -0
  159. /package/dist/{local-package-run-2TMCAZZ2.js.map → local-package-run-JFKNSNWM.js.map} +0 -0
  160. /package/dist/{mcp-G2AWTIXR.js.map → mock-fetch-gateway-S2ULVFAI.js.map} +0 -0
  161. /package/dist/{mock-fetch-gateway-B5TFGGQS.js.map → mock-server-TFO7Q26H.js.map} +0 -0
  162. /package/dist/{mock-server-SV2IKC4I.js.map → open-api-client-SR4B7265.js.map} +0 -0
  163. /package/dist/{open-api-client-DVVMLY7P.js.map → package-manifest-DFF6XCPV.js.map} +0 -0
  164. /package/dist/{package-manifest-QH2RU64C.js.map → setup-git-MHK563LB.js.map} +0 -0
  165. /package/dist/{setup-git-5KCUBYPB.js.map → store-27J4CQZ2.js.map} +0 -0
  166. /package/dist/{store-WTMRH527.js.map → structured-error-5MLWXYR3.js.map} +0 -0
  167. /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-G4YN6XP5.js";
4
+ } from "./chunk-4GIFJVGT.js";
5
5
  import {
6
- readPackageVersion
7
- } from "./chunk-G6LJWROP.js";
8
- import {
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
- } from "./chunk-IHP6PV6X.js";
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(credentials)) {
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(`Unsupported protocol for the Kody API: ${url.protocol}`);
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("end", () => resolve(toResponse(response, Buffer.concat(chunks))));
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(`Kody API sent nothing for ${timeoutMs}ms (${url.pathname}).`)
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("close", () => signal.removeEventListener("abort", abort));
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([import("node:http"), import("node:https")]);
279
- const agentOptions = { keepAlive: true, ...useEnvProxy ? { proxyEnv: process.env } : {} };
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:": { agent: unrefFreeSockets(new http.Agent(agentOptions)), request: http.request },
282
- "https:": { agent: unrefFreeSockets(new https.Agent(agentOptions)), request: https.request }
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 loopbackHosts = /* @__PURE__ */ new Set(["localhost", "127.0.0.1", "[::1]"]);
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:" && loopbackHosts.has(url.hostname)) return;
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 = isRecord(body) ? body : {};
674
+ const record = isRecord2(body) ? body : {};
367
675
  return {
368
- scopes: Array.isArray(record.scopes) ? record.scopes.filter((scope) => typeof scope === "string") : [],
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((feature) => typeof feature === "string") : []
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) payload.conversationId = input.conversationId;
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, { status: response.status, code: failure.code });
705
+ throw new CapabilityProxyError(failure.message, {
706
+ status: response.status,
707
+ code: failure.code
708
+ });
393
709
  }
394
- return isRecord(body) ? body.result : void 0;
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(`Unsupported protocol for the Kody API: ${url.protocol}`);
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(input.gateway.headers);
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(`Kody API sent nothing for ${timeoutMs}ms (${url.pathname}).`)
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 (!isRecord(result)) {
556
- throw new CapabilityProxyError("credentialClientCheck returned an unexpected result.");
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 = isRecord(result.error) ? result.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 = isRecord(result.value) ? result.value : null;
564
- const warnings = Array.isArray(value?.warnings) ? value.warnings.filter((warning) => typeof warning === "string") : [];
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 (!isRecord(body) || body.error == null) return null;
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 (isRecord(error)) {
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}`, { status, code });
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({ code, serverMessage: failure?.message }),
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 isRecord(value) {
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-R4IUV5P5.js.map
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
+ }