@telorun/kernel 0.77.0 → 0.78.0
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.
- package/dist/bundle/tar.d.ts +3 -0
- package/dist/bundle/tar.d.ts.map +1 -1
- package/dist/bundle/tar.js +27 -1
- package/dist/bundle/tar.js.map +1 -1
- package/dist/transports/oci/oci-client.d.ts +4 -0
- package/dist/transports/oci/oci-client.d.ts.map +1 -1
- package/dist/transports/oci/oci-client.js +7 -1
- package/dist/transports/oci/oci-client.js.map +1 -1
- package/dist/transports/oci/oci-transport.d.ts +8 -3
- package/dist/transports/oci/oci-transport.d.ts.map +1 -1
- package/dist/transports/oci/oci-transport.js +67 -21
- package/dist/transports/oci/oci-transport.js.map +1 -1
- package/dist/transports/registry-transport.d.ts +3 -2
- package/dist/transports/registry-transport.d.ts.map +1 -1
- package/dist/transports/registry-transport.js +10 -0
- package/dist/transports/registry-transport.js.map +1 -1
- package/dist/transports/transport.d.ts +25 -6
- package/dist/transports/transport.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/bundle/tar.ts +28 -1
- package/src/transports/oci/oci-client.ts +8 -1
- package/src/transports/oci/oci-transport.ts +76 -22
- package/src/transports/registry-transport.ts +14 -0
- package/src/transports/transport.ts +26 -5
package/dist/bundle/tar.d.ts
CHANGED
|
@@ -13,6 +13,9 @@ export declare function toPayloadFiles(entries: BundleEntry[]): PayloadFile[];
|
|
|
13
13
|
* manifest plus a built frontend), so buffering the whole archive before gzip
|
|
14
14
|
* is fine. (Distinct from `apps/k8s-runner/src/tar.ts`, which is coupled to
|
|
15
15
|
* `@telorun/runner-core`'s `RunBundle`.)
|
|
16
|
+
*
|
|
17
|
+
* Deterministic: identical entries in identical order produce identical bytes
|
|
18
|
+
* (see {@link FIXED_HEADER}).
|
|
16
19
|
*/
|
|
17
20
|
export declare function makeTarGz(entries: BundleEntry[]): Promise<Buffer>;
|
|
18
21
|
/** Decompress + untar a `module.tar.gz` buffer into its file entries. */
|
package/dist/bundle/tar.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tar.d.ts","sourceRoot":"","sources":["../../src/bundle/tar.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,WAAW,WAAW;IAC1B,kFAAkF;IAClF,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED;4DAC4D;AAC5D,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAKpE;
|
|
1
|
+
{"version":3,"file":"tar.d.ts","sourceRoot":"","sources":["../../src/bundle/tar.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,WAAW,WAAW;IAC1B,kFAAkF;IAClF,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED;4DAC4D;AAC5D,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAKpE;AA0BD;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAoBvE;AAED,yEAAyE;AACzE,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA0BnE"}
|
package/dist/bundle/tar.js
CHANGED
|
@@ -9,12 +9,38 @@ export function toPayloadFiles(entries) {
|
|
|
9
9
|
content: typeof e.content === "string" ? Buffer.from(e.content) : e.content,
|
|
10
10
|
}));
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Every tar header field that is not the file's own name or contents, pinned.
|
|
14
|
+
*
|
|
15
|
+
* **The archive has to be a pure function of the files in it**, because a
|
|
16
|
+
* layer's `blob` digest covers these bytes and that digest is written into the
|
|
17
|
+
* published `telo.yaml` — which a dependent hashes to derive its import pin,
|
|
18
|
+
* before anything is pushed. A header carrying the wall clock (tar-stream
|
|
19
|
+
* defaults `mtime` to `new Date()`) makes the same file set frame to different
|
|
20
|
+
* bytes on every run, so the predicted digest and the pushed one would agree
|
|
21
|
+
* only by accident.
|
|
22
|
+
*
|
|
23
|
+
* Reproducibility is the same property seen from outside: re-running publish on
|
|
24
|
+
* one commit produces byte-identical layers. Node's gzip already writes no
|
|
25
|
+
* timestamp, so the tar header is the whole of it.
|
|
26
|
+
*/
|
|
27
|
+
const FIXED_HEADER = {
|
|
28
|
+
mtime: new Date(0),
|
|
29
|
+
mode: 0o644,
|
|
30
|
+
uid: 0,
|
|
31
|
+
gid: 0,
|
|
32
|
+
uname: "",
|
|
33
|
+
gname: "",
|
|
34
|
+
};
|
|
12
35
|
/**
|
|
13
36
|
* Pack `entries` into a gzipped tar (`module.tar.gz`) — the module-artifact
|
|
14
37
|
* writer shared by `telo publish` and the transports. Artifacts are small (a
|
|
15
38
|
* manifest plus a built frontend), so buffering the whole archive before gzip
|
|
16
39
|
* is fine. (Distinct from `apps/k8s-runner/src/tar.ts`, which is coupled to
|
|
17
40
|
* `@telorun/runner-core`'s `RunBundle`.)
|
|
41
|
+
*
|
|
42
|
+
* Deterministic: identical entries in identical order produce identical bytes
|
|
43
|
+
* (see {@link FIXED_HEADER}).
|
|
18
44
|
*/
|
|
19
45
|
export async function makeTarGz(entries) {
|
|
20
46
|
const pack = tarPack();
|
|
@@ -27,7 +53,7 @@ export async function makeTarGz(entries) {
|
|
|
27
53
|
for (const entry of entries) {
|
|
28
54
|
const buf = typeof entry.content === "string" ? Buffer.from(entry.content, "utf-8") : entry.content;
|
|
29
55
|
await new Promise((resolve, reject) => {
|
|
30
|
-
pack.entry({ name: entry.name }, buf, (err) => (err ? reject(err) : resolve()));
|
|
56
|
+
pack.entry({ name: entry.name, ...FIXED_HEADER }, buf, (err) => (err ? reject(err) : resolve()));
|
|
31
57
|
});
|
|
32
58
|
}
|
|
33
59
|
pack.finalize();
|
package/dist/bundle/tar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tar.js","sourceRoot":"","sources":["../../src/bundle/tar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAUvC;4DAC4D;AAC5D,MAAM,UAAU,cAAc,CAAC,OAAsB;IACnD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO;KAC5E,CAAC,CAAC,CAAC;AACN,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"tar.js","sourceRoot":"","sources":["../../src/bundle/tar.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,6 +47,10 @@ export interface OciManifest {
|
|
|
47
47
|
* referrers API. */
|
|
48
48
|
annotations?: Record<string, string>;
|
|
49
49
|
}
|
|
50
|
+
/** A blob's OCI digest, as `pushBlob` addresses it. Exported because the
|
|
51
|
+
* `layers:` index has to name a layer's digest BEFORE it is pushed — a second
|
|
52
|
+
* spelling of this would be a second answer to what a blob is called. */
|
|
53
|
+
export declare function blobDigest(bytes: Uint8Array): string;
|
|
50
54
|
/**
|
|
51
55
|
* A minimal OCI distribution (registry v2) client — exactly the surface Telo
|
|
52
56
|
* needs: pull manifest / pull blob / push blob / push manifest / list tags,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oci-client.d.ts","sourceRoot":"","sources":["../../../src/transports/oci/oci-client.ts"],"names":[],"mappings":"AAMA;;;gBAGgB;AAChB,eAAO,MAAM,8BAA8B,gDAAgD,CAAC;AAE5F;;;;;;;;;;GAUG;AACH,eAAO,MAAM,4BAA4B,uCAAuC,CAAC;AAEjF;;;+CAG+C;AAC/C,eAAO,MAAM,6BAA6B,6CAA6C,CAAC;AAExF,eAAO,MAAM,0BAA0B,wBAAwB,CAAC;AAChE,eAAO,MAAM,8BAA8B,4BAA4B,CAAC;AAExE,eAAO,MAAM,uBAAuB,+CAA+C,CAAC;AACpF,eAAO,MAAM,2BAA2B,sCAAsC,CAAC;AAa/E,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;2DAEuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB;;;yBAGqB;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AA2BD;;;;;;;GAOG;AACH,qBAAa,SAAS;IAIlB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJvB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;gBAGvC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM;IAG/B,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,SAAS;IAIjB;gFAC4E;YAC9D,WAAW;IAkCzB;2EACuE;YACzD,UAAU;IA0BlB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAcrD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAU/C;;;oCAGgC;IAC1B,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA2B7D;;oEAEgE;IAC1D,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAoBnC;;sBAEkB;IACZ,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IA+C5C,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAe3E,qEAAqE;IAC/D,eAAe,IAAI,OAAO,CAAC,aAAa,CAAC;CAShD"}
|
|
1
|
+
{"version":3,"file":"oci-client.d.ts","sourceRoot":"","sources":["../../../src/transports/oci/oci-client.ts"],"names":[],"mappings":"AAMA;;;gBAGgB;AAChB,eAAO,MAAM,8BAA8B,gDAAgD,CAAC;AAE5F;;;;;;;;;;GAUG;AACH,eAAO,MAAM,4BAA4B,uCAAuC,CAAC;AAEjF;;;+CAG+C;AAC/C,eAAO,MAAM,6BAA6B,6CAA6C,CAAC;AAExF,eAAO,MAAM,0BAA0B,wBAAwB,CAAC;AAChE,eAAO,MAAM,8BAA8B,4BAA4B,CAAC;AAExE,eAAO,MAAM,uBAAuB,+CAA+C,CAAC;AACpF,eAAO,MAAM,2BAA2B,sCAAsC,CAAC;AAa/E,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;2DAEuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB;;;yBAGqB;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED;;0EAE0E;AAC1E,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEpD;AA2BD;;;;;;;GAOG;AACH,qBAAa,SAAS;IAIlB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJvB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;gBAGvC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM;IAG/B,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,SAAS;IAIjB;gFAC4E;YAC9D,WAAW;IAkCzB;2EACuE;YACzD,UAAU;IA0BlB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAcrD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAU/C;;;oCAGgC;IAC1B,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA2B7D;;oEAEgE;IAC1D,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAoBnC;;sBAEkB;IACZ,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IA+C5C,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAe3E,qEAAqE;IAC/D,eAAe,IAAI,OAAO,CAAC,aAAa,CAAC;CAShD"}
|
|
@@ -37,6 +37,12 @@ const MANIFEST_ACCEPT = [
|
|
|
37
37
|
"application/vnd.docker.distribution.manifest.v2+json",
|
|
38
38
|
"application/vnd.docker.distribution.manifest.list.v2+json",
|
|
39
39
|
].join(", ");
|
|
40
|
+
/** A blob's OCI digest, as `pushBlob` addresses it. Exported because the
|
|
41
|
+
* `layers:` index has to name a layer's digest BEFORE it is pushed — a second
|
|
42
|
+
* spelling of this would be a second answer to what a blob is called. */
|
|
43
|
+
export function blobDigest(bytes) {
|
|
44
|
+
return `sha256:${sha256Hex(bytes)}`;
|
|
45
|
+
}
|
|
40
46
|
function sha256Hex(bytes) {
|
|
41
47
|
return createHash("sha256").update(bytes).digest("hex");
|
|
42
48
|
}
|
|
@@ -212,7 +218,7 @@ export class OciClient {
|
|
|
212
218
|
* `sha256:<hex>` digest. Two-step upload: obtain a session, then PUT with
|
|
213
219
|
* the digest. */
|
|
214
220
|
async pushBlob(bytes) {
|
|
215
|
-
const digest =
|
|
221
|
+
const digest = blobDigest(bytes);
|
|
216
222
|
const head = await this.authedFetch(`${this.base()}/blobs/${digest}`, { method: "HEAD" }, this.pushScope());
|
|
217
223
|
if (head.ok)
|
|
218
224
|
return digest; // already present
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oci-client.js","sourceRoot":"","sources":["../../../src/transports/oci/oci-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"oci-client.js","sourceRoot":"","sources":["../../../src/transports/oci/oci-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type ManifestCacheCoords, type ManifestSource } from "@telorun/analyzer";
|
|
1
|
+
import { type ArtifactLayer, type ManifestCacheCoords, type ManifestSource } from "@telorun/analyzer";
|
|
2
2
|
import { type PayloadFile } from "../../bundle/files-integrity.js";
|
|
3
|
-
import type { PublishBundle, PublishOptions, PublishResult, Transport } from "../transport.js";
|
|
3
|
+
import type { PayloadLayer, PublishBundle, PublishOptions, PublishResult, Transport } from "../transport.js";
|
|
4
4
|
/**
|
|
5
5
|
* OCI transport: `oci://host/repo@reference` modules on any OCI distribution
|
|
6
6
|
* registry (GHCR / ECR / Docker Hub / Harbor), over a hand-rolled minimal
|
|
@@ -56,7 +56,7 @@ export declare class OciTransport implements Transport {
|
|
|
56
56
|
* republish that reorders layers is simply invisible here rather than a
|
|
57
57
|
* failure. Content verification is the artifact handle's, which holds the
|
|
58
58
|
* expected `integrity`. */
|
|
59
|
-
fetchLayer(ref: string,
|
|
59
|
+
fetchLayer(ref: string, digest: string): Promise<PayloadFile[]>;
|
|
60
60
|
/** Hashes the **UTF-8 encoding of the extracted `telo.yaml`**, which is what
|
|
61
61
|
* `pullManifestLayer` checks an inline `#sha256-…` pin against on the read
|
|
62
62
|
* path.
|
|
@@ -71,6 +71,11 @@ export declare class OciTransport implements Transport {
|
|
|
71
71
|
* addresses the artifact by these. Absent fields are omitted rather than
|
|
72
72
|
* written empty, so the manifest carries only what the module declared. */
|
|
73
73
|
private static annotationsFor;
|
|
74
|
+
/** The index as it will be published: `blob` over the gzipped tar this
|
|
75
|
+
* transport pushes, `integrity` over the layer's file contents. Both are
|
|
76
|
+
* computed from the files alone, which is what lets the payload builder
|
|
77
|
+
* write the index into `telo.yaml` before a single byte is pushed. */
|
|
78
|
+
layerIndex(layers: readonly PayloadLayer[]): Promise<ArtifactLayer[]>;
|
|
74
79
|
publish(destination: string, bundle: PublishBundle, _opts?: PublishOptions): Promise<PublishResult>;
|
|
75
80
|
canonicalizeSiblingRef(destination: string, relativeSource: string, version: string): string;
|
|
76
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oci-transport.d.ts","sourceRoot":"","sources":["../../../src/transports/oci/oci-transport.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"oci-transport.d.ts","sourceRoot":"","sources":["../../../src/transports/oci/oci-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,aAAa,EAElB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,iCAAiC,CAAC;AAGzC,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,aAAa,EACb,SAAS,EACV,MAAM,iBAAiB,CAAC;AAoFzB;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAa,YAAW,SAAS;IAC5C,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAEhC;;;;;;;;;;;;;;+BAc2B;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgC;;IAc5D,OAAO,CAAC,UAAU;IASlB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI9B;;;oEAGgE;IAChE,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAepD;;;;iCAI6B;IAC7B,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IASjD,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;IAMzD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAStC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAI3C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKjD;;;;gCAI4B;IACtB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAiBrE;;;;;;;iEAO6D;IACvD,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMhD;;;gFAG4E;IAC5E,OAAO,CAAC,MAAM,CAAC,cAAc;IAY7B;;;2EAGuE;IACjE,UAAU,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAiBrE,OAAO,CACX,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,aAAa,EACrB,KAAK,GAAE,cAAmB,GACzB,OAAO,CAAC,aAAa,CAAC;IAsGzB,sBAAsB,CACpB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,GACd,MAAM;CAKV"}
|
|
@@ -1,10 +1,22 @@
|
|
|
1
1
|
import { DEFAULT_MANIFEST_FILENAME, IntegrityError, selectorKey, sha256Base64Url, verifyIntegrity, } from "@telorun/analyzer";
|
|
2
|
-
import {
|
|
3
|
-
import { computeFilesIntegrity, injectLayerIndex, } from "../../bundle/files-integrity.js";
|
|
2
|
+
import { computeFilesIntegrity, } from "../../bundle/files-integrity.js";
|
|
4
3
|
import { readOwnerManifest } from "../../bundle/module-manifest.js";
|
|
5
4
|
import { makeTarGz, readTarGz, toPayloadFiles } from "../../bundle/tar.js";
|
|
6
|
-
import { OciClient, OCI_MANIFEST_MEDIA_TYPE, TELO_LAYER_ROLE_ANNOTATION, TELO_LEGACY_LAYER_MEDIA_TYPE, TELO_LAYER_SELECTOR_ANNOTATION, TELO_MANIFEST_LAYER_MEDIA_TYPE, TELO_PAYLOAD_LAYER_MEDIA_TYPE, } from "./oci-client.js";
|
|
5
|
+
import { blobDigest, OciClient, OCI_MANIFEST_MEDIA_TYPE, TELO_LAYER_ROLE_ANNOTATION, TELO_LEGACY_LAYER_MEDIA_TYPE, TELO_LAYER_SELECTOR_ANNOTATION, TELO_MANIFEST_LAYER_MEDIA_TYPE, TELO_PAYLOAD_LAYER_MEDIA_TYPE, } from "./oci-client.js";
|
|
7
6
|
import { OCI_SCHEME, isOciRef, parseOciRef, parseVersionedRef, withRefVersion, } from "./oci-ref.js";
|
|
7
|
+
/** A layer's identity within one artifact: role plus, for a controller layer,
|
|
8
|
+
* its selector. Role alone is not it — there is one controller layer per
|
|
9
|
+
* selector. Same shape the release ledger keys on. */
|
|
10
|
+
function layerKey(role, selector) {
|
|
11
|
+
return selector ? `${role}/${selectorKey(selector)}` : role;
|
|
12
|
+
}
|
|
13
|
+
/** The `layers:` index the bundle's own manifest declares, keyed for lookup.
|
|
14
|
+
* Read back out of the text rather than passed alongside it, because the text
|
|
15
|
+
* is what ships — anything else would be a second copy to keep in agreement. */
|
|
16
|
+
function declaredLayerIndex(bundle) {
|
|
17
|
+
const declared = readOwnerManifest(bundle.manifest).layers ?? [];
|
|
18
|
+
return new Map(declared.map((layer) => [layerKey(layer.role, layer.selector), layer]));
|
|
19
|
+
}
|
|
8
20
|
/**
|
|
9
21
|
* Pull only the **manifest layer** and return its verified `telo.yaml` text.
|
|
10
22
|
*
|
|
@@ -159,16 +171,16 @@ export class OciTransport {
|
|
|
159
171
|
* republish that reorders layers is simply invisible here rather than a
|
|
160
172
|
* failure. Content verification is the artifact handle's, which holds the
|
|
161
173
|
* expected `integrity`. */
|
|
162
|
-
async fetchLayer(ref,
|
|
174
|
+
async fetchLayer(ref, digest) {
|
|
163
175
|
const { host, repo } = parseOciRef(ref);
|
|
164
|
-
const tar = await this.readClient(host, repo).pullBlob(
|
|
176
|
+
const tar = await this.readClient(host, repo).pullBlob(digest);
|
|
165
177
|
// Verify the transfer against the digest that addressed it. A registry is
|
|
166
178
|
// not trusted to return the blob that was asked for, and this is the only
|
|
167
179
|
// place the pushed bytes exist — the content digest checked after extraction
|
|
168
180
|
// covers the file set, not the archive that carried it.
|
|
169
|
-
const actual =
|
|
170
|
-
if (actual !==
|
|
171
|
-
throw new IntegrityError(`Blob digest mismatch fetching a layer of ${ref}: requested ${
|
|
181
|
+
const actual = blobDigest(tar);
|
|
182
|
+
if (actual !== digest) {
|
|
183
|
+
throw new IntegrityError(`Blob digest mismatch fetching a layer of ${ref}: requested ${digest}, ` +
|
|
172
184
|
`received ${actual}. The registry returned different bytes than were addressed.`);
|
|
173
185
|
}
|
|
174
186
|
return toPayloadFiles(await readTarGz(tar));
|
|
@@ -201,6 +213,25 @@ export class OciTransport {
|
|
|
201
213
|
];
|
|
202
214
|
return Object.fromEntries(mapped.filter((e) => Boolean(e[1])));
|
|
203
215
|
}
|
|
216
|
+
/** The index as it will be published: `blob` over the gzipped tar this
|
|
217
|
+
* transport pushes, `integrity` over the layer's file contents. Both are
|
|
218
|
+
* computed from the files alone, which is what lets the payload builder
|
|
219
|
+
* write the index into `telo.yaml` before a single byte is pushed. */
|
|
220
|
+
async layerIndex(layers) {
|
|
221
|
+
const index = [];
|
|
222
|
+
for (const layer of layers) {
|
|
223
|
+
if (layer.files.length === 0)
|
|
224
|
+
continue;
|
|
225
|
+
const tar = await makeTarGz(layer.files.map((f) => ({ name: f.name, content: Buffer.from(f.content) })));
|
|
226
|
+
index.push({
|
|
227
|
+
role: layer.role,
|
|
228
|
+
...(layer.selector ? { selector: layer.selector } : {}),
|
|
229
|
+
blob: blobDigest(tar),
|
|
230
|
+
integrity: await computeFilesIntegrity(layer.files),
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
return index;
|
|
234
|
+
}
|
|
204
235
|
async publish(destination, bundle, _opts = {}) {
|
|
205
236
|
const identity = readOwnerManifest(bundle.manifest);
|
|
206
237
|
if (!identity.version) {
|
|
@@ -220,16 +251,37 @@ export class OciTransport {
|
|
|
220
251
|
}
|
|
221
252
|
const tag = identity.version;
|
|
222
253
|
const client = new OciClient(host, repo);
|
|
223
|
-
// Push every payload layer first
|
|
224
|
-
//
|
|
225
|
-
// pushed
|
|
254
|
+
// Push every payload layer first. This ordering is what keeps the index
|
|
255
|
+
// non-circular: the manifest layer is pushed last and names only the layers
|
|
256
|
+
// pushed before it, never itself.
|
|
257
|
+
//
|
|
258
|
+
// The index is NOT written here — `bundle.manifest` already carries it, and
|
|
259
|
+
// rewriting the manifest at this point is precisely the bug this replaced:
|
|
260
|
+
// the bytes a dependent hashed to derive its pin would then never be the
|
|
261
|
+
// bytes pushed. So each pushed blob is CHECKED against what the manifest
|
|
262
|
+
// already claims, which is also the standing test that framing stayed
|
|
263
|
+
// deterministic — a claim nobody can satisfy is a hard failure, not a
|
|
264
|
+
// silently corrected index.
|
|
265
|
+
const declared = declaredLayerIndex(bundle);
|
|
226
266
|
const payloadDescriptors = [];
|
|
227
|
-
const index = [];
|
|
228
267
|
for (const layer of bundle.layers) {
|
|
229
268
|
if (layer.files.length === 0)
|
|
230
269
|
continue;
|
|
270
|
+
const key = layerKey(layer.role, layer.selector);
|
|
231
271
|
const tar = await makeTarGz(layer.files.map((f) => ({ name: f.name, content: Buffer.from(f.content) })));
|
|
232
272
|
const blob = await client.pushBlob(tar);
|
|
273
|
+
const claim = declared.get(key);
|
|
274
|
+
if (!claim) {
|
|
275
|
+
throw new Error(`layer '${key}' is being pushed but the manifest's 'layers:' index does not name it. ` +
|
|
276
|
+
`The index is written by the payload builder before publish, so a layer missing ` +
|
|
277
|
+
`from it would be unaddressable by any importer.`);
|
|
278
|
+
}
|
|
279
|
+
if (claim.blob !== blob) {
|
|
280
|
+
throw new Error(`layer '${key}' framed to ${blob}, but the manifest's 'layers:' index claims ` +
|
|
281
|
+
`${claim.blob}. The published telo.yaml is hashed into every dependent's import ` +
|
|
282
|
+
`pin, so it cannot be corrected here — the archive framing must be a pure ` +
|
|
283
|
+
`function of the layer's files.`);
|
|
284
|
+
}
|
|
233
285
|
payloadDescriptors.push({
|
|
234
286
|
mediaType: TELO_PAYLOAD_LAYER_MEDIA_TYPE,
|
|
235
287
|
digest: blob,
|
|
@@ -241,16 +293,10 @@ export class OciTransport {
|
|
|
241
293
|
: {}),
|
|
242
294
|
},
|
|
243
295
|
});
|
|
244
|
-
index.push({
|
|
245
|
-
role: layer.role,
|
|
246
|
-
...(layer.selector ? { selector: layer.selector } : {}),
|
|
247
|
-
blob,
|
|
248
|
-
integrity: await computeFilesIntegrity(layer.files),
|
|
249
|
-
});
|
|
250
296
|
}
|
|
251
|
-
//
|
|
252
|
-
//
|
|
253
|
-
const manifestText =
|
|
297
|
+
// Push telo.yaml as its own layer so a manifest read never has to pull a
|
|
298
|
+
// payload. Verbatim — these are the bytes importers pin.
|
|
299
|
+
const manifestText = bundle.manifest;
|
|
254
300
|
const manifestTar = await makeTarGz([
|
|
255
301
|
{ name: DEFAULT_MANIFEST_FILENAME, content: manifestText },
|
|
256
302
|
]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oci-transport.js","sourceRoot":"","sources":["../../../src/transports/oci/oci-transport.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"oci-transport.js","sourceRoot":"","sources":["../../../src/transports/oci/oci-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type ManifestCacheCoords, type ManifestSource } from "@telorun/analyzer";
|
|
1
|
+
import { type ArtifactLayer, type ManifestCacheCoords, type ManifestSource } from "@telorun/analyzer";
|
|
2
2
|
import type { PayloadFile } from "../bundle/files-integrity.js";
|
|
3
|
-
import type { PublishBundle, PublishOptions, PublishResult, Transport } from "./transport.js";
|
|
3
|
+
import type { PayloadLayer, PublishBundle, PublishOptions, PublishResult, Transport } from "./transport.js";
|
|
4
4
|
/** The default HTTP transport: bare `namespace/name@version` registry refs and
|
|
5
5
|
* direct `https://…` URLs, resolving against `registry.telo.run` (or a
|
|
6
6
|
* configured registry). Its resolution `source` composes the browser-safe
|
|
@@ -34,6 +34,7 @@ export declare class RegistryTransport implements Transport {
|
|
|
34
34
|
* A module reached over the registry is manifest-only, and its controllers
|
|
35
35
|
* come from npm. */
|
|
36
36
|
fetchLayer(ref: string, blobDigest: string): Promise<PayloadFile[]>;
|
|
37
|
+
layerIndex(layers: readonly PayloadLayer[]): Promise<ArtifactLayer[]>;
|
|
37
38
|
publish(destination: string, bundle: PublishBundle, opts?: PublishOptions): Promise<PublishResult>;
|
|
38
39
|
canonicalizeSiblingRef(destination: string, relativeSource: string, version: string): string;
|
|
39
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry-transport.d.ts","sourceRoot":"","sources":["../../src/transports/registry-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,aAAa,EACb,SAAS,EACV,MAAM,gBAAgB,CAAC;AAkDxB;;;;;;yEAMyE;AACzE,qBAAa,iBAAkB,YAAW,SAAS;IAKrC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAJxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;gBAEH,WAAW,GAAE,MAA6B;IAiBvE,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAK9B,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAwEpD,8EAA8E;IAC9E,OAAO,CAAC,YAAY;IAQd,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;IAoBzD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAMtC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAIjD;;2EAEuE;IACvE,OAAO,CAAC,WAAW;IAYb,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAkBjD;qEACiE;IAC3D,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBhD;;;yBAGqB;IACf,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAOnE,OAAO,CACX,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,aAAa,EACrB,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,aAAa,CAAC;IAWzB,sBAAsB,CACpB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,GACd,MAAM;CAwBV"}
|
|
1
|
+
{"version":3,"file":"registry-transport.d.ts","sourceRoot":"","sources":["../../src/transports/registry-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,aAAa,EACb,SAAS,EACV,MAAM,gBAAgB,CAAC;AAkDxB;;;;;;yEAMyE;AACzE,qBAAa,iBAAkB,YAAW,SAAS;IAKrC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAJxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;gBAEH,WAAW,GAAE,MAA6B;IAiBvE,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAK9B,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAwEpD,8EAA8E;IAC9E,OAAO,CAAC,YAAY;IAQd,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;IAoBzD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAMtC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAIjD;;2EAEuE;IACvE,OAAO,CAAC,WAAW;IAYb,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAkBjD;qEACiE;IAC3D,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBhD;;;yBAGqB;IACf,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAOnE,UAAU,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAYrE,OAAO,CACX,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,aAAa,EACrB,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,aAAa,CAAC;IAWzB,sBAAsB,CACpB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,GACd,MAAM;CAwBV"}
|
|
@@ -238,6 +238,16 @@ export class RegistryTransport {
|
|
|
238
238
|
throw new Error(`Cannot fetch layer ${blobDigest} of ${ref}: the Telo registry serves manifests only. ` +
|
|
239
239
|
`A module with a bundled payload is published as an OCI artifact (oci://host/repo).`);
|
|
240
240
|
}
|
|
241
|
+
async layerIndex(layers) {
|
|
242
|
+
// Same boundary `fetchLayer` and `publish` draw: the HTTP registry serves
|
|
243
|
+
// manifests only, so it frames no layer and can name no blob. An empty set
|
|
244
|
+
// is not a payload, so it answers rather than throws — a manifest-only
|
|
245
|
+
// module builds its payload through this transport during analysis.
|
|
246
|
+
if (layers.every((layer) => layer.files.length === 0))
|
|
247
|
+
return [];
|
|
248
|
+
throw new Error("The Telo registry serves manifests only, so it cannot index payload layers. " +
|
|
249
|
+
"A module with a bundled payload is published as an OCI artifact (oci://host/repo).");
|
|
250
|
+
}
|
|
241
251
|
async publish(destination, bundle, opts = {}) {
|
|
242
252
|
// Publishing to the HTTP Telo registry has been removed — the registry
|
|
243
253
|
// origin stays read-only, and new versions publish to OCI. `telo publish`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry-transport.js","sourceRoot":"","sources":["../../src/transports/registry-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,UAAU,EACV,cAAc,EACd,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,cAAc,
|
|
1
|
+
{"version":3,"file":"registry-transport.js","sourceRoot":"","sources":["../../src/transports/registry-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ArtifactSelector, LayerRole, ManifestCacheCoords, ManifestSource } from "@telorun/analyzer";
|
|
1
|
+
import type { ArtifactLayer, ArtifactSelector, LayerRole, ManifestCacheCoords, ManifestSource } from "@telorun/analyzer";
|
|
2
2
|
import type { PayloadFile } from "../bundle/files-integrity.js";
|
|
3
3
|
/** One layer of a module artifact as the CLI partitioned it, before publish
|
|
4
4
|
* assigns digests. `role` / `selector` become the layer's entry in the
|
|
@@ -11,10 +11,10 @@ export interface PayloadLayer {
|
|
|
11
11
|
}
|
|
12
12
|
/** The module bundle handed to a transport for publishing: the final,
|
|
13
13
|
* already-analyzed / pinned / canonicalized `telo.yaml` bytes plus the payload
|
|
14
|
-
* partitioned into layers (empty for a manifest-only module)
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* the index non-circular. */
|
|
14
|
+
* partitioned into layers (empty for a manifest-only module), whose `layers:`
|
|
15
|
+
* index the manifest already carries. The transport pushes each layer as its
|
|
16
|
+
* own blob, checks the digest against what the index claims, and only then
|
|
17
|
+
* pushes the manifest layer — the order that keeps the index non-circular. */
|
|
18
18
|
export interface PublishBundle {
|
|
19
19
|
manifest: string;
|
|
20
20
|
layers: PayloadLayer[];
|
|
@@ -131,9 +131,28 @@ export interface Transport {
|
|
|
131
131
|
* transports. This is the portable, cross-transport hash Telo itself
|
|
132
132
|
* verifies. */
|
|
133
133
|
manifestHash(ref: string): Promise<string>;
|
|
134
|
+
/** The `layers:` index `layers` will be published under: each entry's
|
|
135
|
+
* `integrity` over the layer's file contents and its `blob` over the exact
|
|
136
|
+
* bytes this transport will push.
|
|
137
|
+
*
|
|
138
|
+
* On the interface, and called BEFORE anything is pushed, because the index
|
|
139
|
+
* goes *inside* `telo.yaml` and a dependent's import pin is a hash of that
|
|
140
|
+
* file. Injecting the index at push time — which is what this replaced —
|
|
141
|
+
* meant the payload builder's manifest was never the published one, so every
|
|
142
|
+
* sibling pin derived from it named bytes the registry does not have. The
|
|
143
|
+
* builder therefore needs the index up front, and only the transport knows
|
|
144
|
+
* the framing a `blob` digest covers.
|
|
145
|
+
*
|
|
146
|
+
* Requires the framing to be a pure function of the files (see `makeTarGz`),
|
|
147
|
+
* since `publish` re-frames the same layers and hard-fails if a digest moved.
|
|
148
|
+
* Returns `[]` for an empty layer set; throws when this transport cannot
|
|
149
|
+
* publish payload layers at all. */
|
|
150
|
+
layerIndex(layers: readonly PayloadLayer[]): Promise<ArtifactLayer[]>;
|
|
134
151
|
/** Push `bundle` to `destination` (a base ref / repo whose scheme this
|
|
135
152
|
* transport owns), pinning the payload and writing the transport-native
|
|
136
|
-
* artifact shape.
|
|
153
|
+
* artifact shape. `bundle.manifest` already carries the `layers:` index this
|
|
154
|
+
* transport returned from {@link layerIndex}; publish verifies rather than
|
|
155
|
+
* rewrites it. Throws on failure. Used by `telo publish`. */
|
|
137
156
|
publish(destination: string, bundle: PublishBundle, opts?: PublishOptions): Promise<PublishResult>;
|
|
138
157
|
/** Canonicalize a relative sibling import (`../lib`) declared in a module
|
|
139
158
|
* being published to `destination` into the absolute ref it will resolve to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/transports/transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,SAAS,EACT,mBAAmB,EACnB,cAAc,EACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAEhE;;iCAEiC;AACjC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/transports/transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,mBAAmB,EACnB,cAAc,EACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAEhE;;iCAEiC;AACjC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED;;;;;+EAK+E;AAC/E,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;6CACyC;IACzC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE;QACf,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,KAAK,IAAI,CAAC;CACZ;AAED;;;;;;;;;;;;wBAYwB;AACxB,MAAM,WAAW,SAAS;IACxB,4EAA4E;IAC5E,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAE/B;;gFAE4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAEhC;;;;;;;;;;;;;wDAaoD;IACpD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAAC;IAErD;;;6BAGyB;IACzB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IAEpD;;;;;;;qBAOiB;IACjB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAEvC;;;;uCAImC;IACnC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IAElD;;;;;;;;;mFAS+E;IAC/E,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAEpE;;;;;;;8DAO0D;IAC1D,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAE5C;;;;;;;;;;;;;;;;;oBAiBgB;IAChB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE3C;;;;;;;;;;;;;;;yCAeqC;IACrC,UAAU,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAEtE;;;;kEAI8D;IAC9D,OAAO,CACL,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,aAAa,EACrB,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,aAAa,CAAC,CAAC;IAE1B;;;;;;;;;;4EAUwE;IACxE,sBAAsB,CACpB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,GACd,MAAM,CAAC;CACX"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@telorun/kernel",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.78.0",
|
|
4
4
|
"description": "Telo Runtime - A lightweight, polyglot execution host.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"telo",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"dependencies": {
|
|
62
62
|
"@marcbachmann/cel-js": "^7.6.1",
|
|
63
63
|
"@sinclair/typebox": "^0.34.48",
|
|
64
|
-
"@telorun/analyzer": "0.62.
|
|
64
|
+
"@telorun/analyzer": "0.62.1",
|
|
65
65
|
"@telorun/glob": "0.2.0",
|
|
66
66
|
"@telorun/templating": "0.16.0",
|
|
67
67
|
"ajv": "^8.17.1",
|
package/src/bundle/tar.ts
CHANGED
|
@@ -19,12 +19,39 @@ export function toPayloadFiles(entries: BundleEntry[]): PayloadFile[] {
|
|
|
19
19
|
}));
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
/**
|
|
23
|
+
* Every tar header field that is not the file's own name or contents, pinned.
|
|
24
|
+
*
|
|
25
|
+
* **The archive has to be a pure function of the files in it**, because a
|
|
26
|
+
* layer's `blob` digest covers these bytes and that digest is written into the
|
|
27
|
+
* published `telo.yaml` — which a dependent hashes to derive its import pin,
|
|
28
|
+
* before anything is pushed. A header carrying the wall clock (tar-stream
|
|
29
|
+
* defaults `mtime` to `new Date()`) makes the same file set frame to different
|
|
30
|
+
* bytes on every run, so the predicted digest and the pushed one would agree
|
|
31
|
+
* only by accident.
|
|
32
|
+
*
|
|
33
|
+
* Reproducibility is the same property seen from outside: re-running publish on
|
|
34
|
+
* one commit produces byte-identical layers. Node's gzip already writes no
|
|
35
|
+
* timestamp, so the tar header is the whole of it.
|
|
36
|
+
*/
|
|
37
|
+
const FIXED_HEADER = {
|
|
38
|
+
mtime: new Date(0),
|
|
39
|
+
mode: 0o644,
|
|
40
|
+
uid: 0,
|
|
41
|
+
gid: 0,
|
|
42
|
+
uname: "",
|
|
43
|
+
gname: "",
|
|
44
|
+
} as const;
|
|
45
|
+
|
|
22
46
|
/**
|
|
23
47
|
* Pack `entries` into a gzipped tar (`module.tar.gz`) — the module-artifact
|
|
24
48
|
* writer shared by `telo publish` and the transports. Artifacts are small (a
|
|
25
49
|
* manifest plus a built frontend), so buffering the whole archive before gzip
|
|
26
50
|
* is fine. (Distinct from `apps/k8s-runner/src/tar.ts`, which is coupled to
|
|
27
51
|
* `@telorun/runner-core`'s `RunBundle`.)
|
|
52
|
+
*
|
|
53
|
+
* Deterministic: identical entries in identical order produce identical bytes
|
|
54
|
+
* (see {@link FIXED_HEADER}).
|
|
28
55
|
*/
|
|
29
56
|
export async function makeTarGz(entries: BundleEntry[]): Promise<Buffer> {
|
|
30
57
|
const pack = tarPack();
|
|
@@ -39,7 +66,7 @@ export async function makeTarGz(entries: BundleEntry[]): Promise<Buffer> {
|
|
|
39
66
|
for (const entry of entries) {
|
|
40
67
|
const buf = typeof entry.content === "string" ? Buffer.from(entry.content, "utf-8") : entry.content;
|
|
41
68
|
await new Promise<void>((resolve, reject) => {
|
|
42
|
-
pack.entry({ name: entry.name }, buf, (err) => (err ? reject(err) : resolve()));
|
|
69
|
+
pack.entry({ name: entry.name, ...FIXED_HEADER }, buf, (err) => (err ? reject(err) : resolve()));
|
|
43
70
|
});
|
|
44
71
|
}
|
|
45
72
|
pack.finalize();
|
|
@@ -71,6 +71,13 @@ export interface OciManifest {
|
|
|
71
71
|
annotations?: Record<string, string>;
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
+
/** A blob's OCI digest, as `pushBlob` addresses it. Exported because the
|
|
75
|
+
* `layers:` index has to name a layer's digest BEFORE it is pushed — a second
|
|
76
|
+
* spelling of this would be a second answer to what a blob is called. */
|
|
77
|
+
export function blobDigest(bytes: Uint8Array): string {
|
|
78
|
+
return `sha256:${sha256Hex(bytes)}`;
|
|
79
|
+
}
|
|
80
|
+
|
|
74
81
|
function sha256Hex(bytes: Uint8Array): string {
|
|
75
82
|
return createHash("sha256").update(bytes).digest("hex");
|
|
76
83
|
}
|
|
@@ -270,7 +277,7 @@ export class OciClient {
|
|
|
270
277
|
* `sha256:<hex>` digest. Two-step upload: obtain a session, then PUT with
|
|
271
278
|
* the digest. */
|
|
272
279
|
async pushBlob(bytes: Uint8Array): Promise<string> {
|
|
273
|
-
const digest =
|
|
280
|
+
const digest = blobDigest(bytes);
|
|
274
281
|
|
|
275
282
|
const head = await this.authedFetch(
|
|
276
283
|
`${this.base()}/blobs/${digest}`,
|
|
@@ -5,25 +5,25 @@ import {
|
|
|
5
5
|
sha256Base64Url,
|
|
6
6
|
verifyIntegrity,
|
|
7
7
|
type ArtifactLayer,
|
|
8
|
+
type ArtifactSelector,
|
|
8
9
|
type ManifestCacheCoords,
|
|
9
10
|
type ManifestSource,
|
|
10
11
|
} from "@telorun/analyzer";
|
|
11
|
-
import { createHash } from "node:crypto";
|
|
12
|
-
|
|
13
12
|
import {
|
|
14
13
|
computeFilesIntegrity,
|
|
15
|
-
injectLayerIndex,
|
|
16
14
|
type PayloadFile,
|
|
17
15
|
} from "../../bundle/files-integrity.js";
|
|
18
16
|
import { readOwnerManifest, type OwnerManifest } from "../../bundle/module-manifest.js";
|
|
19
17
|
import { makeTarGz, readTarGz, toPayloadFiles } from "../../bundle/tar.js";
|
|
20
18
|
import type {
|
|
19
|
+
PayloadLayer,
|
|
21
20
|
PublishBundle,
|
|
22
21
|
PublishOptions,
|
|
23
22
|
PublishResult,
|
|
24
23
|
Transport,
|
|
25
24
|
} from "../transport.js";
|
|
26
25
|
import {
|
|
26
|
+
blobDigest,
|
|
27
27
|
OciClient,
|
|
28
28
|
OCI_MANIFEST_MEDIA_TYPE,
|
|
29
29
|
TELO_LAYER_ROLE_ANNOTATION,
|
|
@@ -42,6 +42,21 @@ import {
|
|
|
42
42
|
withRefVersion,
|
|
43
43
|
} from "./oci-ref.js";
|
|
44
44
|
|
|
45
|
+
/** A layer's identity within one artifact: role plus, for a controller layer,
|
|
46
|
+
* its selector. Role alone is not it — there is one controller layer per
|
|
47
|
+
* selector. Same shape the release ledger keys on. */
|
|
48
|
+
function layerKey(role: string, selector?: ArtifactSelector): string {
|
|
49
|
+
return selector ? `${role}/${selectorKey(selector)}` : role;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/** The `layers:` index the bundle's own manifest declares, keyed for lookup.
|
|
53
|
+
* Read back out of the text rather than passed alongside it, because the text
|
|
54
|
+
* is what ships — anything else would be a second copy to keep in agreement. */
|
|
55
|
+
function declaredLayerIndex(bundle: PublishBundle): Map<string, ArtifactLayer> {
|
|
56
|
+
const declared = readOwnerManifest(bundle.manifest).layers ?? [];
|
|
57
|
+
return new Map(declared.map((layer) => [layerKey(layer.role, layer.selector), layer]));
|
|
58
|
+
}
|
|
59
|
+
|
|
45
60
|
/**
|
|
46
61
|
* Pull only the **manifest layer** and return its verified `telo.yaml` text.
|
|
47
62
|
*
|
|
@@ -211,17 +226,17 @@ export class OciTransport implements Transport {
|
|
|
211
226
|
* republish that reorders layers is simply invisible here rather than a
|
|
212
227
|
* failure. Content verification is the artifact handle's, which holds the
|
|
213
228
|
* expected `integrity`. */
|
|
214
|
-
async fetchLayer(ref: string,
|
|
229
|
+
async fetchLayer(ref: string, digest: string): Promise<PayloadFile[]> {
|
|
215
230
|
const { host, repo } = parseOciRef(ref);
|
|
216
|
-
const tar = await this.readClient(host, repo).pullBlob(
|
|
231
|
+
const tar = await this.readClient(host, repo).pullBlob(digest);
|
|
217
232
|
// Verify the transfer against the digest that addressed it. A registry is
|
|
218
233
|
// not trusted to return the blob that was asked for, and this is the only
|
|
219
234
|
// place the pushed bytes exist — the content digest checked after extraction
|
|
220
235
|
// covers the file set, not the archive that carried it.
|
|
221
|
-
const actual =
|
|
222
|
-
if (actual !==
|
|
236
|
+
const actual = blobDigest(tar);
|
|
237
|
+
if (actual !== digest) {
|
|
223
238
|
throw new IntegrityError(
|
|
224
|
-
`Blob digest mismatch fetching a layer of ${ref}: requested ${
|
|
239
|
+
`Blob digest mismatch fetching a layer of ${ref}: requested ${digest}, ` +
|
|
225
240
|
`received ${actual}. The registry returned different bytes than were addressed.`,
|
|
226
241
|
);
|
|
227
242
|
}
|
|
@@ -258,6 +273,27 @@ export class OciTransport implements Transport {
|
|
|
258
273
|
return Object.fromEntries(mapped.filter((e): e is [string, string] => Boolean(e[1])));
|
|
259
274
|
}
|
|
260
275
|
|
|
276
|
+
/** The index as it will be published: `blob` over the gzipped tar this
|
|
277
|
+
* transport pushes, `integrity` over the layer's file contents. Both are
|
|
278
|
+
* computed from the files alone, which is what lets the payload builder
|
|
279
|
+
* write the index into `telo.yaml` before a single byte is pushed. */
|
|
280
|
+
async layerIndex(layers: readonly PayloadLayer[]): Promise<ArtifactLayer[]> {
|
|
281
|
+
const index: ArtifactLayer[] = [];
|
|
282
|
+
for (const layer of layers) {
|
|
283
|
+
if (layer.files.length === 0) continue;
|
|
284
|
+
const tar = await makeTarGz(
|
|
285
|
+
layer.files.map((f) => ({ name: f.name, content: Buffer.from(f.content) })),
|
|
286
|
+
);
|
|
287
|
+
index.push({
|
|
288
|
+
role: layer.role,
|
|
289
|
+
...(layer.selector ? { selector: layer.selector } : {}),
|
|
290
|
+
blob: blobDigest(tar),
|
|
291
|
+
integrity: await computeFilesIntegrity(layer.files),
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
return index;
|
|
295
|
+
}
|
|
296
|
+
|
|
261
297
|
async publish(
|
|
262
298
|
destination: string,
|
|
263
299
|
bundle: PublishBundle,
|
|
@@ -285,17 +321,42 @@ export class OciTransport implements Transport {
|
|
|
285
321
|
const tag = identity.version;
|
|
286
322
|
const client = new OciClient(host, repo);
|
|
287
323
|
|
|
288
|
-
// Push every payload layer first
|
|
289
|
-
//
|
|
290
|
-
// pushed
|
|
324
|
+
// Push every payload layer first. This ordering is what keeps the index
|
|
325
|
+
// non-circular: the manifest layer is pushed last and names only the layers
|
|
326
|
+
// pushed before it, never itself.
|
|
327
|
+
//
|
|
328
|
+
// The index is NOT written here — `bundle.manifest` already carries it, and
|
|
329
|
+
// rewriting the manifest at this point is precisely the bug this replaced:
|
|
330
|
+
// the bytes a dependent hashed to derive its pin would then never be the
|
|
331
|
+
// bytes pushed. So each pushed blob is CHECKED against what the manifest
|
|
332
|
+
// already claims, which is also the standing test that framing stayed
|
|
333
|
+
// deterministic — a claim nobody can satisfy is a hard failure, not a
|
|
334
|
+
// silently corrected index.
|
|
335
|
+
const declared = declaredLayerIndex(bundle);
|
|
291
336
|
const payloadDescriptors: OciDescriptor[] = [];
|
|
292
|
-
const index: ArtifactLayer[] = [];
|
|
293
337
|
for (const layer of bundle.layers) {
|
|
294
338
|
if (layer.files.length === 0) continue;
|
|
339
|
+
const key = layerKey(layer.role, layer.selector);
|
|
295
340
|
const tar = await makeTarGz(
|
|
296
341
|
layer.files.map((f) => ({ name: f.name, content: Buffer.from(f.content) })),
|
|
297
342
|
);
|
|
298
343
|
const blob = await client.pushBlob(tar);
|
|
344
|
+
const claim = declared.get(key);
|
|
345
|
+
if (!claim) {
|
|
346
|
+
throw new Error(
|
|
347
|
+
`layer '${key}' is being pushed but the manifest's 'layers:' index does not name it. ` +
|
|
348
|
+
`The index is written by the payload builder before publish, so a layer missing ` +
|
|
349
|
+
`from it would be unaddressable by any importer.`,
|
|
350
|
+
);
|
|
351
|
+
}
|
|
352
|
+
if (claim.blob !== blob) {
|
|
353
|
+
throw new Error(
|
|
354
|
+
`layer '${key}' framed to ${blob}, but the manifest's 'layers:' index claims ` +
|
|
355
|
+
`${claim.blob}. The published telo.yaml is hashed into every dependent's import ` +
|
|
356
|
+
`pin, so it cannot be corrected here — the archive framing must be a pure ` +
|
|
357
|
+
`function of the layer's files.`,
|
|
358
|
+
);
|
|
359
|
+
}
|
|
299
360
|
payloadDescriptors.push({
|
|
300
361
|
mediaType: TELO_PAYLOAD_LAYER_MEDIA_TYPE,
|
|
301
362
|
digest: blob,
|
|
@@ -307,18 +368,11 @@ export class OciTransport implements Transport {
|
|
|
307
368
|
: {}),
|
|
308
369
|
},
|
|
309
370
|
});
|
|
310
|
-
index.push({
|
|
311
|
-
role: layer.role,
|
|
312
|
-
...(layer.selector ? { selector: layer.selector } : {}),
|
|
313
|
-
blob,
|
|
314
|
-
integrity: await computeFilesIntegrity(layer.files),
|
|
315
|
-
});
|
|
316
371
|
}
|
|
317
372
|
|
|
318
|
-
//
|
|
319
|
-
//
|
|
320
|
-
const manifestText =
|
|
321
|
-
index.length > 0 ? injectLayerIndex(bundle.manifest, index) : bundle.manifest;
|
|
373
|
+
// Push telo.yaml as its own layer so a manifest read never has to pull a
|
|
374
|
+
// payload. Verbatim — these are the bytes importers pin.
|
|
375
|
+
const manifestText = bundle.manifest;
|
|
322
376
|
const manifestTar = await makeTarGz([
|
|
323
377
|
{ name: DEFAULT_MANIFEST_FILENAME, content: manifestText },
|
|
324
378
|
]);
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
sha256Base64Url,
|
|
9
9
|
withRefVersion,
|
|
10
10
|
splitIntegrity,
|
|
11
|
+
type ArtifactLayer,
|
|
11
12
|
type ManifestCacheCoords,
|
|
12
13
|
type ManifestSource,
|
|
13
14
|
} from "@telorun/analyzer";
|
|
@@ -17,6 +18,7 @@ import { createHash } from "crypto";
|
|
|
17
18
|
import type { PayloadFile } from "../bundle/files-integrity.js";
|
|
18
19
|
import { assertPublicEgress } from "./egress-guard.js";
|
|
19
20
|
import type {
|
|
21
|
+
PayloadLayer,
|
|
20
22
|
PublishBundle,
|
|
21
23
|
PublishOptions,
|
|
22
24
|
PublishResult,
|
|
@@ -279,6 +281,18 @@ export class RegistryTransport implements Transport {
|
|
|
279
281
|
);
|
|
280
282
|
}
|
|
281
283
|
|
|
284
|
+
async layerIndex(layers: readonly PayloadLayer[]): Promise<ArtifactLayer[]> {
|
|
285
|
+
// Same boundary `fetchLayer` and `publish` draw: the HTTP registry serves
|
|
286
|
+
// manifests only, so it frames no layer and can name no blob. An empty set
|
|
287
|
+
// is not a payload, so it answers rather than throws — a manifest-only
|
|
288
|
+
// module builds its payload through this transport during analysis.
|
|
289
|
+
if (layers.every((layer) => layer.files.length === 0)) return [];
|
|
290
|
+
throw new Error(
|
|
291
|
+
"The Telo registry serves manifests only, so it cannot index payload layers. " +
|
|
292
|
+
"A module with a bundled payload is published as an OCI artifact (oci://host/repo).",
|
|
293
|
+
);
|
|
294
|
+
}
|
|
295
|
+
|
|
282
296
|
async publish(
|
|
283
297
|
destination: string,
|
|
284
298
|
bundle: PublishBundle,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type {
|
|
2
|
+
ArtifactLayer,
|
|
2
3
|
ArtifactSelector,
|
|
3
4
|
LayerRole,
|
|
4
5
|
ManifestCacheCoords,
|
|
@@ -19,10 +20,10 @@ export interface PayloadLayer {
|
|
|
19
20
|
|
|
20
21
|
/** The module bundle handed to a transport for publishing: the final,
|
|
21
22
|
* already-analyzed / pinned / canonicalized `telo.yaml` bytes plus the payload
|
|
22
|
-
* partitioned into layers (empty for a manifest-only module)
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* the index non-circular. */
|
|
23
|
+
* partitioned into layers (empty for a manifest-only module), whose `layers:`
|
|
24
|
+
* index the manifest already carries. The transport pushes each layer as its
|
|
25
|
+
* own blob, checks the digest against what the index claims, and only then
|
|
26
|
+
* pushes the manifest layer — the order that keeps the index non-circular. */
|
|
26
27
|
export interface PublishBundle {
|
|
27
28
|
manifest: string;
|
|
28
29
|
layers: PayloadLayer[];
|
|
@@ -151,9 +152,29 @@ export interface Transport {
|
|
|
151
152
|
* verifies. */
|
|
152
153
|
manifestHash(ref: string): Promise<string>;
|
|
153
154
|
|
|
155
|
+
/** The `layers:` index `layers` will be published under: each entry's
|
|
156
|
+
* `integrity` over the layer's file contents and its `blob` over the exact
|
|
157
|
+
* bytes this transport will push.
|
|
158
|
+
*
|
|
159
|
+
* On the interface, and called BEFORE anything is pushed, because the index
|
|
160
|
+
* goes *inside* `telo.yaml` and a dependent's import pin is a hash of that
|
|
161
|
+
* file. Injecting the index at push time — which is what this replaced —
|
|
162
|
+
* meant the payload builder's manifest was never the published one, so every
|
|
163
|
+
* sibling pin derived from it named bytes the registry does not have. The
|
|
164
|
+
* builder therefore needs the index up front, and only the transport knows
|
|
165
|
+
* the framing a `blob` digest covers.
|
|
166
|
+
*
|
|
167
|
+
* Requires the framing to be a pure function of the files (see `makeTarGz`),
|
|
168
|
+
* since `publish` re-frames the same layers and hard-fails if a digest moved.
|
|
169
|
+
* Returns `[]` for an empty layer set; throws when this transport cannot
|
|
170
|
+
* publish payload layers at all. */
|
|
171
|
+
layerIndex(layers: readonly PayloadLayer[]): Promise<ArtifactLayer[]>;
|
|
172
|
+
|
|
154
173
|
/** Push `bundle` to `destination` (a base ref / repo whose scheme this
|
|
155
174
|
* transport owns), pinning the payload and writing the transport-native
|
|
156
|
-
* artifact shape.
|
|
175
|
+
* artifact shape. `bundle.manifest` already carries the `layers:` index this
|
|
176
|
+
* transport returned from {@link layerIndex}; publish verifies rather than
|
|
177
|
+
* rewrites it. Throws on failure. Used by `telo publish`. */
|
|
157
178
|
publish(
|
|
158
179
|
destination: string,
|
|
159
180
|
bundle: PublishBundle,
|