@kodycodes/cli 1.26.1 → 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 (271) 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/dev-watcher.d.ts +5 -1
  68. package/dist/dev-command-3LX234N6.js +4900 -0
  69. package/dist/dev-command-3LX234N6.js.map +6 -0
  70. package/dist/git-credential-FUE3JE3T.js +163 -0
  71. package/dist/git-credential-FUE3JE3T.js.map +6 -0
  72. package/dist/install-ZML2TCDG.js +10694 -0
  73. package/dist/install-ZML2TCDG.js.map +6 -0
  74. package/dist/local-execute-SZV6XN4T.js +368 -0
  75. package/dist/local-execute-SZV6XN4T.js.map +6 -0
  76. package/dist/local-package-run-2TMCAZZ2.js +23 -0
  77. package/dist/local-package-run-2TMCAZZ2.js.map +6 -0
  78. package/dist/mcp-G2AWTIXR.js +21 -0
  79. package/dist/mcp-G2AWTIXR.js.map +6 -0
  80. package/dist/mock-dep-resolve-TVABDNR7.js +52 -0
  81. package/dist/mock-dep-resolve-TVABDNR7.js.map +6 -0
  82. package/dist/mock-fetch-gateway-B5TFGGQS.js +34 -0
  83. package/dist/mock-fetch-gateway-B5TFGGQS.js.map +6 -0
  84. package/dist/mock-local-deps-5SZT3PWT.js +197 -0
  85. package/dist/mock-local-deps-5SZT3PWT.js.map +6 -0
  86. package/dist/mock-server-SV2IKC4I.js +21 -0
  87. package/dist/mock-server-SV2IKC4I.js.map +6 -0
  88. package/dist/open-api-client-DVVMLY7P.js +42 -0
  89. package/dist/open-api-client-DVVMLY7P.js.map +6 -0
  90. package/dist/org-X7B5BI4R.js +132 -0
  91. package/dist/org-X7B5BI4R.js.map +6 -0
  92. package/dist/package-manifest-QH2RU64C.js +14 -0
  93. package/dist/package-manifest-QH2RU64C.js.map +6 -0
  94. package/dist/remote-execute-QMQDVHOY.js +110 -0
  95. package/dist/remote-execute-QMQDVHOY.js.map +6 -0
  96. package/dist/setup-git-5KCUBYPB.js +88 -0
  97. package/dist/setup-git-5KCUBYPB.js.map +6 -0
  98. package/dist/skill-ENPATRIW.js +43 -0
  99. package/dist/skill-ENPATRIW.js.map +6 -0
  100. package/dist/store-WTMRH527.js +48 -0
  101. package/dist/store-WTMRH527.js.map +6 -0
  102. package/dist/structured-error-C65GQ53Z.js +13 -0
  103. package/dist/structured-error-C65GQ53Z.js.map +6 -0
  104. package/dist/target-3QHY7JT4.js +45 -0
  105. package/dist/target-3QHY7JT4.js.map +6 -0
  106. package/dist/webapi-NTVP4BO3.js +2482 -0
  107. package/dist/webapi-NTVP4BO3.js.map +6 -0
  108. package/package.json +8 -8
  109. package/dist/add-mcp-install.js +0 -59
  110. package/dist/add-mcp-install.js.map +0 -1
  111. package/dist/api-token-store.js +0 -120
  112. package/dist/api-token-store.js.map +0 -1
  113. package/dist/api-token.js +0 -238
  114. package/dist/api-token.js.map +0 -1
  115. package/dist/auth-bootstrap.js +0 -373
  116. package/dist/auth-bootstrap.js.map +0 -1
  117. package/dist/auth.js +0 -386
  118. package/dist/auth.js.map +0 -1
  119. package/dist/capability-proxy.js +0 -527
  120. package/dist/capability-proxy.js.map +0 -1
  121. package/dist/credential-call-map.js +0 -155
  122. package/dist/credential-call-map.js.map +0 -1
  123. package/dist/credential-client-runtime-source.js +0 -9
  124. package/dist/credential-client-runtime-source.js.map +0 -1
  125. package/dist/credentialed-fetch-scan.js +0 -98
  126. package/dist/credentialed-fetch-scan.js.map +0 -1
  127. package/dist/defaults.js +0 -34
  128. package/dist/defaults.js.map +0 -1
  129. package/dist/detect-running-hosts.js +0 -13
  130. package/dist/detect-running-hosts.js.map +0 -1
  131. package/dist/dev/dev-assets.js +0 -202
  132. package/dist/dev/dev-assets.js.map +0 -1
  133. package/dist/dev/dev-bundler.js +0 -65
  134. package/dist/dev/dev-bundler.js.map +0 -1
  135. package/dist/dev/dev-events.js +0 -94
  136. package/dist/dev/dev-events.js.map +0 -1
  137. package/dist/dev/dev-port.js +0 -80
  138. package/dist/dev/dev-port.js.map +0 -1
  139. package/dist/dev/dev-protocol.js +0 -14
  140. package/dist/dev/dev-protocol.js.map +0 -1
  141. package/dist/dev/dev-registry.js +0 -95
  142. package/dist/dev/dev-registry.js.map +0 -1
  143. package/dist/dev/dev-watcher.js +0 -156
  144. package/dist/dev/dev-watcher.js.map +0 -1
  145. package/dist/dev/error-page.js +0 -64
  146. package/dist/dev/error-page.js.map +0 -1
  147. package/dist/dev/live-reload.js +0 -148
  148. package/dist/dev/live-reload.js.map +0 -1
  149. package/dist/dev/prebuild.js +0 -102
  150. package/dist/dev/prebuild.js.map +0 -1
  151. package/dist/dev/process-reaper.js +0 -151
  152. package/dist/dev/process-reaper.js.map +0 -1
  153. package/dist/dev/stack-trace.js +0 -56
  154. package/dist/dev/stack-trace.js.map +0 -1
  155. package/dist/dev/workerd-process.js +0 -118
  156. package/dist/dev/workerd-process.js.map +0 -1
  157. package/dist/dev-command.js +0 -672
  158. package/dist/dev-command.js.map +0 -1
  159. package/dist/discover-login-identity.js +0 -77
  160. package/dist/discover-login-identity.js.map +0 -1
  161. package/dist/discover-org.js +0 -62
  162. package/dist/discover-org.js.map +0 -1
  163. package/dist/git-credential.js +0 -147
  164. package/dist/git-credential.js.map +0 -1
  165. package/dist/help.js +0 -333
  166. package/dist/help.js.map +0 -1
  167. package/dist/host-catalog.js +0 -427
  168. package/dist/host-catalog.js.map +0 -1
  169. package/dist/host-config.js +0 -80
  170. package/dist/host-config.js.map +0 -1
  171. package/dist/http-error-body.js +0 -35
  172. package/dist/http-error-body.js.map +0 -1
  173. package/dist/install-hosts.js +0 -328
  174. package/dist/install-hosts.js.map +0 -1
  175. package/dist/install.js +0 -120
  176. package/dist/install.js.map +0 -1
  177. package/dist/invoke-passthrough.js +0 -60
  178. package/dist/invoke-passthrough.js.map +0 -1
  179. package/dist/local-bundle.js +0 -200
  180. package/dist/local-bundle.js.map +0 -1
  181. package/dist/local-execute-auth.js +0 -53
  182. package/dist/local-execute-auth.js.map +0 -1
  183. package/dist/local-execute.js +0 -338
  184. package/dist/local-execute.js.map +0 -1
  185. package/dist/local-gateway-fetch-forward.js +0 -135
  186. package/dist/local-gateway-fetch-forward.js.map +0 -1
  187. package/dist/local-host-runtime-surface.js +0 -75
  188. package/dist/local-host-runtime-surface.js.map +0 -1
  189. package/dist/local-package-graph.js +0 -405
  190. package/dist/local-package-graph.js.map +0 -1
  191. package/dist/local-package-run.js +0 -307
  192. package/dist/local-package-run.js.map +0 -1
  193. package/dist/local-runtime-bridge.js +0 -132
  194. package/dist/local-runtime-bridge.js.map +0 -1
  195. package/dist/local-runtime-source.js +0 -541
  196. package/dist/local-runtime-source.js.map +0 -1
  197. package/dist/login-callback-assets.js +0 -10
  198. package/dist/login-callback-assets.js.map +0 -1
  199. package/dist/login-callback-page.js +0 -362
  200. package/dist/login-callback-page.js.map +0 -1
  201. package/dist/mcp.js +0 -134
  202. package/dist/mcp.js.map +0 -1
  203. package/dist/mock/ensure-msw.js +0 -215
  204. package/dist/mock/ensure-msw.js.map +0 -1
  205. package/dist/mock/install-mock-fetch-shim.js +0 -36
  206. package/dist/mock/install-mock-fetch-shim.js.map +0 -1
  207. package/dist/mock/load-package-mocks.js +0 -136
  208. package/dist/mock/load-package-mocks.js.map +0 -1
  209. package/dist/mock/mock-fetch-gateway.js +0 -343
  210. package/dist/mock/mock-fetch-gateway.js.map +0 -1
  211. package/dist/mock/mock-gateway-fetch-shim.js +0 -104
  212. package/dist/mock/mock-gateway-fetch-shim.js.map +0 -1
  213. package/dist/mock/mock-server.js +0 -499
  214. package/dist/mock/mock-server.js.map +0 -1
  215. package/dist/mock/mock-storage.js +0 -186
  216. package/dist/mock/mock-storage.js.map +0 -1
  217. package/dist/mock/mock-supported.js +0 -63
  218. package/dist/mock/mock-supported.js.map +0 -1
  219. package/dist/mock-dep-resolve.js +0 -47
  220. package/dist/mock-dep-resolve.js.map +0 -1
  221. package/dist/mock-local-deps.js +0 -207
  222. package/dist/mock-local-deps.js.map +0 -1
  223. package/dist/network-error.js +0 -11
  224. package/dist/network-error.js.map +0 -1
  225. package/dist/node-engine.js +0 -21
  226. package/dist/node-engine.js.map +0 -1
  227. package/dist/oauth-provider.js +0 -107
  228. package/dist/oauth-provider.js.map +0 -1
  229. package/dist/onboarding-prompt.js +0 -15
  230. package/dist/onboarding-prompt.js.map +0 -1
  231. package/dist/open-api-client.js +0 -432
  232. package/dist/open-api-client.js.map +0 -1
  233. package/dist/open-url.js +0 -21
  234. package/dist/open-url.js.map +0 -1
  235. package/dist/org-resolve.js +0 -16
  236. package/dist/org-resolve.js.map +0 -1
  237. package/dist/org-slug.js +0 -11
  238. package/dist/org-slug.js.map +0 -1
  239. package/dist/org.js +0 -100
  240. package/dist/org.js.map +0 -1
  241. package/dist/package-app-dev.js +0 -905
  242. package/dist/package-app-dev.js.map +0 -1
  243. package/dist/package-collaborators.js +0 -179
  244. package/dist/package-collaborators.js.map +0 -1
  245. package/dist/package-info.js +0 -19
  246. package/dist/package-info.js.map +0 -1
  247. package/dist/package-local-runtime-source.js.map +0 -1
  248. package/dist/package-manifest.js +0 -364
  249. package/dist/package-manifest.js.map +0 -1
  250. package/dist/process-info.js +0 -14
  251. package/dist/process-info.js.map +0 -1
  252. package/dist/redact.js +0 -16
  253. package/dist/redact.js.map +0 -1
  254. package/dist/remote-execute.js +0 -108
  255. package/dist/remote-execute.js.map +0 -1
  256. package/dist/setup-git.js +0 -676
  257. package/dist/setup-git.js.map +0 -1
  258. package/dist/skill.js +0 -35
  259. package/dist/skill.js.map +0 -1
  260. package/dist/store.js +0 -597
  261. package/dist/store.js.map +0 -1
  262. package/dist/structured-error.js +0 -57
  263. package/dist/structured-error.js.map +0 -1
  264. package/dist/target.js +0 -52
  265. package/dist/target.js.map +0 -1
  266. package/dist/tool-result.js +0 -19
  267. package/dist/tool-result.js.map +0 -1
  268. package/dist/which.js +0 -22
  269. package/dist/which.js.map +0 -1
  270. package/dist/workerd-binary.js +0 -98
  271. 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
+ }