alchemy 2.0.0-beta.27 → 2.0.0-beta.29

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 (104) hide show
  1. package/bin/alchemy.js +1 -1
  2. package/bin/alchemy.js.map +1 -1
  3. package/bin/alchemy.ts +1 -1
  4. package/bin/exec.js +185 -93
  5. package/bin/exec.js.map +1 -1
  6. package/bin/exec.ts +1 -1
  7. package/lib/AWS/IAM/SAMLProvider.d.ts +2 -1
  8. package/lib/AWS/IAM/SAMLProvider.d.ts.map +1 -1
  9. package/lib/AWS/IAM/SAMLProvider.js +30 -9
  10. package/lib/AWS/IAM/SAMLProvider.js.map +1 -1
  11. package/lib/Apply.d.ts.map +1 -1
  12. package/lib/Apply.js +55 -11
  13. package/lib/Apply.js.map +1 -1
  14. package/lib/Cli/commands/bootstrap.d.ts +1 -1
  15. package/lib/Cli/commands/bootstrap.d.ts.map +1 -1
  16. package/lib/Cli/commands/bootstrap.js +2 -1
  17. package/lib/Cli/commands/bootstrap.js.map +1 -1
  18. package/lib/Cli/exec.d.ts.map +1 -1
  19. package/lib/Cli/exec.js +2 -2
  20. package/lib/Cli/exec.js.map +1 -1
  21. package/lib/Cloudflare/Access.d.ts +19 -0
  22. package/lib/Cloudflare/Access.d.ts.map +1 -0
  23. package/lib/Cloudflare/Access.js +64 -0
  24. package/lib/Cloudflare/Access.js.map +1 -0
  25. package/lib/Cloudflare/AiGateway/AiGateway.d.ts +244 -0
  26. package/lib/Cloudflare/AiGateway/AiGateway.d.ts.map +1 -0
  27. package/lib/Cloudflare/AiGateway/AiGateway.js +269 -0
  28. package/lib/Cloudflare/AiGateway/AiGateway.js.map +1 -0
  29. package/lib/Cloudflare/AiGateway/AiGatewayBinding.d.ts +103 -0
  30. package/lib/Cloudflare/AiGateway/AiGatewayBinding.d.ts.map +1 -0
  31. package/lib/Cloudflare/AiGateway/AiGatewayBinding.js +99 -0
  32. package/lib/Cloudflare/AiGateway/AiGatewayBinding.js.map +1 -0
  33. package/lib/Cloudflare/AiGateway/index.d.ts +3 -0
  34. package/lib/Cloudflare/AiGateway/index.d.ts.map +1 -0
  35. package/lib/Cloudflare/AiGateway/index.js +3 -0
  36. package/lib/Cloudflare/AiGateway/index.js.map +1 -0
  37. package/lib/Cloudflare/EdgeSession.d.ts +2 -1
  38. package/lib/Cloudflare/EdgeSession.d.ts.map +1 -1
  39. package/lib/Cloudflare/EdgeSession.js +8 -4
  40. package/lib/Cloudflare/EdgeSession.js.map +1 -1
  41. package/lib/Cloudflare/Providers.d.ts +2 -1
  42. package/lib/Cloudflare/Providers.d.ts.map +1 -1
  43. package/lib/Cloudflare/Providers.js +5 -1
  44. package/lib/Cloudflare/Providers.js.map +1 -1
  45. package/lib/Cloudflare/StateStore/Api.d.ts +10 -0
  46. package/lib/Cloudflare/StateStore/Api.d.ts.map +1 -1
  47. package/lib/Cloudflare/StateStore/Api.js +12 -1
  48. package/lib/Cloudflare/StateStore/Api.js.map +1 -1
  49. package/lib/Cloudflare/StateStore/State.d.ts +4 -3
  50. package/lib/Cloudflare/StateStore/State.d.ts.map +1 -1
  51. package/lib/Cloudflare/StateStore/State.js +103 -13
  52. package/lib/Cloudflare/StateStore/State.js.map +1 -1
  53. package/lib/Cloudflare/Workers/InferEnv.d.ts +1 -1
  54. package/lib/Cloudflare/Workers/InferEnv.d.ts.map +1 -1
  55. package/lib/Cloudflare/Workers/Worker.d.ts +2 -1
  56. package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
  57. package/lib/Cloudflare/Workers/Worker.js +40 -31
  58. package/lib/Cloudflare/Workers/Worker.js.map +1 -1
  59. package/lib/Cloudflare/index.d.ts +1 -0
  60. package/lib/Cloudflare/index.d.ts.map +1 -1
  61. package/lib/Cloudflare/index.js +1 -0
  62. package/lib/Cloudflare/index.js.map +1 -1
  63. package/lib/Plan.d.ts +8 -0
  64. package/lib/Plan.d.ts.map +1 -1
  65. package/lib/Plan.js +12 -5
  66. package/lib/Plan.js.map +1 -1
  67. package/lib/State/HttpStateApi.d.ts +19 -1
  68. package/lib/State/HttpStateApi.d.ts.map +1 -1
  69. package/lib/State/HttpStateApi.js +18 -1
  70. package/lib/State/HttpStateApi.js.map +1 -1
  71. package/lib/Util/cached-function.d.ts +38 -0
  72. package/lib/Util/cached-function.d.ts.map +1 -0
  73. package/lib/Util/cached-function.js +53 -0
  74. package/lib/Util/cached-function.js.map +1 -0
  75. package/lib/Util/index.d.ts +0 -1
  76. package/lib/Util/index.d.ts.map +1 -1
  77. package/lib/Util/index.js +0 -1
  78. package/lib/Util/index.js.map +1 -1
  79. package/lib/Util/scc.d.ts +12 -0
  80. package/lib/Util/scc.d.ts.map +1 -0
  81. package/lib/Util/scc.js +81 -0
  82. package/lib/Util/scc.js.map +1 -0
  83. package/lib/tsconfig.test.tsbuildinfo +1 -1
  84. package/package.json +8 -2
  85. package/src/AWS/IAM/SAMLProvider.ts +47 -18
  86. package/src/Apply.ts +72 -8
  87. package/src/Cli/commands/bootstrap.ts +2 -0
  88. package/src/Cli/exec.ts +3 -2
  89. package/src/Cloudflare/Access.ts +110 -0
  90. package/src/Cloudflare/AiGateway/AiGateway.ts +526 -0
  91. package/src/Cloudflare/AiGateway/AiGatewayBinding.ts +190 -0
  92. package/src/Cloudflare/AiGateway/index.ts +2 -0
  93. package/src/Cloudflare/EdgeSession.ts +15 -5
  94. package/src/Cloudflare/Providers.ts +7 -0
  95. package/src/Cloudflare/StateStore/Api.ts +18 -0
  96. package/src/Cloudflare/StateStore/State.ts +130 -12
  97. package/src/Cloudflare/Workers/InferEnv.ts +7 -5
  98. package/src/Cloudflare/Workers/Worker.ts +44 -33
  99. package/src/Cloudflare/index.ts +1 -0
  100. package/src/Plan.ts +21 -5
  101. package/src/State/HttpStateApi.ts +22 -1
  102. package/src/Util/cached-function.ts +75 -0
  103. package/src/Util/index.ts +0 -1
  104. package/src/Util/scc.ts +89 -0
