@kodycodes/cli 1.26.2 → 1.26.3

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 (270) hide show
  1. package/dist/auth-4FW6GCLG.js +26 -0
  2. package/dist/auth-4FW6GCLG.js.map +6 -0
  3. package/dist/bin.js +27 -3
  4. package/dist/bin.js.map +6 -1
  5. package/dist/chunk-46IJPEID.js +30 -0
  6. package/dist/chunk-46IJPEID.js.map +6 -0
  7. package/dist/chunk-4D6ORNXY.js +24404 -0
  8. package/dist/chunk-4D6ORNXY.js.map +6 -0
  9. package/dist/chunk-64IM6G4Z.js +341 -0
  10. package/dist/chunk-64IM6G4Z.js.map +6 -0
  11. package/dist/{package-local-runtime-source.js → chunk-64XN367G.js} +373 -52
  12. package/dist/chunk-64XN367G.js.map +6 -0
  13. package/dist/chunk-6XQP5SWX.js +26 -0
  14. package/dist/chunk-6XQP5SWX.js.map +6 -0
  15. package/dist/chunk-75RZUXQL.js +62 -0
  16. package/dist/chunk-75RZUXQL.js.map +6 -0
  17. package/dist/chunk-BISUL7CE.js +106 -0
  18. package/dist/chunk-BISUL7CE.js.map +6 -0
  19. package/dist/chunk-BPGY4IE7.js +57 -0
  20. package/dist/chunk-BPGY4IE7.js.map +6 -0
  21. package/dist/chunk-CASGRYOF.js +21 -0
  22. package/dist/chunk-CASGRYOF.js.map +6 -0
  23. package/dist/chunk-CWWHR4FH.js +19 -0
  24. package/dist/chunk-CWWHR4FH.js.map +6 -0
  25. package/dist/chunk-D55XPY3T.js +1382 -0
  26. package/dist/chunk-D55XPY3T.js.map +6 -0
  27. package/dist/chunk-EOCV74B2.js +948 -0
  28. package/dist/chunk-EOCV74B2.js.map +6 -0
  29. package/dist/chunk-FBVNFWR6.js +437 -0
  30. package/dist/chunk-FBVNFWR6.js.map +6 -0
  31. package/dist/chunk-G4YN6XP5.js +14 -0
  32. package/dist/chunk-G4YN6XP5.js.map +6 -0
  33. package/dist/chunk-G6LJWROP.js +18 -0
  34. package/dist/chunk-G6LJWROP.js.map +6 -0
  35. package/dist/chunk-IHP6PV6X.js +49 -0
  36. package/dist/chunk-IHP6PV6X.js.map +6 -0
  37. package/dist/chunk-JWEFKKAD.js +24 -0
  38. package/dist/chunk-JWEFKKAD.js.map +6 -0
  39. package/dist/chunk-LWNB26KO.js +147 -0
  40. package/dist/chunk-LWNB26KO.js.map +6 -0
  41. package/dist/chunk-OVGXPRSY.js +20 -0
  42. package/dist/chunk-OVGXPRSY.js.map +6 -0
  43. package/dist/chunk-PDWCKWQF.js +453 -0
  44. package/dist/chunk-PDWCKWQF.js.map +6 -0
  45. package/dist/chunk-QHBCP4OB.js +44 -0
  46. package/dist/chunk-QHBCP4OB.js.map +6 -0
  47. package/dist/chunk-R4IUV5P5.js +664 -0
  48. package/dist/chunk-R4IUV5P5.js.map +6 -0
  49. package/dist/chunk-RM34N3KI.js +525 -0
  50. package/dist/chunk-RM34N3KI.js.map +6 -0
  51. package/dist/chunk-RTWUNV76.js +309 -0
  52. package/dist/chunk-RTWUNV76.js.map +6 -0
  53. package/dist/chunk-SMURF26I.js +23 -0
  54. package/dist/chunk-SMURF26I.js.map +6 -0
  55. package/dist/chunk-SXHULGL4.js +426 -0
  56. package/dist/chunk-SXHULGL4.js.map +6 -0
  57. package/dist/chunk-TIL35OWA.js +1959 -0
  58. package/dist/chunk-TIL35OWA.js.map +6 -0
  59. package/dist/chunk-VQS5YSCI.js +54 -0
  60. package/dist/chunk-VQS5YSCI.js.map +6 -0
  61. package/dist/chunk-XDCOWU5R.js +696 -0
  62. package/dist/chunk-XDCOWU5R.js.map +6 -0
  63. package/dist/chunk-XOPPGRUP.js +605 -0
  64. package/dist/chunk-XOPPGRUP.js.map +6 -0
  65. package/dist/cli.js +74 -1500
  66. package/dist/cli.js.map +6 -1
  67. package/dist/dev-command-3LX234N6.js +4900 -0
  68. package/dist/dev-command-3LX234N6.js.map +6 -0
  69. package/dist/git-credential-FUE3JE3T.js +163 -0
  70. package/dist/git-credential-FUE3JE3T.js.map +6 -0
  71. package/dist/install-ZML2TCDG.js +10694 -0
  72. package/dist/install-ZML2TCDG.js.map +6 -0
  73. package/dist/local-execute-SZV6XN4T.js +368 -0
  74. package/dist/local-execute-SZV6XN4T.js.map +6 -0
  75. package/dist/local-package-run-2TMCAZZ2.js +23 -0
  76. package/dist/local-package-run-2TMCAZZ2.js.map +6 -0
  77. package/dist/mcp-G2AWTIXR.js +21 -0
  78. package/dist/mcp-G2AWTIXR.js.map +6 -0
  79. package/dist/mock-dep-resolve-TVABDNR7.js +52 -0
  80. package/dist/mock-dep-resolve-TVABDNR7.js.map +6 -0
  81. package/dist/mock-fetch-gateway-B5TFGGQS.js +34 -0
  82. package/dist/mock-fetch-gateway-B5TFGGQS.js.map +6 -0
  83. package/dist/mock-local-deps-5SZT3PWT.js +197 -0
  84. package/dist/mock-local-deps-5SZT3PWT.js.map +6 -0
  85. package/dist/mock-server-SV2IKC4I.js +21 -0
  86. package/dist/mock-server-SV2IKC4I.js.map +6 -0
  87. package/dist/open-api-client-DVVMLY7P.js +42 -0
  88. package/dist/open-api-client-DVVMLY7P.js.map +6 -0
  89. package/dist/org-X7B5BI4R.js +132 -0
  90. package/dist/org-X7B5BI4R.js.map +6 -0
  91. package/dist/package-manifest-QH2RU64C.js +14 -0
  92. package/dist/package-manifest-QH2RU64C.js.map +6 -0
  93. package/dist/remote-execute-QMQDVHOY.js +110 -0
  94. package/dist/remote-execute-QMQDVHOY.js.map +6 -0
  95. package/dist/setup-git-5KCUBYPB.js +88 -0
  96. package/dist/setup-git-5KCUBYPB.js.map +6 -0
  97. package/dist/skill-ENPATRIW.js +43 -0
  98. package/dist/skill-ENPATRIW.js.map +6 -0
  99. package/dist/store-WTMRH527.js +48 -0
  100. package/dist/store-WTMRH527.js.map +6 -0
  101. package/dist/structured-error-C65GQ53Z.js +13 -0
  102. package/dist/structured-error-C65GQ53Z.js.map +6 -0
  103. package/dist/target-3QHY7JT4.js +45 -0
  104. package/dist/target-3QHY7JT4.js.map +6 -0
  105. package/dist/webapi-NTVP4BO3.js +2482 -0
  106. package/dist/webapi-NTVP4BO3.js.map +6 -0
  107. package/package.json +8 -8
  108. package/dist/add-mcp-install.js +0 -59
  109. package/dist/add-mcp-install.js.map +0 -1
  110. package/dist/api-token-store.js +0 -120
  111. package/dist/api-token-store.js.map +0 -1
  112. package/dist/api-token.js +0 -238
  113. package/dist/api-token.js.map +0 -1
  114. package/dist/auth-bootstrap.js +0 -373
  115. package/dist/auth-bootstrap.js.map +0 -1
  116. package/dist/auth.js +0 -386
  117. package/dist/auth.js.map +0 -1
  118. package/dist/capability-proxy.js +0 -527
  119. package/dist/capability-proxy.js.map +0 -1
  120. package/dist/credential-call-map.js +0 -155
  121. package/dist/credential-call-map.js.map +0 -1
  122. package/dist/credential-client-runtime-source.js +0 -9
  123. package/dist/credential-client-runtime-source.js.map +0 -1
  124. package/dist/credentialed-fetch-scan.js +0 -98
  125. package/dist/credentialed-fetch-scan.js.map +0 -1
  126. package/dist/defaults.js +0 -34
  127. package/dist/defaults.js.map +0 -1
  128. package/dist/detect-running-hosts.js +0 -13
  129. package/dist/detect-running-hosts.js.map +0 -1
  130. package/dist/dev/dev-assets.js +0 -202
  131. package/dist/dev/dev-assets.js.map +0 -1
  132. package/dist/dev/dev-bundler.js +0 -65
  133. package/dist/dev/dev-bundler.js.map +0 -1
  134. package/dist/dev/dev-events.js +0 -94
  135. package/dist/dev/dev-events.js.map +0 -1
  136. package/dist/dev/dev-port.js +0 -80
  137. package/dist/dev/dev-port.js.map +0 -1
  138. package/dist/dev/dev-protocol.js +0 -14
  139. package/dist/dev/dev-protocol.js.map +0 -1
  140. package/dist/dev/dev-registry.js +0 -95
  141. package/dist/dev/dev-registry.js.map +0 -1
  142. package/dist/dev/dev-watcher.js +0 -162
  143. package/dist/dev/dev-watcher.js.map +0 -1
  144. package/dist/dev/error-page.js +0 -64
  145. package/dist/dev/error-page.js.map +0 -1
  146. package/dist/dev/live-reload.js +0 -151
  147. package/dist/dev/live-reload.js.map +0 -1
  148. package/dist/dev/prebuild.js +0 -102
  149. package/dist/dev/prebuild.js.map +0 -1
  150. package/dist/dev/process-reaper.js +0 -151
  151. package/dist/dev/process-reaper.js.map +0 -1
  152. package/dist/dev/stack-trace.js +0 -56
  153. package/dist/dev/stack-trace.js.map +0 -1
  154. package/dist/dev/workerd-process.js +0 -118
  155. package/dist/dev/workerd-process.js.map +0 -1
  156. package/dist/dev-command.js +0 -676
  157. package/dist/dev-command.js.map +0 -1
  158. package/dist/discover-login-identity.js +0 -77
  159. package/dist/discover-login-identity.js.map +0 -1
  160. package/dist/discover-org.js +0 -62
  161. package/dist/discover-org.js.map +0 -1
  162. package/dist/git-credential.js +0 -147
  163. package/dist/git-credential.js.map +0 -1
  164. package/dist/help.js +0 -333
  165. package/dist/help.js.map +0 -1
  166. package/dist/host-catalog.js +0 -427
  167. package/dist/host-catalog.js.map +0 -1
  168. package/dist/host-config.js +0 -80
  169. package/dist/host-config.js.map +0 -1
  170. package/dist/http-error-body.js +0 -35
  171. package/dist/http-error-body.js.map +0 -1
  172. package/dist/install-hosts.js +0 -328
  173. package/dist/install-hosts.js.map +0 -1
  174. package/dist/install.js +0 -120
  175. package/dist/install.js.map +0 -1
  176. package/dist/invoke-passthrough.js +0 -60
  177. package/dist/invoke-passthrough.js.map +0 -1
  178. package/dist/local-bundle.js +0 -200
  179. package/dist/local-bundle.js.map +0 -1
  180. package/dist/local-execute-auth.js +0 -53
  181. package/dist/local-execute-auth.js.map +0 -1
  182. package/dist/local-execute.js +0 -338
  183. package/dist/local-execute.js.map +0 -1
  184. package/dist/local-gateway-fetch-forward.js +0 -135
  185. package/dist/local-gateway-fetch-forward.js.map +0 -1
  186. package/dist/local-host-runtime-surface.js +0 -75
  187. package/dist/local-host-runtime-surface.js.map +0 -1
  188. package/dist/local-package-graph.js +0 -405
  189. package/dist/local-package-graph.js.map +0 -1
  190. package/dist/local-package-run.js +0 -307
  191. package/dist/local-package-run.js.map +0 -1
  192. package/dist/local-runtime-bridge.js +0 -132
  193. package/dist/local-runtime-bridge.js.map +0 -1
  194. package/dist/local-runtime-source.js +0 -541
  195. package/dist/local-runtime-source.js.map +0 -1
  196. package/dist/login-callback-assets.js +0 -10
  197. package/dist/login-callback-assets.js.map +0 -1
  198. package/dist/login-callback-page.js +0 -362
  199. package/dist/login-callback-page.js.map +0 -1
  200. package/dist/mcp.js +0 -134
  201. package/dist/mcp.js.map +0 -1
  202. package/dist/mock/ensure-msw.js +0 -215
  203. package/dist/mock/ensure-msw.js.map +0 -1
  204. package/dist/mock/install-mock-fetch-shim.js +0 -36
  205. package/dist/mock/install-mock-fetch-shim.js.map +0 -1
  206. package/dist/mock/load-package-mocks.js +0 -136
  207. package/dist/mock/load-package-mocks.js.map +0 -1
  208. package/dist/mock/mock-fetch-gateway.js +0 -343
  209. package/dist/mock/mock-fetch-gateway.js.map +0 -1
  210. package/dist/mock/mock-gateway-fetch-shim.js +0 -104
  211. package/dist/mock/mock-gateway-fetch-shim.js.map +0 -1
  212. package/dist/mock/mock-server.js +0 -499
  213. package/dist/mock/mock-server.js.map +0 -1
  214. package/dist/mock/mock-storage.js +0 -186
  215. package/dist/mock/mock-storage.js.map +0 -1
  216. package/dist/mock/mock-supported.js +0 -63
  217. package/dist/mock/mock-supported.js.map +0 -1
  218. package/dist/mock-dep-resolve.js +0 -47
  219. package/dist/mock-dep-resolve.js.map +0 -1
  220. package/dist/mock-local-deps.js +0 -207
  221. package/dist/mock-local-deps.js.map +0 -1
  222. package/dist/network-error.js +0 -11
  223. package/dist/network-error.js.map +0 -1
  224. package/dist/node-engine.js +0 -21
  225. package/dist/node-engine.js.map +0 -1
  226. package/dist/oauth-provider.js +0 -107
  227. package/dist/oauth-provider.js.map +0 -1
  228. package/dist/onboarding-prompt.js +0 -15
  229. package/dist/onboarding-prompt.js.map +0 -1
  230. package/dist/open-api-client.js +0 -432
  231. package/dist/open-api-client.js.map +0 -1
  232. package/dist/open-url.js +0 -21
  233. package/dist/open-url.js.map +0 -1
  234. package/dist/org-resolve.js +0 -16
  235. package/dist/org-resolve.js.map +0 -1
  236. package/dist/org-slug.js +0 -11
  237. package/dist/org-slug.js.map +0 -1
  238. package/dist/org.js +0 -100
  239. package/dist/org.js.map +0 -1
  240. package/dist/package-app-dev.js +0 -922
  241. package/dist/package-app-dev.js.map +0 -1
  242. package/dist/package-collaborators.js +0 -179
  243. package/dist/package-collaborators.js.map +0 -1
  244. package/dist/package-info.js +0 -19
  245. package/dist/package-info.js.map +0 -1
  246. package/dist/package-local-runtime-source.js.map +0 -1
  247. package/dist/package-manifest.js +0 -364
  248. package/dist/package-manifest.js.map +0 -1
  249. package/dist/process-info.js +0 -14
  250. package/dist/process-info.js.map +0 -1
  251. package/dist/redact.js +0 -16
  252. package/dist/redact.js.map +0 -1
  253. package/dist/remote-execute.js +0 -108
  254. package/dist/remote-execute.js.map +0 -1
  255. package/dist/setup-git.js +0 -676
  256. package/dist/setup-git.js.map +0 -1
  257. package/dist/skill.js +0 -35
  258. package/dist/skill.js.map +0 -1
  259. package/dist/store.js +0 -597
  260. package/dist/store.js.map +0 -1
  261. package/dist/structured-error.js +0 -57
  262. package/dist/structured-error.js.map +0 -1
  263. package/dist/target.js +0 -52
  264. package/dist/target.js.map +0 -1
  265. package/dist/tool-result.js +0 -19
  266. package/dist/tool-result.js.map +0 -1
  267. package/dist/which.js +0 -22
  268. package/dist/which.js.map +0 -1
  269. package/dist/workerd-binary.js +0 -98
  270. package/dist/workerd-binary.js.map +0 -1
