@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
@@ -1,343 +0,0 @@
1
- /**
2
- * Node-side mock outbound fetch gateway: match MSW handlers from
3
- * `.kody/mocks.ts`, optionally passthrough allowlisted hosts to real network,
4
- * otherwise fail closed with `unmocked_request` + a paste-ready handler stub.
5
- *
6
- * On `--target mock`, *every* outbound hop (ambient `fetch`, `credential().fetch`,
7
- * `createAuthenticatedFetch` / `kody.authenticatedFetch`, `kody.gatewayFetch`,
8
- * and `kody.gatewayFetchStream`) goes through this gateway. Packages without
9
- * `.kody/mocks.ts` use public-network passthrough for ambient/gatewayFetch
10
- * (authenticatedFetch still fails closed). With `.kody/mocks.ts`, unmatched
11
- * hosts fail closed with `unmocked_request`.
12
- */
13
- import { StructuredCliError } from '../structured-error.js';
14
- import { importMsw, mswPackageSpec, } from './ensure-msw.js';
15
- import { loadPackageMocks } from './load-package-mocks.js';
16
- export function parsePassthroughHosts(raw) {
17
- if (!raw?.trim())
18
- return [];
19
- return [
20
- ...new Set(raw
21
- .split(',')
22
- .map((part) => part.trim().toLowerCase())
23
- .filter(Boolean)),
24
- ];
25
- }
26
- export function createMockFetchGateway(input) {
27
- const passthroughHosts = input.passthroughHosts ?? [];
28
- const allowPrivateNetwork = input.allowPrivateNetwork === true;
29
- const passthroughAll = input.passthroughAll === true;
30
- const fetchFn = input.fetchFn ?? fetch;
31
- const mode = passthroughAll ? 'passthrough-all' : 'msw';
32
- return {
33
- enabled: !passthroughAll,
34
- mode,
35
- handlers: input.handlers,
36
- passthroughHosts,
37
- allowPrivateNetwork,
38
- handle: async (args, signal) => {
39
- const request = readGatewayRequest(args);
40
- return await dispatchMockGatewayFetch({
41
- handlers: input.handlers,
42
- passthroughHosts,
43
- allowPrivateNetwork,
44
- passthroughAll,
45
- request,
46
- fetchFn,
47
- signal,
48
- msw: input.msw,
49
- });
50
- },
51
- handleAuthenticatedFetch: async (args, signal) => {
52
- const request = readAuthenticatedFetchRequest(args);
53
- // Authenticated / OAuth hops never get a fake stub. Without an MSW
54
- // match (or explicit --passthrough host), fail closed.
55
- return await dispatchMockGatewayFetch({
56
- handlers: input.handlers,
57
- passthroughHosts,
58
- allowPrivateNetwork,
59
- passthroughAll: false,
60
- request,
61
- fetchFn,
62
- signal,
63
- msw: input.msw,
64
- });
65
- },
66
- };
67
- }
68
- export async function dispatchMockGatewayFetch(input) {
69
- const method = (input.request.method ?? 'GET').toUpperCase();
70
- const url = String(input.request.url ?? '');
71
- if (!url) {
72
- throw new StructuredCliError({
73
- code: 'unmocked_request',
74
- message: 'Mock gatewayFetch requires request.url.',
75
- target: 'mock',
76
- fix: 'Pass an absolute URL from ambient fetch.',
77
- });
78
- }
79
- let parsed;
80
- try {
81
- parsed = new URL(url);
82
- }
83
- catch {
84
- throw new StructuredCliError({
85
- code: 'unmocked_request',
86
- message: `Mock gatewayFetch URL is not absolute: ${JSON.stringify(url)}.`,
87
- target: 'mock',
88
- where: `${method} ${url}`,
89
- fix: 'Use an absolute https:// URL in package code under --target mock.',
90
- });
91
- }
92
- const passthrough = input.passthroughAll === true ||
93
- hostMatchesPassthrough(parsed.hostname, input.passthroughHosts);
94
- // MSW handlers may target private hosts without --allow-private-network.
95
- // Real network (passthrough) still requires the flag for private/local hosts.
96
- if (!passthrough && input.handlers.length > 0) {
97
- const headers = new Headers(input.request.headers ?? {});
98
- const body = input.request.bodyBase64 != null && input.request.bodyBase64 !== ''
99
- ? Buffer.from(input.request.bodyBase64, 'base64')
100
- : undefined;
101
- const requestInit = {
102
- method,
103
- headers,
104
- ...(body !== undefined && method !== 'GET' && method !== 'HEAD'
105
- ? { body }
106
- : {}),
107
- signal: input.signal,
108
- };
109
- const request = new Request(parsed.href, requestInit);
110
- const { getResponse, isPassthroughResponse } = await importMsw(input.msw);
111
- const response = await getResponse([...input.handlers], request);
112
- if (response && !isPassthroughResponse(response)) {
113
- return await serializeResponse(response);
114
- }
115
- throw unmockedRequestError(method, parsed.href);
116
- }
117
- if (passthrough) {
118
- assertOutboundAllowed(parsed, input.allowPrivateNetwork);
119
- return await realNetworkFetch({
120
- request: input.request,
121
- method,
122
- url: parsed.href,
123
- fetchFn: input.fetchFn ?? fetch,
124
- signal: input.signal,
125
- });
126
- }
127
- assertOutboundAllowed(parsed, input.allowPrivateNetwork);
128
- throw unmockedRequestError(method, parsed.href);
129
- }
130
- function readGatewayRequest(args) {
131
- const record = args && typeof args === 'object' && !Array.isArray(args)
132
- ? args
133
- : {};
134
- const nested = record.request && typeof record.request === 'object' && !Array.isArray(record.request)
135
- ? record.request
136
- : record;
137
- return {
138
- url: typeof nested.url === 'string' ? nested.url : undefined,
139
- method: typeof nested.method === 'string' ? nested.method : undefined,
140
- headers: nested.headers && typeof nested.headers === 'object' && !Array.isArray(nested.headers)
141
- ? nested.headers
142
- : undefined,
143
- bodyBase64: typeof nested.bodyBase64 === 'string' ? nested.bodyBase64 : undefined,
144
- };
145
- }
146
- function readAuthenticatedFetchRequest(args) {
147
- const record = args && typeof args === 'object' && !Array.isArray(args)
148
- ? args
149
- : {};
150
- const nested = record.request && typeof record.request === 'object' && !Array.isArray(record.request)
151
- ? record.request
152
- : record;
153
- return {
154
- url: typeof nested.url === 'string' ? nested.url : undefined,
155
- method: typeof nested.method === 'string' ? nested.method : undefined,
156
- headers: nested.headers && typeof nested.headers === 'object' && !Array.isArray(nested.headers)
157
- ? nested.headers
158
- : undefined,
159
- bodyBase64: typeof nested.bodyBase64 === 'string' ? nested.bodyBase64 : undefined,
160
- };
161
- }
162
- export function hostMatchesPassthrough(hostname, hosts) {
163
- const target = hostname.toLowerCase();
164
- return hosts.some((entry) => {
165
- const normalized = entry.trim().toLowerCase();
166
- if (!normalized)
167
- return false;
168
- if (normalized.startsWith('*.')) {
169
- const suffix = normalized.slice(1);
170
- return target.endsWith(suffix) && target.length > suffix.length;
171
- }
172
- return target === normalized;
173
- });
174
- }
175
- /** Refuse private/local hosts unless `--allow-private-network` (clear error). */
176
- export function assertOutboundAllowed(url, allowPrivateNetwork) {
177
- if (allowPrivateNetwork)
178
- return;
179
- if (url.protocol !== 'http:' && url.protocol !== 'https:') {
180
- throw new StructuredCliError({
181
- code: 'unmocked_request',
182
- message: `Mock outbound fetch refused for non-http(s) URL ${url.href}.`,
183
- target: 'mock',
184
- where: url.href,
185
- fix: 'Use http(s) URLs, or mock this request in .kody/mocks.ts.',
186
- });
187
- }
188
- if (isPrivateOrLocalHost(url.hostname)) {
189
- throw new StructuredCliError({
190
- code: 'unmocked_request',
191
- message: `Blocked private/local fetch to ${JSON.stringify(url.hostname)} under --target mock.`,
192
- target: 'mock',
193
- where: url.href,
194
- fix: 'Pass --allow-private-network, or mock this host in .kody/mocks.ts instead of hitting the private network.',
195
- });
196
- }
197
- }
198
- export function isPrivateOrLocalHost(hostname) {
199
- const host = hostname.toLowerCase();
200
- return (host === 'localhost' ||
201
- host === '127.0.0.1' ||
202
- host === '::1' ||
203
- host === '[::1]' ||
204
- host.endsWith('.local') ||
205
- /^10\./.test(host) ||
206
- /^192\.168\./.test(host) ||
207
- /^172\.(1[6-9]|2\d|3[0-1])\./.test(host));
208
- }
209
- async function realNetworkFetch(input) {
210
- const headers = new Headers(input.request.headers ?? {});
211
- // Credentials stay fake on mock — never forward opaque credential handles
212
- // or Authorization that would look like a real secret placement.
213
- headers.delete('x-kody-credential-client');
214
- const body = input.request.bodyBase64 != null && input.request.bodyBase64 !== ''
215
- ? Buffer.from(input.request.bodyBase64, 'base64')
216
- : undefined;
217
- const response = await input.fetchFn(input.url, {
218
- method: input.method,
219
- headers,
220
- ...(body !== undefined && input.method !== 'GET' && input.method !== 'HEAD'
221
- ? { body }
222
- : {}),
223
- signal: input.signal,
224
- redirect: 'manual',
225
- });
226
- return await serializeResponse(response);
227
- }
228
- async function serializeResponse(response) {
229
- const bytes = new Uint8Array(await response.arrayBuffer());
230
- return {
231
- status: response.status,
232
- statusText: response.statusText,
233
- headers: Object.fromEntries(response.headers.entries()),
234
- bodyBase64: Buffer.from(bytes).toString('base64'),
235
- };
236
- }
237
- export function unmockedRequestError(method, url) {
238
- const stub = buildHandlerStub(method, url);
239
- const handlerLine = buildHandlerLine(method, url);
240
- return new StructuredCliError({
241
- code: 'unmocked_request',
242
- message: `Unmocked ${method} ${url} under --target mock.`,
243
- target: 'mock',
244
- where: `${method} ${url}`,
245
- fix: `Create or edit .kody/mocks.ts in the package root (next to package.json), ` +
246
- `or pass --passthrough ${safeHost(url)} for real network without secrets.\n\n` +
247
- `Ready-to-paste .kody/mocks.ts:\n\n${stub}\n\n` +
248
- `Or append this handler to an existing handlers array:\n\n${handlerLine}`,
249
- details: { method, url, handlerStub: stub, handlerLine, mocksPath: '.kody/mocks.ts' },
250
- });
251
- }
252
- /** Single MSW handler line for pasting into an existing `handlers` array. */
253
- export function buildHandlerLine(method, url) {
254
- const httpMethod = httpMethodForStub(method);
255
- return (` http.${httpMethod}(${JSON.stringify(url)}, () =>\n` +
256
- ` HttpResponse.json({ /* TODO */ }, { status: 200 }),\n` +
257
- ` ),`);
258
- }
259
- export function buildHandlerStub(method, url) {
260
- const httpMethod = httpMethodForStub(method);
261
- return [
262
- `import { http, HttpResponse } from 'msw'`,
263
- ``,
264
- `export const handlers = [`,
265
- ` http.${httpMethod}(${JSON.stringify(url)}, () =>`,
266
- ` HttpResponse.json({ /* TODO */ }, { status: 200 }),`,
267
- ` ),`,
268
- `]`,
269
- ].join('\n');
270
- }
271
- function httpMethodForStub(method) {
272
- const verb = method.toLowerCase();
273
- return ['get', 'post', 'put', 'patch', 'delete', 'options', 'head'].includes(verb)
274
- ? verb
275
- : 'all';
276
- }
277
- function safeHost(url) {
278
- try {
279
- return new URL(url).hostname;
280
- }
281
- catch {
282
- return 'example.com';
283
- }
284
- }
285
- /**
286
- * Bridge interceptor: handle `kody.gatewayFetch`, `kody.gatewayFetchStream`,
287
- * and `kody.authenticatedFetch` when a mock gateway is active (always on
288
- * `--target mock`). Stream hops buffer through the same MSW path.
289
- */
290
- export function tryHandleMockGatewayFetchCall(input) {
291
- if (!input.gateway)
292
- return null;
293
- const pathKey = input.path.join('.');
294
- if (pathKey === 'kody.gatewayFetch' || pathKey === 'kody.gatewayFetchStream') {
295
- return input.gateway.handle(input.args[0], input.signal);
296
- }
297
- if (pathKey === 'kody.authenticatedFetch') {
298
- return input.gateway.handleAuthenticatedFetch(input.args[0], input.signal);
299
- }
300
- return null;
301
- }
302
- /**
303
- * Always build a mock fetch gateway for `--target mock`.
304
- * With `.kody/mocks.ts`: MSW fail-closed (+ `--passthrough`).
305
- * Without: public-network passthrough for ambient/gatewayFetch; authenticatedFetch
306
- * still fails closed (no placeholder stubs).
307
- */
308
- export async function resolveMockFetchGateway(input) {
309
- if (input.target !== 'mock')
310
- return undefined;
311
- const msw = {
312
- ...input.msw,
313
- onInstall: (spec) => {
314
- input.onStatus?.(`Installing ${spec} for --target mock…`);
315
- input.msw?.onInstall?.(spec);
316
- },
317
- };
318
- const loaded = input.packageRoot
319
- ? await loadPackageMocks(input.packageRoot, msw)
320
- : null;
321
- if (loaded) {
322
- input.onStatus?.(`Loaded ${loaded.handlers.length} MSW handler${loaded.handlers.length === 1 ? '' : 's'} from .kody/mocks.ts (outbound fetch fail-closed on mock).`);
323
- return createMockFetchGateway({
324
- handlers: loaded.handlers,
325
- passthroughHosts: input.passthroughHosts,
326
- allowPrivateNetwork: input.allowPrivateNetwork,
327
- passthroughAll: false,
328
- msw,
329
- });
330
- }
331
- if (input.passthroughHosts?.length) {
332
- input.onStatus?.(`No .kody/mocks.ts — --passthrough hosts are unused until you add MSW handlers (ambient fetch uses public-network passthrough on mock).`);
333
- }
334
- return createMockFetchGateway({
335
- handlers: [],
336
- passthroughHosts: input.passthroughHosts,
337
- allowPrivateNetwork: input.allowPrivateNetwork,
338
- passthroughAll: true,
339
- });
340
- }
341
- /** Exported for tests / docs that mention the on-demand pin. */
342
- export { mswPackageSpec };
343
- //# sourceMappingURL=mock-fetch-gateway.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-fetch-gateway.js","sourceRoot":"","sources":["../../src/mock/mock-fetch-gateway.ts"],"names":[],"mappings":"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"}
@@ -1,104 +0,0 @@
1
- /**
2
- * Mock-only workerd side-effect module (flat name
3
- * `.__kody_mock_gateway_fetch__.js` — see install-mock-fetch-shim.ts).
4
- * Wraps ambient `fetch` so every outbound request hops through the Node bridge
5
- * as `kody.gatewayFetch` (MSW matching / passthrough / unmocked_request).
6
- * Origin's `.__kody_virtual__/runtime.js` stays for CAF / packageStorage.
7
- */
8
- import { localWorkerModuleNames } from '../local-runtime-source.js';
9
- /**
10
- * Source for the CLI-owned mock gateway-fetch shim. Side-effect imported before
11
- * user code; fetch calls happen after `__kodyInstallLocalBridge`.
12
- *
13
- * Registered under a flat module name so bare `"kody:runtime"` resolves to the
14
- * host module (path-like names like `.__kody_virtual__/runtime.js` path-join).
15
- */
16
- export function createMockGatewayFetchShimSource() {
17
- return `
18
- import { kody } from ${JSON.stringify(localWorkerModuleNames.runtime)};
19
-
20
- const __kodyNativeFetch = globalThis.fetch.bind(globalThis);
21
- const __kodyNullBodyStatuses = new Set([101, 103, 204, 205, 304]);
22
-
23
- function __kodyBytesToBase64(bytes) {
24
- let binary = '';
25
- for (let i = 0; i < bytes.length; i++) binary += String.fromCharCode(bytes[i]);
26
- return btoa(binary);
27
- }
28
-
29
- function __kodyBase64ToBytes(value) {
30
- const binary = atob(String(value ?? ''));
31
- const bytes = new Uint8Array(binary.length);
32
- for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);
33
- return bytes;
34
- }
35
-
36
- async function __kodyBodyToBytes(body) {
37
- if (body == null) return null;
38
- if (typeof body === 'string') return new TextEncoder().encode(body);
39
- if (body instanceof Uint8Array) return body;
40
- if (body instanceof ArrayBuffer) return new Uint8Array(body);
41
- if (ArrayBuffer.isView(body)) {
42
- return new Uint8Array(body.buffer, body.byteOffset, body.byteLength);
43
- }
44
- if (typeof Blob !== 'undefined' && body instanceof Blob) {
45
- return new Uint8Array(await body.arrayBuffer());
46
- }
47
- if (typeof URLSearchParams !== 'undefined' && body instanceof URLSearchParams) {
48
- return new TextEncoder().encode(body.toString());
49
- }
50
- if (body && typeof body.getReader === 'function') {
51
- return new Uint8Array(await new Response(body).arrayBuffer());
52
- }
53
- if (typeof FormData !== 'undefined' && body instanceof FormData) {
54
- throw new Error(
55
- 'Mock fetch gateway does not support FormData bodies yet; use Uint8Array, Blob, or string.',
56
- );
57
- }
58
- throw new Error('Mock fetch gateway could not serialize the request body.');
59
- }
60
-
61
- globalThis.fetch = async (input, init) => {
62
- let url;
63
- let method = 'GET';
64
- let headers = {};
65
- let bodyBytes = null;
66
- if (typeof input === 'string' || input instanceof URL) {
67
- url = String(input);
68
- method = String(init?.method ?? 'GET');
69
- headers = Object.fromEntries(new Headers(init?.headers).entries());
70
- if (init?.body != null) bodyBytes = await __kodyBodyToBytes(init.body);
71
- } else {
72
- const merged = new Request(input, init);
73
- url = merged.url;
74
- method = merged.method;
75
- headers = Object.fromEntries(merged.headers.entries());
76
- if (method !== 'GET' && method !== 'HEAD') {
77
- bodyBytes = new Uint8Array(await merged.arrayBuffer());
78
- }
79
- }
80
- const result = await kody.gatewayFetch({
81
- request: {
82
- url,
83
- method,
84
- headers,
85
- ...(bodyBytes != null ? { bodyBase64: __kodyBytesToBase64(bodyBytes) } : {}),
86
- },
87
- });
88
- const bytes = __kodyBase64ToBytes(result.bodyBase64 ?? '');
89
- return new Response(
90
- __kodyNullBodyStatuses.has(result.status) ? null : bytes,
91
- {
92
- status: result.status,
93
- statusText: result.statusText ?? '',
94
- headers: result.headers ?? {},
95
- },
96
- );
97
- };
98
-
99
- // Retain a reference so workerd keeps the binding available for debugging.
100
- void __kodyNativeFetch;
101
- export {};
102
- `.trimStart();
103
- }
104
- //# sourceMappingURL=mock-gateway-fetch-shim.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-gateway-fetch-shim.js","sourceRoot":"","sources":["../../src/mock/mock-gateway-fetch-shim.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAEnE;;;;;;GAMG;AACH,MAAM,UAAU,gCAAgC;IAC/C,OAAO;uBACe,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoFpE,CAAC,SAAS,EAAE,CAAA;AACb,CAAC"}