@@ -0,0 +1,99 @@
1
+ /// <reference types="@cloudflare/workers-types" />
2
+ import * as Data from "effect/Data";
3
+ import * as Effect from "effect/Effect";
4
+ import * as Layer from "effect/Layer";
5
+ import * as Option from "effect/Option";
6
+ import * as Binding from "../../Binding.js";
7
+ import { isWorker, WorkerEnvironment } from "../Workers/Worker.js";
8
+ /**
9
+ * Error raised by AI Gateway runtime operations.
10
+ */
11
+ export class AiGatewayError extends Data.TaggedError("AiGatewayError") {
12
+ }
13
+ /**
14
+ * Binding service that turns an {@link AiGatewayResource} resource into a typed
15
+ * {@link AiGatewayClient} for Worker runtime code.
16
+ *
17
+ * @section Calling AI Gateway
18
+ * Bind the gateway during the Worker's init phase, then use `run` or `getUrl`
19
+ * from request handlers.
20
+ *
21
+ * @example Run through a gateway
22
+ * ```typescript
23
+ * const aiGateway = yield* Cloudflare.AiGatewayBinding.bind(gateway);
24
+ *
25
+ * return {
26
+ * fetch: Effect.gen(function* () {
27
+ * return yield* aiGateway.run({
28
+ * provider: "workers-ai",
29
+ * endpoint: "@cf/meta/llama-3.1-8b-instruct",
30
+ * headers: { "content-type": "application/json" },
31
+ * query: { prompt: "Write a concise status update" },
32
+ * });
33
+ * }),
34
+ * };
35
+ * ```
36
+ *
37
+ * Provide {@link AiGatewayBindingLive} in the worker's runtime layer to
38
+ * resolve the underlying Cloudflare AI binding at request time.
39
+ */
40
+ export class AiGatewayBinding extends Binding.Service()("Cloudflare.AiGateway.Binding") {
41
+ }
42
+ /**
43
+ * Runtime layer for {@link AiGatewayBinding}.
44
+ */
45
+ export const AiGatewayBindingLive = Layer.effect(AiGatewayBinding, Effect.gen(function* () {
46
+ const Policy = yield* AiGatewayBindingPolicy;
47
+ return Effect.fn(function* (gateway) {
48
+ yield* Policy(gateway);
49
+ // Capture the gatewayId accessor (which requires WorkerEnvironment) but
50
+ // don't resolve it here — that happens lazily at runtime when each
51
+ // method is invoked. Resolving eagerly would require WorkerEnvironment
52
+ // at deploy time, where it's intentionally not provided.
53
+ const gatewayIdAccessor = yield* gateway.gatewayId;
54
+ const ai = yield* Effect.serviceOption(WorkerEnvironment).pipe(Effect.map(Option.getOrUndefined), Effect.map((env) => env?.[gateway.LogicalId]), Effect.cached);
55
+ const runtimeGateway = yield* Effect.zip(ai, gatewayIdAccessor).pipe(Effect.map(([ai, gatewayId]) => ai.gateway(gatewayId)), Effect.cached);
56
+ const use = (fn) => runtimeGateway.pipe(Effect.flatMap((gateway) => tryPromise(() => fn(gateway))));
57
+ return {
58
+ raw: ai,
59
+ gateway: runtimeGateway,
60
+ patchLog: (logId, data) => use((gateway) => gateway.patchLog(logId, data)),
61
+ getLog: (logId) => use((gateway) => gateway.getLog(logId)),
62
+ getUrl: (provider) => use((gateway) => gateway.getUrl(provider)),
63
+ run: (data, options) => use((gateway) => gateway.run(data, options)),
64
+ };
65
+ });
66
+ }));
67
+ /**
68
+ * Deploy-time policy service that attaches an AI binding to Workers.
69
+ */
70
+ export class AiGatewayBindingPolicy extends Binding.Policy()("Cloudflare.AiGateway.Binding") {
71
+ }
72
+ /**
73
+ * Live deploy-time policy layer for {@link AiGatewayBindingPolicy}.
74
+ */
75
+ export const AiGatewayBindingPolicyLive = AiGatewayBindingPolicy.layer.succeed(Effect.fn(function* (host, gateway) {
76
+ if (isWorker(host)) {
77
+ yield* host.bind(gateway.LogicalId, {
78
+ bindings: [
79
+ {
80
+ type: "ai",
81
+ name: gateway.LogicalId,
82
+ },
83
+ ],
84
+ });
85
+ }
86
+ else {
87
+ return yield* Effect.die(new Error(`AiGatewayBinding does not support runtime '${host.Type}'`));
88
+ }
89
+ }));
90
+ const tryPromise = (fn) => Effect.tryPromise({
91
+ try: fn,
92
+ catch: (error) => new AiGatewayError({
93
+ message: error instanceof Error
94
+ ? error.message
95
+ : "Unknown AI Gateway runtime error",
96
+ cause: error,
97
+ }),
98
+ });
99
+ //# sourceMappingURL=AiGatewayBinding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AiGatewayBinding.js","sourceRoot":"","sources":["../../../src/Cloudflare/AiGateway/AiGatewayBinding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from "./AiGateway.ts";
2
+ export * from "./AiGatewayBinding.ts";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/AiGateway/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./AiGateway.js";
2
+ export * from "./AiGatewayBinding.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Cloudflare/AiGateway/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC"}
@@ -2,6 +2,7 @@ import { Credentials } from "@distilled.cloud/cloudflare/Credentials";
2
2
  import * as workers from "@distilled.cloud/cloudflare/workers";
