@alchemy.run/pkg 0.0.0-placeholder → 2.0.0-beta.79

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 (70) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +5 -0
  3. package/README.md +117 -0
  4. package/dist/Manifest.d.ts +107 -0
  5. package/dist/Manifest.d.ts.map +1 -0
  6. package/dist/Manifest.js +58 -0
  7. package/dist/Manifest.js.map +1 -0
  8. package/dist/Protocol.d.ts +186 -0
  9. package/dist/Protocol.d.ts.map +1 -0
  10. package/dist/Protocol.js +115 -0
  11. package/dist/Protocol.js.map +1 -0
  12. package/dist/Registry/Bindings.d.ts +134 -0
  13. package/dist/Registry/Bindings.d.ts.map +1 -0
  14. package/dist/Registry/Bindings.js +92 -0
  15. package/dist/Registry/Bindings.js.map +1 -0
  16. package/dist/Registry/GitHub.d.ts +96 -0
  17. package/dist/Registry/GitHub.d.ts.map +1 -0
  18. package/dist/Registry/GitHub.js +226 -0
  19. package/dist/Registry/GitHub.js.map +1 -0
  20. package/dist/Registry/Handler.d.ts +53 -0
  21. package/dist/Registry/Handler.d.ts.map +1 -0
  22. package/dist/Registry/Handler.js +375 -0
  23. package/dist/Registry/Handler.js.map +1 -0
  24. package/dist/Registry/KVCache.d.ts +24 -0
  25. package/dist/Registry/KVCache.d.ts.map +1 -0
  26. package/dist/Registry/KVCache.js +42 -0
  27. package/dist/Registry/KVCache.js.map +1 -0
  28. package/dist/Registry/Sweep.d.ts +12 -0
  29. package/dist/Registry/Sweep.d.ts.map +1 -0
  30. package/dist/Registry/Sweep.js +69 -0
  31. package/dist/Registry/Sweep.js.map +1 -0
  32. package/dist/Registry/Tags.d.ts +49 -0
  33. package/dist/Registry/Tags.d.ts.map +1 -0
  34. package/dist/Registry/Tags.js +80 -0
  35. package/dist/Registry/Tags.js.map +1 -0
  36. package/dist/Registry.d.ts +378 -0
  37. package/dist/Registry.d.ts.map +1 -0
  38. package/dist/Registry.js +119 -0
  39. package/dist/Registry.js.map +1 -0
  40. package/dist/cli/bin.d.ts +18 -0
  41. package/dist/cli/bin.d.ts.map +1 -0
  42. package/dist/cli/bin.js +33 -0
  43. package/dist/cli/bin.js.map +1 -0
  44. package/dist/cli/pack.d.ts +169 -0
  45. package/dist/cli/pack.d.ts.map +1 -0
  46. package/dist/cli/pack.js +447 -0
  47. package/dist/cli/pack.js.map +1 -0
  48. package/dist/cli/publish.d.ts +33 -0
  49. package/dist/cli/publish.d.ts.map +1 -0
  50. package/dist/cli/publish.js +76 -0
  51. package/dist/cli/publish.js.map +1 -0
  52. package/dist/index.d.ts +3 -0
  53. package/dist/index.d.ts.map +1 -0
  54. package/dist/index.js +6 -0
  55. package/dist/index.js.map +1 -0
  56. package/migrations/0001_init.sql +19 -0
  57. package/package.json +89 -1
  58. package/src/Manifest.ts +76 -0
  59. package/src/Protocol.ts +163 -0
  60. package/src/Registry/Bindings.ts +134 -0
  61. package/src/Registry/GitHub.ts +365 -0
  62. package/src/Registry/Handler.ts +549 -0
  63. package/src/Registry/KVCache.ts +68 -0
  64. package/src/Registry/Sweep.ts +117 -0
  65. package/src/Registry/Tags.ts +117 -0
  66. package/src/Registry.ts +197 -0
  67. package/src/cli/bin.ts +101 -0
  68. package/src/cli/pack.ts +603 -0
  69. package/src/cli/publish.ts +129 -0
  70. package/src/index.ts +5 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pack.js","sourceRoot":"","sources":["../../src/cli/pack.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as FileSystem from "effect/FileSystem";
3
+ import * as Path from "effect/Path";
4
+ import * as Schema from "effect/Schema";
5
+ declare const PublishError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
6
+ readonly _tag: "PublishError";
7
+ } & Readonly<A>;
8
+ export declare class PublishError extends PublishError_base<{
9
+ readonly message: string;
10
+ }> {
11
+ }
12
+ export interface PublishOptions {
13
+ readonly cwd: string;
14
+ readonly dir: string;
15
+ readonly registry: string;
16
+ }
17
+ /**
18
+ * Publish a `pkg pack` directory from the current GitHub Actions job. The
19
+ * workflow must first have uploaded the manifest as an artifact of the run
20
+ * under the name `pkg pack` printed; the registry verifies that artifact
21
+ * through GitHub, then either reports the tarballs it lacks, which are
22
+ * uploaded before trying again, or writes the tags.
23
+ */
24
+ export declare const publish: (options: PublishOptions) => Effect.Effect<{
25
+ readonly packages: readonly {
26
+ readonly name: string;
27
+ readonly group: string;
28
+ readonly url: string;
29
+ readonly tags: readonly string[];
30
+ }[];
31
+ }, import("effect/PlatformError").PlatformError | PublishError | Schema.SchemaError, FileSystem.FileSystem | import("effect/unstable/http/HttpClient").HttpClient | Path.Path>;
32
+ export {};
33
+ //# sourceMappingURL=publish.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/cli/publish.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;;;;AAKxC,qBAAa,YAAa,SAAQ,kBAAiC;IACjE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;AAEL,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AA4BD;;;;;;GAMG;AACH,eAAO,MAAM,OAAO;;;;;;;8KA0ElB,CAAC"}
@@ -0,0 +1,76 @@
1
+ import * as Config from "effect/Config";
2
+ import * as Console from "effect/Console";
3
+ import * as Data from "effect/Data";
4
+ import * as Effect from "effect/Effect";
5
+ import * as FileSystem from "effect/FileSystem";
6
+ import * as Path from "effect/Path";
7
+ import * as Schema from "effect/Schema";
8
+ import * as HttpApiClient from "effect/unstable/httpapi/HttpApiClient";
9
+ import { MANIFEST_FILE, ManifestJson } from "../Manifest.js";
10
+ import { PkgApi } from "../Protocol.js";
11
+ export class PublishError extends Data.TaggedError("PublishError") {
12
+ }
13
+ /**
14
+ * The GitHub Actions run this job belongs to, from the runner's environment.
15
+ */
16
+ const currentRun = Effect.gen(function* () {
17
+ const repo = yield* Config.String("GITHUB_REPOSITORY");
18
+ const runId = yield* Config.Int("GITHUB_RUN_ID");
19
+ const attempt = yield* Config.Int("GITHUB_RUN_ATTEMPT").pipe(Config.withDefault(1));
20
+ return { repo, runId, attempt };
21
+ }).pipe(Effect.mapError(() => new PublishError({
22
+ message: "pkg publish must run inside a GitHub Actions job",
23
+ })));
24
+ /** Render a registry or transport failure as a `PublishError`. */
25
+ const failed = (what) => (e) => new PublishError({
26
+ message: `${what}: ${e.message ? `${e._tag}: ${e.message}` : e._tag}`,
27
+ });
28
+ /**
29
+ * Publish a `pkg pack` directory from the current GitHub Actions job. The
30
+ * workflow must first have uploaded the manifest as an artifact of the run
31
+ * under the name `pkg pack` printed; the registry verifies that artifact
32
+ * through GitHub, then either reports the tarballs it lacks, which are
33
+ * uploaded before trying again, or writes the tags.
34
+ */
35
+ export const publish = Effect.fn("publish")(function* (options) {
36
+ const fs = yield* FileSystem.FileSystem;
37
+ const path = yield* Path.Path;
38
+ const registry = options.registry.replace(/\/+$/, "");
39
+ const run = yield* currentRun;
40
+ const client = yield* HttpApiClient.make(PkgApi, { baseUrl: registry });
41
+ const dir = path.resolve(options.cwd, options.dir);
42
+ const manifestText = yield* fs.readFileString(path.join(dir, MANIFEST_FILE));
43
+ const manifest = yield* Schema.decodeUnknownEffect(ManifestJson)(manifestText);
44
+ if (manifest.registry !== registry) {
45
+ return yield* new PublishError({
46
+ message: `artifact was packed for ${manifest.registry}, not ${registry}`,
47
+ });
48
+ }
49
+ const upload = (pkg) => Effect.gen(function* () {
50
+ const bytes = yield* fs.readFile(path.join(dir, pkg.file));
51
+ const result = yield* client.Registry.uploadTarball({
52
+ params: { name: pkg.name, sha256: pkg.sha256 },
53
+ query: run,
54
+ payload: bytes,
55
+ }).pipe(Effect.mapError(failed(`upload ${pkg.name}`)));
56
+ yield* Console.log(`${result.uploaded ? "Uploaded" : "Reused"} ${pkg.name} (${pkg.sha256.slice(0, 12)}, ${pkg.size} bytes)`);
57
+ });
58
+ const uploadMissing = (missing) => {
59
+ const wanted = new Set(missing.map((ref) => `${ref.name}@${ref.sha256}`));
60
+ return Console.log(`${missing.length} of ${manifest.packages.length} tarball(s) to upload`).pipe(Effect.andThen(Effect.forEach(manifest.packages.filter((pkg) => wanted.has(`${pkg.name}@${pkg.sha256}`)), upload, { concurrency: 4, discard: true })));
61
+ };
62
+ const attempt = client.Registry.publish({
63
+ payload: { run, manifest: manifestText },
64
+ });
65
+ const published = yield* attempt.pipe(
66
+ // The first answer is usually the tarballs to upload; publish once more
67
+ // after uploading them.
68
+ Effect.catchTag("MissingTarballs", (e) => Effect.andThen(uploadMissing(e.missing), attempt)), Effect.catchTag("MissingTarballs", (e) => new PublishError({
69
+ message: `registry still reports missing tarballs after upload: ${e.missing.map((ref) => ref.name).join(", ")}`,
70
+ })), Effect.mapError((e) => e._tag === "PublishError" ? e : failed("publish")(e)));
71
+ for (const pkg of published.packages) {
72
+ yield* Console.log(`${pkg.name}: ${pkg.url} [${pkg.tags.join(", ")}]`);
73
+ }
74
+ return published;
75
+ });
76
+ //# sourceMappingURL=publish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/cli/publish.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from "./Manifest.ts";
2
+ export * from "./Protocol.ts";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ // The shared surface between the CLI and the registry Worker. The Worker
2
+ // itself lives on `@alchemy.run/pkg/Registry` so that importing this module
3
+ // never drags Cloudflare or GitHub runtime code into a CLI process.
4
+ export * from "./Manifest.js";
5
+ export * from "./Protocol.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,4EAA4E;AAC5E,oEAAoE;AACpE,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC"}
@@ -0,0 +1,19 @@
1
+ -- One row per tag. The tarball lives in R2 under <package>/<sha256>.tgz and
2
+ -- exists for as long as any row points at it.
3
+ --
4
+ -- expires_at is refreshed by every publication of the tag. linked_prs is the
5
+ -- JSON list of "owner/repo#N" pull requests whose runs produced the tag; the
6
+ -- sweep keeps those rows alive while any of them is open and pins expiry to
7
+ -- close time plus TTL once they all close. A mirrored commit tag is shared by
8
+ -- every pull request that pins that submodule commit, which is why this is
9
+ -- a list and not a column.
10
+ CREATE TABLE tags (
11
+ package TEXT NOT NULL,
12
+ tag TEXT NOT NULL,
13
+ sha256 TEXT NOT NULL,
14
+ expires_at INTEGER NOT NULL,
15
+ linked_prs TEXT NOT NULL DEFAULT '[]',
16
+ PRIMARY KEY (package, tag)
17
+ );
18
+ CREATE INDEX tags_expires_at ON tags (expires_at);
19
+ CREATE INDEX tags_sha256 ON tags (package, sha256);
package/package.json CHANGED
@@ -1,4 +1,92 @@
1
1
  {
2
2
  "name": "@alchemy.run/pkg",
3
- "version": "0.0.0-placeholder"
3
+ "version": "2.0.0-beta.79",
4
+ "description": "Preview package registry for pull requests: a Cloudflare Worker verified by GitHub Actions runs, plus the pkg CLI that packs and publishes workspace packages.",
5
+ "homepage": "https://alchemy.run",
6
+ "license": "Apache-2.0",
7
+ "author": "Sam Goodwin <sam@alchemy.run>",
8
+ "keywords": [
9
+ "alchemy",
10
+ "cloudflare",
11
+ "effect",
12
+ "preview-packages",
13
+ "pull-request"
14
+ ],
15
+ "type": "module",
16
+ "sideEffects": false,
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git+https://github.com/alchemy-run/alchemy.git",
20
+ "directory": "packages/pkg"
21
+ },
22
+ "bugs": {
23
+ "url": "https://github.com/alchemy-run/alchemy/issues"
24
+ },
25
+ "bin": {
26
+ "pkg": "./dist/cli/bin.js"
27
+ },
28
+ "files": [
29
+ "dist",
30
+ "migrations",
31
+ "src",
32
+ "LICENSE",
33
+ "NOTICE"
34
+ ],
35
+ "exports": {
36
+ ".": {
37
+ "types": "./dist/index.d.ts",
38
+ "bun": "./src/index.ts",
39
+ "worker": "./src/index.ts",
40
+ "import": "./dist/index.js"
41
+ },
42
+ "./Registry": {
43
+ "types": "./dist/Registry.d.ts",
44
+ "bun": "./src/Registry.ts",
45
+ "worker": "./src/Registry.ts",
46
+ "import": "./dist/Registry.js"
47
+ },
48
+ "./Manifest": {
49
+ "types": "./dist/Manifest.d.ts",
50
+ "bun": "./src/Manifest.ts",
51
+ "worker": "./src/Manifest.ts",
52
+ "import": "./dist/Manifest.js"
53
+ },
54
+ "./Protocol": {
55
+ "types": "./dist/Protocol.d.ts",
56
+ "bun": "./src/Protocol.ts",
57
+ "worker": "./src/Protocol.ts",
58
+ "import": "./dist/Protocol.js"
59
+ }
60
+ },
61
+ "dependencies": {
62
+ "@distilled.cloud/github": "1.0.0-rc.12",
63
+ "alchemy": "2.0.0-beta.79",
64
+ "effect": ">=4.0.0-rc.115 || >=4.0.0",
65
+ "modern-tar": "^0.8.4"
66
+ },
67
+ "peerDependencies": {
68
+ "@effect/platform-bun": ">=4.0.0-rc.115 || >=4.0.0",
69
+ "@effect/platform-node": ">=4.0.0-rc.115 || >=4.0.0"
70
+ },
71
+ "peerDependenciesMeta": {
72
+ "@effect/platform-bun": {
73
+ "optional": true
74
+ },
75
+ "@effect/platform-node": {
76
+ "optional": true
77
+ }
78
+ },
79
+ "publishConfig": {
80
+ "access": "public"
81
+ },
82
+ "devDependencies": {
83
+ "@effect/platform-bun": ">=4.0.0-rc.115 || >=4.0.0",
84
+ "@effect/platform-node": ">=4.0.0-rc.115 || >=4.0.0",
85
+ "@types/bun": "1.3.14",
86
+ "typescript": "^7.0.2"
87
+ },
88
+ "scripts": {
89
+ "build": "tsc -b && bun ../../scripts/copy-package-files.ts pkg",
90
+ "test": "bun test ./test"
91
+ }
4
92
  }
