1import { PkgRegistry } from "@alchemy.run/pkg/Registry";
2import * as Alchemy from "alchemy";
3import * as Cloudflare from "alchemy/Cloudflare";
4import * as ByteSize from "effect/ByteSize";
5import * as Config from "effect/Config";
6import * as Duration from "effect/Duration";
7import * as Effect from "effect/Effect";
8
9export default Alchemy.Stack(
10 "AlchemyPkg",
11 {
12 providers: Cloudflare.providers(),
13 state: Cloudflare.state(),
14 },
15 Effect.gen(function* () {
16 const registry = yield* PkgRegistry("Registry", {
17 worker: {
18 domain: {
19 name: "pkg.alchemy.run",
20 aliases: [
21 "pkg.distilled.cloud",
22 "📦.alchemy.run",
23 "📦.distilled.cloud",
24 ],
25 },
26 },
27 github: {
28 appId: Config.String("GH_APP_ID"),
29 privateKey: Config.Redacted("GH_APP_PRIVATE_KEY"),
30 },
31 policy: {
32 repos: ["alchemy-run/alchemy", "alchemy-run/distilled"],
33 ttl: Duration.weeks(1),
34 maxPackageSize: ByteSize.megabytes(100),
35 },
36 });
37
38 return {
39 url: registry.url.as<string>(),
40 };
41 }),
42);