3
3
  import * as Effect from "effect/Effect";
4
4
  import * as HttpClient from "effect/unstable/http/HttpClient";
5
+ import { Access } from "./Access.ts";
5
6
  import { CloudflareEnvironment } from "./CloudflareEnvironment.ts";
6
7
  /**
7
8
  * A "remote binding" as understood by the Cloudflare Workers
@@ -48,6 +49,6 @@ export interface EdgeSessionHandle {
48
49
  * sending requests with the returned preview token and expire soon
49
50
  * after. Nothing is deployed or billed.
50
51
  */
51
- export declare const createEdgeSession: (options: EdgeSessionOptions) => Effect.Effect<EdgeSessionHandle, EdgeSessionError, CloudflareEnvironment | HttpClient.HttpClient | Credentials>;
52
+ export declare const createEdgeSession: (options: EdgeSessionOptions) => Effect.Effect<EdgeSessionHandle, EdgeSessionError, CloudflareEnvironment | HttpClient.HttpClient | Credentials | Access>;
52
53
  export {};
53
54
  //# sourceMappingURL=EdgeSession.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EdgeSession.d.ts","sourceRoot":"","sources":["../../src/Cloudflare/EdgeSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AACtE,OAAO,KAAK,OAAO,MAAM,qCAAqC,CAAC;AAE/D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;;;GAIG;AACH,KAAK,YAAY,GAAG,WAAW,CAC7B,WAAW,CAAC,OAAO,CAAC,8BAA8B,CAAC,UAAU,CAAC,CAAC,CAChE,CAAC;AACF,MAAM,MAAM,WAAW,GAAG,WAAW,CACnC,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CACtC,CAAC,MAAM,CAAC,CAAC;;;;AAEV,qBAAa,gBAAiB,SAAQ,sBAAqC;IACzE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;CAAG;AAEL,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,oEAAoE;IACpE,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IACpC,sDAAsD;IACtD,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IAC9C,4BAA4B;IAC5B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAsED;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAC5B,SAAS,kBAAkB,KAC1B,MAAM,CAAC,MAAM,CACd,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,GAAG,UAAU,CAAC,UAAU,GAAG,WAAW,CAcK,CAAC"}
