@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,541 +0,0 @@
1
- /**
2
- * Sources for the workerd process behind `execute --local`. User code sees the
3
- * same `kody:runtime` surface as ad hoc cloud execute; every call becomes a
4
- * `{ path, args }` hop to the CLI's loopback bridge, which adds the API token
5
- * and forwards it to CapabilityProxy. The token never enters workerd.
6
- *
7
- * Stamped `kody:@…` packages also receive a package-graph CapabilityProxy shim
8
- * from origin. This host module still binds createAuthenticatedFetch /
9
- * secretHeaders / oauthClientCredentials / credential / credentials for ad hoc
10
- * imports, and the entry installs the shared runtime ALS before evaluating user
11
- * code so published bundles that inline optional runtime exports
12
- * (Dropbox-style) see a populated store at module evaluation — matching cloud
13
- * `__kodyRunInRuntime`.
14
- */
15
- import { credentialClientRuntimeSource } from './credential-client-runtime-source.js';
16
- export const localExecuteCompatibilityDate = '2026-04-16';
17
- export const localExecuteCompatibilityFlags = ['nodejs_compat'];
18
- export const localWorkerModuleNames = {
19
- entry: '__kody_local_entry.js',
20
- user: 'main.js',
21
- runtime: 'kody:runtime',
22
- /**
23
- * Flat alias for `kody:runtime`. Path-like package module names
24
- * (`kody:@scope/pkg/export`) path-join bare `kody:runtime` into
25
- * `kody:@scope/pkg/kody:runtime`; local deps rewrite to this slash-free
26
- * name instead. workerd rejects leading-`/` absolute module names.
27
- */
28
- runtimeFlatAlias: '.__kody_runtime__.js',
29
- };
30
- /** Header carrying the per-run secret on workerd → bridge and CLI → workerd hops. */
31
- export const runSecretHeader = 'x-kody-run-secret';
32
- export const runSecretEnvVar = 'KODY_RUN_SECRET';
33
- /** Runtime ALS symbol shared with stamped / inlined `kody:runtime` helpers. */
34
- export const kodyRuntimeStorageSymbolDescription = 'kody.runtimeStorage';
35
- /**
36
- * Thin re-export of `kody:runtime` under {@link localWorkerModuleNames.runtimeFlatAlias}.
37
- * Must not embed a second runtime copy — entry installs the bridge only on
38
- * `kody:runtime`, and local deps need that same module instance.
39
- * `export *` omits `default`, so re-export it explicitly.
40
- */
41
- export function createRuntimeFlatAliasSource() {
42
- const runtime = JSON.stringify(localWorkerModuleNames.runtime);
43
- return `export * from ${runtime};\nexport { default } from ${runtime};\n`;
44
- }
45
- /** Workerd-side `kody.gatewayFetchStream` + bridge install helpers (shared shape). */
46
- export function localGatewayFetchStreamRuntimeSource(options) {
47
- return `
48
- let __kodyBridge = null;
49
-
50
- export function __kodyInstallLocalBridge(bridge) {
51
- // Object form: { call, gatewayFetch }. Legacy function form still works for /call.
52
- __kodyBridge =
53
- typeof bridge === 'function' ? { call: bridge, gatewayFetch: null } : bridge;
54
- }
55
-
56
- function __kodyCall(path, args) {
57
- if (__kodyBridge === null || typeof __kodyBridge.call !== 'function') {
58
- throw new Error(${JSON.stringify(options.callUnavailableMessage)});
59
- }
60
- return __kodyBridge.call(path, args);
61
- }
62
-
63
- const __kodyGatewayNullBodyStatuses = new Set([101, 103, 204, 205, 304]);
64
- const __kodySecretResolutionHeader = 'x-kody-secret-resolution';
65
-
66
- /**
67
- * Streaming CapabilityProxy hop (POST /v1/capability-proxy/gateway-fetch via the
68
- * loopback bridge). Returns a real Response — not the JSON gatewayFetch envelope.
69
- * See kentcdodds/kody docs/contributing/contracts/cli-streaming-gateway-fetch.md.
70
- */
71
- async function gatewayFetchStream(input) {
72
- if (__kodyBridge === null || typeof __kodyBridge.gatewayFetch !== 'function') {
73
- throw new Error(
74
- 'Local execute needs kody.gatewayFetchStream on the host runtime to stream a secret-aware fetch body (multipart, large, or ReadableStream). Upgrade @kodycodes/cli, or buffer the body under 4 MiB for the JSON gatewayFetch hop.',
75
- );
76
- }
77
- const record = input != null && typeof input === 'object' && !Array.isArray(input) ? input : null;
78
- if (!record) {
79
- throw new Error('gatewayFetchStream requires a single object argument: { request, packageId? }.');
80
- }
81
- const requestValue = record.request;
82
- if (requestValue == null || typeof requestValue !== 'object' || Array.isArray(requestValue)) {
83
- throw new Error('gatewayFetchStream requires request: { url, method?, headers?, body? }.');
84
- }
85
- const url = typeof requestValue.url === 'string' ? requestValue.url.trim() : '';
86
- if (!url) {
87
- throw new Error('gatewayFetchStream request.url must be a non-empty absolute URL.');
88
- }
89
- const method =
90
- typeof requestValue.method === 'string' && requestValue.method.trim()
91
- ? requestValue.method.trim()
92
- : 'GET';
93
- const packageId =
94
- typeof record.packageId === 'string' && record.packageId.trim()
95
- ? record.packageId.trim()
96
- : undefined;
97
- const rawHeaders =
98
- requestValue.headers != null &&
99
- typeof requestValue.headers === 'object' &&
100
- !Array.isArray(requestValue.headers)
101
- ? { ...requestValue.headers }
102
- : {};
103
- const outboundHeaders = {};
104
- let contentType = null;
105
- let secretResolution = null;
106
- for (const [key, value] of Object.entries(rawHeaders)) {
107
- if (typeof value !== 'string') continue;
108
- const lower = key.toLowerCase();
109
- if (lower === 'content-type') {
110
- contentType = value;
111
- continue;
112
- }
113
- if (lower === __kodySecretResolutionHeader) {
114
- secretResolution = value;
115
- continue;
116
- }
117
- outboundHeaders[key] = value;
118
- }
119
- const headers = {
120
- 'X-Kody-Gateway-Url': url,
121
- 'X-Kody-Gateway-Method': method,
122
- };
123
- if (packageId) headers['X-Kody-Gateway-Package-Id'] = packageId;
124
- if (Object.keys(outboundHeaders).length > 0) {
125
- headers['X-Kody-Gateway-Headers'] = JSON.stringify(outboundHeaders);
126
- }
127
- if (contentType) headers['Content-Type'] = contentType;
128
- if (secretResolution) headers[__kodySecretResolutionHeader] = secretResolution;
129
- const body = Object.hasOwn(requestValue, 'body') ? requestValue.body : null;
130
- const init = {
131
- method: 'POST',
132
- headers,
133
- };
134
- const upper = method.toUpperCase();
135
- if (body != null && upper !== 'GET' && upper !== 'HEAD') {
136
- init.body = body;
137
- init.duplex = 'half';
138
- }
139
- if (requestValue.signal != null) init.signal = requestValue.signal;
140
- if (requestValue.redirect != null) init.redirect = requestValue.redirect;
141
- const response = await __kodyBridge.gatewayFetch(init);
142
- const cacheControl = response.headers.get('cache-control') ?? '';
143
- const contentTypeHeader = response.headers.get('content-type') ?? '';
144
- if (response.status === 413 && !contentTypeHeader.includes('application/json')) {
145
- throw new Error(
146
- 'Request body exceeds the Worker upload limit of 104857600 bytes (100 MiB).',
147
- );
148
- }
149
- if (cacheControl.includes('no-store') && contentTypeHeader.includes('application/json')) {
150
- const text = await response.clone().text();
151
- try {
152
- const parsed = JSON.parse(text);
153
- if (parsed != null && typeof parsed === 'object' && parsed.error != null) {
154
- const err = parsed.error;
155
- const message =
156
- typeof err === 'string'
157
- ? err
158
- : typeof err?.message === 'string'
159
- ? err.message
160
- : 'gatewayFetchStream failed.';
161
- throw new Error(message);
162
- }
163
- } catch (error) {
164
- if (!(error instanceof SyntaxError)) throw error;
165
- }
166
- }
167
- if (__kodyGatewayNullBodyStatuses.has(response.status)) {
168
- return new Response(null, {
169
- status: response.status,
170
- statusText: response.statusText,
171
- headers: response.headers,
172
- });
173
- }
174
- return response;
175
- }
176
-
177
- function __kodyNamespace(path) {
178
- const label = '[KodyRuntime:' + path.join('.') + ']';
179
- return new Proxy(function () {}, {
180
- get(_target, property) {
181
- if (typeof property === 'symbol' || property === 'then' || property === 'toJSON') {
182
- return undefined;
183
- }
184
- if (property === 'toString' || property === 'inspect') return () => label;
185
- if (
186
- path.length === 1 &&
187
- path[0] === 'kody' &&
188
- property === 'gatewayFetchStream'
189
- ) {
190
- return gatewayFetchStream;
191
- }
192
- return __kodyNamespace([...path, property]);
193
- },
194
- apply(_target, _thisArg, args) {
195
- return __kodyCall(path, args);
196
- },
197
- });
198
- }
199
- `.trimStart();
200
- }
201
- export function createLocalRuntimeModuleSource() {
202
- return `
203
- import { AsyncLocalStorage } from 'node:async_hooks';
204
-
205
- ${localGatewayFetchStreamRuntimeSource({
206
- callUnavailableMessage: 'kody:runtime is only available while an execute --local run is in progress.',
207
- })}
208
-
209
- export const kody = __kodyNamespace(['kody']);
210
-
211
- export const workflows = {
212
- create: async (input) => await __kodyCall(['workflows', 'create'], [input ?? {}]),
213
- };
214
-
215
- // Always null: there is no author-facing packages.invoke. Use a static
216
- // kody:@scope/package/export import when the name is known, or import(specifier)
217
- // when the name is data. Under --local, static kody:@ imports are resolved into
218
- // the workerd module list via POST /v1/local-execute/package-graph (see
219
- // local-package-graph.ts / kentcdodds/kody#2808) — never a whole-module
220
- // CapabilityProxy → kody.execute hop.
221
- export const packages = null;
222
-
223
- export function packageStorage() {
224
- throw new Error(
225
- 'packageStorage() requires package provenance: this module was not bundled from a saved package and the run has no package context. ' +
226
- 'Ad hoc execute has no scratch SQLite helper. Persist durable state from a saved package with packageStorage().',
227
- );
228
- }
229
-
230
- function __kodyPackageSecretsUnavailable() {
231
- throw new Error(
232
- 'packageSecrets is not available in this execution context. It is bound for stamped saved-package modules and saved-package runtime contexts.',
233
- );
234
- }
235
-
236
- export const packageSecrets = {
237
- get: async () => __kodyPackageSecretsUnavailable(),
238
- has: async () => __kodyPackageSecretsUnavailable(),
239
- };
240
- export const packageContext = Object.freeze({});
241
- export const email = null;
242
- export const events = null;
243
-
244
- const __kodyNullBodyStatuses = new Set([204, 205, 304]);
245
-
246
- function __kodyBytesToBase64(bytes) {
247
- let binary = '';
248
- for (let i = 0; i < bytes.length; i += 1) {
249
- binary += String.fromCharCode(bytes[i]);
250
- }
251
- return btoa(binary);
252
- }
253
-
254
- function __kodyBase64ToBytes(value) {
255
- const binary = atob(value);
256
- const bytes = new Uint8Array(binary.length);
257
- for (let i = 0; i < binary.length; i += 1) {
258
- bytes[i] = binary.charCodeAt(i);
259
- }
260
- return bytes;
261
- }
262
-
263
- async function __kodyBodyToBytes(body) {
264
- if (typeof body === 'string') {
265
- return new TextEncoder().encode(body);
266
- }
267
- if (body instanceof Uint8Array) return body;
268
- if (body instanceof ArrayBuffer) return new Uint8Array(body);
269
- if (ArrayBuffer.isView(body)) {
270
- return new Uint8Array(body.buffer, body.byteOffset, body.byteLength);
271
- }
272
- if (typeof Blob !== 'undefined' && body instanceof Blob) {
273
- return new Uint8Array(await body.arrayBuffer());
274
- }
275
- if (typeof URLSearchParams !== 'undefined' && body instanceof URLSearchParams) {
276
- return new TextEncoder().encode(body.toString());
277
- }
278
- if (body && typeof body.getReader === 'function') {
279
- return new Uint8Array(await new Response(body).arrayBuffer());
280
- }
281
- if (typeof FormData !== 'undefined' && body instanceof FormData) {
282
- throw new Error(
283
- 'Local execute createAuthenticatedFetch does not support FormData bodies yet; use Uint8Array, Blob, or string.',
284
- );
285
- }
286
- throw new Error(
287
- 'Local execute createAuthenticatedFetch could not serialize the request body.',
288
- );
289
- }
290
-
291
- export async function createAuthenticatedFetch(providerName) {
292
- const name = String(providerName ?? '').trim();
293
- if (!name) {
294
- throw new Error('Integration name is required.');
295
- }
296
- return async (input, init) => {
297
- let url;
298
- let method = 'GET';
299
- let headers = {};
300
- let bodyBytes = null;
301
- if (typeof input === 'string' || input instanceof URL) {
302
- url = String(input);
303
- method = String(init?.method ?? 'GET');
304
- headers = Object.fromEntries(new Headers(init?.headers).entries());
305
- if (init?.body != null) {
306
- bodyBytes = await __kodyBodyToBytes(init.body);
307
- }
308
- } else {
309
- const merged = new Request(input, init);
310
- url = merged.url;
311
- method = merged.method;
312
- headers = Object.fromEntries(merged.headers.entries());
313
- if (method !== 'GET' && method !== 'HEAD') {
314
- bodyBytes = new Uint8Array(await merged.arrayBuffer());
315
- }
316
- }
317
- const result = await __kodyCall(['kody', 'authenticatedFetch'], [{
318
- providerName: name,
319
- request: {
320
- url,
321
- method,
322
- headers,
323
- ...(bodyBytes != null
324
- ? { bodyBase64: __kodyBytesToBase64(bodyBytes) }
325
- : {}),
326
- },
327
- }]);
328
- const bytes = __kodyBase64ToBytes(result.bodyBase64 ?? '');
329
- return new Response(
330
- __kodyNullBodyStatuses.has(result.status) ? null : bytes,
331
- {
332
- status: result.status,
333
- statusText: result.statusText,
334
- headers: result.headers,
335
- },
336
- );
337
- };
338
- }
339
-
340
- export const secretHeaders = {
341
- basic(input) {
342
- const usernameSecret = String(input?.usernameSecret ?? '').trim();
343
- const passwordSecret = String(input?.passwordSecret ?? '').trim();
344
- if (!usernameSecret || !passwordSecret) {
345
- throw new Error(
346
- 'secretHeaders.basic requires usernameSecret and passwordSecret.',
347
- );
348
- }
349
- const scope =
350
- typeof input?.scope === 'string' && input.scope.trim()
351
- ? input.scope.trim()
352
- : null;
353
- return scope
354
- ? \`{{secret-basic:username=\${usernameSecret},password=\${passwordSecret}|scope=\${scope}}}\`
355
- : \`{{secret-basic:username=\${usernameSecret},password=\${passwordSecret}}}\`;
356
- },
357
- };
358
-
359
- export async function oauthClientCredentials(input) {
360
- return await __kodyCall(['kody', 'oauthClientCredentials'], [input ?? {}]);
361
- }
362
-
363
- // Scoped credential clients (ADR 0068): open/sign/callTool/refresh through
364
- // CapabilityProxy \`kody.credentialClient*\`. Fetches carry only an opaque
365
- // handle; origin's gateway places the credential. Secret values never enter
366
- // local workerd — same security as hosted and the package-graph shim.
367
- ${credentialClientRuntimeSource}
368
- const __kodyCredentialRuntime = __kodyCreateCredentialRuntime((name, args) =>
369
- __kodyCall(['kody', name], [args ?? {}]),
370
- );
371
- export const credential = __kodyCredentialRuntime.credential;
372
- export const credentials = __kodyCredentialRuntime.credentials;
373
-
374
- const __kodyRuntimeStorageSymbol = Symbol.for(${JSON.stringify(kodyRuntimeStorageSymbolDescription)});
375
- const __globalAny = globalThis;
376
- const __kodyRuntimeStorage =
377
- __globalAny[__kodyRuntimeStorageSymbol] ??
378
- (__globalAny[__kodyRuntimeStorageSymbol] = new AsyncLocalStorage());
379
-
380
- const __kodyRuntimeDefault = Object.freeze({
381
- kody,
382
- packageStorage,
383
- createAuthenticatedFetch,
384
- secretHeaders,
385
- oauthClientCredentials,
386
- credential,
387
- credentials,
388
- packageContext,
389
- packageSecrets,
390
- email,
391
- workflows,
392
- packages,
393
- events,
394
- });
395
- export default __kodyRuntimeDefault;
396
- export const KodyRuntime = Object.freeze({ defaultValue: __kodyRuntimeDefault });
397
-
398
- /** Enter the shared runtime ALS before evaluating user / package modules. */
399
- export function __kodyRunInLocalRuntime(callback) {
400
- return __kodyRuntimeStorage.run(__kodyRuntimeDefault, callback);
401
- }
402
- `.trimStart();
403
- }
404
- /**
405
- * Local workerd entry. Optional `sideEffectModules` are imported for their
406
- * evaluation side effects before the user module runs — used to load the
407
- * origin-supplied gateway-fetch shim so ambient `{{secret:…}}` fetch hops
408
- * even when the entry has no `kody:@` imports (kentcdodds/kody#3020).
409
- */
410
- export function createLocalEntrySource(input = {}) {
411
- const sideEffectImports = [...new Set(input.sideEffectModules ?? [])]
412
- .filter((name) => typeof name === 'string' && name.trim().length > 0)
413
- .map((name) => `import ${JSON.stringify(name)};`)
414
- .join('\n');
415
- const sideEffectBlock = sideEffectImports ? `${sideEffectImports}\n` : '';
416
- return `
417
- ${sideEffectBlock}import {
418
- __kodyInstallLocalBridge,
419
- __kodyRunInLocalRuntime,
420
- } from ${JSON.stringify(localWorkerModuleNames.runtime)};
421
-
422
- const __kodyRunSecretHeader = ${JSON.stringify(runSecretHeader)};
423
- let __kodyClaimed = false;
424
-
425
- function __kodyFormatLogArgs(args) {
426
- return args.map(String).join(' ');
427
- }
428
-
429
- export default {
430
- async fetch(request, env) {
431
- const secret = env.${runSecretEnvVar};
432
- if (__kodyClaimed || !secret || request.headers.get(__kodyRunSecretHeader) !== secret) {
433
- return new Response('Forbidden: missing run secret, or this one-shot run was already claimed. Only the kody process that started this workerd may call it.', { status: 403 });
434
- }
435
- __kodyClaimed = true;
436
- const { params } = await request.json();
437
- __kodyInstallLocalBridge({
438
- call: async (path, args) => {
439
- const response = await env.KODY_BRIDGE.fetch('http://kody-bridge/call', {
440
- method: 'POST',
441
- headers: { 'content-type': 'application/json', [__kodyRunSecretHeader]: secret },
442
- body: JSON.stringify({ path, args }),
443
- });
444
- const data = await response.json();
445
- if (data.error) throw new Error(data.error);
446
- return data.result;
447
- },
448
- gatewayFetch: async (init) => {
449
- const headers = new Headers(init?.headers);
450
- headers.set(__kodyRunSecretHeader, secret);
451
- return await env.KODY_BRIDGE.fetch('http://kody-bridge/gateway-fetch', {
452
- ...init,
453
- method: 'POST',
454
- headers,
455
- });
456
- },
457
- });
458
- const logs = [];
459
- const nativeConsole = globalThis.console;
460
- globalThis.console = {
461
- ...nativeConsole,
462
- log: (...a) => { logs.push(__kodyFormatLogArgs(a)); },
463
- info: (...a) => { logs.push('[info] ' + __kodyFormatLogArgs(a)); },
464
- debug: (...a) => { logs.push('[debug] ' + __kodyFormatLogArgs(a)); },
465
- warn: (...a) => { logs.push('[warn] ' + __kodyFormatLogArgs(a)); },
466
- error: (...a) => { logs.push('[error] ' + __kodyFormatLogArgs(a)); },
467
- };
468
- try {
469
- // Evaluate user + stamped package modules inside the runtime ALS so
470
- // inlined optional exports capture callable helpers (cloud parity).
471
- const result = await __kodyRunInLocalRuntime(async () => {
472
- const module = await import(${JSON.stringify(`./${localWorkerModuleNames.user}`)});
473
- if (typeof module?.default !== 'function') {
474
- throw new Error('Kody execute modules must default export a function.');
475
- }
476
- return await module.default(params);
477
- });
478
- return new Response(JSON.stringify({ result, logs }), {
479
- headers: { 'content-type': 'application/json' },
480
- });
481
- } catch (error) {
482
- const message = error instanceof Error ? error.message : String(error);
483
- return Response.json({ error: message, logs });
484
- } finally {
485
- globalThis.console = nativeConsole;
486
- }
487
- },
488
- };
489
- `.trimStart();
490
- }
491
- /**
492
- * workerd text config. `files` are embedded relative to the config file.
493
- * Outbound fetch is public-only unless private-network access is explicitly
494
- * enabled. The loopback bridge remains a separate external service.
495
- *
496
- * Optional `packageModules` are stamped `kody:@…` (and nested) modules from
497
- * POST /v1/local-execute/package-graph — embedded alongside the user module so
498
- * imports resolve inside local workerd without a remote `kody.execute`.
499
- */
500
- export function createWorkerdConfig(input) {
501
- const flags = localExecuteCompatibilityFlags.map((flag) => JSON.stringify(flag)).join(', ');
502
- const networkAllow = input.allowPrivateNetwork
503
- ? '["public", "private", "local"]'
504
- : '["public"]';
505
- const packageEntries = (input.packageModules ?? [])
506
- .map((module) => ` (name = ${JSON.stringify(module.name)}, esModule = embed ${JSON.stringify(module.file)}),`)
507
- .join('\n');
508
- const packageBlock = packageEntries ? `\n${packageEntries}` : '';
509
- // Flat re-export of kody:runtime (same module instance). Callers must write
510
- // createRuntimeFlatAliasSource() to this filename before serving.
511
- const runtimeFlatAliasFile = localWorkerModuleNames.runtimeFlatAlias;
512
- const runtimeFlatAlias = ` (name = ${JSON.stringify(localWorkerModuleNames.runtimeFlatAlias)}, esModule = embed ${JSON.stringify(runtimeFlatAliasFile)}),`;
513
- return `using Workerd = import "/workerd/workerd.capnp";
514
-
515
- const config :Workerd.Config = (
516
- services = [
517
- (name = "main", worker = .kodyWorker),
518
- (name = "kody-bridge", external = (address = "127.0.0.1:${input.bridgePort}", http = ())),
519
- (name = "internet", network = (allow = ${networkAllow}, tlsOptions = (trustBrowserCas = true))),
520
- ],
521
- sockets = [ (name = "http", address = "127.0.0.1:0", http = (), service = "main") ],
522
- );
523
-
524
- const kodyWorker :Workerd.Worker = (
525
- modules = [
526
- (name = ${JSON.stringify(localWorkerModuleNames.entry)}, esModule = embed ${JSON.stringify(input.files.entry)}),
527
- (name = ${JSON.stringify(localWorkerModuleNames.user)}, esModule = embed ${JSON.stringify(input.files.user)}),
528
- (name = ${JSON.stringify(localWorkerModuleNames.runtime)}, esModule = embed ${JSON.stringify(input.files.runtime)}),
529
- ${runtimeFlatAlias}${packageBlock}
530
- ],
531
- compatibilityDate = ${JSON.stringify(localExecuteCompatibilityDate)},
532
- compatibilityFlags = [${flags}],
533
- globalOutbound = "internet",
534
- bindings = [
535
- (name = "KODY_BRIDGE", service = "kody-bridge"),
536
- (name = ${JSON.stringify(runSecretEnvVar)}, fromEnvironment = ${JSON.stringify(runSecretEnvVar)}),
537
- ],
538
- );
539
- `;
540
- }
541
- //# sourceMappingURL=local-runtime-source.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"local-runtime-source.js","sourceRoot":"","sources":["../src/local-runtime-source.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Official Kody brand assets inlined for the localhost OAuth callback page.
3
- * Sourced from https://github.com/kentcdodds/kody:
4
- * - packages/worker/public/images/kody-mark.png
5
- * - packages/worker/public/images/kody-pattern.webp (compressed tile)
6
- * No external requests from the callback HTML.
7
- */
8
- export const kodyMarkPngDataUri = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEQAAABECAYAAAA4E5OyAAAACXBIWXMAAAPoAAAD6AG1e1JrAAAOeUlEQVR42u3ba8hmVRnG8T72pYiiMjCJEMGKDlKRGomVSBh0sNLsbComWVqmpmXaaNZgaalj5mFmHJvGw4yNedbMQ2GnD5khlqGgQQaWRRQR5e797Zn/256Z15zJmXGEd8PNfp797L3Wuq913Yd17/U87Wnzx/wxf8wf88f8MX/MH/PHZjlu+v4d25GV373pJc6rVl/3jM3WuMauvvbW3WYaPvD6G390gjO5667ffPzeex/YV4dPNgDGZ2xXXXPL0muuve1HU/n+zT++746f3HmpMbvvCXW0ctX1+1++8oYbLrn02kcuu/z64eYf/OTRq665dVh1xU3Dddf/cKgz4JiNrQmCiaJk4/vOiquHxUuvGJZdfOVw8fKrxs+uGStZfeXN43jXTuqmT+JFy1Z/dsnS1f8497xLhm+df9mw9KLVw4WLV87Iqn/rSKc6ARCps60BBvBnxrHkvPMv+/vZi5YPXzr1m8OJJ31j+PLC84bTz1g6LDpnxWDc519w+QiQ8ZLGiUlrWb9xwFyweOXbTz9jySM6OPmURWNH5JvnrhgWnnbBiD5w6ixwMOj/noFNMI+vnrHkdkBQ/qQFZ41jc56CctrXLhwBMWbnNRO66t9rJ/GvgbJRHQIDEMced9pw1NGnjqIzHQFEZzo2E5dcdt1ISaAwq0wJnTc3GCbqggtX3mccWHH85746jvETR5w0fv78CWeM352NkQDEBGKM52I4UJavuPp0buExnS4qnrrwvOUAOOigIx499GPHDQcfcvQorukIULFGB2YKKDoxE4ABCrbwL0/Yka2NGkzYROmP8sbj/IUTvz4cc+zC4VOfPnm85jPpuok88+xvj4AYc2ZvzED5n4w+5UvnHvjZ47/25w99+JMDCRDnd7/n4PGa7waCombgrLOWDV//xrIRiDWdrRzBQc3bbv/5nGwxIwtOWbQ9sIiZN1Oka1MnbZIwU7+UPPCjnx7HhA2NxfWPH37COkDF8iljCFDzKyLRnAHBxcM/ceIVdQaA973/sBEEn9/2tg+MA3Gt6zo2UMibhajJCQOoaBQ9iajw7eVX/VpkWO+eUZid34h7Oc8vLjjrL5RmGhQ2PowgxgAIQvnY4rpxBQITI37XFv9nvJgiSm5gNtjxscOOf5iyFAfCO/f9yCwwrvV9//0PHcUAoZ/T5VMwBCCECeXQCn8GQGmfnZsp4Liv790DJM9goRnXJ4Wn/s13IAElf8KcTVKBIX+T4wUSQDAZSzYw7SM+teC0kM9kAEBxYOgoE4o1rpMomXeHPiUombBb4Dj7vSgxddQUKDq4D8B+L2RqkzKB4Gxc+Q3jACrGEcqev3jV+FtAYYf+tMvhun+D6MiehbJQ1lE+xGcIs0mNAgQI01kxyGJ+DrbZNTDXdGwAzZz2csyFRv4oagOM+QV0fglzjEf/AKCs+7Wpv1/cec+s3HHHL8ZxAMC9BCCAwQ7y33xqEobZD8el8ZwSpX1GVYMzMI0ZjM41YpAUzQwCYupcs1P3AQBtgTEN31NaA7jBA0L/nYGmX8C71/P6APrPfv6r4de/uX8dufvu346z7758HZOhB50wUFtrfNgaQEZfcuSRC3bnUM24gUVFnz1UgtOgUlZjFC1By2/ozACg7zfPaocSGAb4gDBAAAEqR9mg9T81R5If0o/+KHP//b/bQO797QMjIFiSKWrPuDDR2XW6lMGKciNDAHLU0V+5k1/IYwMHFdG2GZ/aOyVLjw0MWEUb14Himud89hsz5KALmTnkwqNJqG/9BCKQ3KNPYOSfYh/l5wIESwBisow9djsbk7EbK0DWCb98CED22We/ccAlY2YuQDxs8JQwSGD5nvKFNiBQxpmUq3iOk9ZHLMkh5uxy3EI8Z56DLZoBgGlmnthHKDQXSwDClJgZQMpjjJOzNZGcN9YJ8eskaKKMgZRvmCkNUMagzBZki0CUco9rOgNOIKE88b2kiVJ77/2u4Q17vGUEBvCe15bfiiSUBSRW5LCJawApfPtMocyWr3jgwYc2AARDAALcAoH2PNvqeE0AuGXpOgmaPISSZhAoBmygZrsQqSGDLHnzOZvP6bqv754t5XefWQfGm/Z6xywwfjeLKZPdU9CAtcFUCNAylxw69rrPpE3bmTKEnzGuJqaFarmP8wYpfGZTIkZhMs1Gs3PAlQ2W7MQUHeUkS6YCTTuerw+AGPDf/v6P4aE/PDwqk+0Lm1J/vwMJc/IbJXDOhU8MxoQpIEUZvxduc9bGlnOWOc+55mI2zWLZaAs7jVEmx5jptIACRk62Va+ZLrv0O/NzLwbuuuubRxYBg/zxT38ZQZkCQ6Fm3XXUBkI5D6kMUYTTp/uBCgxjaWE3NW3ONYD5jzkXdzMDf/8B7zvs9wBJ8isB0MyaZUAZUMqXEEVTYHq2VSimAEcbe+751nGg/3r00VlQAmT6HSjaBBglW1XnO/TvTCpHxDBgYOy0cFTit6amM5M9zzjXxyxVMBv5iAFThD/hCM0mBQLJdYwJBACMmeEPbh1pjrrAe81r95j1RyTWAVMbTNJsAgXFa2PVorOHq7+zYhacwqjPgC7DBApQRx8yoxjGYQomAc73kjwm4l5gAKfFHXP5nwWtKUtyfrvssvuw886vGoEBEOXMiKgwrlhnFDjnoPeOcugb9xj2e+M+470AAaR2iGcBNGWeQQKUAp4/7tU7DGcf85mxnbfvvNMIEMAAgiUADAzn0VRmwMAUSmNB2W0mUoLp3hahwFAitQJ/3IIMlgTIbq/fexYQ4hqnqdMvnL58OPOLC4fF+75uFIP1fZfnbDe8/GWvGcWzgAEQcDGjlXQMNIOBAQgAAAIghAlgRyzBwrJjE5P/cC4nCoycaIkix95yg+9Qi3lcQGSuWGLAZpgywKCgWdXguGpc+r0RCIq8aPudRh/hXp933PGlo/QcYABSnsOkgPHKV+w2fHL/D47t7LXDC4cXPnOHkWFYCAiAYAyQfI8lrZ8yG2wpX5omkRWEONGyac8wFVW4ja7/5ksChFLYQhHeWwcAAQZGPPvpz5kVgCSBQnGAaJOD5T+wzXUAaAcYRBvOJgRIAMtsgJEvaYE5rcNQ3rlUHQgtM/Ix6rLWLZtUDMeSgw459qeZDtqbUckYQIDBZA548XM3AAQIL3j+9uuAAlDgtkZyBhCwXNdOgEzF9SlDcrT8TkWm/ANQTJTPrpUcYnShF4D/dwE8UNAcKCIERVp3SL7Y/Juf96zZmaU8Js0FiDaYlYFhCpAxRLtMA7Da6TnswBz+hKmINplMBSMsqWzJuWIDYFyrjMhEnIHzmDnHpoDCnwCllWj5BQX5A8oAhUKUdB0ggRIgGMZcAJn/0Bb713btOGMGMESwErXOGEp5zwFFxGAq05ouhpg4AOU/MpUn/D5EKFZvLblqRVoYNsP8AEUozhTWB6QIRXHs8CxHq73WLhRkHiKOM2YwESAQ9+U4y1SZDCCq1QCEVJ0j3vApVm9URNnYg5NtBYoVgGD7zAMI5R0Upygg1gclx+pen91XTdasMoObbvvlOjKtyFcfcZ7mIjGk0BtLMAMg4wupzf3u2ToH1ZthEaCkjQAFGJnHXI41gAINs1oJS++nryFFCJTngCsKVy1vhdvyvXrtdOU7BWazMuO/gJx8VC+DKIIhGFHiNQUlYHKymUzX3Cc5a2k/XWtk7xWXWowBB3DOFG39EiCzjnWt2QSK9cpm8Rtz+ZEKOgDBECCgfoCU0U79ht8SpsKPaKMM0uqX8pSaptx9nhaZKiz3yqJaRibT+6D8CJGeb47XqXMypFpGaXd+I+FPpuzJt7i3VxfVJSo0yyU4TM6TggBI6apu1VwtGZQQKF9UqWbbGgbjpqm8yLJFdiPEkFaqpISt2SfCaOmzwU9fTPcyyXX5g9VtxRwh1TOxxrmolo+p0GTmK2aXgAVSC7zM5nFXs09kx46KGofaytU5IBIsoXx1TvWMCj3jjoC1JYPqHAQYfs88YlGVt97pBmovu1rElZoDwmeAE2OQiG3WPWbrmw0GFHILu1Oz4UfkKC27C6dWqMAgfY4hVcMqM7Yw641hryrbikGm71kwAwABE3skbVvEoU4LSBK0VsHVS6a+BCC+m9GoXP2B0lhSnbTSIOELeltHycIu6dVHjjifUpW/NUt9VVHbouyYskSUAAZQAIIlMaWki3Nlz4EQK6quWahNATGj2FD1Pma0z8O5bVMAqo5b3lJUwhKZqQx2q+x5g7gFH19SeTHfkRRZKIIZ7SiaghJDKi6b1ZSv7Dfd61GS1tapolGvJguzPgvFG7x42pJHq2BMmfqRchKswaByDLPVToCAyZkGSO9NYkeKMz3Rrep+ZtO5MOzci6utCsb6BenyjqkvqUJmds2imZtukSjaVN8ACh/SG8NWxKJLG2TaplHkKT9pWa+PNcDfsvRJ3UXMp1SUztlWZXOtVNyA2z/SNiqgVDz2HeN6VVHe0SvTtmqQnO50Gya/wWdscSe6sWyx+AuYfAnmUKo39r1pK+UGDPPBFOfe/Ux3LE13I8SW9pJgi/1nlvZbeyf1JgPTog5TbPHEENlp70xalE1fclO8HUrTnZDT78I+EGzRJJ6/5577b9ym/41gV5/wx5dY6PX6od0CJVbRvR3J09cH5RdFlzUZ6pJxd2KFISY3FpBm/oSwzf89w44coGBHb+3yB6hfztHmXxGiSNGKtdeWfgdi258AUX0V+E+J/6xImfmLaWg00yJEs19Fq2pXqbfnfJ6GU+Ymf2m3kJD9lAGjQwiUSrcnox2KQixwKgi1Ok1K+ZkFZyuJaxOd84O/e+ifTzkwcrLqERTEDP5gmrm222i6BZMpxYYAIFXdxxff27rPeFxQZmqaoo9ETgmBcxRt+JWq8ZxuuwUqF/AVfJEo0h+Vtkj1a1sASd5gCbDdC3Y4YCoKURjQHwC2iURr/pg/5o/5Y/6YP+aPLXX8By6sZHEPcft9AAAAAElFTkSuQmCC';
9
- export const kodyPatternWebpDataUri = 'data:image/webp;base64,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';
10
- //# sourceMappingURL=login-callback-assets.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"login-callback-assets.js","sourceRoot":"","sources":["../src/login-callback-assets.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAC9B,48JAA48J,CAAA;AAE78J,MAAM,CAAC,MAAM,sBAAsB,GAClC,izVAAizV,CAAA"}