@@ -0,0 +1,76 @@
1
+ import * as Schema from "effect/Schema";
2
+
3
+ /**
4
+ * An npm package name, scoped or unscoped, under the rules npm applies to
5
+ * new packages: lowercase, URL-safe, at most 214 characters. Names end up
6
+ * in R2 keys, install URLs, and the markdown of comments and check runs,
7
+ * so nothing outside this set is ever accepted from a client.
8
+ */
9
+ export const PackageName = Schema.String.pipe(
10
+ Schema.check(
11
+ Schema.isPattern(
12
+ /^(?:@[a-z0-9-*~][a-z0-9-*._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/,
13
+ ),
14
+ Schema.isMaxLength(214),
15
+ ),
16
+ );
17
+
18
+ /** A display group label for the install comment: `Alchemy`, `@alchemy.run`. */
19
+ export const GroupName = Schema.String.pipe(
20
+ Schema.check(Schema.isPattern(/^[@A-Za-z0-9][A-Za-z0-9 ._@/-]{0,63}$/)),
21
+ );
22
+
23
+ /**
24
+ * One packed workspace package inside a `pkg pack` artifact.
25
+ *
26
+ * Everything here is data the CLI observed while packing. The registry never
27
+ * derives a tag from it: every tag comes from the GitHub Actions run that
28
+ * vouched for the manifest, and R2 verifies uploaded tarball bytes against
29
+ * the hash they are stored under.
30
+ */
31
+ export const ManifestPackage = Schema.Struct({
32
+ name: PackageName,
33
+ /** Version from the package manifest at pack time. */
34
+ version: Schema.String,
35
+ /** Package directory relative to the workspace root, POSIX separators. */
36
+ dir: Schema.String,
37
+ group: GroupName,
38
+ /** Tarball file name inside the artifact directory. */
39
+ file: Schema.String,
40
+ /** Lowercase hex SHA-256 of the tarball bytes. */
41
+ sha256: Schema.String,
42
+ /** Tarball size in bytes. */
43
+ size: Schema.Number,
44
+ });
45
+ export type ManifestPackage = typeof ManifestPackage.Type;
46
+
47
+ /** A display group in the install comment, in the order `pkg pack` listed it. */
48
+ export const ManifestGroup = Schema.Struct({
49
+ name: GroupName,
50
+ /** Render the group collapsed in the install comment. */
51
+ collapsed: Schema.Boolean,
52
+ });
53
+ export type ManifestGroup = typeof ManifestGroup.Type;
54
+
55
+ /**
56
+ * The `pkg-manifest.json` written next to the tarballs by `pkg pack` and read
57
+ * back by `pkg publish`.
58
+ */
59
+ export const Manifest = Schema.Struct({
60
+ version: Schema.Literal(1),
61
+ groups: Schema.Array(ManifestGroup),
62
+ /** Registry origin the tarball dependencies were rewritten against. */
63
+ registry: Schema.String,
64
+ /**
65
+ * HEAD commit of the root repository at pack time. The registry requires
66
+ * it to be the head of the run that publishes, since that is the commit
67
+ * every tag names.
68
+ */
69
+ head: Schema.String,
70
+ packages: Schema.Array(ManifestPackage),
71
+ });
72
+ export type Manifest = typeof Manifest.Type;
73
+
74
+ export const ManifestJson = Schema.fromJsonString(Manifest);
75
+
76
+ export const MANIFEST_FILE = "pkg-manifest.json";
@@ -0,0 +1,163 @@
1
+ import * as Schema from "effect/Schema";
2
+ import * as HttpApi from "effect/unstable/httpapi/HttpApi";
3
+ import * as HttpApiEndpoint from "effect/unstable/httpapi/HttpApiEndpoint";
4
+ import * as HttpApiGroup from "effect/unstable/httpapi/HttpApiGroup";
5
+ import * as HttpApiSchema from "effect/unstable/httpapi/HttpApiSchema";
6
+ import { PackageName } from "./Manifest.ts";
7
+
8
+ /**
9
+ * The HTTP contract between the `pkg` CLI and the registry Worker, as an
10
+ * `HttpApi`. The Worker implements it with `HttpApiBuilder`; the CLI calls
11
+ * it through `HttpApiClient`. Importing this file pulls in no runtime code.
12
+ */
13
+
14
+ /**
15
+ * The GitHub Actions run a request comes from. It is a lookup hint, not a
16
+ * credential: the registry resolves the run through the GitHub API and
17
+ * trusts only what GitHub says about it.
18
+ */
19
+ export const RunRef = Schema.Struct({
20
+ repo: Schema.String,
21
+ runId: Schema.Number,
22
+ attempt: Schema.Number,
23
+ });
24
+ export type RunRef = typeof RunRef.Type;
25
+
26
+ /**
27
+ * Name of the artifact a job uploads to its own run to vouch for a manifest.
28
+ * Only the job holds the runtime token that can add artifacts to the run, so
29
+ * an artifact carrying the manifest's hash is GitHub's record that this run
30
+ * approved exactly these package hashes.
31
+ */
32
+ export const manifestArtifactName = (sha256: string) =>
33
+ `pkg-manifest-${sha256}`;
34
+
35
+ /** Lowercase hex SHA-256. */
36
+ export const Sha256 = Schema.String.pipe(
37
+ Schema.check(Schema.isPattern(/^[a-f0-9]{64}$/)),
38
+ );
39
+
40
+ export const TarballRef = Schema.Struct({
41
+ name: PackageName,
42
+ sha256: Sha256,
43
+ });
44
+ export type TarballRef = typeof TarballRef.Type;
45
+
46
+ /** The request names no usable run, or carries an invalid body. */
47
+ export class BadRequest extends Schema.TaggedError<BadRequest>()(
48
+ "BadRequest",
49
+ { message: Schema.String },
50
+ { httpApiStatus: 400 },
51
+ ) {}
52
+
53
+ /** The repository may not publish, or the run has not vouched for the manifest. */
54
+ export class Forbidden extends Schema.TaggedError<Forbidden>()(
55
+ "Forbidden",
56
+ { message: Schema.String },
57
+ { httpApiStatus: 403 },
58
+ ) {}
59
+
60
+ /** Requests come from inside a run, so a finished run cannot publish. */
61
+ export class RunNotInProgress extends Schema.TaggedError<RunNotInProgress>()(
62
+ "RunNotInProgress",
63
+ { message: Schema.String },
64
+ { httpApiStatus: 409 },
65
+ ) {}
66
+
67
+ /** Upload these, then publish again. */
68
+ export class MissingTarballs extends Schema.TaggedError<MissingTarballs>()(
69
+ "MissingTarballs",
70
+ { missing: Schema.Array(TarballRef) },
71
+ { httpApiStatus: 409 },
72
+ ) {}
73
+
74
+ export class PackageTooLarge extends Schema.TaggedError<PackageTooLarge>()(
75
+ "PackageTooLarge",
76
+ { message: Schema.String },
77
+ { httpApiStatus: 413 },
78
+ ) {}
79
+
80
+ /** GitHub could not be reached or answered with an error. */
81
+ export class Upstream extends Schema.TaggedError<Upstream>()(
82
+ "Upstream",
83
+ { message: Schema.String },
84
+ { httpApiStatus: 502 },
85
+ ) {}
86
+
87
+ export const PublishedPackage = Schema.Struct({
88
+ name: Schema.String,
89
+ group: Schema.String,
90
+ /** Install URL pinned to the commit. */
91
+ url: Schema.String,
92
+ tags: Schema.Array(Schema.String),
93
+ });
94
+ export type PublishedPackage = typeof PublishedPackage.Type;
95
+
96
+ export const PublishResponse = Schema.Struct({
97
+ packages: Schema.Array(PublishedPackage),
98
+ });
99
+ export type PublishResponse = typeof PublishResponse.Type;
100
+
101
+ /**
102
+ * `manifest` is the exact `pkg-manifest.json` text the job vouched for; its
103
+ * SHA-256 must match an artifact on the run. Idempotent: the registry
104
+ * either fails with {@link MissingTarballs} or writes the tags.
105
+ */
106
+ export const publish = HttpApiEndpoint.post("publish", "/api/publish", {
107
+ payload: Schema.Struct({ run: RunRef, manifest: Schema.String }),
108
+ success: PublishResponse,
109
+ error: [
110
+ BadRequest,
111
+ Forbidden,
112
+ RunNotInProgress,
113
+ MissingTarballs,
114
+ PackageTooLarge,
115
+ Upstream,
116
+ ],
117
+ });
118
+
119
+ export const TarballResponse = Schema.Struct({
120
+ name: Schema.String,
121
+ sha256: Sha256,
122
+ size: Schema.Number,
123
+ uploaded: Schema.Boolean,
124
+ });
125
+ export type TarballResponse = typeof TarballResponse.Type;
126
+
127
+ /**
128
+ * Content-addressed upload. Any in-progress run of an allowed repository
129
+ * may upload; bytes only become reachable once a vouched manifest tags
130
+ * them. The run travels in the query because the body is the tarball.
131
+ */
132
+ export const uploadTarball = HttpApiEndpoint.put(
133
+ "uploadTarball",
134
+ "/api/tarballs/:name/:sha256",
135
+ {
136
+ params: TarballRef,
137
+ query: RunRef,
138
+ payload: Schema.Uint8Array.pipe(HttpApiSchema.asUint8Array()),
139
+ success: TarballResponse,
140
+ error: [BadRequest, Forbidden, RunNotInProgress, PackageTooLarge, Upstream],
141
+ },
142
+ );
143
+
144
+ export const health = HttpApiEndpoint.get("health", "/api/health", {
145
+ success: Schema.Struct({ ok: Schema.Boolean }),
146
+ });
147
+
148
+ export class Registry extends HttpApiGroup.make("Registry")
149
+ .add(publish)
150
+ .add(uploadTarball) {}
151
+
152
+ export class Health extends HttpApiGroup.make("Health").add(health) {}
153
+
154
+ export class PkgApi extends HttpApi.make("Pkg").add(Registry).add(Health) {}
155
+
156
+ /**
157
+ * Immutable tarball URL on the registry. Dependencies between packed
158
+ * packages link to these, so a tarball's bytes depend only on its own
159
+ * source and its dependencies' bytes, never on a commit, and identical
160
+ * builds deduplicate across commits, pull requests, and repositories.
161
+ */
162
+ export const tarballUrl = (registry: string, name: string, sha256: string) =>
163
+ `${registry.replace(/\/+$/, "")}/${name}/-/${sha256}.tgz`;