@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
@@ -1,527 +0,0 @@
1
- import { Readable } from 'node:stream';
2
- import { capabilityProxyForbiddenMessage, currentStoredTokenLifetimeAlias, featureDisabledMessage, insufficientScopeMessage, readInsufficientScopeDetails, isScopedApiToken, rejectedOauthBearerMessage, } from './api-token.js';
3
- import { formatCredentialClientError, } from './credential-call-map.js';
4
- import { apiTokenEnvVar, cliName } from './defaults.js';
5
- import { describeNetworkError } from './network-error.js';
6
- import { readPackageVersion } from './package-info.js';
7
- /**
8
- * HTTP contract for Kody's CapabilityProxy (Open API `/v1`). Local execute
9
- * runs user code in workerd and forwards every `kody:runtime` call here with
10
- * a Bearer from `--token` / `KODY_API_TOKEN` or (when unset) `kody login`
11
- * OAuth access token.
12
- *
13
- * - `GET /v1/capability-proxy/session` validates the token up front for
14
- * token-only cloud execute (and local `--credential` feature detection).
15
- * 200 → `{ scopes?: string[], expiresAt?: string, features?: string[] }`.
16
- * Ordinary local execute skips it: `POST /v1/local-execute/package-graph`
17
- * runs the same authentication and `org:execute` authorization and is needed
18
- * anyway.
19
- * - `POST /v1/capability-proxy/call` with
20
- * `{ path, args, conversationId?, credentials? }` where `path` is the runtime
21
- * property path (`['kody', 'emailSend']`, `['kody', 'mcp', server, tool]`,
22
- * `['workflows', 'create']`) and `args` is the positional argument list.
23
- * `credentials` is the ADR 0068 call map (CLI `--credential`); local code
24
- * controls only `args`, so it cannot pick by name. 200 → `{ result }`.
25
- *
26
- * Errors use `{ error: { code, message } }` (a bare string is accepted too).
27
- * 401 means the token is expired/revoked (or MCP OAuth until the platform
28
- * accepts it); 403 `feature_disabled` means the `local-execute` flag is off.
29
- */
30
- export const capabilityProxySessionPath = 'v1/capability-proxy/session';
31
- export const capabilityProxyCallPath = 'v1/capability-proxy/call';
32
- /** Streaming ambient/secret fetch hop (raw body; not JSON `/call`). */
33
- export const capabilityProxyGatewayFetchPath = 'v1/capability-proxy/gateway-fetch';
34
- /** Allowlisted metadata headers for {@link capabilityProxyGatewayFetchPath}. */
35
- export const gatewayFetchUrlHeaderName = 'X-Kody-Gateway-Url';
36
- export const gatewayFetchMethodHeaderName = 'X-Kody-Gateway-Method';
37
- export const gatewayFetchPackageIdHeaderName = 'X-Kody-Gateway-Package-Id';
38
- export const gatewayFetchHeadersHeaderName = 'X-Kody-Gateway-Headers';
39
- export const secretResolutionHeaderName = 'x-kody-secret-resolution';
40
- /**
41
- * Origin runs a placeholder `fetch` under a 5-minute deadline that starts only
42
- * after quota checks and placeholder fill, buffers the whole upstream body,
43
- * and sends headers once that body has ended. Node's global fetch gives up
44
- * after 300s without headers and that limit cannot be raised without the
45
- * undici package, so CapabilityProxy requests go through Node's own HTTP
46
- * client (`node:http` / `node:https`) with an idle timeout that outlasts the
47
- * deadline plus origin overhead.
48
- */
49
- export const capabilityProxyGatewayDeadlineMs = 5 * 60_000;
50
- export const capabilityProxyHttpTimeoutMs = 7 * 60_000;
51
- /** Bound DNS / TCP / TLS before the idle timer (undici Agent default was 10s). */
52
- export const capabilityProxyConnectTimeoutMs = 10_000;
53
- /**
54
- * Node routes global fetch through `HTTP_PROXY` / `HTTPS_PROXY` / `NO_PROXY`
55
- * only when `NODE_USE_ENV_PROXY=1` or `--use-env-proxy` is set. The
56
- * CapabilityProxy agents mirror the same opt-in through the Agent `proxyEnv`
57
- * option.
58
- */
59
- export function nodeUsesEnvProxy(env = process.env, execArgv = process.execArgv) {
60
- if (env.NODE_USE_ENV_PROXY === '1')
61
- return true;
62
- const flags = [...execArgv, ...(env.NODE_OPTIONS ?? '').split(/\s+/)];
63
- return flags.includes('--use-env-proxy');
64
- }
65
- /** `http.Agent({ proxyEnv })` exists from these releases; older Node ignores the option. */
66
- const envProxyAgentMinimumNode = { 22: 21, 24: 5 };
67
- export function nodeAgentHonorsEnvProxy(version = process.versions.node) {
68
- const [major = 0, minor = 0] = version.split('.').map(Number);
69
- const minimumMinor = envProxyAgentMinimumNode[major];
70
- if (minimumMinor === undefined)
71
- return major > 24;
72
- return minor >= minimumMinor;
73
- }
74
- /**
75
- * fetch-shaped sender for CapabilityProxy built on `node:http(s)`: keep-alive
76
- * across the session, package-graph and proxied calls, `timeoutMs` as the
77
- * only idle limit, and `HTTP_PROXY` / `HTTPS_PROXY` / `NO_PROXY` when Node's
78
- * env-proxy opt-in is set. Bodies are strings; responses are buffered.
79
- */
80
- export function createCapabilityProxyFetch(options = {}) {
81
- const timeoutMs = options.timeoutMs ?? capabilityProxyHttpTimeoutMs;
82
- const connectTimeoutMs = options.connectTimeoutMs ?? capabilityProxyConnectTimeoutMs;
83
- const useEnvProxy = options.useEnvProxy ?? nodeUsesEnvProxy();
84
- if (useEnvProxy && !nodeAgentHonorsEnvProxy()) {
85
- throw new Error(`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.`);
86
- }
87
- let transports = null;
88
- return async (input, init = {}) => {
89
- const url = input instanceof URL ? input : new URL(input instanceof Request ? input.url : input);
90
- // node:http and node:https cost ~7ms to load, so only commands that send a request pay for it.
91
- transports ??= loadTransports(useEnvProxy);
92
- const transport = (await transports)[url.protocol];
93
- if (!transport) {
94
- throw new TypeError(`Unsupported protocol for the Kody API: ${url.protocol}`);
95
- }
96
- const body = init.body;
97
- if (body !== undefined && body !== null && typeof body !== 'string') {
98
- throw new TypeError('CapabilityProxy requests send string bodies.');
99
- }
100
- return new Promise((resolve, reject) => {
101
- const request = transport.request(url, {
102
- agent: transport.agent,
103
- method: init.method ?? 'GET',
104
- headers: Object.fromEntries(new Headers(init.headers)),
105
- }, (response) => {
106
- clearTimeout(connectTimer);
107
- const chunks = [];
108
- response.on('data', (chunk) => chunks.push(chunk));
109
- response.on('error', reject);
110
- response.on('end', () => resolve(toResponse(response, Buffer.concat(chunks))));
111
- });
112
- // request.setTimeout only arms after the socket is connected; bound DNS/TCP/TLS separately.
113
- const connectTimer = setTimeout(() => {
114
- request.destroy(new Error(`Kody API did not connect within ${connectTimeoutMs}ms (${url.pathname}).`));
115
- }, connectTimeoutMs);
116
- request.on('socket', (socket) => {
117
- const clearConnectTimer = () => clearTimeout(connectTimer);
118
- if (url.protocol === 'https:') {
119
- // `encrypted` is always true on TLSSocket; secureConnecting is the
120
- // handshake flag (not always in @types/node). Keep-alive reuse skips
121
- // secureConnect.
122
- if (tlsHandshakePending(socket) === false) {
123
- clearConnectTimer();
124
- return;
125
- }
126
- socket.once('secureConnect', clearConnectTimer);
127
- return;
128
- }
129
- if (!socket.connecting) {
130
- clearConnectTimer();
131
- return;
132
- }
133
- socket.once('connect', clearConnectTimer);
134
- });
135
- request.setTimeout(timeoutMs, () => request.destroy(new Error(`Kody API sent nothing for ${timeoutMs}ms (${url.pathname}).`)));
136
- request.on('error', (error) => {
137
- clearTimeout(connectTimer);
138
- reject(error);
139
- });
140
- const { signal } = init;
141
- if (signal) {
142
- const abort = () => {
143
- clearTimeout(connectTimer);
144
- request.destroy(abortError(signal.reason));
145
- };
146
- if (signal.aborted) {
147
- abort();
148
- }
149
- else {
150
- signal.addEventListener('abort', abort, { once: true });
151
- request.once('close', () => signal.removeEventListener('abort', abort));
152
- }
153
- }
154
- request.end(body ?? undefined);
155
- });
156
- };
157
- }
158
- async function loadTransports(useEnvProxy) {
159
- const [http, https] = await Promise.all([import('node:http'), import('node:https')]);
160
- const agentOptions = { keepAlive: true, ...(useEnvProxy ? { proxyEnv: process.env } : {}) };
161
- return {
162
- 'http:': { agent: unrefFreeSockets(new http.Agent(agentOptions)), request: http.request },
163
- 'https:': { agent: unrefFreeSockets(new https.Agent(agentOptions)), request: https.request },
164
- };
165
- }
166
- /** Keep-alive free sockets must not pin the event loop after the last request. */
167
- function unrefFreeSockets(agent) {
168
- agent.on('free', (socket) => {
169
- socket.unref();
170
- });
171
- return agent;
172
- }
173
- /** `true` while TLS handshake is in progress; `false` once established; else unknown. */
174
- function tlsHandshakePending(socket) {
175
- if (!('secureConnecting' in socket))
176
- return null;
177
- return socket.secureConnecting;
178
- }
179
- function abortError(reason) {
180
- if (reason instanceof Error)
181
- return reason;
182
- return new DOMException(typeof reason === 'string' ? reason : 'This operation was aborted', 'AbortError');
183
- }
184
- function toResponse(response, body) {
185
- const headers = new Headers();
186
- for (const [name, value] of Object.entries(response.headers)) {
187
- if (Array.isArray(value)) {
188
- for (const entry of value)
189
- headers.append(name, entry);
190
- }
191
- else if (value !== undefined) {
192
- headers.set(name, value);
193
- }
194
- }
195
- const status = response.statusCode ?? 0;
196
- const bodyless = status === 204 || status === 205 || status === 304;
197
- return new Response(bodyless ? null : body, {
198
- status,
199
- statusText: response.statusMessage ?? '',
200
- headers,
201
- });
202
- }
203
- let defaultCapabilityProxyFetch = null;
204
- function capabilityProxyFetch() {
205
- defaultCapabilityProxyFetch ??= createCapabilityProxyFetch();
206
- return defaultCapabilityProxyFetch;
207
- }
208
- export class CapabilityProxyError extends Error {
209
- status;
210
- code;
211
- constructor(message, options = {}) {
212
- super(message);
213
- this.name = 'CapabilityProxyError';
214
- this.status = options.status ?? null;
215
- this.code = options.code ?? null;
216
- }
217
- }
218
- const loopbackHosts = new Set(['localhost', '127.0.0.1', '[::1]']);
219
- /** The bearer token must not cross the network in cleartext. */
220
- export function assertTokenSafeApiUrl(apiUrl) {
221
- let url;
222
- try {
223
- url = new URL(apiUrl);
224
- }
225
- catch {
226
- throw new Error(`Invalid Kody API URL: ${apiUrl}`);
227
- }
228
- if (url.protocol === 'https:')
229
- return;
230
- if (url.protocol === 'http:' && loopbackHosts.has(url.hostname))
231
- return;
232
- throw new Error(`Refusing to send the API token to ${url.origin}: use https (plain http is only allowed for localhost).`);
233
- }
234
- export function capabilityProxyUrl(apiUrl, path) {
235
- const base = apiUrl.endsWith('/') ? apiUrl : `${apiUrl}/`;
236
- return new URL(path, base);
237
- }
238
- /** Attach `?org=` for user-owned tokens without clobbering other query params. */
239
- export function withOrgQuery(url, org) {
240
- if (org)
241
- url.searchParams.set('org', org);
242
- return url;
243
- }
244
- export async function openCapabilityProxySession(input) {
245
- const url = withOrgQuery(capabilityProxyUrl(input.apiUrl, capabilityProxySessionPath), input.org);
246
- const response = await send(input, url, { method: 'GET' });
247
- const body = await readJson(response);
248
- if (!response.ok) {
249
- throw describeFailure(response.status, body, url, 'session', input.token);
250
- }
251
- const record = isRecord(body) ? body : {};
252
- return {
253
- scopes: Array.isArray(record.scopes)
254
- ? record.scopes.filter((scope) => typeof scope === 'string')
255
- : [],
256
- expiresAt: typeof record.expiresAt === 'string' ? record.expiresAt : null,
257
- features: Array.isArray(record.features)
258
- ? record.features.filter((feature) => typeof feature === 'string')
259
- : [],
260
- };
261
- }
262
- export async function callCapabilityProxy(input) {
263
- const url = withOrgQuery(capabilityProxyUrl(input.apiUrl, capabilityProxyCallPath), input.org);
264
- const payload = { path: input.path, args: input.args };
265
- if (input.conversationId !== undefined)
266
- payload.conversationId = input.conversationId;
267
- if (input.credentials !== undefined)
268
- payload.credentials = input.credentials;
269
- const response = await send(input, url, {
270
- method: 'POST',
271
- headers: { 'content-type': 'application/json' },
272
- body: JSON.stringify(payload),
273
- });
274
- const body = await readJson(response);
275
- if (!response.ok) {
276
- throw describeFailure(response.status, body, url, 'call', input.token);
277
- }
278
- const failure = readErrorBody(body);
279
- if (failure) {
280
- throw new CapabilityProxyError(failure.message, { status: response.status, code: failure.code });
281
- }
282
- return isRecord(body) ? body.result : undefined;
283
- }
284
- /**
285
- * Streaming CapabilityProxy hop: `POST /v1/capability-proxy/gateway-fetch`.
286
- * The Open API body is the outbound fetch body (no JSON/base64 wrapper).
287
- * Returns the upstream `Response` (or an Open API JSON error envelope).
288
- *
289
- * Uses Node `http(s)` so duplex streaming works with the same 7-minute idle
290
- * timeout as JSON CapabilityProxy calls (undici's global fetch caps at 300s).
291
- */
292
- export async function callCapabilityProxyGatewayFetchStream(input) {
293
- assertTokenSafeApiUrl(input.apiUrl);
294
- const url = withOrgQuery(capabilityProxyUrl(input.apiUrl, capabilityProxyGatewayFetchPath), input.org);
295
- const timeoutMs = capabilityProxyHttpTimeoutMs;
296
- const connectTimeoutMs = capabilityProxyConnectTimeoutMs;
297
- const useEnvProxy = nodeUsesEnvProxy();
298
- if (useEnvProxy && !nodeAgentHonorsEnvProxy()) {
299
- throw new Error(`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.`);
300
- }
301
- const transports = await loadTransports(useEnvProxy);
302
- const transport = transports[url.protocol];
303
- if (!transport) {
304
- throw new TypeError(`Unsupported protocol for the Kody API: ${url.protocol}`);
305
- }
306
- const headers = {
307
- accept: '*/*',
308
- authorization: `Bearer ${input.token}`,
309
- 'user-agent': `${cliName}/${readPackageVersion()}`,
310
- [gatewayFetchUrlHeaderName]: input.gateway.url,
311
- };
312
- if (input.gateway.method) {
313
- headers[gatewayFetchMethodHeaderName] = input.gateway.method;
314
- }
315
- if (input.gateway.packageId) {
316
- headers[gatewayFetchPackageIdHeaderName] = input.gateway.packageId;
317
- }
318
- if (input.gateway.headers && Object.keys(input.gateway.headers).length > 0) {
319
- headers[gatewayFetchHeadersHeaderName] = JSON.stringify(input.gateway.headers);
320
- }
321
- if (input.gateway.secretResolution) {
322
- headers[secretResolutionHeaderName] = input.gateway.secretResolution;
323
- }
324
- if (input.gateway.contentType) {
325
- headers['content-type'] = input.gateway.contentType;
326
- }
327
- if (input.contentLength) {
328
- headers['content-length'] = input.contentLength;
329
- }
330
- const signal = input.signal;
331
- return await new Promise((resolve, reject) => {
332
- const request = transport.request(url, {
333
- agent: transport.agent,
334
- method: 'POST',
335
- headers,
336
- }, (response) => {
337
- clearTimeout(connectTimer);
338
- resolve(nodeIncomingToWebResponse(response));
339
- });
340
- const connectTimer = setTimeout(() => {
341
- request.destroy(new Error(`Kody API did not connect within ${connectTimeoutMs}ms (${url.pathname}).`));
342
- }, connectTimeoutMs);
343
- request.on('socket', (socket) => {
344
- const clearConnectTimer = () => clearTimeout(connectTimer);
345
- if (url.protocol === 'https:') {
346
- if (tlsHandshakePending(socket) === false) {
347
- clearConnectTimer();
348
- return;
349
- }
350
- socket.once('secureConnect', clearConnectTimer);
351
- return;
352
- }
353
- if (!socket.connecting) {
354
- clearConnectTimer();
355
- return;
356
- }
357
- socket.once('connect', clearConnectTimer);
358
- });
359
- request.setTimeout(timeoutMs, () => request.destroy(new Error(`Kody API sent nothing for ${timeoutMs}ms (${url.pathname}).`)));
360
- request.on('error', (error) => {
361
- clearTimeout(connectTimer);
362
- reject(error instanceof CapabilityProxyError
363
- ? error
364
- : new CapabilityProxyError(`Could not reach the Kody API at ${url.origin} (${describeNetworkError(error)}). Check --api-url / KODY_API_URL and your network.`));
365
- });
366
- if (signal) {
367
- const abort = () => {
368
- clearTimeout(connectTimer);
369
- request.destroy(abortError(signal.reason));
370
- };
371
- if (signal.aborted) {
372
- abort();
373
- }
374
- else {
375
- signal.addEventListener('abort', abort, { once: true });
376
- request.once('close', () => signal.removeEventListener('abort', abort));
377
- }
378
- }
379
- if (input.body) {
380
- input.body.pipe(request);
381
- input.body.on('error', (error) => {
382
- clearTimeout(connectTimer);
383
- request.destroy(error);
384
- });
385
- }
386
- else {
387
- request.end();
388
- }
389
- });
390
- }
391
- /** Convert a Node response into a streaming Web `Response`. */
392
- export function nodeIncomingToWebResponse(response) {
393
- const headers = new Headers();
394
- for (const [name, value] of Object.entries(response.headers)) {
395
- if (Array.isArray(value)) {
396
- for (const entry of value)
397
- headers.append(name, entry);
398
- }
399
- else if (value !== undefined) {
400
- headers.set(name, value);
401
- }
402
- }
403
- const status = response.statusCode ?? 0;
404
- const bodyless = status === 101 || status === 103 || status === 204 || status === 205 || status === 304;
405
- if (bodyless) {
406
- response.resume();
407
- return new Response(null, {
408
- status,
409
- statusText: response.statusMessage ?? '',
410
- headers,
411
- });
412
- }
413
- return new Response(Readable.toWeb(response), {
414
- status,
415
- statusText: response.statusMessage ?? '',
416
- headers,
417
- });
418
- }
419
- /**
420
- * Preflight ADR 0068 call-map picks via `kody.credentialClientCheck` before
421
- * local code runs. Throws on a structured check failure; returns warnings for
422
- * ad hoc (non-strict) unknown keys.
423
- */
424
- export async function checkCredentialCallMap(input) {
425
- const args = {};
426
- if (input.strict === true)
427
- args.strict = true;
428
- if (input.packageId !== undefined)
429
- args.packageId = input.packageId;
430
- const result = await callCapabilityProxy({
431
- apiUrl: input.apiUrl,
432
- token: input.token,
433
- fetchFn: input.fetchFn,
434
- signal: input.signal,
435
- path: ['kody', 'credentialClientCheck'],
436
- args: [args],
437
- conversationId: input.conversationId,
438
- credentials: input.credentials,
439
- });
440
- if (!isRecord(result)) {
441
- throw new CapabilityProxyError('credentialClientCheck returned an unexpected result.');
442
- }
443
- if (result.ok === false) {
444
- const error = isRecord(result.error) ? result.error : {};
445
- const code = typeof error.code === 'string' ? error.code : 'credential_error';
446
- throw new CapabilityProxyError(formatCredentialClientError(error), { code });
447
- }
448
- const value = isRecord(result.value) ? result.value : null;
449
- const warnings = Array.isArray(value?.warnings)
450
- ? value.warnings.filter((warning) => typeof warning === 'string')
451
- : [];
452
- return { warnings };
453
- }
454
- async function send(input, url, init) {
455
- const fetchFn = input.fetchFn ?? capabilityProxyFetch();
456
- try {
457
- return await fetchFn(url, {
458
- ...init,
459
- signal: input.signal,
460
- headers: {
461
- ...init.headers,
462
- accept: 'application/json',
463
- authorization: `Bearer ${input.token}`,
464
- 'user-agent': `${cliName}/${readPackageVersion()}`,
465
- },
466
- });
467
- }
468
- catch (error) {
469
- const reason = describeNetworkError(error);
470
- throw new CapabilityProxyError(`Could not reach the Kody API at ${url.origin} (${reason}). Check --api-url / KODY_API_URL and your network.`);
471
- }
472
- }
473
- async function readJson(response) {
474
- const text = await response.text();
475
- if (!text)
476
- return null;
477
- try {
478
- return JSON.parse(text);
479
- }
480
- catch {
481
- return text;
482
- }
483
- }
484
- function readErrorBody(body) {
485
- if (!isRecord(body) || body.error == null)
486
- return null;
487
- const { error } = body;
488
- if (typeof error === 'string')
489
- return { code: null, message: error };
490
- if (isRecord(error)) {
491
- const code = typeof error.code === 'string' ? error.code : null;
492
- const message = typeof error.message === 'string' ? error.message : code ?? JSON.stringify(error);
493
- return { code, message };
494
- }
495
- return { code: null, message: String(error) };
496
- }
497
- function describeFailure(status, body, url, stage, token) {
498
- const failure = readErrorBody(body);
499
- const code = failure?.code ?? null;
500
- const detail = failure?.message ? ` Server said: ${failure.message}` : '';
501
- if (status === 401) {
502
- const message = isScopedApiToken(token)
503
- ? `Kody rejected the API token (expired, revoked, or malformed). Mint a fresh scoped token and pass it with --token or ${apiTokenEnvVar}.${detail}`
504
- : `${rejectedOauthBearerMessage()}${detail}`;
505
- return new CapabilityProxyError(message, { status, code });
506
- }
507
- if (code === 'feature_disabled') {
508
- return new CapabilityProxyError(`${featureDisabledMessage()}${detail}`, { status, code });
509
- }
510
- if (code === 'insufficient_scope') {
511
- return new CapabilityProxyError(`${insufficientScopeMessage({
512
- ...readInsufficientScopeDetails(body),
513
- currentLifetime: currentStoredTokenLifetimeAlias(url.origin),
514
- })}${detail}`, { status, code });
515
- }
516
- if (status === 403 && stage === 'session') {
517
- return new CapabilityProxyError(capabilityProxyForbiddenMessage({ code, serverMessage: failure?.message }), { status, code });
518
- }
519
- if (status === 404 && stage === 'session') {
520
- return new CapabilityProxyError(`CapabilityProxy was not found at ${url.href}. Local execute may not be deployed on this Kody API yet; check --api-url / KODY_API_URL.`, { status, code });
521
- }
522
- return new CapabilityProxyError(failure?.message ?? `Kody API request failed with HTTP ${status} (${url.pathname}).`, { status, code });
523
- }
524
- function isRecord(value) {
525
- return value !== null && typeof value === 'object' && !Array.isArray(value);
526
- }
527
- //# sourceMappingURL=capability-proxy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"capability-proxy.js","sourceRoot":"","sources":["../src/capability-proxy.ts"],"names":[],"mappings":"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"}