@@ -0,0 +1,664 @@
1
+ import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
2
+ import {
3
+ describeNetworkError
4
+ } from "./chunk-G4YN6XP5.js";
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";
17
+ import {
18
+ apiTokenEnvVar,
19
+ cliName
20
+ } from "./chunk-IHP6PV6X.js";
21
+
22
+ // src/credential-call-map.ts
23
+ var credentialCallMapFeature = "credential-call-map";
24
+ var credentialCallMapLimits = {
25
+ maxKeys: 32,
26
+ maxPicksPerKey: 16,
27
+ maxTextLength: 100
28
+ };
29
+ var keyPattern = new RegExp(
30
+ `^[A-Za-z0-9][A-Za-z0-9._-]{0,${credentialCallMapLimits.maxTextLength - 1}}$`
31
+ );
32
+ function parseCredentialFlag(raw) {
33
+ const eq = raw.indexOf("=");
34
+ if (eq <= 0) {
35
+ throw new Error(
36
+ `Invalid --credential ${JSON.stringify(raw)}. Use --credential key=name, --credential key=org:name, or --credential key= for none.`
37
+ );
38
+ }
39
+ const key = raw.slice(0, eq);
40
+ const value = raw.slice(eq + 1);
41
+ assertCredentialMapKey(key);
42
+ if (value === "") return { key, picks: [], empty: true };
43
+ return { key, picks: [parseCredentialPick(value)], empty: false };
44
+ }
45
+ function parseCredentialFlags(flags) {
46
+ if (!flags || flags.length === 0) return void 0;
47
+ const collected = /* @__PURE__ */ new Map();
48
+ const emptyKeys = /* @__PURE__ */ new Set();
49
+ for (const flag of flags) {
50
+ const { key, picks, empty } = parseCredentialFlag(flag);
51
+ if (empty) {
52
+ if ((collected.get(key)?.length ?? 0) > 0) {
53
+ throw new Error(
54
+ `Invalid --credential for ${key}: cannot combine an empty pick (none) with a named pick.`
55
+ );
56
+ }
57
+ emptyKeys.add(key);
58
+ collected.set(key, []);
59
+ continue;
60
+ }
61
+ if (emptyKeys.has(key)) {
62
+ throw new Error(
63
+ `Invalid --credential for ${key}: cannot combine an empty pick (none) with a named pick.`
64
+ );
65
+ }
66
+ const existing = collected.get(key) ?? [];
67
+ existing.push(...picks);
68
+ if (existing.length > credentialCallMapLimits.maxPicksPerKey) {
69
+ throw new Error(
70
+ `A credentials map takes at most ${credentialCallMapLimits.maxPicksPerKey} picks per key (${key}).`
71
+ );
72
+ }
73
+ collected.set(key, existing);
74
+ }
75
+ if (collected.size > credentialCallMapLimits.maxKeys) {
76
+ throw new Error(
77
+ `A credentials map takes at most ${credentialCallMapLimits.maxKeys} keys.`
78
+ );
79
+ }
80
+ const map = {};
81
+ for (const [key, picks] of collected) {
82
+ if (emptyKeys.has(key)) {
83
+ map[key] = [];
84
+ continue;
85
+ }
86
+ map[key] = picks.length === 1 ? picks[0] : picks;
87
+ }
88
+ return map;
89
+ }
90
+ function parseCredentialPick(value) {
91
+ const trimmed = value.trim();
92
+ const colon = trimmed.indexOf(":");
93
+ if (colon > 0) {
94
+ const prefix = trimmed.slice(0, colon);
95
+ if (prefix === "org" || prefix === "personal") {
96
+ const name = trimmed.slice(colon + 1).trim();
97
+ assertCredentialText(name, "credential name");
98
+ return { name, scope: prefix };
99
+ }
100
+ }
101
+ assertCredentialText(trimmed, "credential name");
102
+ return trimmed;
103
+ }
104
+ function assertCredentialMapKey(key) {
105
+ if (!keyPattern.test(key)) {
106
+ throw new Error(
107
+ `Invalid --credential key ${JSON.stringify(key)}. A key starts with a letter or digit and uses letters, digits, dots, underscores, or hyphens (max ${credentialCallMapLimits.maxTextLength}).`
108
+ );
109
+ }
110
+ }
111
+ function assertCredentialText(value, label) {
112
+ if (!value || value.length > credentialCallMapLimits.maxTextLength) {
113
+ throw new Error(
114
+ `Invalid --credential ${label} ${JSON.stringify(value)}. Use 1\u2013${credentialCallMapLimits.maxTextLength} characters.`
115
+ );
116
+ }
117
+ }
118
+ function sessionSupportsCredentialCallMap(features) {
119
+ return Array.isArray(features) && features.includes(credentialCallMapFeature);
120
+ }
121
+ function missingCredentialCallMapFeatureMessage() {
122
+ return "This Kody host does not support --credential yet.";
123
+ }
124
+ function formatCredentialFlagSuggestion(key, pick) {
125
+ if (typeof pick === "string") {
126
+ return `--credential ${key}=${pick}`;
127
+ }
128
+ if (Array.isArray(pick)) {
129
+ if (pick.length === 0) return `--credential ${key}=`;
130
+ return pick.map((entry) => formatCredentialFlagSuggestion(key, entry)).filter((line) => line !== null).join("\n");
131
+ }
132
+ if (pick && typeof pick === "object") {
133
+ const record = pick;
134
+ if (typeof record.name !== "string" || !record.name) return null;
135
+ if (record.scope === "org" || record.scope === "personal") {
136
+ return `--credential ${key}=${record.scope}:${record.name}`;
137
+ }
138
+ return `--credential ${key}=${record.name}`;
139
+ }
140
+ return null;
141
+ }
142
+ function formatCredentialClientError(error) {
143
+ const code = typeof error.code === "string" && error.code ? error.code : "credential_error";
144
+ const message = typeof error.message === "string" && error.message ? error.message : "The credential could not be used.";
145
+ const lines = [`${code}: ${message}`];
146
+ const retries = Array.isArray(error.retryWith) ? error.retryWith : [];
147
+ for (const entry of retries) {
148
+ if (!entry || typeof entry !== "object" || Array.isArray(entry)) continue;
149
+ const credentials = entry.credentials;
150
+ if (!credentials || typeof credentials !== "object" || Array.isArray(credentials)) {
151
+ continue;
152
+ }
153
+ for (const [key, pick] of Object.entries(credentials)) {
154
+ const suggestion = formatCredentialFlagSuggestion(key, pick);
155
+ if (suggestion) {
156
+ for (const line of suggestion.split("\n")) {
157
+ lines.push(` retry: ${line}`);
158
+ }
159
+ }
160
+ }
161
+ }
162
+ return lines.join("\n");
163
+ }
164
+
165
+ // src/capability-proxy.ts
166
+ import { Readable } from "node:stream";
167
+ var capabilityProxySessionPath = "v1/capability-proxy/session";
168
+ var capabilityProxyCallPath = "v1/capability-proxy/call";
169
+ var capabilityProxyGatewayFetchPath = "v1/capability-proxy/gateway-fetch";
170
+ var gatewayFetchUrlHeaderName = "X-Kody-Gateway-Url";
171
+ var gatewayFetchMethodHeaderName = "X-Kody-Gateway-Method";
172
+ var gatewayFetchPackageIdHeaderName = "X-Kody-Gateway-Package-Id";
173
+ var gatewayFetchHeadersHeaderName = "X-Kody-Gateway-Headers";
174
+ var secretResolutionHeaderName = "x-kody-secret-resolution";
175
+ var capabilityProxyGatewayDeadlineMs = 5 * 6e4;
176
+ var capabilityProxyHttpTimeoutMs = 7 * 6e4;
177
+ var capabilityProxyConnectTimeoutMs = 1e4;
178
+ function nodeUsesEnvProxy(env = process.env, execArgv = process.execArgv) {
179
+ if (env.NODE_USE_ENV_PROXY === "1") return true;
180
+ const flags = [...execArgv, ...(env.NODE_OPTIONS ?? "").split(/\s+/)];
181
+ return flags.includes("--use-env-proxy");
182
+ }
183
+ var envProxyAgentMinimumNode = { 22: 21, 24: 5 };
184
+ function nodeAgentHonorsEnvProxy(version = process.versions.node) {
185
+ const [major = 0, minor = 0] = version.split(".").map(Number);
186
+ const minimumMinor = envProxyAgentMinimumNode[major];
187
+ if (minimumMinor === void 0) return major > 24;
188
+ return minor >= minimumMinor;
189
+ }
190
+ function createCapabilityProxyFetch(options = {}) {
191
+ const timeoutMs = options.timeoutMs ?? capabilityProxyHttpTimeoutMs;
192
+ const connectTimeoutMs = options.connectTimeoutMs ?? capabilityProxyConnectTimeoutMs;
193
+ const useEnvProxy = options.useEnvProxy ?? nodeUsesEnvProxy();
194
+ if (useEnvProxy && !nodeAgentHonorsEnvProxy()) {
195
+ throw new Error(
196
+ `Node ${process.version} cannot route CapabilityProxy requests through HTTP_PROXY / HTTPS_PROXY: env-proxy support needs Node 22.21 or 24.5 and later. Upgrade Node or unset NODE_USE_ENV_PROXY / --use-env-proxy.`
197
+ );
198
+ }
199
+ let transports = null;
200
+ return async (input, init = {}) => {
201
+ const url = input instanceof URL ? input : new URL(input instanceof Request ? input.url : input);
202
+ transports ??= loadTransports(useEnvProxy);
203
+ const transport = (await transports)[url.protocol];
204
+ if (!transport) {
205
+ throw new TypeError(`Unsupported protocol for the Kody API: ${url.protocol}`);
206
+ }
207
+ const body = init.body;
208
+ if (body !== void 0 && body !== null && typeof body !== "string") {
209
+ throw new TypeError("CapabilityProxy requests send string bodies.");
210
+ }
211
+ return new Promise((resolve, reject) => {
212
+ const request = transport.request(
213
+ url,
214
+ {
215
+ agent: transport.agent,
216
+ method: init.method ?? "GET",
217
+ headers: Object.fromEntries(new Headers(init.headers))
218
+ },
219
+ (response) => {
220
+ clearTimeout(connectTimer);
221
+ const chunks = [];
222
+ response.on("data", (chunk) => chunks.push(chunk));
223
+ response.on("error", reject);
224
+ response.on("end", () => resolve(toResponse(response, Buffer.concat(chunks))));
225
+ }
226
+ );
227
+ const connectTimer = setTimeout(() => {
228
+ request.destroy(
229
+ new Error(
230
+ `Kody API did not connect within ${connectTimeoutMs}ms (${url.pathname}).`
231
+ )
232
+ );
233
+ }, connectTimeoutMs);
234
+ request.on("socket", (socket) => {
235
+ const clearConnectTimer = () => clearTimeout(connectTimer);
236
+ if (url.protocol === "https:") {
237
+ if (tlsHandshakePending(socket) === false) {
238
+ clearConnectTimer();
239
+ return;
240
+ }
241
+ socket.once("secureConnect", clearConnectTimer);
242
+ return;
243
+ }
244
+ if (!socket.connecting) {
245
+ clearConnectTimer();
246
+ return;
247
+ }
248
+ socket.once("connect", clearConnectTimer);
249
+ });
250
+ request.setTimeout(
251
+ timeoutMs,
252
+ () => request.destroy(
253
+ new Error(`Kody API sent nothing for ${timeoutMs}ms (${url.pathname}).`)
254
+ )
255
+ );
256
+ request.on("error", (error) => {
257
+ clearTimeout(connectTimer);
258
+ reject(error);
259
+ });
260
+ const { signal } = init;
261
+ if (signal) {
262
+ const abort = () => {
263
+ clearTimeout(connectTimer);
264
+ request.destroy(abortError(signal.reason));
265
+ };
266
+ if (signal.aborted) {
267
+ abort();
268
+ } else {
269
+ signal.addEventListener("abort", abort, { once: true });
270
+ request.once("close", () => signal.removeEventListener("abort", abort));
271
+ }
272
+ }
273
+ request.end(body ?? void 0);
274
+ });
275
+ };
276
+ }
277
+ 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 } : {} };
280
+ return {
281
+ "http:": { agent: unrefFreeSockets(new http.Agent(agentOptions)), request: http.request },
282
+ "https:": { agent: unrefFreeSockets(new https.Agent(agentOptions)), request: https.request }
283
+ };
284
+ }
285
+ function unrefFreeSockets(agent) {
286
+ agent.on("free", (socket) => {
287
+ socket.unref();
288
+ });
289
+ return agent;
290
+ }
291
+ function tlsHandshakePending(socket) {
292
+ if (!("secureConnecting" in socket)) return null;
293
+ return socket.secureConnecting;
294
+ }
295
+ function abortError(reason) {
296
+ if (reason instanceof Error) return reason;
297
+ return new DOMException(
298
+ typeof reason === "string" ? reason : "This operation was aborted",
299
+ "AbortError"
300
+ );
301
+ }
302
+ function toResponse(response, body) {
303
+ const headers = new Headers();
304
+ for (const [name, value] of Object.entries(response.headers)) {
305
+ if (Array.isArray(value)) {
306
+ for (const entry of value) headers.append(name, entry);
307
+ } else if (value !== void 0) {
308
+ headers.set(name, value);
309
+ }
310
+ }
311
+ const status = response.statusCode ?? 0;
312
+ const bodyless = status === 204 || status === 205 || status === 304;
313
+ return new Response(bodyless ? null : body, {
314
+ status,
315
+ statusText: response.statusMessage ?? "",
316
+ headers
317
+ });
318
+ }
319
+ var defaultCapabilityProxyFetch = null;
320
+ function capabilityProxyFetch() {
321
+ defaultCapabilityProxyFetch ??= createCapabilityProxyFetch();
322
+ return defaultCapabilityProxyFetch;
323
+ }
324
+ var CapabilityProxyError = class extends Error {
325
+ status;
326
+ code;
327
+ constructor(message, options = {}) {
328
+ super(message);
329
+ this.name = "CapabilityProxyError";
330
+ this.status = options.status ?? null;
331
+ this.code = options.code ?? null;
332
+ }
333
+ };
334
+ var loopbackHosts = /* @__PURE__ */ new Set(["localhost", "127.0.0.1", "[::1]"]);
335
+ function assertTokenSafeApiUrl(apiUrl) {
336
+ let url;
337
+ try {
338
+ url = new URL(apiUrl);
339
+ } catch {
340
+ throw new Error(`Invalid Kody API URL: ${apiUrl}`);
341
+ }
342
+ if (url.protocol === "https:") return;
343
+ if (url.protocol === "http:" && loopbackHosts.has(url.hostname)) return;
344
+ throw new Error(
345
+ `Refusing to send the API token to ${url.origin}: use https (plain http is only allowed for localhost).`
346
+ );
347
+ }
348
+ function capabilityProxyUrl(apiUrl, path) {
349
+ const base = apiUrl.endsWith("/") ? apiUrl : `${apiUrl}/`;
350
+ return new URL(path, base);
351
+ }
352
+ function withOrgQuery(url, org) {
353
+ if (org) url.searchParams.set("org", org);
354
+ return url;
355
+ }
356
+ async function openCapabilityProxySession(input) {
357
+ const url = withOrgQuery(
358
+ capabilityProxyUrl(input.apiUrl, capabilityProxySessionPath),
359
+ input.org
360
+ );
361
+ const response = await send(input, url, { method: "GET" });
362
+ const body = await readJson(response);
363
+ if (!response.ok) {
364
+ throw describeFailure(response.status, body, url, "session", input.token);
365
+ }
366
+ const record = isRecord(body) ? body : {};
367
+ return {
368
+ scopes: Array.isArray(record.scopes) ? record.scopes.filter((scope) => typeof scope === "string") : [],
369
+ expiresAt: typeof record.expiresAt === "string" ? record.expiresAt : null,
370
+ features: Array.isArray(record.features) ? record.features.filter((feature) => typeof feature === "string") : []
371
+ };
372
+ }
373
+ async function callCapabilityProxy(input) {
374
+ const url = withOrgQuery(
375
+ capabilityProxyUrl(input.apiUrl, capabilityProxyCallPath),
376
+ input.org
377
+ );
378
+ const payload = { path: input.path, args: input.args };
379
+ if (input.conversationId !== void 0) payload.conversationId = input.conversationId;
380
+ if (input.credentials !== void 0) payload.credentials = input.credentials;
381
+ const response = await send(input, url, {
382
+ method: "POST",
383
+ headers: { "content-type": "application/json" },
384
+ body: JSON.stringify(payload)
385
+ });
386
+ const body = await readJson(response);
387
+ if (!response.ok) {
388
+ throw describeFailure(response.status, body, url, "call", input.token);
389
+ }
390
+ const failure = readErrorBody(body);
391
+ if (failure) {
392
+ throw new CapabilityProxyError(failure.message, { status: response.status, code: failure.code });
393
+ }
394
+ return isRecord(body) ? body.result : void 0;
395
+ }
396
+ async function callCapabilityProxyGatewayFetchStream(input) {
397
+ assertTokenSafeApiUrl(input.apiUrl);
398
+ const url = withOrgQuery(
399
+ capabilityProxyUrl(input.apiUrl, capabilityProxyGatewayFetchPath),
400
+ input.org
401
+ );
402
+ const timeoutMs = capabilityProxyHttpTimeoutMs;
403
+ const connectTimeoutMs = capabilityProxyConnectTimeoutMs;
404
+ const useEnvProxy = nodeUsesEnvProxy();
405
+ if (useEnvProxy && !nodeAgentHonorsEnvProxy()) {
406
+ throw new Error(
407
+ `Node ${process.version} cannot route CapabilityProxy requests through HTTP_PROXY / HTTPS_PROXY: env-proxy support needs Node 22.21 or 24.5 and later. Upgrade Node or unset NODE_USE_ENV_PROXY / --use-env-proxy.`
408
+ );
409
+ }
410
+ const transports = await loadTransports(useEnvProxy);
411
+ const transport = transports[url.protocol];
412
+ if (!transport) {
413
+ throw new TypeError(`Unsupported protocol for the Kody API: ${url.protocol}`);
414
+ }
415
+ const headers = {
416
+ accept: "*/*",
417
+ authorization: `Bearer ${input.token}`,
418
+ "user-agent": `${cliName}/${readPackageVersion()}`,
419
+ [gatewayFetchUrlHeaderName]: input.gateway.url
420
+ };
421
+ if (input.gateway.method) {
422
+ headers[gatewayFetchMethodHeaderName] = input.gateway.method;
423
+ }
424
+ if (input.gateway.packageId) {
425
+ headers[gatewayFetchPackageIdHeaderName] = input.gateway.packageId;
426
+ }
427
+ if (input.gateway.headers && Object.keys(input.gateway.headers).length > 0) {
428
+ headers[gatewayFetchHeadersHeaderName] = JSON.stringify(input.gateway.headers);
429
+ }
430
+ if (input.gateway.secretResolution) {
431
+ headers[secretResolutionHeaderName] = input.gateway.secretResolution;
432
+ }
433
+ if (input.gateway.contentType) {
434
+ headers["content-type"] = input.gateway.contentType;
435
+ }
436
+ if (input.contentLength) {
437
+ headers["content-length"] = input.contentLength;
438
+ }
439
+ const signal = input.signal;
440
+ return await new Promise((resolve, reject) => {
441
+ const request = transport.request(
442
+ url,
443
+ {
444
+ agent: transport.agent,
445
+ method: "POST",
446
+ headers
447
+ },
448
+ (response) => {
449
+ clearTimeout(connectTimer);
450
+ resolve(nodeIncomingToWebResponse(response));
451
+ }
452
+ );
453
+ const connectTimer = setTimeout(() => {
454
+ request.destroy(
455
+ new Error(
456
+ `Kody API did not connect within ${connectTimeoutMs}ms (${url.pathname}).`
457
+ )
458
+ );
459
+ }, connectTimeoutMs);
460
+ request.on("socket", (socket) => {
461
+ const clearConnectTimer = () => clearTimeout(connectTimer);
462
+ if (url.protocol === "https:") {
463
+ if (tlsHandshakePending(socket) === false) {
464
+ clearConnectTimer();
465
+ return;
466
+ }
467
+ socket.once("secureConnect", clearConnectTimer);
468
+ return;
469
+ }
470
+ if (!socket.connecting) {
471
+ clearConnectTimer();
472
+ return;
473
+ }
474
+ socket.once("connect", clearConnectTimer);
475
+ });
476
+ request.setTimeout(
477
+ timeoutMs,
478
+ () => request.destroy(
479
+ new Error(`Kody API sent nothing for ${timeoutMs}ms (${url.pathname}).`)
480
+ )
481
+ );
482
+ request.on("error", (error) => {
483
+ clearTimeout(connectTimer);
484
+ reject(
485
+ error instanceof CapabilityProxyError ? error : new CapabilityProxyError(
486
+ `Could not reach the Kody API at ${url.origin} (${describeNetworkError(error)}). Check --api-url / KODY_API_URL and your network.`
487
+ )
488
+ );
489
+ });
490
+ if (signal) {
491
+ const abort = () => {
492
+ clearTimeout(connectTimer);
493
+ request.destroy(abortError(signal.reason));
494
+ };
495
+ if (signal.aborted) {
496
+ abort();
497
+ } else {
498
+ signal.addEventListener("abort", abort, { once: true });
499
+ request.once("close", () => signal.removeEventListener("abort", abort));
500
+ }
501
+ }
502
+ if (input.body) {
503
+ input.body.pipe(request);
504
+ input.body.on("error", (error) => {
505
+ clearTimeout(connectTimer);
506
+ request.destroy(error);
507
+ });
508
+ } else {
509
+ request.end();
510
+ }
511
+ });
512
+ }
513
+ function nodeIncomingToWebResponse(response) {
514
+ const headers = new Headers();
515
+ for (const [name, value] of Object.entries(response.headers)) {
516
+ if (Array.isArray(value)) {
517
+ for (const entry of value) headers.append(name, entry);
518
+ } else if (value !== void 0) {
519
+ headers.set(name, value);
520
+ }
521
+ }
522
+ const status = response.statusCode ?? 0;
523
+ const bodyless = status === 101 || status === 103 || status === 204 || status === 205 || status === 304;
524
+ if (bodyless) {
525
+ response.resume();
526
+ return new Response(null, {
527
+ status,
528
+ statusText: response.statusMessage ?? "",
529
+ headers
530
+ });
531
+ }
532
+ return new Response(
533
+ Readable.toWeb(response),
534
+ {
535
+ status,
536
+ statusText: response.statusMessage ?? "",
537
+ headers
538
+ }
539
+ );
540
+ }
541
+ async function checkCredentialCallMap(input) {
542
+ const args = {};
543
+ if (input.strict === true) args.strict = true;
544
+ if (input.packageId !== void 0) args.packageId = input.packageId;
545
+ const result = await callCapabilityProxy({
546
+ apiUrl: input.apiUrl,
547
+ token: input.token,
548
+ fetchFn: input.fetchFn,
549
+ signal: input.signal,
550
+ path: ["kody", "credentialClientCheck"],
551
+ args: [args],
552
+ conversationId: input.conversationId,
553
+ credentials: input.credentials
554
+ });
555
+ if (!isRecord(result)) {
556
+ throw new CapabilityProxyError("credentialClientCheck returned an unexpected result.");
557
+ }
558
+ if (result.ok === false) {
559
+ const error = isRecord(result.error) ? result.error : {};
560
+ const code = typeof error.code === "string" ? error.code : "credential_error";
561
+ throw new CapabilityProxyError(formatCredentialClientError(error), { code });
562
+ }
563
+ const value = isRecord(result.value) ? result.value : null;
564
+ const warnings = Array.isArray(value?.warnings) ? value.warnings.filter((warning) => typeof warning === "string") : [];
565
+ return { warnings };
566
+ }
567
+ async function send(input, url, init) {
568
+ const fetchFn = input.fetchFn ?? capabilityProxyFetch();
569
+ try {
570
+ return await fetchFn(url, {
571
+ ...init,
572
+ signal: input.signal,
573
+ headers: {
574
+ ...init.headers,
575
+ accept: "application/json",
576
+ authorization: `Bearer ${input.token}`,
577
+ "user-agent": `${cliName}/${readPackageVersion()}`
578
+ }
579
+ });
580
+ } catch (error) {
581
+ const reason = describeNetworkError(error);
582
+ throw new CapabilityProxyError(
583
+ `Could not reach the Kody API at ${url.origin} (${reason}). Check --api-url / KODY_API_URL and your network.`
584
+ );
585
+ }
586
+ }
587
+ async function readJson(response) {
588
+ const text = await response.text();
589
+ if (!text) return null;
590
+ try {
591
+ return JSON.parse(text);
592
+ } catch {
593
+ return text;
594
+ }
595
+ }
596
+ function readErrorBody(body) {
597
+ if (!isRecord(body) || body.error == null) return null;
598
+ const { error } = body;
599
+ if (typeof error === "string") return { code: null, message: error };
600
+ if (isRecord(error)) {
601
+ const code = typeof error.code === "string" ? error.code : null;
602
+ const message = typeof error.message === "string" ? error.message : code ?? JSON.stringify(error);
603
+ return { code, message };
604
+ }
605
+ return { code: null, message: String(error) };
606
+ }
607
+ function describeFailure(status, body, url, stage, token) {
608
+ const failure = readErrorBody(body);
609
+ const code = failure?.code ?? null;
610
+ const detail = failure?.message ? ` Server said: ${failure.message}` : "";
611
+ if (status === 401) {
612
+ const message = isScopedApiToken(token) ? `Kody rejected the API token (expired, revoked, or malformed). Mint a fresh scoped token and pass it with --token or ${apiTokenEnvVar}.${detail}` : `${rejectedOauthBearerMessage()}${detail}`;
613
+ return new CapabilityProxyError(message, { status, code });
614
+ }
615
+ if (code === "feature_disabled") {
616
+ return new CapabilityProxyError(`${featureDisabledMessage()}${detail}`, { status, code });
617
+ }
618
+ if (code === "insufficient_scope") {
619
+ return new CapabilityProxyError(
620
+ `${insufficientScopeMessage({
621
+ ...readInsufficientScopeDetails(body),
622
+ currentLifetime: currentStoredTokenLifetimeAlias(url.origin)
623
+ })}${detail}`,
624
+ { status, code }
625
+ );
626
+ }
627
+ if (status === 403 && stage === "session") {
628
+ return new CapabilityProxyError(
629
+ capabilityProxyForbiddenMessage({ code, serverMessage: failure?.message }),
630
+ { status, code }
631
+ );
632
+ }
633
+ if (status === 404 && stage === "session") {
634
+ return new CapabilityProxyError(
635
+ `CapabilityProxy was not found at ${url.href}. Local execute may not be deployed on this Kody API yet; check --api-url / KODY_API_URL.`,
636
+ { status, code }
637
+ );
638
+ }
639
+ return new CapabilityProxyError(
640
+ failure?.message ?? `Kody API request failed with HTTP ${status} (${url.pathname}).`,
641
+ { status, code }
642
+ );
643
+ }
644
+ function isRecord(value) {
645
+ return value !== null && typeof value === "object" && !Array.isArray(value);
646
+ }
647
+
648
+ export {
649
+ parseCredentialFlags,
650
+ sessionSupportsCredentialCallMap,
651
+ missingCredentialCallMapFeatureMessage,
652
+ gatewayFetchUrlHeaderName,
653
+ gatewayFetchMethodHeaderName,
654
+ gatewayFetchPackageIdHeaderName,
655
+ gatewayFetchHeadersHeaderName,
656
+ secretResolutionHeaderName,
657
+ assertTokenSafeApiUrl,
658
+ capabilityProxyUrl,
659
+ openCapabilityProxySession,
660
+ callCapabilityProxy,
661
+ callCapabilityProxyGatewayFetchStream,
662
+ checkCredentialCallMap
663
+ };
664
+ //# sourceMappingURL=chunk-R4IUV5P5.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/credential-call-map.ts", "../src/capability-proxy.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }