@telorun/cli 0.60.0 → 0.62.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/README.md +11 -1
- package/dist/commands/check.d.ts +1 -0
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +136 -10
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +87 -14
- package/dist/commands/run.js.map +1 -1
- package/dist/logger.d.ts +12 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +92 -37
- package/dist/logger.js.map +1 -1
- package/dist/manifest-freshness.d.ts +120 -0
- package/dist/manifest-freshness.d.ts.map +1 -0
- package/dist/manifest-freshness.js +261 -0
- package/dist/manifest-freshness.js.map +1 -0
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -122,6 +122,15 @@ telo check https://example.com/manifest.yaml
|
|
|
122
122
|
|
|
123
123
|
Accepts local paths, directories containing a `telo.yaml`, or HTTP(S) URLs.
|
|
124
124
|
|
|
125
|
+
Imports resolve through the same `.telo/manifests/` cache `telo run` reads, and `check` writes through to it after a successful load (disable with `--no-cache-write`). Freshness depends on how the import addresses its target:
|
|
126
|
+
|
|
127
|
+
- **Pinned** (`…@1.2.3#sha256-…`, or an `@sha256:` reference) — verified against the hash on read, so a repeat check of a fully pinned manifest needs no network at all.
|
|
128
|
+
- **Mutable OCI tag** — revalidated with one `HEAD` per reference against the digest recorded in `.telo/manifests/.origins.json`. If the tag has moved, that entry is dropped and refetched.
|
|
129
|
+
- **Registry ref** (`<namespace>/<name>@<version>`) — served from cache without revalidation; a published version is immutable by convention.
|
|
130
|
+
- **HTTP(S) URL** — never read from the cache by `check`, since its key carries no version segment and a hit would be served indefinitely. Always re-fetched (one request, the same cost revalidating would have).
|
|
131
|
+
|
|
132
|
+
One loader serves every path in a single invocation, so `telo check a b c` resolves a module shared between them once.
|
|
133
|
+
|
|
125
134
|
**Example output:**
|
|
126
135
|
|
|
127
136
|
```
|
|
@@ -165,8 +174,9 @@ The cache lives next to the manifest at `<entry-manifest-dir>/.telo/`:
|
|
|
165
174
|
- `.telo/manifests/registry/<host>/<path…>/<version>/telo.yaml` — registry-served manifests.
|
|
166
175
|
- `.telo/manifests/oci/<host>/<repo…>/<tag>/telo.yaml` — manifests imported from an OCI registry.
|
|
167
176
|
- `.telo/manifests/url/<host>/<pathname>` — manifests imported via raw HTTP URLs.
|
|
177
|
+
- `.telo/manifests/.origins.json` — for each cached import named by a **mutable tag**, the OCI manifest digest that produced the copy. `telo check` revalidates against it with one `HEAD` per reference; a pinned import needs no entry, since its bytes are verified against the ref's own hash.
|
|
168
178
|
|
|
169
|
-
Every entry is keyed `<transport>/<host>/<path…>/<version>/<file>`, the same grammar the
|
|
179
|
+
Every manifest entry is keyed `<transport>/<host>/<path…>/<version>/<file>`, the same grammar the
|
|
170
180
|
discovery hub uses for its cached manifests.
|
|
171
181
|
|
|
172
182
|
Per-manifest scope means the whole `.telo/` tree is naturally portable: `COPY` the manifest dir into your image and both caches travel with it; no environment variable is required.
|
package/dist/commands/check.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAkOlC,wBAAsB,KAAK,CAAC,IAAI,EAAE;IAChC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0DhB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAoB9C"}
|
package/dist/commands/check.js
CHANGED
|
@@ -1,13 +1,42 @@
|
|
|
1
1
|
import { Loader, StaticAnalyzer, flattenForAnalyzer } from "@telorun/analyzer";
|
|
2
2
|
import { assembleGraphDiagnostics } from "@telorun/ide-support";
|
|
3
|
+
import { LocalManifestCacheSource, resolveCacheRoot, resolveEntryDir, writeManifestCache, } from "@telorun/kernel";
|
|
3
4
|
import { LocalFileSource } from "@telorun/kernel/manifest-sources/local-file-source";
|
|
4
5
|
import { defaultTransportRegistry } from "@telorun/kernel/transports";
|
|
6
|
+
import * as fs from "fs/promises";
|
|
5
7
|
import * as path from "path";
|
|
8
|
+
import { pathToFileURL } from "url";
|
|
6
9
|
import { createLogger, formatAnalysisDiagnostics, formatDiagnostics } from "../logger.js";
|
|
10
|
+
import { RecordingCacheSource, readOriginDigests, revalidateMutableOciRefs, writeOriginDigests, } from "../manifest-freshness.js";
|
|
7
11
|
const DEFAULT_REGISTRY_URL = "https://registry.telo.run";
|
|
8
|
-
|
|
12
|
+
function cacheTargetFor(entryPath) {
|
|
13
|
+
const cacheRoot = resolveCacheRoot(entryPath);
|
|
14
|
+
const entryDir = resolveEntryDir(entryPath);
|
|
15
|
+
if (!cacheRoot || entryDir === null)
|
|
16
|
+
return null;
|
|
17
|
+
return { entryDir, manifestsDir: path.join(cacheRoot, "manifests") };
|
|
18
|
+
}
|
|
19
|
+
function resolveEntryPath(inputPath) {
|
|
9
20
|
const isUrl = inputPath.startsWith("http://") || inputPath.startsWith("https://");
|
|
10
|
-
|
|
21
|
+
return isUrl ? inputPath : path.resolve(process.cwd(), inputPath);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* One loader for the whole invocation, ahead of the transports:
|
|
25
|
+
*
|
|
26
|
+
* - `LocalManifestCacheSource` makes a repeat check hermetic. Without it every
|
|
27
|
+
* `oci://` / registry import was re-pulled on every run even when fully
|
|
28
|
+
* pinned, which is the bulk of `check`'s wall time.
|
|
29
|
+
* - The loader is shared across *all* input paths, so `telo check a b c` reads
|
|
30
|
+
* a module common to several of them once. Its `urlToSource` / `fileCache`
|
|
31
|
+
* dedupe by canonical URL, so this is purely a cache-hit question — the
|
|
32
|
+
* resolution result for a given URL does not depend on which entry asked.
|
|
33
|
+
*
|
|
34
|
+
* A cache source is registered for every input path's cache root: the entries
|
|
35
|
+
* are content-addressed, so a hit under any root is as good as a hit under the
|
|
36
|
+
* one this path would write to, and a miss falls through unchanged.
|
|
37
|
+
*/
|
|
38
|
+
function openSession(cacheTargets, registryUrl) {
|
|
39
|
+
const recorders = cacheTargets.map((t) => new RecordingCacheSource(new LocalManifestCacheSource(t.entryDir, registryUrl, t.manifestsDir), registryUrl));
|
|
11
40
|
// The kernel's transport sources — the same set `install` / `run` use — so
|
|
12
41
|
// `check` resolves every scheme they do, `oci://` included, direct-to-origin.
|
|
13
42
|
// The browser-only `manifests.telo.sh` cache path stays the editor's; a CLI
|
|
@@ -15,14 +44,78 @@ async function checkOne(inputPath, registryUrl, log) {
|
|
|
15
44
|
// plan: resolution never routes through the hub).
|
|
16
45
|
const loader = new Loader([
|
|
17
46
|
new LocalFileSource(),
|
|
47
|
+
...recorders,
|
|
18
48
|
...defaultTransportRegistry(registryUrl).sources(),
|
|
19
49
|
]);
|
|
50
|
+
return {
|
|
51
|
+
loader,
|
|
52
|
+
recorders,
|
|
53
|
+
manifestsDirs: cacheTargets.map((t) => t.manifestsDir),
|
|
54
|
+
verified: new Map(),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Drop a stale cache entry: the file, the loader's memo of it, and the record
|
|
59
|
+
* that it was ever served. The next load re-resolves that one manifest through
|
|
60
|
+
* the transports and leaves every other file's memo intact.
|
|
61
|
+
*
|
|
62
|
+
* Removal failures are warned, not thrown. This is cache maintenance, and the
|
|
63
|
+
* rest of the command already treats caching as an optimization — a read-only
|
|
64
|
+
* or root-owned `.telo` must not change the exit code of a static check. An
|
|
65
|
+
* entry that could not be removed is still forgotten by the loader, so the
|
|
66
|
+
* reload re-fetches it rather than trusting bytes it just judged stale.
|
|
67
|
+
*/
|
|
68
|
+
async function dropStaleEntry(file, session, log) {
|
|
69
|
+
try {
|
|
70
|
+
await fs.rm(file, { force: true });
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
process.stderr.write(`${log.warn(`[manifest-cache] could not remove stale entry ${file}: ${err instanceof Error ? err.message : String(err)}`)}\n`);
|
|
74
|
+
}
|
|
75
|
+
session.loader.forget(pathToFileURL(file).href);
|
|
76
|
+
for (const recorder of session.recorders) {
|
|
77
|
+
for (const [url, served] of recorder.served) {
|
|
78
|
+
if (served === file)
|
|
79
|
+
recorder.served.delete(url);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
async function checkOne(inputPath, registryUrl, session, cacheTarget, cacheWrite,
|
|
84
|
+
/** Digests already verified by a prior pass. Present only on the retry after
|
|
85
|
+
* a stale entry was dropped: revalidating again would re-`HEAD` the same
|
|
86
|
+
* tags, and the freshly fetched bytes are current by construction. */
|
|
87
|
+
knownDigests, log) {
|
|
88
|
+
const entryPath = resolveEntryPath(inputPath);
|
|
89
|
+
const isUrl = entryPath.startsWith("http://") || entryPath.startsWith("https://");
|
|
20
90
|
try {
|
|
21
91
|
// `desugarImports` so inline `imports:` maps expand into synthetic
|
|
22
92
|
// Telo.Import manifests before analysis — `telo check` is a static
|
|
23
93
|
// resolution consumer and must see inline imports exactly as the kernel does.
|
|
24
|
-
const graph = await loader.loadGraph(entryPath, { desugarImports: true });
|
|
25
|
-
|
|
94
|
+
const graph = await session.loader.loadGraph(entryPath, { desugarImports: true });
|
|
95
|
+
// Freshness before analysis: a verdict computed from a moved tag would be
|
|
96
|
+
// reported as authoritative. Pinned imports make this a no-op.
|
|
97
|
+
let digests = knownDigests ?? new Map();
|
|
98
|
+
if (!knownDigests && session.recorders.length > 0) {
|
|
99
|
+
const served = new Map();
|
|
100
|
+
for (const recorder of session.recorders) {
|
|
101
|
+
for (const [url, file] of recorder.served)
|
|
102
|
+
served.set(url, file);
|
|
103
|
+
}
|
|
104
|
+
const originsByRoot = new Map();
|
|
105
|
+
for (const dir of session.manifestsDirs) {
|
|
106
|
+
originsByRoot.set(dir, await readOriginDigests(dir));
|
|
107
|
+
}
|
|
108
|
+
const freshness = await revalidateMutableOciRefs(graph, served, originsByRoot, registryUrl, session.verified);
|
|
109
|
+
if (freshness.staleFiles.length > 0) {
|
|
110
|
+
return {
|
|
111
|
+
errorCount: 0,
|
|
112
|
+
warnCount: 0,
|
|
113
|
+
staleFiles: freshness.staleFiles,
|
|
114
|
+
digests: freshness.digests,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
digests = freshness.digests;
|
|
118
|
+
}
|
|
26
119
|
// `assembleGraphDiagnostics` is the shared assembler every host uses: it
|
|
27
120
|
// folds parse, version-reconciliation, import-resolution, and static
|
|
28
121
|
// analysis diagnostics into one list, holding back the cascade for files
|
|
@@ -30,28 +123,61 @@ async function checkOne(inputPath, registryUrl, log) {
|
|
|
30
123
|
// `imports:` source thus surfaces here as a coded diagnostic — identical to
|
|
31
124
|
// the editor — instead of a bare re-thrown load error. The CLI drops the
|
|
32
125
|
// suppressed cascade; the editor / VS Code keep it available to render.
|
|
33
|
-
const analysis = new StaticAnalyzer().analyze(
|
|
126
|
+
const analysis = new StaticAnalyzer().analyze(flattenForAnalyzer(graph));
|
|
34
127
|
const { diagnostics } = assembleGraphDiagnostics(graph, analysis);
|
|
35
|
-
|
|
128
|
+
const counts = formatAnalysisDiagnostics(diagnostics, graph, log, entryPath);
|
|
129
|
+
if (cacheWrite && cacheTarget) {
|
|
130
|
+
// Write-through so the next check — and the next `telo run` from this
|
|
131
|
+
// directory, which reads the same cache — is hermetic. Caching is an
|
|
132
|
+
// optimization: a read-only filesystem warns rather than fails the check.
|
|
133
|
+
try {
|
|
134
|
+
await writeManifestCache(graph, cacheTarget.entryDir, registryUrl, cacheTarget.manifestsDir);
|
|
135
|
+
await writeOriginDigests(cacheTarget.manifestsDir, digests);
|
|
136
|
+
}
|
|
137
|
+
catch (err) {
|
|
138
|
+
process.stderr.write(`${log.warn(`[manifest-cache] write failed: ${err instanceof Error ? err.message : String(err)}`)}\n`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return { ...counts, staleFiles: [], digests };
|
|
36
142
|
}
|
|
37
143
|
catch (err) {
|
|
38
144
|
const sourceLine = err.sourceLine;
|
|
39
145
|
const displayPath = isUrl ? entryPath : path.relative(process.cwd(), entryPath);
|
|
40
146
|
const loc = sourceLine !== undefined ? `:${sourceLine + 1}` : "";
|
|
41
147
|
formatDiagnostics([{ message: err instanceof Error ? err.message : String(err) }], log, `${displayPath}${loc}`);
|
|
42
|
-
return { errorCount: 1, warnCount: 0 };
|
|
148
|
+
return { errorCount: 1, warnCount: 0, staleFiles: [], digests: new Map() };
|
|
43
149
|
}
|
|
44
150
|
}
|
|
45
151
|
export async function check(argv) {
|
|
46
152
|
const log = createLogger(false);
|
|
47
153
|
// Same fallback chain as `run` / `install`.
|
|
48
154
|
const registryUrl = argv.registryUrl ?? process.env.TELO_REGISTRY_URL ?? DEFAULT_REGISTRY_URL;
|
|
155
|
+
const cacheWrite = argv.cacheWrite !== false;
|
|
156
|
+
const cacheTargets = new Map();
|
|
157
|
+
for (const p of argv.paths) {
|
|
158
|
+
const target = cacheTargetFor(resolveEntryPath(p));
|
|
159
|
+
if (target)
|
|
160
|
+
cacheTargets.set(target.manifestsDir, target);
|
|
161
|
+
}
|
|
162
|
+
const session = openSession([...cacheTargets.values()], registryUrl);
|
|
49
163
|
let totalErrors = 0;
|
|
50
164
|
let totalWarns = 0;
|
|
51
165
|
for (const p of argv.paths) {
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
|
|
166
|
+
const cacheTarget = cacheTargetFor(resolveEntryPath(p));
|
|
167
|
+
let outcome = await checkOne(p, registryUrl, session, cacheTarget, cacheWrite, null, log);
|
|
168
|
+
if (outcome.staleFiles.length > 0) {
|
|
169
|
+
// A mutable tag moved under the cache. Drop just those entries — file,
|
|
170
|
+
// loader memo, and served record — so every other path's resolution
|
|
171
|
+
// survives, then re-check. Revalidation is off on the retry: the digests
|
|
172
|
+
// were established a moment ago, and the reload cannot be stale because
|
|
173
|
+
// the entries it would have used are gone.
|
|
174
|
+
for (const file of outcome.staleFiles) {
|
|
175
|
+
await dropStaleEntry(file, session, log);
|
|
176
|
+
}
|
|
177
|
+
outcome = await checkOne(p, registryUrl, session, cacheTarget, cacheWrite, outcome.digests, log);
|
|
178
|
+
}
|
|
179
|
+
totalErrors += outcome.errorCount;
|
|
180
|
+
totalWarns += outcome.warnCount;
|
|
55
181
|
}
|
|
56
182
|
if (totalErrors === 0 && totalWarns === 0) {
|
|
57
183
|
console.log(log.ok("✓") + " No issues found");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,oDAAoD,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAyKlC,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,6EAA6E;IAC7E,KAAK,EAAE,OAAO,CAAC;IACf;gFAC4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,IAAI,EAAE,OAAO,CAAC;IACd,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,kFAAkF;IAClF,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAqRF,wBAAsB,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAqEtD;AAwGD,wBAAgB,UAAU,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAoE5C"}
|
package/dist/commands/run.js
CHANGED
|
@@ -82,14 +82,41 @@ function createWatcherSet(log, onChange) {
|
|
|
82
82
|
const watchers = new Map();
|
|
83
83
|
const debounceTimers = new Map();
|
|
84
84
|
let active = true;
|
|
85
|
+
function inodeOf(fsPath) {
|
|
86
|
+
try {
|
|
87
|
+
return fs.statSync(fsPath, { bigint: true }).ino;
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/** An editor's atomic save (write a temp file, then rename it over the path)
|
|
94
|
+
* puts a NEW inode behind the path. The watcher stays bound to the replaced
|
|
95
|
+
* one, so it never fires again — and emits no `error`, so the handler below
|
|
96
|
+
* never runs and `sync` skips the path as already watched. The event we are
|
|
97
|
+
* handling is that watcher's last gasp, so rebind on it. Keyed on the inode
|
|
98
|
+
* rather than on a `rename` event type, which bun does not deliver. */
|
|
99
|
+
function rebindIfReplaced(fsPath) {
|
|
100
|
+
const entry = watchers.get(fsPath);
|
|
101
|
+
if (!entry)
|
|
102
|
+
return;
|
|
103
|
+
const inode = inodeOf(fsPath);
|
|
104
|
+
if (inode === null || inode === entry.inode)
|
|
105
|
+
return;
|
|
106
|
+
entry.watcher.close();
|
|
107
|
+
watchers.delete(fsPath);
|
|
108
|
+
watchFile(fsPath);
|
|
109
|
+
}
|
|
85
110
|
function watchFile(fsPath) {
|
|
86
111
|
if (!active || watchers.has(fsPath))
|
|
87
112
|
return;
|
|
113
|
+
const inode = inodeOf(fsPath);
|
|
88
114
|
let watcher;
|
|
89
115
|
try {
|
|
90
116
|
watcher = fs.watch(fsPath, () => {
|
|
91
117
|
if (!active)
|
|
92
118
|
return;
|
|
119
|
+
rebindIfReplaced(fsPath);
|
|
93
120
|
const existing = debounceTimers.get(fsPath);
|
|
94
121
|
if (existing)
|
|
95
122
|
clearTimeout(existing);
|
|
@@ -107,7 +134,7 @@ function createWatcherSet(log, onChange) {
|
|
|
107
134
|
}
|
|
108
135
|
watcher.on("error", () => {
|
|
109
136
|
// OS invalidated the watch (e.g. file deleted). Remove and re-establish.
|
|
110
|
-
if (watchers.get(fsPath) === watcher) {
|
|
137
|
+
if (watchers.get(fsPath)?.watcher === watcher) {
|
|
111
138
|
watchers.delete(fsPath);
|
|
112
139
|
setTimeout(() => {
|
|
113
140
|
if (active)
|
|
@@ -115,7 +142,7 @@ function createWatcherSet(log, onChange) {
|
|
|
115
142
|
}, 50);
|
|
116
143
|
}
|
|
117
144
|
});
|
|
118
|
-
watchers.set(fsPath, watcher);
|
|
145
|
+
watchers.set(fsPath, { watcher, inode });
|
|
119
146
|
}
|
|
120
147
|
return {
|
|
121
148
|
sync(files) {
|
|
@@ -128,8 +155,8 @@ function createWatcherSet(log, onChange) {
|
|
|
128
155
|
for (const t of debounceTimers.values())
|
|
129
156
|
clearTimeout(t);
|
|
130
157
|
debounceTimers.clear();
|
|
131
|
-
for (const
|
|
132
|
-
|
|
158
|
+
for (const { watcher } of watchers.values())
|
|
159
|
+
watcher.close();
|
|
133
160
|
watchers.clear();
|
|
134
161
|
},
|
|
135
162
|
};
|
|
@@ -318,9 +345,32 @@ async function persistManifestCache(argv, kernel, log, cacheRoot) {
|
|
|
318
345
|
process.stderr.write(`${log.warn(`[manifest-cache] write failed: ${err instanceof Error ? err.message : String(err)}`)}\n`);
|
|
319
346
|
}
|
|
320
347
|
}
|
|
348
|
+
/** Count the errors a reader actually has to act on: entries the kernel marked
|
|
349
|
+
* `derived` are shadows of another failure, and an entry that only wraps a
|
|
350
|
+
* nested context (an import) counts as whatever failed inside it. Never
|
|
351
|
+
* reports zero for a real failure — a wrapper whose children are all derived
|
|
352
|
+
* still counts as one. */
|
|
353
|
+
function countRootErrors(diagnostics) {
|
|
354
|
+
let count = 0;
|
|
355
|
+
for (const d of diagnostics) {
|
|
356
|
+
if (d.severity === "warning")
|
|
357
|
+
continue;
|
|
358
|
+
const fromChildren = d.children?.length ? countRootErrors(d.children) : 0;
|
|
359
|
+
// A collapsed entry contributes nothing itself, but a nested context it
|
|
360
|
+
// wraps still carries its own root causes.
|
|
361
|
+
if (d.derived)
|
|
362
|
+
count += fromChildren;
|
|
363
|
+
else
|
|
364
|
+
count += fromChildren || 1;
|
|
365
|
+
}
|
|
366
|
+
return count;
|
|
367
|
+
}
|
|
321
368
|
/** Format an error as diagnostics on the terminal. Returns the non-warning
|
|
322
|
-
* count so the single-shot path can pick an exit code while watch keeps going.
|
|
323
|
-
|
|
369
|
+
* count so the single-shot path can pick an exit code while watch keeps going.
|
|
370
|
+
* The kernel's loaded graph is what turns a static failure's `origin` into a
|
|
371
|
+
* `file:line:col` — it is present for every failure raised after the graph
|
|
372
|
+
* loaded, which is every static one. */
|
|
373
|
+
function reportError(argv, error, log, kernel) {
|
|
324
374
|
const isUrl = argv.path.startsWith("http://") || argv.path.startsWith("https://");
|
|
325
375
|
const displayPath = isUrl
|
|
326
376
|
? argv.path
|
|
@@ -334,8 +384,8 @@ function reportError(argv, error, log) {
|
|
|
334
384
|
code: error?.code,
|
|
335
385
|
},
|
|
336
386
|
];
|
|
337
|
-
formatDiagnostics(diags, log, displayPath);
|
|
338
|
-
const errorCount = diags
|
|
387
|
+
formatDiagnostics(diags, log, displayPath, kernel?.getLoadedGraph());
|
|
388
|
+
const errorCount = countRootErrors(diags);
|
|
339
389
|
const warnCount = diags.filter((d) => d.severity === "warning").length;
|
|
340
390
|
const parts = [];
|
|
341
391
|
if (errorCount > 0)
|
|
@@ -356,8 +406,12 @@ export async function run(argv) {
|
|
|
356
406
|
const debug = argv.debug || argv.inspect !== undefined
|
|
357
407
|
? await startDebugSession(argv, log, cacheRoot)
|
|
358
408
|
: undefined;
|
|
409
|
+
// Held outside the try so the catch can reach the loaded graph a static
|
|
410
|
+
// failure's location resolves against.
|
|
411
|
+
let bootedKernel;
|
|
359
412
|
try {
|
|
360
413
|
const kernel = await buildKernel(argv, log, cacheRoot);
|
|
414
|
+
bootedKernel = kernel;
|
|
361
415
|
debug?.attach(kernel);
|
|
362
416
|
const shutdown = () => {
|
|
363
417
|
// Cooperatively cancel the boot run first (so honoring targets / in-flight
|
|
@@ -404,7 +458,7 @@ export async function run(argv) {
|
|
|
404
458
|
}
|
|
405
459
|
catch (error) {
|
|
406
460
|
debug?.stop();
|
|
407
|
-
reportError(argv, error, log);
|
|
461
|
+
reportError(argv, error, log, bootedKernel);
|
|
408
462
|
process.exit(1);
|
|
409
463
|
}
|
|
410
464
|
}
|
|
@@ -427,10 +481,20 @@ async function runWatch(argv, log) {
|
|
|
427
481
|
let stopping = false;
|
|
428
482
|
let signalChange = null;
|
|
429
483
|
let currentKernel = null;
|
|
484
|
+
/** A change that arrived while no cycle was waiting on a gate — teardown and
|
|
485
|
+
* the next load take seconds, and resolving an already-settled promise is a
|
|
486
|
+
* no-op, so the edit would be lost. The next cycle consumes it instead. */
|
|
487
|
+
let pendingChange = false;
|
|
430
488
|
// One watcher set for the whole session — see createWatcherSet. A change
|
|
431
489
|
// resolves the current cycle's `changed` gate; cycles re-read `signalChange`
|
|
432
490
|
// so the same watcher drives every reload.
|
|
433
|
-
const
|
|
491
|
+
const notifyChange = () => {
|
|
492
|
+
if (signalChange)
|
|
493
|
+
signalChange();
|
|
494
|
+
else
|
|
495
|
+
pendingChange = true;
|
|
496
|
+
};
|
|
497
|
+
const watchers = createWatcherSet(log, notifyChange);
|
|
434
498
|
const requestStop = () => {
|
|
435
499
|
stopping = true;
|
|
436
500
|
log.info("\n[watch] stopping...");
|
|
@@ -438,7 +502,7 @@ async function runWatch(argv, log) {
|
|
|
438
502
|
debug?.stop(currentKernel ?? undefined);
|
|
439
503
|
currentKernel?.cancel("interrupted");
|
|
440
504
|
currentKernel?.forceIdle();
|
|
441
|
-
|
|
505
|
+
notifyChange();
|
|
442
506
|
};
|
|
443
507
|
process.once("SIGINT", requestStop);
|
|
444
508
|
process.once("SIGTERM", requestStop);
|
|
@@ -454,8 +518,17 @@ async function runWatch(argv, log) {
|
|
|
454
518
|
// overrides every hold (including a server's own) when we want to reload.
|
|
455
519
|
kernel.acquireHold("watch-mode");
|
|
456
520
|
const changed = new Promise((resolve) => {
|
|
457
|
-
|
|
521
|
+
// Clearing the slot on resolve is what routes a later change into
|
|
522
|
+
// `pendingChange` instead of onto this already-settled gate.
|
|
523
|
+
signalChange = () => {
|
|
524
|
+
signalChange = null;
|
|
525
|
+
resolve();
|
|
526
|
+
};
|
|
458
527
|
});
|
|
528
|
+
if (pendingChange) {
|
|
529
|
+
pendingChange = false;
|
|
530
|
+
notifyChange();
|
|
531
|
+
}
|
|
459
532
|
try {
|
|
460
533
|
await kernel.load(argv.path, {
|
|
461
534
|
cacheDir: cacheRoot,
|
|
@@ -468,7 +541,7 @@ async function runWatch(argv, log) {
|
|
|
468
541
|
// start() resolves on its own only on boot error or one-shot completion
|
|
469
542
|
// without a hold; the hold keeps long-running and completed apps alive,
|
|
470
543
|
// so the cycle advances on a file change. Errors are reported, not thrown.
|
|
471
|
-
const startPromise = kernel.start().catch((err) => reportError(argv, err, log));
|
|
544
|
+
const startPromise = kernel.start().catch((err) => reportError(argv, err, log, kernel));
|
|
472
545
|
await changed;
|
|
473
546
|
kernel.cancel("reload");
|
|
474
547
|
kernel.forceIdle();
|
|
@@ -476,7 +549,7 @@ async function runWatch(argv, log) {
|
|
|
476
549
|
}
|
|
477
550
|
catch (error) {
|
|
478
551
|
// Load failed before start(); report and wait for an edit before retrying.
|
|
479
|
-
reportError(argv, error, log);
|
|
552
|
+
reportError(argv, error, log, kernel);
|
|
480
553
|
await kernel.teardown();
|
|
481
554
|
await changed;
|
|
482
555
|
}
|
package/dist/commands/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
package/dist/logger.d.ts
CHANGED
|
@@ -9,7 +9,18 @@ export declare function createLogger(verbose: boolean): {
|
|
|
9
9
|
verbose: boolean;
|
|
10
10
|
};
|
|
11
11
|
export type Logger = ReturnType<typeof createLogger>;
|
|
12
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Render runtime diagnostics. Entries the kernel classified as `derived` (they
|
|
14
|
+
* failed only because a dependency did) collapse into one line per blocked
|
|
15
|
+
* chain — a ten-resource chain is one real error and nine shadows of it, and
|
|
16
|
+
* printing them flat buries the only line a reader can act on. `--verbose`
|
|
17
|
+
* prints every entry in full.
|
|
18
|
+
*
|
|
19
|
+
* An entry the kernel raised from static analysis carries `origin`; given the
|
|
20
|
+
* loaded graph it renders with the same `file:line:col` prefix `telo check`
|
|
21
|
+
* prints, so a manifest error points at its line whichever command surfaced it.
|
|
22
|
+
*/
|
|
23
|
+
export declare function formatDiagnostics(diagnostics: RuntimeDiagnostic[], log: Logger, displayPath: string, graph?: LoadedGraph): void;
|
|
13
24
|
/** Format analysis diagnostics with file:line:col locations resolved via
|
|
14
25
|
* the canonical `LoadedGraph` — no need to thread positionIndex through
|
|
15
26
|
* manifest metadata. */
|
package/dist/logger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGzE,OAAO,
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGzE,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;AAyCzB,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO;oBAezB,GAAG,EAAE;eACV,MAAM;iBACJ,MAAM;kBACL,MAAM;gBACR,MAAM;;EAGrB;AAED,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AAErD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,iBAAiB,EAAE,EAChC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,WAAW,GAClB,IAAI,CAmEN;AAED;;yBAEyB;AACzB,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,kBAAkB,EAAE,EACjC,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAChB;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAqB3C"}
|
package/dist/logger.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DiagnosticSeverity } from "@telorun/analyzer";
|
|
2
|
-
import { findPositions } from "@telorun/ide-support";
|
|
3
|
-
import { decideColor } from "@telorun/kernel";
|
|
2
|
+
import { findPositions, resolveRange } from "@telorun/ide-support";
|
|
3
|
+
import { decideColor, describeBlockedGroup, groupBlockedResources, } from "@telorun/kernel";
|
|
4
4
|
import * as path from "path";
|
|
5
5
|
import { fileURLToPath } from "url";
|
|
6
6
|
/** Render a manifest source for display: a local `file://` URL (how the loader
|
|
@@ -14,6 +14,28 @@ function displaySourcePath(raw) {
|
|
|
14
14
|
return raw;
|
|
15
15
|
return path.relative(process.cwd(), raw);
|
|
16
16
|
}
|
|
17
|
+
/** Resolve a diagnostic's manifest site to `file:line:col`. `d` is an analyzer
|
|
18
|
+
* diagnostic, or a `RuntimeDiagnostic.origin` rebuilt into one — the position
|
|
19
|
+
* itself comes from `resolveRange`, the rule the VS Code extension already
|
|
20
|
+
* uses, so `run`, `check` and the editor agree on where an error is instead of
|
|
21
|
+
* each carrying their own copy. That rule does more than a direct field-path
|
|
22
|
+
* lookup: it walks parent paths when the leaf is absent from the index (a
|
|
23
|
+
* `imports.Foo.source` failure lands on `imports.Foo`) and prefers the entry's
|
|
24
|
+
* key over its value.
|
|
25
|
+
*
|
|
26
|
+
* Undefined when nothing located it — a diagnostic whose resource is synthetic
|
|
27
|
+
* and whose file matches no graph source. A pointer to line 1 would be worse
|
|
28
|
+
* than none: it sends the reader somewhere the error is not. */
|
|
29
|
+
function resolveLocation(graph, d, fallbackSource) {
|
|
30
|
+
const located = findPositions(graph, d.data);
|
|
31
|
+
if (!located && !d.range)
|
|
32
|
+
return undefined;
|
|
33
|
+
const range = resolveRange(d, {
|
|
34
|
+
positionIndex: located?.positionIndex,
|
|
35
|
+
sourceLine: located?.sourceLine,
|
|
36
|
+
});
|
|
37
|
+
return `${displaySourcePath(located?.file ?? fallbackSource)}:${range.start.line + 1}:${range.start.character + 1}`;
|
|
38
|
+
}
|
|
17
39
|
export function createLogger(verbose) {
|
|
18
40
|
// The color decision follows `kernel/specs/logging.md` §11.2's precedence
|
|
19
41
|
// order exactly, shared with the `pretty` log encoding rather than
|
|
@@ -37,33 +59,76 @@ export function createLogger(verbose) {
|
|
|
37
59
|
verbose,
|
|
38
60
|
};
|
|
39
61
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
62
|
+
/**
|
|
63
|
+
* Render runtime diagnostics. Entries the kernel classified as `derived` (they
|
|
64
|
+
* failed only because a dependency did) collapse into one line per blocked
|
|
65
|
+
* chain — a ten-resource chain is one real error and nine shadows of it, and
|
|
66
|
+
* printing them flat buries the only line a reader can act on. `--verbose`
|
|
67
|
+
* prints every entry in full.
|
|
68
|
+
*
|
|
69
|
+
* An entry the kernel raised from static analysis carries `origin`; given the
|
|
70
|
+
* loaded graph it renders with the same `file:line:col` prefix `telo check`
|
|
71
|
+
* prints, so a manifest error points at its line whichever command surfaced it.
|
|
72
|
+
*/
|
|
73
|
+
export function formatDiagnostics(diagnostics, log, displayPath, graph) {
|
|
74
|
+
// Column the `error`/`warning` label occupies, so a collapsed group line sits
|
|
75
|
+
// under the resource names it summarizes rather than under the label.
|
|
76
|
+
const NAME_COLUMN = " ".repeat(" error ".length);
|
|
77
|
+
const render = (entries, indent) => {
|
|
78
|
+
for (const d of entries) {
|
|
79
|
+
const skip = d.derived && !log.verbose;
|
|
80
|
+
if (!skip) {
|
|
81
|
+
const severityLabel = d.severity === "warning" ? log.warn("warning") : log.error("error");
|
|
82
|
+
const code = d.code ? ` ${log.dim(d.code)}` : "";
|
|
83
|
+
// A static failure that nothing could locate falls through to the
|
|
84
|
+
// resource / bare-path branches below, which at least name what failed.
|
|
85
|
+
const location = d.origin && graph
|
|
86
|
+
? resolveLocation(graph, { message: d.message, range: d.origin.range, data: d.origin }, displayPath)
|
|
87
|
+
: undefined;
|
|
88
|
+
// Details sit under the message; how far under depends on which branch
|
|
89
|
+
// printed it, so the branch picks the indent and the printing is one place.
|
|
90
|
+
const printDetails = (detailIndent) => {
|
|
91
|
+
if (!d.details)
|
|
92
|
+
return;
|
|
93
|
+
for (const line of d.details.split("\n")) {
|
|
94
|
+
console.error(`${detailIndent}${log.dim(line)}`);
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
if (location) {
|
|
98
|
+
// Static-analysis failure — the position names the exact spot, so it
|
|
99
|
+
// renders exactly as `telo check` does. Repeating the resource here
|
|
100
|
+
// would duplicate it: an analyzer message already names its own.
|
|
101
|
+
console.error(`${indent}${location} ${severityLabel} ${d.message}${code}`);
|
|
102
|
+
printDetails(`${indent} `);
|
|
103
|
+
}
|
|
104
|
+
else if (d.resource) {
|
|
105
|
+
// Runtime diagnostic — the failure is pinned to a resource, so the
|
|
106
|
+
// entry manifest path adds no information. Show kind + name + message
|
|
107
|
+
// and any structured details indented below.
|
|
108
|
+
const who = `${d.kind ? `${log.dim(d.kind)} ` : ""}${d.resource}`;
|
|
109
|
+
console.error(`${indent} ${severityLabel} ${who}: ${d.message}${code}`);
|
|
110
|
+
printDetails(`${indent}${NAME_COLUMN} `);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
// Non-resource diagnostic (e.g. loader/parse failure) — keep the file
|
|
114
|
+
// path since it is the only location cue we have.
|
|
115
|
+
console.error(`${indent}${displayPath} ${severityLabel} ${d.message}${code}`);
|
|
116
|
+
printDetails(`${indent} `);
|
|
53
117
|
}
|
|
54
118
|
}
|
|
119
|
+
// A nested context's failures (an import initializing its library) render
|
|
120
|
+
// one level in — for a collapsed parent too, since a child context's root
|
|
121
|
+
// causes are not shadows of THIS context's failure.
|
|
122
|
+
if (d.children?.length)
|
|
123
|
+
render(d.children, `${indent} `);
|
|
55
124
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
console.error(`${displayPath} ${severityLabel} ${d.message}${code}`);
|
|
60
|
-
if (d.details) {
|
|
61
|
-
for (const line of d.details.split("\n")) {
|
|
62
|
-
console.error(` ${log.dim(line)}`);
|
|
63
|
-
}
|
|
125
|
+
if (!log.verbose) {
|
|
126
|
+
for (const [blockedBy, names] of groupBlockedResources(entries)) {
|
|
127
|
+
console.error(`${indent}${NAME_COLUMN}${log.dim(describeBlockedGroup(blockedBy, names))}`);
|
|
64
128
|
}
|
|
65
129
|
}
|
|
66
|
-
}
|
|
130
|
+
};
|
|
131
|
+
render(diagnostics, "");
|
|
67
132
|
}
|
|
68
133
|
/** Format analysis diagnostics with file:line:col locations resolved via
|
|
69
134
|
* the canonical `LoadedGraph` — no need to thread positionIndex through
|
|
@@ -72,19 +137,9 @@ export function formatAnalysisDiagnostics(diagnostics, graph, log, entryPath) {
|
|
|
72
137
|
let errorCount = 0;
|
|
73
138
|
let warnCount = 0;
|
|
74
139
|
for (const d of diagnostics) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
const
|
|
78
|
-
const fieldPath = d.data?.path;
|
|
79
|
-
const fieldRange = fieldPath !== undefined && located?.positionIndex
|
|
80
|
-
? located.positionIndex.get(fieldPath)
|
|
81
|
-
: undefined;
|
|
82
|
-
// Prefer a field-path position, then the diagnostic's own range (parse
|
|
83
|
-
// errors carry one), then the doc's source line.
|
|
84
|
-
const start = fieldRange?.start ?? d.range?.start;
|
|
85
|
-
const line = (start?.line ?? located?.sourceLine ?? 0) + 1;
|
|
86
|
-
const col = (start?.character ?? 0) + 1;
|
|
87
|
-
const loc = `${displaySource}:${line}:${col}`;
|
|
140
|
+
// `check` prints one line per diagnostic and has no resource-named form to
|
|
141
|
+
// fall back to, so an unlocatable one still leads with the entry manifest.
|
|
142
|
+
const loc = resolveLocation(graph, d, entryPath) ?? `${displaySourcePath(entryPath)}:1:1`;
|
|
88
143
|
const severityLabel = (d.severity ?? DiagnosticSeverity.Warning) <= DiagnosticSeverity.Error
|
|
89
144
|
? log.error("error")
|
|
90
145
|
: log.warn("warning");
|
package/dist/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,qBAAqB,GAEtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC;;6EAE6E;AAC7E,SAAS,iBAAiB,CAAC,GAAW;IACpC,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;iEAWiE;AACjE,SAAS,eAAe,CACtB,KAAkB,EAClB,CAAqB,EACrB,cAAsB;IAEtB,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC3C,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,EAAE;QAC5B,aAAa,EAAE,OAAO,EAAE,aAAa;QACrC,UAAU,EAAE,OAAO,EAAE,UAAU;KAChC,CAAC,CAAC;IACH,OAAO,GAAG,iBAAiB,CAAC,OAAO,EAAE,IAAI,IAAI,cAAc,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;AACtH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,0EAA0E;IAC1E,mEAAmE;IACnE,0EAA0E;IAC1E,0EAA0E;IAC1E,oDAAoD;IACpD,EAAE;IACF,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,WAAW,CAAC;QAC3B,OAAO,EAAE,MAAM;QACf,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;KACrC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,IAAY,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/F,OAAO;QACL,IAAI,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAC9C,EAAE,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;QACtC,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;QACxC,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;QACzC,GAAG,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;QACtC,OAAO;KACR,CAAC;AACJ,CAAC;AAID;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAC/B,WAAgC,EAChC,GAAW,EACX,WAAmB,EACnB,KAAmB;IAEnB,8EAA8E;IAC9E,sEAAsE;IACtE,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAEnD,MAAM,MAAM,GAAG,CAAC,OAA4B,EAAE,MAAc,EAAQ,EAAE;QACpE,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACvC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,aAAa,GAAG,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC1F,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAElD,kEAAkE;gBAClE,wEAAwE;gBACxE,MAAM,QAAQ,GACZ,CAAC,CAAC,MAAM,IAAI,KAAK;oBACf,CAAC,CAAC,eAAe,CACb,KAAK,EACL,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAC7D,WAAW,CACZ;oBACH,CAAC,CAAC,SAAS,CAAC;gBAEhB,uEAAuE;gBACvE,4EAA4E;gBAC5E,MAAM,YAAY,GAAG,CAAC,YAAoB,EAAQ,EAAE;oBAClD,IAAI,CAAC,CAAC,CAAC,OAAO;wBAAE,OAAO;oBACvB,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;wBACzC,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACnD,CAAC;gBACH,CAAC,CAAC;gBAEF,IAAI,QAAQ,EAAE,CAAC;oBACb,qEAAqE;oBACrE,oEAAoE;oBACpE,iEAAiE;oBACjE,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,QAAQ,KAAK,aAAa,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC;oBAC7E,YAAY,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC;gBAC9B,CAAC;qBAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;oBACtB,mEAAmE;oBACnE,sEAAsE;oBACtE,6CAA6C;oBAC7C,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;oBAClE,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,KAAK,aAAa,KAAK,GAAG,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC;oBAC1E,YAAY,CAAC,GAAG,MAAM,GAAG,WAAW,IAAI,CAAC,CAAC;gBAC5C,CAAC;qBAAM,CAAC;oBACN,sEAAsE;oBACtE,kDAAkD;oBAClD,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,WAAW,KAAK,aAAa,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC;oBAChF,YAAY,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;YAED,0EAA0E;YAC1E,0EAA0E;YAC1E,oDAAoD;YACpD,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM;gBAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACjB,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChE,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,WAAW,GAAG,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7F,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED;;yBAEyB;AACzB,MAAM,UAAU,yBAAyB,CACvC,WAAiC,EACjC,KAAkB,EAClB,GAAW,EACX,SAAiB;IAEjB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,2EAA2E;QAC3E,2EAA2E;QAC3E,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,GAAG,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC;QAC1F,MAAM,aAAa,GACjB,CAAC,CAAC,CAAC,QAAQ,IAAI,kBAAkB,CAAC,OAAO,CAAC,IAAI,kBAAkB,CAAC,KAAK;YACpE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;YACpB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAE1D,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,KAAK,aAAa,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC;QAE7D,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,kBAAkB,CAAC,OAAO,CAAC,IAAI,kBAAkB,CAAC,KAAK;YAAE,UAAU,EAAE,CAAC;;YACpF,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { type LoadedGraph, type ManifestSource } from "@telorun/analyzer";
|
|
2
|
+
import type { LocalManifestCacheSource } from "@telorun/kernel";
|
|
3
|
+
/**
|
|
4
|
+
* True when `ref` names an OCI artifact by a **tag** rather than by content —
|
|
5
|
+
* the only case a cached manifest can silently go stale.
|
|
6
|
+
*
|
|
7
|
+
* A `sha256:` *reference* addresses the OCI manifest directly and is immutable.
|
|
8
|
+
* A tag the publisher can repoint is not, unless something else verifies the
|
|
9
|
+
* bytes — which is what {@link isPinnedOciRef} covers separately, because the
|
|
10
|
+
* pin does not survive into a resolved graph.
|
|
11
|
+
*/
|
|
12
|
+
export declare function isOciTagRef(ref: string): boolean;
|
|
13
|
+
/** True when `ref` carries Telo's inline `#sha256-…` pin, which the cache source
|
|
14
|
+
* and the OCI transport both verify the manifest bytes against on every read.
|
|
15
|
+
* A moved tag therefore cannot be served undetected, so no `HEAD` is needed.
|
|
16
|
+
*
|
|
17
|
+
* This must be asked of the ref **as authored**: `OciTransport` strips the
|
|
18
|
+
* fragment when it builds a module's canonical source, so a network-resolved
|
|
19
|
+
* graph no longer remembers that the import was pinned. */
|
|
20
|
+
export declare function isPinnedOciRef(ref: string): boolean;
|
|
21
|
+
/** Identity under which a mutable ref's origin digest is recorded:
|
|
22
|
+
* `host/repo@tag`, independent of scheme spelling. */
|
|
23
|
+
export declare function originKey(ref: string): string;
|
|
24
|
+
/**
|
|
25
|
+
* Whether a cached manifest for `ref` may be served to `check` at all.
|
|
26
|
+
*
|
|
27
|
+
* The cache maps three key shapes, and only two of them address content that
|
|
28
|
+
* cannot change under the key:
|
|
29
|
+
*
|
|
30
|
+
* - `oci` — the reference is either a `sha256:` digest or a tag. A tag is
|
|
31
|
+
* mutable, which is what {@link revalidateMutableOciRefs} exists to catch,
|
|
32
|
+
* so both are cacheable and freshness is settled separately.
|
|
33
|
+
* - `registry` — `<path>@<version>`, always version-segmented. A published
|
|
34
|
+
* version is immutable by convention, the same assumption npm makes, so
|
|
35
|
+
* these are served without revalidation. This is a deliberate policy call,
|
|
36
|
+
* not a gap: the registry origin has no cheap freshness probe (`digest()`
|
|
37
|
+
* downloads the manifest to hash it), so revalidating would cost exactly
|
|
38
|
+
* what re-fetching costs and buy nothing.
|
|
39
|
+
* - `url` — an arbitrary HTTP(S) import. Its key carries **no version
|
|
40
|
+
* segment**: one URL is one path forever, so a cached copy would be served
|
|
41
|
+
* for the lifetime of the directory no matter what the server now returns.
|
|
42
|
+
* `check` therefore never reads these from the cache and always re-fetches.
|
|
43
|
+
* That costs one request — exactly what revalidating would cost, since
|
|
44
|
+
* `RegistryTransport.digest` is a full GET — so the honest option is also
|
|
45
|
+
* the cheap one. `telo run` keeps caching them; changing that is a separate
|
|
46
|
+
* decision about `run`'s freshness model, not a property of this pass.
|
|
47
|
+
*/
|
|
48
|
+
export declare function isCacheableForCheck(ref: string, registryUrl: string): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Wraps a manifest source and records which request URLs it actually served,
|
|
51
|
+
* and from which file on disk.
|
|
52
|
+
*
|
|
53
|
+
* The freshness pass needs both halves, and neither survives into the loaded
|
|
54
|
+
* graph: once the cache serves a manifest the graph's canonical source is a
|
|
55
|
+
* `file://` URL, so the `oci://` ref that asked for it is gone. Recording at
|
|
56
|
+
* the source is also what makes a *relative* import inside an OCI module work
|
|
57
|
+
* here — the loader resolves it to an absolute `oci://` ref before `read()`,
|
|
58
|
+
* so this map holds the absolute ref even though no manifest ever spelled it.
|
|
59
|
+
*/
|
|
60
|
+
export declare class RecordingCacheSource implements ManifestSource {
|
|
61
|
+
private readonly inner;
|
|
62
|
+
private readonly registryUrl;
|
|
63
|
+
/** Request URL → absolute path of the cache file that answered it. */
|
|
64
|
+
readonly served: Map<string, string>;
|
|
65
|
+
constructor(inner: LocalManifestCacheSource, registryUrl: string);
|
|
66
|
+
supports(url: string): boolean;
|
|
67
|
+
read(url: string): Promise<{
|
|
68
|
+
text: string;
|
|
69
|
+
source: string;
|
|
70
|
+
}>;
|
|
71
|
+
resolveRelative(base: string, relative: string): string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Read the recorded origin digests for one cache root.
|
|
75
|
+
*
|
|
76
|
+
* A missing, unreadable, or version-mismatched record yields an empty map,
|
|
77
|
+
* which makes every cached mutable ref count as *unverified* and therefore
|
|
78
|
+
* stale. That is the conservative direction — the failure mode is one extra
|
|
79
|
+
* fetch, never serving a manifest whose tag has moved. It is a cache miss in
|
|
80
|
+
* the same sense `LocalManifestCacheSource` treats a failed `stat`, not a
|
|
81
|
+
* suppressed error.
|
|
82
|
+
*/
|
|
83
|
+
export declare function readOriginDigests(manifestsDir: string): Promise<Map<string, string>>;
|
|
84
|
+
/** Persist origin digests, merging over whatever the record already held so a
|
|
85
|
+
* check of one entry never drops another's. */
|
|
86
|
+
export declare function writeOriginDigests(manifestsDir: string, digests: Map<string, string>): Promise<void>;
|
|
87
|
+
export interface FreshnessResult {
|
|
88
|
+
/** Cache files whose tag has moved (or was never verified) since they were
|
|
89
|
+
* written. Deleting these and reloading is what makes the check honest. */
|
|
90
|
+
staleFiles: string[];
|
|
91
|
+
/** Current digest per origin key, to record once the load is trusted. */
|
|
92
|
+
digests: Map<string, string>;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Revalidate every **mutable** OCI ref this graph resolved, with one `HEAD` per
|
|
96
|
+
* repository reference.
|
|
97
|
+
*
|
|
98
|
+
* `check` is the correctness command, so it must not report a clean bill of
|
|
99
|
+
* health against a manifest whose tag has since moved. But re-pulling every
|
|
100
|
+
* import to find that out is what made it slow, and a pinned ref — which is
|
|
101
|
+
* what `telo install` writes and what every published manifest carries — needs
|
|
102
|
+
* no network at all: its bytes are verified against the inline hash. So the
|
|
103
|
+
* cost falls only on unpinned tags, and only one round trip each, against the
|
|
104
|
+
* four a full re-pull would take.
|
|
105
|
+
*
|
|
106
|
+
* A ref fetched over the network during this load is fresh by construction and
|
|
107
|
+
* is only recorded, never revalidated.
|
|
108
|
+
*/
|
|
109
|
+
export declare function revalidateMutableOciRefs(graph: LoadedGraph, served: Map<string, string>,
|
|
110
|
+
/** Recorded origin digests per cache root (keyed by its `manifests` dir). A
|
|
111
|
+
* cached manifest is judged against the record of the root it was served
|
|
112
|
+
* from, which is not necessarily the root this entry writes to: one loader
|
|
113
|
+
* serves every input path, so a hit may land in a sibling's cache. */
|
|
114
|
+
originsByRoot: Map<string, Map<string, string>>, registryUrl: string,
|
|
115
|
+
/** Digests already probed earlier in this invocation, keyed as {@link originKey}.
|
|
116
|
+
* A tag verified once in a process is verified for the whole run, so checking
|
|
117
|
+
* twenty manifests that share an import issues one `HEAD`, not twenty.
|
|
118
|
+
* Mutated in place so later paths see what earlier ones learned. */
|
|
119
|
+
verified?: Map<string, string>): Promise<FreshnessResult>;
|
|
120
|
+
//# sourceMappingURL=manifest-freshness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest-freshness.d.ts","sourceRoot":"","sources":["../src/manifest-freshness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACjG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAgBhE;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAShD;AAED;;;;;;4DAM4D;AAC5D,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOnD;AAED;uDACuD;AACvD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAE7E;AAED;;;;;;;;;;GAUG;AACH,qBAAa,oBAAqB,YAAW,cAAc;IAKvD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAL9B,sEAAsE;IACtE,QAAQ,CAAC,MAAM,sBAA6B;gBAGzB,KAAK,EAAE,wBAAwB,EAC/B,WAAW,EAAE,MAAM;IAGtC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIxB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAUlE,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;CAGxD;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAiB1F;AAED;gDACgD;AAChD,wBAAsB,kBAAkB,CACtC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,MAAM,WAAW,eAAe;IAC9B;gFAC4E;IAC5E,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,yEAAyE;IACzE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;AAC3B;;;uEAGuE;AACvE,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC/C,WAAW,EAAE,MAAM;AACnB;;;qEAGqE;AACrE,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAa,GACxC,OAAO,CAAC,eAAe,CAAC,CAyE1B"}
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import { isOciRef, parseOciRef } from "@telorun/analyzer";
|
|
2
|
+
import { defaultTransportRegistry } from "@telorun/kernel/transports";
|
|
3
|
+
import * as fs from "fs/promises";
|
|
4
|
+
import * as path from "path";
|
|
5
|
+
import { fileURLToPath, pathToFileURL } from "url";
|
|
6
|
+
/** Sits beside `.validated.json` inside `<cacheRoot>/manifests/`. */
|
|
7
|
+
const ORIGINS_FILE = ".origins.json";
|
|
8
|
+
const ORIGINS_VERSION = 1;
|
|
9
|
+
/**
|
|
10
|
+
* True when `ref` names an OCI artifact by a **tag** rather than by content —
|
|
11
|
+
* the only case a cached manifest can silently go stale.
|
|
12
|
+
*
|
|
13
|
+
* A `sha256:` *reference* addresses the OCI manifest directly and is immutable.
|
|
14
|
+
* A tag the publisher can repoint is not, unless something else verifies the
|
|
15
|
+
* bytes — which is what {@link isPinnedOciRef} covers separately, because the
|
|
16
|
+
* pin does not survive into a resolved graph.
|
|
17
|
+
*/
|
|
18
|
+
export function isOciTagRef(ref) {
|
|
19
|
+
if (!isOciRef(ref))
|
|
20
|
+
return false;
|
|
21
|
+
try {
|
|
22
|
+
return !parseOciRef(ref).reference.includes(":");
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
// An unparseable ref is not something this pass can revalidate; the loader
|
|
26
|
+
// will report it as a resolution failure in its own right.
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/** True when `ref` carries Telo's inline `#sha256-…` pin, which the cache source
|
|
31
|
+
* and the OCI transport both verify the manifest bytes against on every read.
|
|
32
|
+
* A moved tag therefore cannot be served undetected, so no `HEAD` is needed.
|
|
33
|
+
*
|
|
34
|
+
* This must be asked of the ref **as authored**: `OciTransport` strips the
|
|
35
|
+
* fragment when it builds a module's canonical source, so a network-resolved
|
|
36
|
+
* graph no longer remembers that the import was pinned. */
|
|
37
|
+
export function isPinnedOciRef(ref) {
|
|
38
|
+
if (!isOciRef(ref))
|
|
39
|
+
return false;
|
|
40
|
+
try {
|
|
41
|
+
return Boolean(parseOciRef(ref).integrity);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/** Identity under which a mutable ref's origin digest is recorded:
|
|
48
|
+
* `host/repo@tag`, independent of scheme spelling. */
|
|
49
|
+
export function originKey(ref) {
|
|
50
|
+
const { host, repo, reference } = parseOciRef(ref);
|
|
51
|
+
return `${host}/${repo}@${reference}`;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Whether a cached manifest for `ref` may be served to `check` at all.
|
|
55
|
+
*
|
|
56
|
+
* The cache maps three key shapes, and only two of them address content that
|
|
57
|
+
* cannot change under the key:
|
|
58
|
+
*
|
|
59
|
+
* - `oci` — the reference is either a `sha256:` digest or a tag. A tag is
|
|
60
|
+
* mutable, which is what {@link revalidateMutableOciRefs} exists to catch,
|
|
61
|
+
* so both are cacheable and freshness is settled separately.
|
|
62
|
+
* - `registry` — `<path>@<version>`, always version-segmented. A published
|
|
63
|
+
* version is immutable by convention, the same assumption npm makes, so
|
|
64
|
+
* these are served without revalidation. This is a deliberate policy call,
|
|
65
|
+
* not a gap: the registry origin has no cheap freshness probe (`digest()`
|
|
66
|
+
* downloads the manifest to hash it), so revalidating would cost exactly
|
|
67
|
+
* what re-fetching costs and buy nothing.
|
|
68
|
+
* - `url` — an arbitrary HTTP(S) import. Its key carries **no version
|
|
69
|
+
* segment**: one URL is one path forever, so a cached copy would be served
|
|
70
|
+
* for the lifetime of the directory no matter what the server now returns.
|
|
71
|
+
* `check` therefore never reads these from the cache and always re-fetches.
|
|
72
|
+
* That costs one request — exactly what revalidating would cost, since
|
|
73
|
+
* `RegistryTransport.digest` is a full GET — so the honest option is also
|
|
74
|
+
* the cheap one. `telo run` keeps caching them; changing that is a separate
|
|
75
|
+
* decision about `run`'s freshness model, not a property of this pass.
|
|
76
|
+
*/
|
|
77
|
+
export function isCacheableForCheck(ref, registryUrl) {
|
|
78
|
+
return defaultTransportRegistry(registryUrl).cacheCoords(ref)?.transport !== "url";
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Wraps a manifest source and records which request URLs it actually served,
|
|
82
|
+
* and from which file on disk.
|
|
83
|
+
*
|
|
84
|
+
* The freshness pass needs both halves, and neither survives into the loaded
|
|
85
|
+
* graph: once the cache serves a manifest the graph's canonical source is a
|
|
86
|
+
* `file://` URL, so the `oci://` ref that asked for it is gone. Recording at
|
|
87
|
+
* the source is also what makes a *relative* import inside an OCI module work
|
|
88
|
+
* here — the loader resolves it to an absolute `oci://` ref before `read()`,
|
|
89
|
+
* so this map holds the absolute ref even though no manifest ever spelled it.
|
|
90
|
+
*/
|
|
91
|
+
export class RecordingCacheSource {
|
|
92
|
+
inner;
|
|
93
|
+
registryUrl;
|
|
94
|
+
/** Request URL → absolute path of the cache file that answered it. */
|
|
95
|
+
served = new Map();
|
|
96
|
+
constructor(inner, registryUrl) {
|
|
97
|
+
this.inner = inner;
|
|
98
|
+
this.registryUrl = registryUrl;
|
|
99
|
+
}
|
|
100
|
+
supports(url) {
|
|
101
|
+
return isCacheableForCheck(url, this.registryUrl) && this.inner.supports(url);
|
|
102
|
+
}
|
|
103
|
+
async read(url) {
|
|
104
|
+
const result = await this.inner.read(url);
|
|
105
|
+
// The cache always answers with a `file://` URL; anything else means the
|
|
106
|
+
// wrapped source is not disk-backed, and there is no cache file to record.
|
|
107
|
+
if (result.source.startsWith("file://")) {
|
|
108
|
+
this.served.set(url, fileURLToPath(result.source));
|
|
109
|
+
}
|
|
110
|
+
return result;
|
|
111
|
+
}
|
|
112
|
+
resolveRelative(base, relative) {
|
|
113
|
+
return this.inner.resolveRelative(base, relative);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Read the recorded origin digests for one cache root.
|
|
118
|
+
*
|
|
119
|
+
* A missing, unreadable, or version-mismatched record yields an empty map,
|
|
120
|
+
* which makes every cached mutable ref count as *unverified* and therefore
|
|
121
|
+
* stale. That is the conservative direction — the failure mode is one extra
|
|
122
|
+
* fetch, never serving a manifest whose tag has moved. It is a cache miss in
|
|
123
|
+
* the same sense `LocalManifestCacheSource` treats a failed `stat`, not a
|
|
124
|
+
* suppressed error.
|
|
125
|
+
*/
|
|
126
|
+
export async function readOriginDigests(manifestsDir) {
|
|
127
|
+
let raw;
|
|
128
|
+
try {
|
|
129
|
+
raw = await fs.readFile(path.join(manifestsDir, ORIGINS_FILE), "utf-8");
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
return new Map();
|
|
133
|
+
}
|
|
134
|
+
let parsed;
|
|
135
|
+
try {
|
|
136
|
+
parsed = JSON.parse(raw);
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
return new Map();
|
|
140
|
+
}
|
|
141
|
+
if (parsed?.version !== ORIGINS_VERSION || typeof parsed.digests !== "object") {
|
|
142
|
+
return new Map();
|
|
143
|
+
}
|
|
144
|
+
return new Map(Object.entries(parsed.digests));
|
|
145
|
+
}
|
|
146
|
+
/** Persist origin digests, merging over whatever the record already held so a
|
|
147
|
+
* check of one entry never drops another's. */
|
|
148
|
+
export async function writeOriginDigests(manifestsDir, digests) {
|
|
149
|
+
if (digests.size === 0)
|
|
150
|
+
return;
|
|
151
|
+
const merged = new Map([...(await readOriginDigests(manifestsDir)), ...digests]);
|
|
152
|
+
const record = {
|
|
153
|
+
version: ORIGINS_VERSION,
|
|
154
|
+
digests: Object.fromEntries([...merged].sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))),
|
|
155
|
+
};
|
|
156
|
+
await fs.mkdir(manifestsDir, { recursive: true });
|
|
157
|
+
await fs.writeFile(path.join(manifestsDir, ORIGINS_FILE), `${JSON.stringify(record, null, 2)}\n`, "utf-8");
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Revalidate every **mutable** OCI ref this graph resolved, with one `HEAD` per
|
|
161
|
+
* repository reference.
|
|
162
|
+
*
|
|
163
|
+
* `check` is the correctness command, so it must not report a clean bill of
|
|
164
|
+
* health against a manifest whose tag has since moved. But re-pulling every
|
|
165
|
+
* import to find that out is what made it slow, and a pinned ref — which is
|
|
166
|
+
* what `telo install` writes and what every published manifest carries — needs
|
|
167
|
+
* no network at all: its bytes are verified against the inline hash. So the
|
|
168
|
+
* cost falls only on unpinned tags, and only one round trip each, against the
|
|
169
|
+
* four a full re-pull would take.
|
|
170
|
+
*
|
|
171
|
+
* A ref fetched over the network during this load is fresh by construction and
|
|
172
|
+
* is only recorded, never revalidated.
|
|
173
|
+
*/
|
|
174
|
+
export async function revalidateMutableOciRefs(graph, served,
|
|
175
|
+
/** Recorded origin digests per cache root (keyed by its `manifests` dir). A
|
|
176
|
+
* cached manifest is judged against the record of the root it was served
|
|
177
|
+
* from, which is not necessarily the root this entry writes to: one loader
|
|
178
|
+
* serves every input path, so a hit may land in a sibling's cache. */
|
|
179
|
+
originsByRoot, registryUrl,
|
|
180
|
+
/** Digests already probed earlier in this invocation, keyed as {@link originKey}.
|
|
181
|
+
* A tag verified once in a process is verified for the whole run, so checking
|
|
182
|
+
* twenty manifests that share an import issues one `HEAD`, not twenty.
|
|
183
|
+
* Mutated in place so later paths see what earlier ones learned. */
|
|
184
|
+
verified = new Map()) {
|
|
185
|
+
const recordFor = (cacheFile) => {
|
|
186
|
+
let best;
|
|
187
|
+
for (const root of originsByRoot.keys()) {
|
|
188
|
+
if (!cacheFile.startsWith(root + path.sep))
|
|
189
|
+
continue;
|
|
190
|
+
if (!best || root.length > best.length)
|
|
191
|
+
best = root;
|
|
192
|
+
}
|
|
193
|
+
return (best && originsByRoot.get(best)) || new Map();
|
|
194
|
+
};
|
|
195
|
+
// A module's canonical source loses the `#sha256-` pin, so pinning has to be
|
|
196
|
+
// read off the refs as authored. Collect every authored ref that reached each
|
|
197
|
+
// canonical source; one pinned edge is enough, since edges sharing a canonical
|
|
198
|
+
// source resolved the same tag and its bytes were verified against that pin.
|
|
199
|
+
const pinnedSources = new Set();
|
|
200
|
+
for (const [, edges] of graph.importEdges) {
|
|
201
|
+
for (const [, edge] of edges) {
|
|
202
|
+
if (isPinnedOciRef(edge.targetRef))
|
|
203
|
+
pinnedSources.add(edge.targetSource);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
// Cache hits record the request URL, which keeps its pin — and is the only
|
|
207
|
+
// place a relative import's absolute `oci://` ref survives.
|
|
208
|
+
const cacheFileToRequest = new Map();
|
|
209
|
+
for (const [url, cacheFile] of served) {
|
|
210
|
+
cacheFileToRequest.set(pathToFileURL(cacheFile).href, url);
|
|
211
|
+
}
|
|
212
|
+
const targets = new Map();
|
|
213
|
+
// Restricted to modules this graph actually reached — a shared loader carries
|
|
214
|
+
// entries from previously-checked paths too.
|
|
215
|
+
for (const source of graph.modules.keys()) {
|
|
216
|
+
const request = cacheFileToRequest.get(source);
|
|
217
|
+
const ref = request ?? source;
|
|
218
|
+
if (!isOciTagRef(ref))
|
|
219
|
+
continue;
|
|
220
|
+
if (isPinnedOciRef(ref) || pinnedSources.has(source))
|
|
221
|
+
continue;
|
|
222
|
+
const key = originKey(ref);
|
|
223
|
+
// The same tag reached twice can only differ in whether a copy sat on disk;
|
|
224
|
+
// the cache-served one is what a staleness verdict has to act on.
|
|
225
|
+
if (targets.get(key)?.cacheFile)
|
|
226
|
+
continue;
|
|
227
|
+
targets.set(key, {
|
|
228
|
+
ref,
|
|
229
|
+
...(request ? { cacheFile: fileURLToPath(source) } : {}),
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
if (targets.size === 0)
|
|
233
|
+
return { staleFiles: [], digests: new Map() };
|
|
234
|
+
const transports = defaultTransportRegistry(registryUrl);
|
|
235
|
+
const resolved = await Promise.all([...targets.entries()].map(async ([key, target]) => {
|
|
236
|
+
const already = verified.get(key);
|
|
237
|
+
if (already !== undefined)
|
|
238
|
+
return [key, already];
|
|
239
|
+
const digest = await transports.digest(target.ref);
|
|
240
|
+
if (digest)
|
|
241
|
+
verified.set(key, digest);
|
|
242
|
+
return [key, digest];
|
|
243
|
+
}));
|
|
244
|
+
const staleFiles = [];
|
|
245
|
+
const digests = new Map();
|
|
246
|
+
for (const [key, digest] of resolved) {
|
|
247
|
+
if (digest)
|
|
248
|
+
digests.set(key, digest);
|
|
249
|
+
const target = targets.get(key);
|
|
250
|
+
if (!target?.cacheFile)
|
|
251
|
+
continue;
|
|
252
|
+
// A tag that no longer resolves (`null`) is stale too — dropping the cached
|
|
253
|
+
// copy lets the reload surface the real resolution failure instead of
|
|
254
|
+
// quietly analyzing a version the registry no longer publishes.
|
|
255
|
+
if (digest && recordFor(target.cacheFile).get(key) === digest)
|
|
256
|
+
continue;
|
|
257
|
+
staleFiles.push(target.cacheFile);
|
|
258
|
+
}
|
|
259
|
+
return { staleFiles, digests };
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=manifest-freshness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest-freshness.js","sourceRoot":"","sources":["../src/manifest-freshness.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@telorun/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.62.0",
|
|
4
4
|
"description": "Telo CLI - Command-line interface for the Telo runtime.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"telo",
|
|
@@ -34,12 +34,12 @@
|
|
|
34
34
|
"dist"
|
|
35
35
|
],
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@telorun/analyzer": "0.
|
|
37
|
+
"@telorun/analyzer": "0.49.1",
|
|
38
38
|
"@telorun/glob": "0.2.0",
|
|
39
|
-
"@telorun/ide-support": "0.7.
|
|
40
|
-
"@telorun/kernel": "0.
|
|
41
|
-
"@telorun/sdk": "0.
|
|
42
|
-
"@telorun/templating": "0.11.
|
|
39
|
+
"@telorun/ide-support": "0.7.10",
|
|
40
|
+
"@telorun/kernel": "0.62.0",
|
|
41
|
+
"@telorun/sdk": "0.62.0",
|
|
42
|
+
"@telorun/templating": "0.11.1",
|
|
43
43
|
"dotenv": "^17.4.0",
|
|
44
44
|
"packageurl-js": "^2.0.1",
|
|
45
45
|
"semver": "^7.7.3",
|