@telorun/runner-core 0.11.0 → 0.12.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/base-image-catalog.d.ts +0 -16
- package/dist/base-image-catalog.d.ts.map +1 -1
- package/dist/base-image-catalog.js +0 -37
- package/dist/base-image-catalog.js.map +1 -1
- package/dist/capabilities-schema.d.ts +3 -3
- package/dist/capabilities-schema.d.ts.map +1 -1
- package/dist/contract.d.ts +5 -0
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/routes/session-start.js +7 -7
- package/dist/routes/session-start.js.map +1 -1
- package/package.json +1 -1
- package/src/base-image-catalog.test.ts +0 -40
- package/src/base-image-catalog.ts +0 -44
- package/src/capabilities-schema.ts +3 -3
- package/src/contract.ts +5 -0
- package/src/index.ts +0 -2
- package/src/routes/session-start.ts +7 -7
- package/dist/dependency-key.d.ts +0 -38
- package/dist/dependency-key.d.ts.map +0 -1
- package/dist/dependency-key.js +0 -68
- package/dist/dependency-key.js.map +0 -1
- package/src/dependency-key.test.ts +0 -64
- package/src/dependency-key.ts +0 -105
|
@@ -67,22 +67,6 @@ export declare function parseDockerHubRef(ref: string): {
|
|
|
67
67
|
tag: string;
|
|
68
68
|
digest?: string;
|
|
69
69
|
} | null;
|
|
70
|
-
/**
|
|
71
|
-
* Resolve a Docker Hub image ref's CURRENT manifest digest. A moving tag
|
|
72
|
-
* (`latest-slim`) maps to a new digest once a new version is published, so a
|
|
73
|
-
* build that folds this into its cache key detects that the base moved and
|
|
74
|
-
* rebuilds. An already `@sha256:`-pinned ref returns its digest without a
|
|
75
|
-
* network call. Returns `undefined` for a non-Docker-Hub ref (not an error —
|
|
76
|
-
* resolution simply doesn't apply) or when a Hub request fails. A genuine
|
|
77
|
-
* request failure is reported to `onError` rather than swallowed, so an operator
|
|
78
|
-
* whose Hub calls persistently fail (auth / network / rate-limit) gets a signal
|
|
79
|
-
* instead of an unexplained "always reuses the cached image".
|
|
80
|
-
*/
|
|
81
|
-
export declare function resolveTagDigest(ref: string, opts?: {
|
|
82
|
-
fetchImpl?: typeof fetch;
|
|
83
|
-
requestTimeoutMs?: number;
|
|
84
|
-
onError?: (err: unknown) => void;
|
|
85
|
-
}): Promise<string | undefined>;
|
|
86
70
|
export declare class BaseImageCatalog {
|
|
87
71
|
private readonly repository;
|
|
88
72
|
private readonly defaultRef;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-image-catalog.d.ts","sourceRoot":"","sources":["../src/base-image-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH;;wCAEwC;AACxC,MAAM,WAAW,SAAS;IACxB;qEACiE;IACjE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gEAAgE;IAChE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;qEACiE;IACjE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB;4EACwE;IACxE,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kEAAkE;IAClE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AA+BD;yCACyC;AACzC,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,GAAE,SAAc,GAAG,MAAM,EAAE,CAW3E;AAoED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,GACV;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAoC1E;AAED
|
|
1
|
+
{"version":3,"file":"base-image-catalog.d.ts","sourceRoot":"","sources":["../src/base-image-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH;;wCAEwC;AACxC,MAAM,WAAW,SAAS;IACxB;qEACiE;IACjE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gEAAgE;IAChE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;qEACiE;IACjE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB;4EACwE;IACxE,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kEAAkE;IAClE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AA+BD;yCACyC;AACzC,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,GAAE,SAAc,GAAG,MAAM,EAAE,CAW3E;AAoED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,GACV;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAoC1E;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,yEAAyE;IACzE,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,KAAK,CAAC,CAAiC;gBAEnC,IAAI,EAAE,uBAAuB;IAWzC,4EAA4E;IAC5E,OAAO,IAAI,MAAM,EAAE;IAKnB,8EAA8E;IAC9E,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI/B,0EAA0E;IACpE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B;6EACyE;IACzE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAQ7C,IAAI,IAAI,IAAI;CAMb"}
|
|
@@ -152,43 +152,6 @@ export function parseDockerHubRef(ref) {
|
|
|
152
152
|
digest,
|
|
153
153
|
};
|
|
154
154
|
}
|
|
155
|
-
/**
|
|
156
|
-
* Resolve a Docker Hub image ref's CURRENT manifest digest. A moving tag
|
|
157
|
-
* (`latest-slim`) maps to a new digest once a new version is published, so a
|
|
158
|
-
* build that folds this into its cache key detects that the base moved and
|
|
159
|
-
* rebuilds. An already `@sha256:`-pinned ref returns its digest without a
|
|
160
|
-
* network call. Returns `undefined` for a non-Docker-Hub ref (not an error —
|
|
161
|
-
* resolution simply doesn't apply) or when a Hub request fails. A genuine
|
|
162
|
-
* request failure is reported to `onError` rather than swallowed, so an operator
|
|
163
|
-
* whose Hub calls persistently fail (auth / network / rate-limit) gets a signal
|
|
164
|
-
* instead of an unexplained "always reuses the cached image".
|
|
165
|
-
*/
|
|
166
|
-
export async function resolveTagDigest(ref, opts = {}) {
|
|
167
|
-
const parsed = parseDockerHubRef(ref);
|
|
168
|
-
if (!parsed)
|
|
169
|
-
return undefined;
|
|
170
|
-
if (parsed.digest)
|
|
171
|
-
return parsed.digest;
|
|
172
|
-
const fetchImpl = opts.fetchImpl ?? fetch;
|
|
173
|
-
const url = `https://hub.docker.com/v2/repositories/${encodeURIComponent(parsed.namespace)}/` +
|
|
174
|
-
`${encodeURIComponent(parsed.repo)}/tags/${encodeURIComponent(parsed.tag)}`;
|
|
175
|
-
try {
|
|
176
|
-
const res = await fetchImpl(url, {
|
|
177
|
-
headers: { Accept: "application/json" },
|
|
178
|
-
signal: AbortSignal.timeout(opts.requestTimeoutMs ?? 10_000),
|
|
179
|
-
});
|
|
180
|
-
if (!res.ok) {
|
|
181
|
-
opts.onError?.(new Error(`Docker Hub tag request for '${ref}' failed: ${res.status} ${res.statusText}`));
|
|
182
|
-
return undefined;
|
|
183
|
-
}
|
|
184
|
-
const body = (await res.json());
|
|
185
|
-
return body.digest ?? body.images?.find((i) => i.digest)?.digest ?? undefined;
|
|
186
|
-
}
|
|
187
|
-
catch (err) {
|
|
188
|
-
opts.onError?.(err);
|
|
189
|
-
return undefined;
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
155
|
export class BaseImageCatalog {
|
|
193
156
|
repository;
|
|
194
157
|
defaultRef;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-image-catalog.js","sourceRoot":"","sources":["../src/base-image-catalog.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"base-image-catalog.js","sourceRoot":"","sources":["../src/base-image-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,9 +9,9 @@ export interface SessionConfigSchemaOptions {
|
|
|
9
9
|
imageEnum?: string[];
|
|
10
10
|
/** Default pull policy (defaults to `missing`). */
|
|
11
11
|
pullPolicyDefault?: PullPolicy;
|
|
12
|
-
/** Override the `pullPolicy` field description.
|
|
13
|
-
*
|
|
14
|
-
*
|
|
12
|
+
/** Override the `pullPolicy` field description. Wording differs per backend
|
|
13
|
+
* (a container pull policy on docker, a Pod `imagePullPolicy` on k8s), so
|
|
14
|
+
* each runner can supply text that matches what its workload sees. */
|
|
15
15
|
pullPolicyDescription?: string;
|
|
16
16
|
/** When true, `image` is server-enforced — advertised `readOnly` (locked to
|
|
17
17
|
* `imageDefault`) so the editor renders it disabled but still sends it. No
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities-schema.d.ts","sourceRoot":"","sources":["../src/capabilities-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE5D,MAAM,WAAW,0BAA0B;IACzC,yEAAyE;IACzE,YAAY,EAAE,MAAM,CAAC;IACrB;;;iFAG6E;IAC7E,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAC/B;;
|
|
1
|
+
{"version":3,"file":"capabilities-schema.d.ts","sourceRoot":"","sources":["../src/capabilities-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE5D,MAAM,WAAW,0BAA0B;IACzC,yEAAyE;IACzE,YAAY,EAAE,MAAM,CAAC;IACrB;;;iFAG6E;IAC7E,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAC/B;;2EAEuE;IACvE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;qCAGiC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,0BAA0B,GAAG,UAAU,CA6BhF"}
|
package/dist/contract.d.ts
CHANGED
|
@@ -241,6 +241,11 @@ export type RunStatus = {
|
|
|
241
241
|
* Coarse phase a session passes through while coming up, carried on `progress`
|
|
242
242
|
* events. Additive to the status enum: `RunStatus` stays `starting` until the
|
|
243
243
|
* workload is actually up; these messages drive the editor's spinner + step feed.
|
|
244
|
+
*
|
|
245
|
+
* `build` is kept though no runner in this repo emits it any more: it is the
|
|
246
|
+
* vocabulary a BACKEND reports in, and a backend that materializes an image
|
|
247
|
+
* before boot has a phase to name. A client must render an unknown phase as
|
|
248
|
+
* prose anyway — an older runner is still on the other end of the stream.
|
|
244
249
|
*/
|
|
245
250
|
export type RunPhase = "build" | "provision" | "boot";
|
|
246
251
|
/** Per-port reachability of a running session's declared ports, watched by the
|
package/dist/contract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"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"}
|
package/dist/contract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwCH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AA6G7D;;gEAEgE;AAChE,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwCH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AA6G7D;;gEAEgE;AAChE,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAgKtC;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,MAAiB;IAC1C,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC;AAC3F,CAAC;AA0DD,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAExB;IACA;IAEA;IAJlB,YACkB,IAAoC,EACpC,KAAwB,EACxC,OAAe,EACC,aAAsB;QAEtC,KAAK,CAAC,OAAO,CAAC,CAAC;QALC,SAAI,GAAJ,IAAI,CAAgC;QACpC,UAAK,GAAL,KAAK,CAAmB;QAExB,kBAAa,GAAb,aAAa,CAAS;QAGtC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,8 +3,7 @@ export * from "./backend.js";
|
|
|
3
3
|
export * from "./config.js";
|
|
4
4
|
export * from "./server.js";
|
|
5
5
|
export { sessionConfigSchema, type SessionConfigSchemaOptions } from "./capabilities-schema.js";
|
|
6
|
-
export { BaseImageCatalog, filterTags, parseDockerHubRef,
|
|
7
|
-
export { extractDependencyKey, type DependencyKey } from "./dependency-key.js";
|
|
6
|
+
export { BaseImageCatalog, filterTags, parseDockerHubRef, type TagFilter, type BaseImageCatalogOptions, } from "./base-image-catalog.js";
|
|
8
7
|
export { SessionRegistry, SessionLimitError, SessionEvictedError, UnknownAppError, type AppChannel, type RunAttribution, type SessionEntry, type RegisterArgs, type RegistryDeps, type WorkspaceCheckpoint, } from "./session/registry.js";
|
|
9
8
|
export { WatchSupervisor, type WatchSupervisorDeps } from "./session/watch-supervisor.js";
|
|
10
9
|
export { RunProjection } from "./debug/run-projection.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,KAAK,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAChG,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,KAAK,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAChG,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,KAAK,SAAS,EACd,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,mBAAmB,GACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,KAAK,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,KAAK,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,8 +3,7 @@ export * from "./backend.js";
|
|
|
3
3
|
export * from "./config.js";
|
|
4
4
|
export * from "./server.js";
|
|
5
5
|
export { sessionConfigSchema } from "./capabilities-schema.js";
|
|
6
|
-
export { BaseImageCatalog, filterTags, parseDockerHubRef,
|
|
7
|
-
export { extractDependencyKey } from "./dependency-key.js";
|
|
6
|
+
export { BaseImageCatalog, filterTags, parseDockerHubRef, } from "./base-image-catalog.js";
|
|
8
7
|
export { SessionRegistry, SessionLimitError, SessionEvictedError, UnknownAppError, } from "./session/registry.js";
|
|
9
8
|
export { WatchSupervisor } from "./session/watch-supervisor.js";
|
|
10
9
|
export { RunProjection } from "./debug/run-projection.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAmC,MAAM,0BAA0B,CAAC;AAChG,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAmC,MAAM,0BAA0B,CAAC;AAChG,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,iBAAiB,GAGlB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,GAOhB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAA4B,MAAM,+BAA+B,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,eAAe,EAAsB,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAsB,MAAM,+BAA+B,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAsB,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAuB,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,aAAa,EAA4C,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,SAAS,EAAsB,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,OAAO,EAAoB,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAA0B,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EACL,iBAAiB,GAElB,MAAM,mBAAmB,CAAC"}
|
|
@@ -66,12 +66,12 @@ notices) {
|
|
|
66
66
|
}
|
|
67
67
|
const sessionEnv = withoutCacheOverride(args.env);
|
|
68
68
|
// Respond as soon as the session is registered — BEFORE the backend starts.
|
|
69
|
-
// `backend.start()`
|
|
70
|
-
//
|
|
71
|
-
//
|
|
72
|
-
//
|
|
73
|
-
//
|
|
74
|
-
//
|
|
69
|
+
// `backend.start()` spans image pull and workload bring-up, which can take
|
|
70
|
+
// seconds-to-minutes; awaiting it here would hide the event stream until the
|
|
71
|
+
// workload is already up, so the client never sees provision / boot progress
|
|
72
|
+
// live. Returning the streamUrl first lets the client connect immediately;
|
|
73
|
+
// start runs in the background and its progress, output, and terminal status
|
|
74
|
+
// flow over the stream.
|
|
75
75
|
reply.code(201).send({
|
|
76
76
|
sessionId,
|
|
77
77
|
streamUrl: `/v1/sessions/${sessionId}/events`,
|
|
@@ -158,7 +158,7 @@ export function launchWorkload(app, deps, args, entry) {
|
|
|
158
158
|
.then(async (session) => {
|
|
159
159
|
entry.session = session;
|
|
160
160
|
// Pre-start DELETE race: a DELETE received during backend.start (e.g.
|
|
161
|
-
// while
|
|
161
|
+
// while the image was still pulling) can't stop a workload that didn't
|
|
162
162
|
// exist yet — it set userStopped and returned 204. Now that the workload
|
|
163
163
|
// is live, honor the earlier DELETE.
|
|
164
164
|
if (entry.userStopped) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../src/routes/session-start.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAElB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,iBAAiB,GAGlB,MAAM,wBAAwB,CAAC;AAEhC;2EAC2E;AAC3E,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACL,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;QAC9B,UAAU,EAAE;YACV,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE;YACrD,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;SACnD;KACF;CACO,CAAC;AAEX;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAmB,EACnB,KAAmB,EACnB,KAA8B;IAE9B,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACnD,IAAI,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC;QACzD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAWD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAAoB,EACpB,IAAuB,EACvB,IAAuB,EACvB,KAAmB;AACnB;;;4EAG4E;AAC5E,OAAkB;IAElB,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;IAEtC,IAAI,KAA8C,CAAC;IACnD,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC7B,SAAS;YACT,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;SACzE,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,iBAAiB,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3E,OAAO;QACT,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAElD,4EAA4E;IAC5E,2EAA2E;IAC3E,
|
|
1
|
+
{"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../src/routes/session-start.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@telorun/runner-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "Backend-neutral core for Telo runners: the /v1 session contract, the RunnerBackend interface, the session registry, SSE/byte ring buffers, and bundle handling. Shared by docker-runner and k8s-runner.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"telo",
|
|
@@ -4,7 +4,6 @@ import {
|
|
|
4
4
|
BaseImageCatalog,
|
|
5
5
|
filterTags,
|
|
6
6
|
parseDockerHubRef,
|
|
7
|
-
resolveTagDigest,
|
|
8
7
|
} from "./base-image-catalog.js";
|
|
9
8
|
|
|
10
9
|
const SAMPLE = [
|
|
@@ -168,42 +167,3 @@ describe("parseDockerHubRef", () => {
|
|
|
168
167
|
expect(parseDockerHubRef("registry.telo-runner.svc:5000/x:y")).toBeNull();
|
|
169
168
|
});
|
|
170
169
|
});
|
|
171
|
-
|
|
172
|
-
describe("resolveTagDigest", () => {
|
|
173
|
-
it("returns an already-pinned digest without a network call", async () => {
|
|
174
|
-
let called = false;
|
|
175
|
-
const fetchImpl = (async () => {
|
|
176
|
-
called = true;
|
|
177
|
-
return new Response("{}");
|
|
178
|
-
}) as unknown as typeof fetch;
|
|
179
|
-
expect(await resolveTagDigest("telorun/node@sha256:deadbeef", { fetchImpl })).toBe(
|
|
180
|
-
"sha256:deadbeef",
|
|
181
|
-
);
|
|
182
|
-
expect(called).toBe(false);
|
|
183
|
-
});
|
|
184
|
-
|
|
185
|
-
it("reads the manifest digest from the Docker Hub tag endpoint", async () => {
|
|
186
|
-
const fetchImpl = (async () =>
|
|
187
|
-
new Response(JSON.stringify({ digest: "sha256:abc123", images: [{ digest: "sha256:zzz" }] }), {
|
|
188
|
-
status: 200,
|
|
189
|
-
headers: { "content-type": "application/json" },
|
|
190
|
-
})) as unknown as typeof fetch;
|
|
191
|
-
expect(await resolveTagDigest("telorun/node:latest-slim", { fetchImpl })).toBe("sha256:abc123");
|
|
192
|
-
});
|
|
193
|
-
|
|
194
|
-
it("returns undefined for a non-Hub ref or on a failed request", async () => {
|
|
195
|
-
expect(await resolveTagDigest("ghcr.io/foo/bar:1")).toBeUndefined();
|
|
196
|
-
const fetchImpl = (async () => new Response("nope", { status: 404 })) as unknown as typeof fetch;
|
|
197
|
-
expect(await resolveTagDigest("telorun/node:missing", { fetchImpl })).toBeUndefined();
|
|
198
|
-
});
|
|
199
|
-
|
|
200
|
-
it("reports a genuine Hub failure to onError but stays silent for a non-Hub ref", async () => {
|
|
201
|
-
const errors: unknown[] = [];
|
|
202
|
-
const fail = (async () => new Response("boom", { status: 500 })) as unknown as typeof fetch;
|
|
203
|
-
await resolveTagDigest("telorun/node:latest", { fetchImpl: fail, onError: (e) => errors.push(e) });
|
|
204
|
-
expect(errors).toHaveLength(1);
|
|
205
|
-
|
|
206
|
-
await resolveTagDigest("ghcr.io/foo/bar:1", { onError: (e) => errors.push(e) });
|
|
207
|
-
expect(errors).toHaveLength(1); // non-Hub ref is not an error
|
|
208
|
-
});
|
|
209
|
-
});
|
|
@@ -211,50 +211,6 @@ export function parseDockerHubRef(
|
|
|
211
211
|
};
|
|
212
212
|
}
|
|
213
213
|
|
|
214
|
-
/**
|
|
215
|
-
* Resolve a Docker Hub image ref's CURRENT manifest digest. A moving tag
|
|
216
|
-
* (`latest-slim`) maps to a new digest once a new version is published, so a
|
|
217
|
-
* build that folds this into its cache key detects that the base moved and
|
|
218
|
-
* rebuilds. An already `@sha256:`-pinned ref returns its digest without a
|
|
219
|
-
* network call. Returns `undefined` for a non-Docker-Hub ref (not an error —
|
|
220
|
-
* resolution simply doesn't apply) or when a Hub request fails. A genuine
|
|
221
|
-
* request failure is reported to `onError` rather than swallowed, so an operator
|
|
222
|
-
* whose Hub calls persistently fail (auth / network / rate-limit) gets a signal
|
|
223
|
-
* instead of an unexplained "always reuses the cached image".
|
|
224
|
-
*/
|
|
225
|
-
export async function resolveTagDigest(
|
|
226
|
-
ref: string,
|
|
227
|
-
opts: {
|
|
228
|
-
fetchImpl?: typeof fetch;
|
|
229
|
-
requestTimeoutMs?: number;
|
|
230
|
-
onError?: (err: unknown) => void;
|
|
231
|
-
} = {},
|
|
232
|
-
): Promise<string | undefined> {
|
|
233
|
-
const parsed = parseDockerHubRef(ref);
|
|
234
|
-
if (!parsed) return undefined;
|
|
235
|
-
if (parsed.digest) return parsed.digest;
|
|
236
|
-
|
|
237
|
-
const fetchImpl = opts.fetchImpl ?? fetch;
|
|
238
|
-
const url =
|
|
239
|
-
`https://hub.docker.com/v2/repositories/${encodeURIComponent(parsed.namespace)}/` +
|
|
240
|
-
`${encodeURIComponent(parsed.repo)}/tags/${encodeURIComponent(parsed.tag)}`;
|
|
241
|
-
try {
|
|
242
|
-
const res = await fetchImpl(url, {
|
|
243
|
-
headers: { Accept: "application/json" },
|
|
244
|
-
signal: AbortSignal.timeout(opts.requestTimeoutMs ?? 10_000),
|
|
245
|
-
});
|
|
246
|
-
if (!res.ok) {
|
|
247
|
-
opts.onError?.(new Error(`Docker Hub tag request for '${ref}' failed: ${res.status} ${res.statusText}`));
|
|
248
|
-
return undefined;
|
|
249
|
-
}
|
|
250
|
-
const body = (await res.json()) as { digest?: string; images?: Array<{ digest?: string }> };
|
|
251
|
-
return body.digest ?? body.images?.find((i) => i.digest)?.digest ?? undefined;
|
|
252
|
-
} catch (err) {
|
|
253
|
-
opts.onError?.(err);
|
|
254
|
-
return undefined;
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
|
|
258
214
|
export class BaseImageCatalog {
|
|
259
215
|
private readonly repository: string;
|
|
260
216
|
private readonly defaultRef: string;
|
|
@@ -10,9 +10,9 @@ export interface SessionConfigSchemaOptions {
|
|
|
10
10
|
imageEnum?: string[];
|
|
11
11
|
/** Default pull policy (defaults to `missing`). */
|
|
12
12
|
pullPolicyDefault?: PullPolicy;
|
|
13
|
-
/** Override the `pullPolicy` field description.
|
|
14
|
-
*
|
|
15
|
-
*
|
|
13
|
+
/** Override the `pullPolicy` field description. Wording differs per backend
|
|
14
|
+
* (a container pull policy on docker, a Pod `imagePullPolicy` on k8s), so
|
|
15
|
+
* each runner can supply text that matches what its workload sees. */
|
|
16
16
|
pullPolicyDescription?: string;
|
|
17
17
|
/** When true, `image` is server-enforced — advertised `readOnly` (locked to
|
|
18
18
|
* `imageDefault`) so the editor renders it disabled but still sends it. No
|
package/src/contract.ts
CHANGED
|
@@ -248,6 +248,11 @@ export type RunStatus =
|
|
|
248
248
|
* Coarse phase a session passes through while coming up, carried on `progress`
|
|
249
249
|
* events. Additive to the status enum: `RunStatus` stays `starting` until the
|
|
250
250
|
* workload is actually up; these messages drive the editor's spinner + step feed.
|
|
251
|
+
*
|
|
252
|
+
* `build` is kept though no runner in this repo emits it any more: it is the
|
|
253
|
+
* vocabulary a BACKEND reports in, and a backend that materializes an image
|
|
254
|
+
* before boot has a phase to name. A client must render an unknown phase as
|
|
255
|
+
* prose anyway — an older runner is still on the other end of the stream.
|
|
251
256
|
*/
|
|
252
257
|
export type RunPhase = "build" | "provision" | "boot";
|
|
253
258
|
|
package/src/index.ts
CHANGED
|
@@ -7,11 +7,9 @@ export {
|
|
|
7
7
|
BaseImageCatalog,
|
|
8
8
|
filterTags,
|
|
9
9
|
parseDockerHubRef,
|
|
10
|
-
resolveTagDigest,
|
|
11
10
|
type TagFilter,
|
|
12
11
|
type BaseImageCatalogOptions,
|
|
13
12
|
} from "./base-image-catalog.js";
|
|
14
|
-
export { extractDependencyKey, type DependencyKey } from "./dependency-key.js";
|
|
15
13
|
|
|
16
14
|
export {
|
|
17
15
|
SessionRegistry,
|
|
@@ -99,12 +99,12 @@ export async function startWorkloadSession(
|
|
|
99
99
|
const sessionEnv = withoutCacheOverride(args.env);
|
|
100
100
|
|
|
101
101
|
// Respond as soon as the session is registered — BEFORE the backend starts.
|
|
102
|
-
// `backend.start()`
|
|
103
|
-
//
|
|
104
|
-
//
|
|
105
|
-
//
|
|
106
|
-
//
|
|
107
|
-
//
|
|
102
|
+
// `backend.start()` spans image pull and workload bring-up, which can take
|
|
103
|
+
// seconds-to-minutes; awaiting it here would hide the event stream until the
|
|
104
|
+
// workload is already up, so the client never sees provision / boot progress
|
|
105
|
+
// live. Returning the streamUrl first lets the client connect immediately;
|
|
106
|
+
// start runs in the background and its progress, output, and terminal status
|
|
107
|
+
// flow over the stream.
|
|
108
108
|
reply.code(201).send({
|
|
109
109
|
sessionId,
|
|
110
110
|
streamUrl: `/v1/sessions/${sessionId}/events`,
|
|
@@ -206,7 +206,7 @@ export function launchWorkload(
|
|
|
206
206
|
.then(async (session) => {
|
|
207
207
|
entry.session = session;
|
|
208
208
|
// Pre-start DELETE race: a DELETE received during backend.start (e.g.
|
|
209
|
-
// while
|
|
209
|
+
// while the image was still pulling) can't stop a workload that didn't
|
|
210
210
|
// exist yet — it set userStopped and returned 204. Now that the workload
|
|
211
211
|
// is live, honor the earlier DELETE.
|
|
212
212
|
if (entry.userStopped) {
|
package/dist/dependency-key.d.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import type { RunBundle } from "./contract.js";
|
|
2
|
-
/**
|
|
3
|
-
* The inputs that determine a session's baked dependency layer — everything
|
|
4
|
-
* `telo install` would resolve into `.telo/{manifests,npm}`, and nothing about
|
|
5
|
-
* resource bodies or CEL. A backend that prebuilds a per-app image keys the
|
|
6
|
-
* image tag on this so a body-only edit reuses the image while an import or
|
|
7
|
-
* controller change rebuilds it.
|
|
8
|
-
*
|
|
9
|
-
* Derived by a SHALLOW static parse of the in-memory bundle — no graph load, no
|
|
10
|
-
* network, no archive. Exact import versions pin the transitive closure, so the
|
|
11
|
-
* authored `imports:` + body-declared controllers are sufficient.
|
|
12
|
-
*
|
|
13
|
-
* Assumes every file in the bundle is reachable from the entry (true for
|
|
14
|
-
* editor / control-plane-produced bundles, which carry exactly the app's
|
|
15
|
-
* files). It scans ALL `Telo.Definition` docs rather than following the entry's
|
|
16
|
-
* include/import graph — cheaper, and erring toward over-inclusion only ever
|
|
17
|
-
* busts the cache more eagerly. The one unsound case is a bundle carrying an
|
|
18
|
-
* orphan controller-bearing Definition that `telo install` would NOT bake (not
|
|
19
|
-
* reachable from this entry) yet another entry with the same closure WOULD: they
|
|
20
|
-
* could share a tag whose image lacks that controller. Not reachable via the
|
|
21
|
-
* editor; revisit (anchor to the include graph) if bundles ever carry unreachable
|
|
22
|
-
* Definition files.
|
|
23
|
-
*/
|
|
24
|
-
export interface DependencyKey {
|
|
25
|
-
/** Sorted `imports:` source strings from every module doc. */
|
|
26
|
-
importSources: string[];
|
|
27
|
-
/** Sorted controller PURLs declared by inline `Telo.Definition` docs. */
|
|
28
|
-
controllerLocators: string[];
|
|
29
|
-
/**
|
|
30
|
-
* True when a `Telo.Definition` resolves its controller from bundle-local
|
|
31
|
-
* source (`local_path`), or a file failed to parse. In either case the dep
|
|
32
|
-
* key alone can't capture a controller change, so the caller MUST also fold
|
|
33
|
-
* the full bundle contents into the tag (safe fallback to content-keying).
|
|
34
|
-
*/
|
|
35
|
-
fullContentFallback: boolean;
|
|
36
|
-
}
|
|
37
|
-
export declare function extractDependencyKey(bundle: RunBundle): DependencyKey;
|
|
38
|
-
//# sourceMappingURL=dependency-key.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-key.d.ts","sourceRoot":"","sources":["../src/dependency-key.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,aAAa;IAC5B,8DAA8D;IAC9D,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,yEAAyE;IACzE,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B;;;;;OAKG;IACH,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAgBD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,aAAa,CAkDrE"}
|
package/dist/dependency-key.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { parseAllDocuments } from "yaml";
|
|
2
|
-
function asModuleKind(kind) {
|
|
3
|
-
return kind === "Telo.Application" || kind === "Telo.Library";
|
|
4
|
-
}
|
|
5
|
-
/** Pull `{ source }` out of an `imports:` map value (bare string or object). */
|
|
6
|
-
function importSourceOf(value) {
|
|
7
|
-
if (typeof value === "string")
|
|
8
|
-
return value;
|
|
9
|
-
if (value && typeof value === "object") {
|
|
10
|
-
const source = value.source;
|
|
11
|
-
if (typeof source === "string")
|
|
12
|
-
return source;
|
|
13
|
-
}
|
|
14
|
-
return undefined;
|
|
15
|
-
}
|
|
16
|
-
export function extractDependencyKey(bundle) {
|
|
17
|
-
const importSources = new Set();
|
|
18
|
-
const controllerLocators = new Set();
|
|
19
|
-
let fullContentFallback = false;
|
|
20
|
-
for (const file of bundle.files) {
|
|
21
|
-
let docs;
|
|
22
|
-
try {
|
|
23
|
-
docs = parseAllDocuments(file.contents);
|
|
24
|
-
}
|
|
25
|
-
catch {
|
|
26
|
-
// Unparseable file — we can't know what it declares, so fall back to
|
|
27
|
-
// hashing the whole bundle rather than risk an under-specified key.
|
|
28
|
-
fullContentFallback = true;
|
|
29
|
-
continue;
|
|
30
|
-
}
|
|
31
|
-
for (const doc of docs) {
|
|
32
|
-
if (doc.errors.length > 0) {
|
|
33
|
-
fullContentFallback = true;
|
|
34
|
-
continue;
|
|
35
|
-
}
|
|
36
|
-
const value = doc.toJS();
|
|
37
|
-
if (!value || typeof value !== "object")
|
|
38
|
-
continue;
|
|
39
|
-
const kind = value.kind;
|
|
40
|
-
if (asModuleKind(kind) && value.imports && typeof value.imports === "object") {
|
|
41
|
-
for (const entry of Object.values(value.imports)) {
|
|
42
|
-
const source = importSourceOf(entry);
|
|
43
|
-
if (source)
|
|
44
|
-
importSources.add(source);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
if (kind === "Telo.Definition") {
|
|
48
|
-
const controllers = value.controllers;
|
|
49
|
-
if (Array.isArray(controllers)) {
|
|
50
|
-
for (const c of controllers) {
|
|
51
|
-
if (typeof c === "string")
|
|
52
|
-
controllerLocators.add(c);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
// A bundle-local controller's source lives in the body; the PURL/path
|
|
56
|
-
// can't capture an edit to it, so force full-content keying.
|
|
57
|
-
if (typeof value.local_path === "string")
|
|
58
|
-
fullContentFallback = true;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
return {
|
|
63
|
-
importSources: [...importSources].sort(),
|
|
64
|
-
controllerLocators: [...controllerLocators].sort(),
|
|
65
|
-
fullContentFallback,
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=dependency-key.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-key.js","sourceRoot":"","sources":["../src/dependency-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAwCzC,SAAS,YAAY,CAAC,IAAa;IACjC,OAAO,IAAI,KAAK,kBAAkB,IAAI,IAAI,KAAK,cAAc,CAAC;AAChE,CAAC;AAED,gFAAgF;AAChF,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,MAAM,GAAI,KAA8B,CAAC,MAAM,CAAC;QACtD,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC;IAChD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC7C,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAEhC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC;QACT,IAAI,CAAC;YACH,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,qEAAqE;YACrE,oEAAoE;YACpE,mBAAmB,GAAG,IAAI,CAAC;YAC3B,SAAS;QACX,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,mBAAmB,GAAG,IAAI,CAAC;gBAC3B,SAAS;YACX,CAAC;YACD,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAoC,CAAC;YAC3D,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,SAAS;YAClD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YAExB,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC7E,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAkC,CAAC,EAAE,CAAC;oBAC5E,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;oBACrC,IAAI,MAAM;wBAAE,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;YAED,IAAI,IAAI,KAAK,iBAAiB,EAAE,CAAC;gBAC/B,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;gBACtC,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC/B,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;wBAC5B,IAAI,OAAO,CAAC,KAAK,QAAQ;4BAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACvD,CAAC;gBACH,CAAC;gBACD,sEAAsE;gBACtE,6DAA6D;gBAC7D,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ;oBAAE,mBAAmB,GAAG,IAAI,CAAC;YACvE,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,aAAa,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,EAAE;QACxC,kBAAkB,EAAE,CAAC,GAAG,kBAAkB,CAAC,CAAC,IAAI,EAAE;QAClD,mBAAmB;KACpB,CAAC;AACJ,CAAC"}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
|
|
3
|
-
import type { RunBundle } from "./contract.js";
|
|
4
|
-
import { extractDependencyKey } from "./dependency-key.js";
|
|
5
|
-
|
|
6
|
-
function bundle(manifest: string, extra: RunBundle["files"] = []): RunBundle {
|
|
7
|
-
return {
|
|
8
|
-
entryRelativePath: "manifest.yaml",
|
|
9
|
-
files: [{ relativePath: "manifest.yaml", contents: manifest }, ...extra],
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
const APP = [
|
|
14
|
-
"kind: Telo.Application",
|
|
15
|
-
"metadata:",
|
|
16
|
-
" name: app",
|
|
17
|
-
"imports:",
|
|
18
|
-
" Console: std/console@0.9.0",
|
|
19
|
-
" Http: std/http-server@1.2.0",
|
|
20
|
-
"---",
|
|
21
|
-
"kind: Telo.Definition",
|
|
22
|
-
"metadata:",
|
|
23
|
-
" name: Thing",
|
|
24
|
-
"controllers:",
|
|
25
|
-
" - pkg:npm/@acme/thing@1.0.0",
|
|
26
|
-
"",
|
|
27
|
-
].join("\n");
|
|
28
|
-
|
|
29
|
-
describe("extractDependencyKey", () => {
|
|
30
|
-
it("collects imports and body-declared controllers, sorted", () => {
|
|
31
|
-
const key = extractDependencyKey(bundle(APP));
|
|
32
|
-
expect(key.importSources).toEqual(["std/console@0.9.0", "std/http-server@1.2.0"]);
|
|
33
|
-
expect(key.controllerLocators).toEqual(["pkg:npm/@acme/thing@1.0.0"]);
|
|
34
|
-
expect(key.fullContentFallback).toBe(false);
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
it("reads the object form of an import entry", () => {
|
|
38
|
-
const m = APP.replace(
|
|
39
|
-
" Console: std/console@0.9.0",
|
|
40
|
-
" Console:\n source: std/console@0.9.0\n variables: { level: info }",
|
|
41
|
-
);
|
|
42
|
-
expect(extractDependencyKey(bundle(m)).importSources).toContain("std/console@0.9.0");
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
it("flags local_path controllers for full-content fallback", () => {
|
|
46
|
-
const m = APP.replace(
|
|
47
|
-
" - pkg:npm/@acme/thing@1.0.0",
|
|
48
|
-
" - pkg:npm/@acme/thing@1.0.0\nlocal_path: ./thing",
|
|
49
|
-
);
|
|
50
|
-
expect(extractDependencyKey(bundle(m)).fullContentFallback).toBe(true);
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
it("flags an unparseable file for full-content fallback", () => {
|
|
54
|
-
const key = extractDependencyKey(bundle(APP, [{ relativePath: "broken.yaml", contents: "a: b: c: :\n - [" }]));
|
|
55
|
-
expect(key.fullContentFallback).toBe(true);
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
it("returns empty sets for a manifest with no imports or controllers", () => {
|
|
59
|
-
const key = extractDependencyKey(bundle("kind: Telo.Application\nmetadata:\n name: bare\n"));
|
|
60
|
-
expect(key.importSources).toEqual([]);
|
|
61
|
-
expect(key.controllerLocators).toEqual([]);
|
|
62
|
-
expect(key.fullContentFallback).toBe(false);
|
|
63
|
-
});
|
|
64
|
-
});
|
package/src/dependency-key.ts
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import { parseAllDocuments } from "yaml";
|
|
2
|
-
|
|
3
|
-
import type { RunBundle } from "./contract.js";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* The inputs that determine a session's baked dependency layer — everything
|
|
7
|
-
* `telo install` would resolve into `.telo/{manifests,npm}`, and nothing about
|
|
8
|
-
* resource bodies or CEL. A backend that prebuilds a per-app image keys the
|
|
9
|
-
* image tag on this so a body-only edit reuses the image while an import or
|
|
10
|
-
* controller change rebuilds it.
|
|
11
|
-
*
|
|
12
|
-
* Derived by a SHALLOW static parse of the in-memory bundle — no graph load, no
|
|
13
|
-
* network, no archive. Exact import versions pin the transitive closure, so the
|
|
14
|
-
* authored `imports:` + body-declared controllers are sufficient.
|
|
15
|
-
*
|
|
16
|
-
* Assumes every file in the bundle is reachable from the entry (true for
|
|
17
|
-
* editor / control-plane-produced bundles, which carry exactly the app's
|
|
18
|
-
* files). It scans ALL `Telo.Definition` docs rather than following the entry's
|
|
19
|
-
* include/import graph — cheaper, and erring toward over-inclusion only ever
|
|
20
|
-
* busts the cache more eagerly. The one unsound case is a bundle carrying an
|
|
21
|
-
* orphan controller-bearing Definition that `telo install` would NOT bake (not
|
|
22
|
-
* reachable from this entry) yet another entry with the same closure WOULD: they
|
|
23
|
-
* could share a tag whose image lacks that controller. Not reachable via the
|
|
24
|
-
* editor; revisit (anchor to the include graph) if bundles ever carry unreachable
|
|
25
|
-
* Definition files.
|
|
26
|
-
*/
|
|
27
|
-
export interface DependencyKey {
|
|
28
|
-
/** Sorted `imports:` source strings from every module doc. */
|
|
29
|
-
importSources: string[];
|
|
30
|
-
/** Sorted controller PURLs declared by inline `Telo.Definition` docs. */
|
|
31
|
-
controllerLocators: string[];
|
|
32
|
-
/**
|
|
33
|
-
* True when a `Telo.Definition` resolves its controller from bundle-local
|
|
34
|
-
* source (`local_path`), or a file failed to parse. In either case the dep
|
|
35
|
-
* key alone can't capture a controller change, so the caller MUST also fold
|
|
36
|
-
* the full bundle contents into the tag (safe fallback to content-keying).
|
|
37
|
-
*/
|
|
38
|
-
fullContentFallback: boolean;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
function asModuleKind(kind: unknown): boolean {
|
|
42
|
-
return kind === "Telo.Application" || kind === "Telo.Library";
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/** Pull `{ source }` out of an `imports:` map value (bare string or object). */
|
|
46
|
-
function importSourceOf(value: unknown): string | undefined {
|
|
47
|
-
if (typeof value === "string") return value;
|
|
48
|
-
if (value && typeof value === "object") {
|
|
49
|
-
const source = (value as { source?: unknown }).source;
|
|
50
|
-
if (typeof source === "string") return source;
|
|
51
|
-
}
|
|
52
|
-
return undefined;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
export function extractDependencyKey(bundle: RunBundle): DependencyKey {
|
|
56
|
-
const importSources = new Set<string>();
|
|
57
|
-
const controllerLocators = new Set<string>();
|
|
58
|
-
let fullContentFallback = false;
|
|
59
|
-
|
|
60
|
-
for (const file of bundle.files) {
|
|
61
|
-
let docs;
|
|
62
|
-
try {
|
|
63
|
-
docs = parseAllDocuments(file.contents);
|
|
64
|
-
} catch {
|
|
65
|
-
// Unparseable file — we can't know what it declares, so fall back to
|
|
66
|
-
// hashing the whole bundle rather than risk an under-specified key.
|
|
67
|
-
fullContentFallback = true;
|
|
68
|
-
continue;
|
|
69
|
-
}
|
|
70
|
-
for (const doc of docs) {
|
|
71
|
-
if (doc.errors.length > 0) {
|
|
72
|
-
fullContentFallback = true;
|
|
73
|
-
continue;
|
|
74
|
-
}
|
|
75
|
-
const value = doc.toJS() as Record<string, unknown> | null;
|
|
76
|
-
if (!value || typeof value !== "object") continue;
|
|
77
|
-
const kind = value.kind;
|
|
78
|
-
|
|
79
|
-
if (asModuleKind(kind) && value.imports && typeof value.imports === "object") {
|
|
80
|
-
for (const entry of Object.values(value.imports as Record<string, unknown>)) {
|
|
81
|
-
const source = importSourceOf(entry);
|
|
82
|
-
if (source) importSources.add(source);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
if (kind === "Telo.Definition") {
|
|
87
|
-
const controllers = value.controllers;
|
|
88
|
-
if (Array.isArray(controllers)) {
|
|
89
|
-
for (const c of controllers) {
|
|
90
|
-
if (typeof c === "string") controllerLocators.add(c);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
// A bundle-local controller's source lives in the body; the PURL/path
|
|
94
|
-
// can't capture an edit to it, so force full-content keying.
|
|
95
|
-
if (typeof value.local_path === "string") fullContentFallback = true;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
return {
|
|
101
|
-
importSources: [...importSources].sort(),
|
|
102
|
-
controllerLocators: [...controllerLocators].sort(),
|
|
103
|
-
fullContentFallback,
|
|
104
|
-
};
|
|
105
|
-
}
|