1
+ {"version":3,"file":"EdgeSession.d.ts","sourceRoot":"","sources":["../../src/Cloudflare/EdgeSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AACtE,OAAO,KAAK,OAAO,MAAM,qCAAqC,CAAC;AAE/D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;;;GAIG;AACH,KAAK,YAAY,GAAG,WAAW,CAC7B,WAAW,CAAC,OAAO,CAAC,8BAA8B,CAAC,UAAU,CAAC,CAAC,CAChE,CAAC;AACF,MAAM,MAAM,WAAW,GAAG,WAAW,CACnC,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CACtC,CAAC,MAAM,CAAC,CAAC;;;;AAEV,qBAAa,gBAAiB,SAAQ,sBAAqC;IACzE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;CAAG;AAEL,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,oEAAoE;IACpE,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IACpC,sDAAsD;IACtD,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IAC9C,4BAA4B;IAC5B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAsED;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAC5B,SAAS,kBAAkB,KAC1B,MAAM,CAAC,MAAM,CACd,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,GAAG,UAAU,CAAC,UAAU,GAAG,WAAW,GAAG,MAAM,CAuBJ,CAAC"}
@@ -3,6 +3,7 @@ import * as workers from "@distilled.cloud/cloudflare/workers";
3
3
  import * as Data from "effect/Data";
4
4
  import * as Effect from "effect/Effect";
5
5
  import * as HttpClient from "effect/unstable/http/HttpClient";
6
+ import { Access } from "./Access.js";
6
7
  import { CloudflareEnvironment } from "./CloudflareEnvironment.js";
7
8
  export class EdgeSessionError extends Data.TaggedError("EdgeSessionError") {
8
9
  }
@@ -66,13 +67,16 @@ const workerHost = (scriptName) => Effect.gen(function* () {
66
67
  * after. Nothing is deployed or billed.
67
68
  */
68
69
  export const createEdgeSession = (options) => Effect.gen(function* () {
69
- const [{ previewToken }, host] = yield* Effect.all([
70
+ const [{ previewToken }, { url, headers }] = yield* Effect.all([
70
71
  createUploadToken.pipe(Effect.flatMap((t) => uploadScript(options, t))),
71
- workerHost(options.scriptName),
72
+ workerHost(options.scriptName).pipe(Effect.flatMap(Effect.fn(function* (host) {
73
+ const headers = yield* Access.use((access) => access.getAccessHeaders(host));
74
+ return { url: `https://${host}`, headers };
75
+ }))),
72
76
  ], { concurrency: "unbounded" });
73
77
  return {
74
- url: `https://${host}`,
75
- headers: { "cf-workers-preview-token": previewToken },
78
+ url,
79
+ headers: { ...headers, "cf-workers-preview-token": previewToken },
76
80
  };
77
81
  }).pipe((e) => wrap(e, "Failed to create edge preview session"));
78
82
  //# sourceMappingURL=EdgeSession.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EdgeSession.js","sourceRoot":"","sources":["../../src/Cloudflare/EdgeSession.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EdgeSession.js","sourceRoot":"","sources":["../../src/Cloudflare/EdgeSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AACtE,OAAO,KAAK,OAAO,MAAM,qCAAqC,CAAC;AAC/D,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAcnE,MAAM,OAAO,gBAAiB,SAAQ,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAGvE;CAAG;AA0BL,MAAM,0BAA0B,GAAG,YAAY,CAAC;AAEhD,MAAM,IAAI,GAAG,CAAU,MAA8B,EAAE,OAAe,EAAE,EAAE,CACxE,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,gBAAgB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CACrE,CAAC;AAEJ;;;;;GAKG;AACH,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC5C,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,qBAAqB,CAAC;IACzC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;IAC1C,MAAM,iCAAiC,GACrC,KAAK,CAAC,CAAC,OAAO,CAAC,iCAAiC,CAAC;IACnD,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,CAAC,iCAAiC,CAAC;QACtE,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAC,CAAC;IACH,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAC5C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAC7B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EACtB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAe,CAAC,CAAC,CACpD,CAAC;IACF,IACE,OAAO,IAAI,KAAK,QAAQ;QACxB,IAAI,KAAK,IAAI;QACb,OAAO,IAAI,IAAI;QACf,OAAQ,IAAgC,CAAC,KAAK,KAAK,QAAQ,EAC3D,CAAC;QACD,OAAQ,IAA0B,CAAC,KAAK,CAAC;IAC3C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,CAAC,OAA2B,EAAE,WAAmB,EAAE,EAAE,CACxE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,qBAAqB,CAAC;IACzC,MAAM,uBAAuB,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC;IACvE,OAAO,KAAK,CAAC,CAAC,uBAAuB,CAAC;QACpC,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,0BAA0B,EAAE,WAAW;QACvC,qBAAqB,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE;QAC9D,QAAQ,EAAE;YACR,iBAAiB,EACf,OAAO,CAAC,iBAAiB,IAAI,0BAA0B;YACzD,QAAQ,EAAE,OAAO,CAAC,QAAoC;YACtD,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI;SACnC;QACD,4DAA4D;QAC5D,+DAA+D;QAC/D,sCAAsC;QACtC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE;KAC7B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC;AAEL,MAAM,UAAU,GAAG,CAAC,UAAkB,EAAE,EAAE,CACxC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,qBAAqB,CAAC;IACzC,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;IACjD,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;IACxE,OAAO,GAAG,UAAU,IAAI,SAAS,cAAc,CAAC;AAClD,CAAC,CAAC,CAAC;AAEL;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,OAA2B,EAK3B,EAAE,CACF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAC5D;QACE,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACvE,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CACjC,MAAM,CAAC,OAAO,CACZ,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI;YACvB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAC3C,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAC9B,CAAC;YACF,OAAO,EAAE,GAAG,EAAE,WAAW,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC;QAC7C,CAAC,CAAC,CACH,CACF;KACF,EACD,EAAE,WAAW,EAAE,WAAW,EAAE,CAC7B,CAAC;IACF,OAAO;QACL,GAAG;QACH,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,0BAA0B,EAAE,YAAY,EAAE;KACtC,CAAC;AAChC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,uCAAuC,CAAC,CAAC,CAAC"}
@@ -2,6 +2,7 @@ import * as Layer from "effect/Layer";
2
2
  import { Command } from "../Build/Command.ts";
3
3
  import * as Provider from "../Provider.ts";
4
4
  import { Random } from "../Random.ts";
5
+ import * as Access from "./Access.ts";
5
6
  import * as CloudflareEnvironment from "./CloudflareEnvironment.ts";
6
7
  import * as Containers from "./Container/index.ts";
7
8
  export { Credentials } from "@distilled.cloud/cloudflare/Credentials";
@@ -12,5 +13,5 @@ export type ProviderRequirements = Layer.Services<ReturnType<typeof providers>>;
12
13
  /**
13
14
  * Cloudflare providers, bindings, and credentials for Worker-based stacks.
14
15
  */
15
- export declare const providers: () => Layer.Layer<Provider.Provider<Random> | Provider.Provider<Command> | Containers.Credentials | CloudflareEnvironment.CloudflareEnvironment | Providers, never, any>;
16
+ export declare const providers: () => Layer.Layer<Provider.Provider<Random> | Provider.Provider<Command> | Access.Access | Containers.Credentials | CloudflareEnvironment.CloudflareEnvironment | Providers, never, any>;
16
17
  //# sourceMappingURL=Providers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Providers.d.ts","sourceRoot":"","sources":["../../src/Cloudflare/Providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAkB,MAAM,cAAc,CAAC;AAItD,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,UAAU,MAAM,sBAAsB,CAAC;AAUnD,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;;AAEtE,qBAAa,SAAU,SAAQ,cAE9B;CAAG;AAEJ,MAAM,MAAM,oBAAoB,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,SAAS,0KA2DnB,CAAC"}
1
+ {"version":3,"file":"Providers.d.ts","sourceRoot":"","sources":["../../src/Cloudflare/Providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAkB,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAKtC,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,UAAU,MAAM,sBAAsB,CAAC;AAUnD,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;;AAEtE,qBAAa,SAAU,SAAQ,cAE9B;CAAG;AAEJ,MAAM,MAAM,oBAAoB,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,SAAS,0LAgEnB,CAAC"}
@@ -3,6 +3,8 @@ import { Command } from "../Build/Command.js";
3
3
  import * as Build from "../Build/index.js";
4
4
  import * as Provider from "../Provider.js";
5
5
  import { Random, RandomProvider } from "../Random.js";
6
+ import * as Access from "./Access.js";
7
+ import * as AiGateway from "./AiGateway/index.js";
6
8
  import * as ApiToken from "./ApiToken/index.js";
7
9
  import * as Artifacts from "./Artifacts/index.js";
8
10
  import { CloudflareAuth } from "./Auth/AuthProvider.js";
@@ -25,6 +27,8 @@ export class Providers extends Provider.ProviderCollection()("Cloudflare") {
25
27
  export const providers = () => Layer.effect(Providers, Provider.collection([
26
28
  ApiToken.AccountApiToken,
27
29
  ApiToken.UserApiToken,
30
+ AiGateway.AiGateway,
31
+ AiGateway.AiGatewayBindingPolicy,
28
32
  Artifacts.ArtifactsBindingPolicy,
29
33
  Command,
30
34
  Containers.Container,
@@ -45,5 +49,5 @@ export const providers = () => Layer.effect(Providers, Provider.collection([
45
49
  Workers.FetchPolicy,
46
50
  Workers.Worker,
47
51
  Workflows.WorkflowResource,
48
- ])).pipe(Layer.provide(Layer.mergeAll(ApiToken.AccountApiTokenProvider(), ApiToken.UserApiTokenProvider(), Artifacts.ArtifactsBindingPolicyLive, Containers.ContainerProvider(), D1.D1ConnectionPolicyLive, D1.DatabaseProvider(), KV.KVNamespaceBindingPolicyLive, KV.KVNamespaceProvider(), Queue.QueueBindingPolicyLive, Queue.QueueProvider(), Queue.QueueConsumerProvider(), R2.R2BucketBindingPolicyLive, R2.R2BucketProvider(), SecretsStore.SecretBindingPolicyLive, SecretsStore.SecretsStoreProvider(), SecretsStore.StoreSecretProvider(), Workers.BindWorkerPolicyLive, Workers.FetchPolicyLive, Workers.WorkerProvider(), Workflows.WorkflowProvider())), Layer.provideMerge(Layer.mergeAll(Build.CommandProvider(), RandomProvider())), Layer.provideMerge(Credentials.fromAuthProvider()), Layer.provideMerge(CloudflareEnvironment.fromProfile()), Layer.provideMerge(CloudflareAuth), Layer.orDie);
52
+ ])).pipe(Layer.provide(Layer.mergeAll(ApiToken.AccountApiTokenProvider(), ApiToken.UserApiTokenProvider(), AiGateway.AiGatewayProvider(), AiGateway.AiGatewayBindingPolicyLive, Artifacts.ArtifactsBindingPolicyLive, Containers.ContainerProvider(), D1.D1ConnectionPolicyLive, D1.DatabaseProvider(), KV.KVNamespaceBindingPolicyLive, KV.KVNamespaceProvider(), Queue.QueueBindingPolicyLive, Queue.QueueProvider(), Queue.QueueConsumerProvider(), R2.R2BucketBindingPolicyLive, R2.R2BucketProvider(), SecretsStore.SecretBindingPolicyLive, SecretsStore.SecretsStoreProvider(), SecretsStore.StoreSecretProvider(), Workers.BindWorkerPolicyLive, Workers.FetchPolicyLive, Workers.WorkerProvider(), Workflows.WorkflowProvider())), Layer.provideMerge(Layer.mergeAll(Build.CommandProvider(), RandomProvider())), Layer.provideMerge(Credentials.fromAuthProvider()), Layer.provideMerge(CloudflareEnvironment.fromProfile()), Layer.provideMerge(CloudflareAuth), Layer.provideMerge(Access.AccessLive), Layer.orDie);
49
53
  //# sourceMappingURL=Providers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Providers.js","sourceRoot":"","sources":["../../src/Cloudflare/Providers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Providers.js","sourceRoot":"","sources":["../../src/Cloudflare/Providers.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,15 @@
1
1
  import * as Effect from "effect/Effect";
2
2
  export declare const STATE_STORE_SCRIPT_NAME: "alchemy-state-store";
3
+ /**
4
+ * Version of the deployed Cloudflare State Store worker contract.
5
+ *
6
+ * Bump this whenever the wire format or runtime behaviour of the
7
+ * worker changes in a way that an older deployed copy can no longer
8
+ * satisfy. Clients query `/version` on the deployed worker and
9
+ * compare against this constant; a mismatch (or 404) triggers a
10
+ * forced redeploy via the bootstrap flow.
11
+ */
12
+ export declare const STATE_STORE_VERSION: 1;
3
13
  /**
4
14
  * Path on disk to *this* file, used as the worker's bundling entry.
5
15
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Api.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/StateStore/Api.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAexC,eAAO,MAAM,uBAAuB,EAAG,qBAA8B,CAAC;AAEtE;;;;;;;;;;;;GAYG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACH,wBA6GE"}
1
+ {"version":3,"file":"Api.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/StateStore/Api.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAexC,eAAO,MAAM,uBAAuB,EAAG,qBAA8B,CAAC;AAEtE;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,EAAG,CAAU,CAAC;AAE9C;;;;;;;;;;;;GAYG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACH,wBAoHE"}
@@ -14,6 +14,16 @@ import { Worker } from "../Workers/Worker.js";
14
14
  import Store from "./Store.js";
15
15
  import { AuthToken } from "./Token.js";
16
16
  export const STATE_STORE_SCRIPT_NAME = "alchemy-state-store";
17
+ /**
18
+ * Version of the deployed Cloudflare State Store worker contract.
19
+ *
20
+ * Bump this whenever the wire format or runtime behaviour of the
21
+ * worker changes in a way that an older deployed copy can no longer
22
+ * satisfy. Clients query `/version` on the deployed worker and
23
+ * compare against this constant; a mismatch (or 404) triggers a
24
+ * forced redeploy via the bootstrap flow.
25
+ */
26
+ export const STATE_STORE_VERSION = 1;
17
27
  /**
18
28
  * Path on disk to *this* file, used as the worker's bundling entry.
19
29
  *
@@ -43,6 +53,7 @@ export default Worker("Api", {
43
53
  ? Effect.void
44
54
  : Effect.fail(new HttpApiError.Unauthorized()),
45
55
  })), Effect.orDie));
56
+ const versionApi = HttpApiBuilder.group(StateApi, "version", (handlers) => handlers.handle("getVersion", () => Effect.succeed({ version: STATE_STORE_VERSION })));
46
57
  const stateApi = HttpApiBuilder.group(StateApi, "state", (handlers) => handlers
47
58
  .handle("listStacks", () => store.getByName(Store.ROOT_DO_NAME).listStacks())
48
59
  .handle("listStages", ({ params }) => store.getByName(params.stack).listStages())
@@ -82,7 +93,7 @@ export default Worker("Api", {
82
93
  .unregisterStack({ stack: params.stack })
83
94
  : Effect.void), Effect.asVoid)));
84
95
  return {
85
- fetch: HttpApiBuilder.layer(StateApi).pipe(Layer.provide(stateApi), Layer.provide(StateAuthLive), Layer.provide(bearerTokenValidator),
96
+ fetch: HttpApiBuilder.layer(StateApi).pipe(Layer.provide(stateApi), Layer.provide(versionApi), Layer.provide(StateAuthLive), Layer.provide(bearerTokenValidator),
86
97
  // The state-store worker never serves files, so HttpPlatform's
87
98
  // file-response surface is stubbed.
88
99
  Layer.provide([Etag.layer, HttpPlatformStub, Path.layer]), HttpRouter.toHttpEffect),
@@ -1 +1 @@
1
- {"version":3,"file":"Api.js","sourceRoot":"","sources":["../../../src/Cloudflare/StateStore/Api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Api.js","sourceRoot":"","sources":["../../../src/Cloudflare/StateStore/Api.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ import * as Cloudflare from "../../Cloudflare/Providers.ts";
10
10
  import * as CloudflareEnvironment from "../CloudflareEnvironment.ts";
11
11
  import { AlchemyContext } from "../../AlchemyContext.ts";
12
12
  import { State } from "../../State/State.ts";
13
+ import * as Access from "../Access.ts";
13
14
  export interface BootstrapOptions {
14
15
  /**
15
16
  * The name of the script to use for the state store.
@@ -43,14 +44,14 @@ export interface BootstrapOptions {
43
44
  * state into the deployed store, persist credentials, and delete
44
45
  * the local stack.
45
46
  */
46
- export declare const bootstrap: (options?: BootstrapOptions) => Effect.Effect<void, AlchemyContext | import("effect/PlatformError").PlatformError | Config.ConfigError | AuthError | import("../../Stage.ts").Stage | import("../../State/State.ts").StateStoreError | Output.MissingSourceError | Output.InvalidReferenceError | import("@distilled.cloud/cloudflare/Errors").DefaultErrors | workers.InvalidRoute | SecretsStore.InvalidAccountId, AlchemyContext | import("effect/Path").Path | import("effect/FileSystem").FileSystem | HttpClient.HttpClient | import("../../index.ts").Cli | Cloudflare.Credentials | CloudflareEnvironment.CloudflareEnvironment>;
47
+ export declare const bootstrap: (options?: BootstrapOptions) => Effect.Effect<void, AlchemyContext | import("effect/PlatformError").PlatformError | Config.ConfigError | AuthError | import("../../Stage.ts").Stage | import("../../State/State.ts").StateStoreError | Output.MissingSourceError | Output.InvalidReferenceError | import("@distilled.cloud/cloudflare/Errors").DefaultErrors | workers.InvalidRoute | SecretsStore.InvalidAccountId, AlchemyContext | import("effect/Path").Path | import("effect/FileSystem").FileSystem | HttpClient.HttpClient | import("../../index.ts").Cli | Access.Access | Cloudflare.Credentials | CloudflareEnvironment.CloudflareEnvironment>;
47
48
  export declare const state: (props?: {
48
49
  /**
49
50
  * The name of the script to use for the state store.
50
51
  * @default "alchemy-state-store"
51
52
  */
52
53
  workerName?: string;
53
- }) => Layer.Layer<State | Cloudflare.Credentials | CloudflareEnvironment.CloudflareEnvironment, never, AlchemyContext | import("effect/Path").Path | import("effect/FileSystem").FileSystem | HttpClient.HttpClient | import("../../index.ts").AuthProviders | import("../../index.ts").Cli>;
54
+ }) => Layer.Layer<State | Access.Access | Cloudflare.Credentials | CloudflareEnvironment.CloudflareEnvironment, never, AlchemyContext | import("effect/Path").Path | import("effect/FileSystem").FileSystem | import("effect/unstable/process/ChildProcessSpawner").ChildProcessSpawner | HttpClient.HttpClient | import("../../index.ts").AuthProviders | import("../../index.ts").Cli>;
54
55
  /**
55
56
  * Log in to a Cloudflare-deployed HTTP state-store.
56
57
  *
@@ -70,5 +71,5 @@ export declare const state: (props?: {
70
71
  export declare const loginWithCloudflare: () => Effect.Effect<{
71
72
  url: string;
72
73
  authToken: string;
73
- }, Config.ConfigError | AuthError | import("@distilled.cloud/axiom").Unauthorized | import("@distilled.cloud/axiom").TooManyRequests | import("@distilled.cloud/axiom").InternalServerError | import("@distilled.cloud/axiom").BadGateway | import("@distilled.cloud/axiom").ServiceUnavailable | import("@distilled.cloud/axiom").GatewayTimeout | import("@distilled.cloud/cloudflare/Errors").CloudflareHttpError | import("@distilled.cloud/cloudflare/Errors").CloudflareParseError | import("@distilled.cloud/cloudflare/Errors").UnknownCloudflareError | workers.InvalidRoute | SecretsStore.InvalidAccountId, import("effect/FileSystem").FileSystem | HttpClient.HttpClient | Cloudflare.Credentials | CloudflareEnvironment.CloudflareEnvironment>;
74
+ }, Config.ConfigError | AuthError | import("@distilled.cloud/axiom").Unauthorized | import("@distilled.cloud/axiom").TooManyRequests | import("@distilled.cloud/axiom").InternalServerError | import("@distilled.cloud/axiom").BadGateway | import("@distilled.cloud/axiom").ServiceUnavailable | import("@distilled.cloud/axiom").GatewayTimeout | import("@distilled.cloud/cloudflare/Errors").CloudflareHttpError | import("@distilled.cloud/cloudflare/Errors").CloudflareParseError | import("@distilled.cloud/cloudflare/Errors").UnknownCloudflareError | workers.InvalidRoute | SecretsStore.InvalidAccountId, import("effect/FileSystem").FileSystem | HttpClient.HttpClient | Access.Access | Cloudflare.Credentials | CloudflareEnvironment.CloudflareEnvironment>;
74
75
  //# sourceMappingURL=State.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"State.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/StateStore/State.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,2CAA2C,CAAC;AAC1E,OAAO,KAAK,OAAO,MAAM,qCAAqC,CAAC;AAC/D,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAC;AAE9D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAGvD,OAAO,KAAK,UAAU,MAAM,+BAA+B,CAAC;AAO5D,OAAO,KAAK,qBAAqB,MAAM,6BAA6B,CAAC;AAGrE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,KAAK,EAAqB,MAAM,sBAAsB,CAAC;AAWhE,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,SAAS,GAAI,UAAS,gBAAqB,6kBAyDpD,CAAC;AAEL,eAAO,MAAM,KAAK,GAAI,QAAQ;IAC5B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,2RAuHE,CAAC;AAyIJ;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,mBAAmB;;;6tBA6D7B,CAAC"}
1
+ {"version":3,"file":"State.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/StateStore/State.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,2CAA2C,CAAC;AAC1E,OAAO,KAAK,OAAO,MAAM,qCAAqC,CAAC;AAC/D,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAC;AAG9D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAGvD,OAAO,KAAK,UAAU,MAAM,+BAA+B,CAAC;AAQ5D,OAAO,KAAK,qBAAqB,MAAM,6BAA6B,CAAC;AAGrE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,KAAK,EAAqB,MAAM,sBAAsB,CAAC;AAGhE,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AASvC,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,SAAS,GAAI,UAAS,gBAAqB,6lBAgEpD,CAAC;AAEL,eAAO,MAAM,KAAK,GAAI,QAAQ;IAC5B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,uXA8IE,CAAC;AAyIJ;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,mBAAmB;;;6uBAyE7B,CAAC"}
@@ -5,6 +5,7 @@ import * as Effect from "effect/Effect";
5
5
  import * as Layer from "effect/Layer";
6
6
  import * as Redacted from "effect/Redacted";
7
7
  import * as HttpClient from "effect/unstable/http/HttpClient";
8
+ import * as HttpApiClient from "effect/unstable/httpapi/HttpApiClient";
8
9
  import * as Config from "effect/Config";
9
10
  import { adopt } from "../../AdoptPolicy.js";
10
11
  import { AuthError } from "../../Auth/AuthProvider.js";
@@ -13,6 +14,7 @@ import { ALCHEMY_PROFILE } from "../../Auth/Profile.js";
13
14
  import * as Cloudflare from "../../Cloudflare/Providers.js";
14
15
  import { deploy } from "../../Deploy.js";
15
16
  import * as Alchemy from "../../Stack.js";
17
+ import { StateApi } from "../../State/HttpStateApi.js";
16
18
  import { makeHttpStateStore, } from "../../State/HttpStateStore.js";
17
19
  import * as CloudflareEnvironment from "../CloudflareEnvironment.js";
18
20
  import * as Credentials from "../Credentials.js";
@@ -21,9 +23,10 @@ import { makeLocalState } from "../../State/LocalState.js";
21
23
  import { State } from "../../State/State.js";
22
24
  import { recordStateStoreOp } from "../../Telemetry/Metrics.js";
23
25
  import * as Clank from "../../Util/Clank.js";
26
+ import * as Access from "../Access.js";
24
27
  import { CloudflareAuth } from "../Auth/AuthProvider.js";
25
28
  import { EdgeSessionError, createEdgeSession } from "../EdgeSession.js";
26
- import Api, { STATE_STORE_SCRIPT_NAME } from "./Api.js";
29
+ import Api, { STATE_STORE_SCRIPT_NAME, STATE_STORE_VERSION } from "./Api.js";
27
30
  import { AuthTokenSecretName, TokenValue } from "./Token.js";
28
31
  /** Filename used for stored credentials under the profile directory. */
29
32
  const CREDENTIALS_FILE = "cloudflare-state-store";
@@ -67,6 +70,13 @@ export const bootstrap = (options = {}) => Effect.gen(function* () {
67
70
  if (!isCI) {
68
71
  yield* writeCredentials(profileName, CREDENTIALS_FILE, credentials);
69
72
  }
73
+ yield* redeployIfStale({
74
+ scriptName,
75
+ profileName,
76
+ localState,
77
+ isCI,
78
+ url: credentials.url,
79
+ });
70
80
  yield* Clank.success(`Cloudflare State Store '${scriptName}' is ready.`);
71
81
  return;
72
82
  }
@@ -109,9 +119,21 @@ export const state = (props) => Layer.effect(State, Effect.gen(function* () {
109
119
  isCI,
110
120
  });
111
121
  }
112
- // TODO(sam): support upgrading state store, right now we only deploy once
113
122
  if (credentials) {
114
- // it's in the profile, let's go
123
+ // We have local credentials. Before trusting them, verify
124
+ // the deployed worker is on the version this CLI was built
125
+ // against. If it isn't, `redeployIfStale` runs the idempotent
126
+ // bootstrap flow and short-circuits with the freshly-deployed
127
+ // store.
128
+ const fresh = yield* redeployIfStale({
129
+ scriptName,
130
+ profileName,
131
+ localState,
132
+ isCI,
133
+ url: credentials.url,
134
+ });
135
+ if (fresh)
136
+ return fresh;
115
137
  const httpState = yield* makeHttpStateStore(credentials);
116
138
  if (alchemyContext.updateStateStore) {
117
139
  yield* deployStateStore(scriptName, httpState);
@@ -132,6 +154,15 @@ export const state = (props) => Layer.effect(State, Effect.gen(function* () {
132
154
  if (!isCI) {
133
155
  yield* writeCredentials(profileName, CREDENTIALS_FILE, credentials);
134
156
  }
157
+ const fresh = yield* redeployIfStale({
158
+ scriptName,
159
+ profileName,
160
+ localState,
161
+ isCI,
162
+ url: credentials.url,
163
+ });
164
+ if (fresh)
165
+ return fresh;
135
166
  const httpState = yield* makeHttpStateStore(credentials);
136
167
  if (alchemyContext.updateStateStore) {
137
168
  yield* deployStateStore(scriptName, httpState);
@@ -157,7 +188,7 @@ export const state = (props) => Layer.effect(State, Effect.gen(function* () {
157
188
  localState,
158
189
  isCI,
159
190
  });
160
- }).pipe(Effect.orDie)).pipe(Layer.provideMerge(Credentials.fromAuthProvider()), Layer.provideMerge(CloudflareEnvironment.fromProfile()), Layer.provideMerge(CloudflareAuth), Layer.orDie);
191
+ }).pipe(Effect.orDie)).pipe(Layer.provideMerge(Credentials.fromAuthProvider()), Layer.provideMerge(CloudflareEnvironment.fromProfile()), Layer.provideMerge(CloudflareAuth), Layer.provideMerge(Access.AccessLive), Layer.orDie);
161
192
  /**
162
193
  * Non-destructively copy every resource in the
163
194
  * `CloudflareStateStore/<scriptName>` stack from `source` into
@@ -286,7 +317,15 @@ export const loginWithCloudflare = () => Effect.gen(function* () {
286
317
  }));
287
318
  }
288
319
  // 2. Fetch the auth-token value via an edge-preview worker.
289
- const authToken = yield* readSecretViaEdge(store.id, AuthTokenSecretName);
320
+ // We piggy-back on the already-deployed state-store script so the
321
+ // `cf-workers-preview-token` header has a real workers.dev route to
322
+ // swap onto. Uploading the probe under a brand-new script name fails
323
+ // on accounts where that script has never been deployed (or where
324
+ // workers.dev preview URLs are off by default — the post-2024
325
+ // Cloudflare default for new accounts) because the host doesn't
326
+ // resolve and Cloudflare's edge serves a 400 HTML error page
327
+ // instead of routing to the preview.
328
+ const authToken = yield* readSecretViaEdge(STATE_STORE_SCRIPT_NAME, store.id, AuthTokenSecretName);
290
329
  // 3. Derive the deployed worker URL.
291
330
  const { subdomain } = yield* workers.getSubdomain({ accountId });
292
331
  const url = `https://${STATE_STORE_SCRIPT_NAME}.${subdomain}.workers.dev`;
@@ -308,8 +347,45 @@ export const loginWithCloudflare = () => Effect.gen(function* () {
308
347
  message: `Edge-preview secret read failed: ${e.message}`,
309
348
  cause: e.cause,
310
349
  }))));
311
- /** Preview script name used by the edge-probe worker. */
312
- const PROBE_SCRIPT_NAME = "alchemy-state-store-probe";
350
+ /**
351
+ * Run {@link finishBootstrap} iff the worker at `url` fails the
352
+ * version probe; otherwise resolve to `undefined`. Centralises the
353
+ * "is the deployed worker still compatible?" guard used by every
354
+ * code path that already has a presumably-valid worker URL.
355
+ */
356
+ const redeployIfStale = ({ url, scriptName, profileName, localState, isCI, }) => Effect.gen(function* () {
357
+ if (yield* checkStateStoreVersion(url))
358
+ return undefined;
359
+ yield* Clank.info(`Cloudflare State Store '${scriptName}' is out of date; redeploying...`);
360
+ return yield* finishBootstrap({
361
+ scriptName,
362
+ profileName,
363
+ localState,
364
+ isCI,
365
+ });
366
+ });
367
+ /**
368
+ * Probe the deployed worker's `/version` endpoint and decide whether
369
+ * it satisfies the current {@link STATE_STORE_VERSION} contract.
370
+ *
371
+ * Reuses the same typed {@link StateApi} client the rest of the store
372
+ * speaks, just without the bearer-token transform — the `/version`
373
+ * route is intentionally unauthenticated so we can probe it before
374
+ * trusting any locally-cached credentials.
375
+ *
376
+ * Returns `true` only on a successful response carrying the matching
377
+ * version. Any failure (404 from a pre-`/version` deploy, transport
378
+ * error, schema mismatch, version mismatch) collapses to `false`,
379
+ * since the caller's response in every case is the same: fall
380
+ * through to the idempotent bootstrap flow.
381
+ */
382
+ const checkStateStoreVersion = (url) => Effect.gen(function* () {
383
+ const client = yield* HttpApiClient.make(StateApi, { baseUrl: url });
384
+ const result = yield* client.version
385
+ .getVersion()
386
+ .pipe(Effect.catch(() => Effect.succeed(undefined)));
387
+ return result?.version === STATE_STORE_VERSION;
388
+ });
313
389
  /**
314
390
  * Tiny ES-module worker that reads `env.SECRET.get()` and echoes it
315
391
  * back. Uploaded as an ephemeral edge-preview, called once, then
@@ -326,18 +402,27 @@ const SECRET_PROBE_SOURCE = `export default {
326
402
  },
327
403
  };`;
328
404
  /**
329
- * Upload a tiny edge-preview worker that binds the given Secrets
330
- * Store secret, call it once, and return the decoded value. The
331
- * Cloudflare REST API deliberately hides secret values; only worker
332
- * bindings can resolve them, so this is the out-of-band path.
405
+ * Upload an ephemeral edge-preview build of the given (already
406
+ * deployed) script that binds the requested Secrets Store secret,
407
+ * call it once with the preview token, and return the decoded value.
408
+ * The Cloudflare REST API deliberately hides secret values; only
409
+ * worker bindings can resolve them, so this is the out-of-band path.
410
+ *
411
+ * `scriptName` MUST be a script that is already deployed on the
412
+ * account with workers.dev enabled — the `cf-workers-preview-token`
413
+ * header swaps our probe code in for an existing route, it does not
414
+ * create one. Using an undeployed name (or a deployed script that
415
+ * doesn't have workers.dev enabled) makes the workers.dev edge serve
416
+ * a generic Cloudflare 400 HTML error page instead of routing to the
417
+ * preview. The state-store script itself satisfies both conditions.
333
418
  */
334
- const readSecretViaEdge = (storeId, secretName) => Effect.gen(function* () {
419
+ const readSecretViaEdge = (scriptName, storeId, secretName) => Effect.gen(function* () {
335
420
  const http = yield* HttpClient.HttpClient;
336
421
  const file = new File([SECRET_PROBE_SOURCE], "worker.js", {
337
422
  type: "application/javascript+module",
338
423
  });
339
424
  const session = yield* createEdgeSession({
340
- scriptName: PROBE_SCRIPT_NAME,
425
+ scriptName,
341
426
  files: [file],
342
427
  bindings: [
343
428
  { type: "secrets_store_secret", name: "SECRET", secretName, storeId },
@@ -348,6 +433,11 @@ const readSecretViaEdge = (storeId, secretName) => Effect.gen(function* () {
348
433
  });
349
434
  if (response.status !== 200) {
350
435
  const body = yield* response.text.pipe(Effect.catch(() => Effect.succeed("")));
436
+ // TEMP(sam): dump the full body so we can capture the exact
437
+ // Cloudflare error page when the probe fails in the wild. Drop
438
+ // this once we've confirmed the routing fix covers all the
439
+ // observed failure modes.
440
+ yield* Effect.logWarning(`Secret probe failed (${response.status}) at ${session.url}\n${body}`);
351
441
  return yield* Effect.fail(new EdgeSessionError({
352
442
  message: `Secret probe returned ${response.status}: ${body.slice(0, 200)}`,
353
443
  }));