@sublang/slc 0.5.0 → 0.6.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 +4 -4
- package/dist/app.d.ts +20 -20
- package/dist/app.js +29 -29
- package/dist/app.js.map +1 -1
- package/dist/artifacts.d.ts +6 -6
- package/dist/artifacts.d.ts.map +1 -1
- package/dist/artifacts.js +9 -9
- package/dist/artifacts.js.map +1 -1
- package/dist/cli.js +3 -3
- package/dist/cligent-agent.d.ts +1 -1
- package/dist/cligent-agent.js +5 -5
- package/dist/compiled-executor.d.ts +14 -6
- package/dist/compiled-executor.d.ts.map +1 -1
- package/dist/compiled-executor.js +133 -31
- package/dist/compiled-executor.js.map +1 -1
- package/dist/config-file.d.ts +6 -6
- package/dist/config-file.js +5 -5
- package/dist/config.d.ts +17 -15
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +26 -16
- package/dist/config.js.map +1 -1
- package/dist/emitted-imports.d.ts +14 -0
- package/dist/emitted-imports.d.ts.map +1 -1
- package/dist/emitted-imports.js +63 -7
- package/dist/emitted-imports.js.map +1 -1
- package/dist/entry-module.d.ts +5 -3
- package/dist/entry-module.d.ts.map +1 -1
- package/dist/entry-module.js +41 -13
- package/dist/entry-module.js.map +1 -1
- package/dist/execution.d.ts +10 -10
- package/dist/execution.d.ts.map +1 -1
- package/dist/execution.js +13 -13
- package/dist/execution.js.map +1 -1
- package/dist/hash.js +2 -2
- package/dist/host-capabilities.d.ts +115 -0
- package/dist/host-capabilities.d.ts.map +1 -0
- package/dist/host-capabilities.js +507 -0
- package/dist/host-capabilities.js.map +1 -0
- package/dist/interpreter.d.ts +2 -2
- package/dist/interpreter.d.ts.map +1 -1
- package/dist/interpreter.js +7 -7
- package/dist/invocation.d.ts +6 -6
- package/dist/invocation.d.ts.map +1 -1
- package/dist/invocation.js +1 -1
- package/dist/link.d.ts +4 -4
- package/dist/link.d.ts.map +1 -1
- package/dist/link.js +11 -11
- package/dist/link.js.map +1 -1
- package/dist/phase-runner.d.ts +4 -4
- package/dist/phase-runner.js +9 -9
- package/dist/phase.d.ts +4 -4
- package/dist/phase.d.ts.map +1 -1
- package/dist/phase.js +7 -7
- package/dist/phase.js.map +1 -1
- package/dist/pin-closure.d.ts +35 -7
- package/dist/pin-closure.d.ts.map +1 -1
- package/dist/pin-closure.js +135 -21
- package/dist/pin-closure.js.map +1 -1
- package/dist/pin-currency.d.ts +9 -4
- package/dist/pin-currency.d.ts.map +1 -1
- package/dist/pin-currency.js +57 -20
- package/dist/pin-currency.js.map +1 -1
- package/dist/pin-generate.d.ts +7 -7
- package/dist/pin-generate.d.ts.map +1 -1
- package/dist/pin-generate.js +14 -8
- package/dist/pin-generate.js.map +1 -1
- package/dist/pin-inputs.d.ts +41 -0
- package/dist/pin-inputs.d.ts.map +1 -0
- package/dist/pin-inputs.js +179 -0
- package/dist/pin-inputs.js.map +1 -0
- package/dist/pin-paths.d.ts +1 -1
- package/dist/pin-paths.js +4 -4
- package/dist/pin-paths.js.map +1 -1
- package/dist/pins.d.ts +4 -4
- package/dist/pins.d.ts.map +1 -1
- package/dist/pins.js +5 -5
- package/dist/pins.js.map +1 -1
- package/dist/pipeline.d.ts +5 -5
- package/dist/pipeline.js +10 -10
- package/dist/playbook-contract.d.ts +53 -5
- package/dist/playbook-contract.d.ts.map +1 -1
- package/dist/playbook-contract.js +70 -21
- package/dist/playbook-contract.js.map +1 -1
- package/dist/playbook-ports.d.ts +9 -9
- package/dist/playbook-ports.d.ts.map +1 -1
- package/dist/playbook-ports.js +3 -3
- package/dist/playbook-ports.js.map +1 -1
- package/dist/progress.d.ts +8 -9
- package/dist/progress.d.ts.map +1 -1
- package/dist/progress.js +3 -3
- package/dist/progress.js.map +1 -1
- package/dist/resolver.d.ts +9 -9
- package/dist/resolver.d.ts.map +1 -1
- package/dist/resolver.js +12 -12
- package/dist/resolver.js.map +1 -1
- package/dist/runner.d.ts +1 -1
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +195 -80
- package/dist/runner.js.map +1 -1
- package/dist/verify-coverage.d.ts +4 -3
- package/dist/verify-coverage.d.ts.map +1 -1
- package/dist/verify-coverage.js +509 -71
- package/dist/verify-coverage.js.map +1 -1
- package/dist/verify.d.ts +111 -15
- package/dist/verify.d.ts.map +1 -1
- package/dist/verify.js +656 -59
- package/dist/verify.js.map +1 -1
- package/package.json +3 -3
package/dist/pin-currency.d.ts
CHANGED
|
@@ -23,18 +23,23 @@ export interface PinEvaluationOptions {
|
|
|
23
23
|
observePath?: (path: string) => void;
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
26
|
-
* Evaluates every pin in `<pipelineDir>/slc.pins.json` (
|
|
26
|
+
* Evaluates every pin in `<pipelineDir>/slc.pins.json` (pinning-1..pinning-6).
|
|
27
27
|
*
|
|
28
28
|
* @returns `{}` when the file is absent (no pins), `{ malformed }` when the file
|
|
29
29
|
* is unparseable or invalid at the file level, or `{ path, verdicts }` with a
|
|
30
30
|
* per-phase verdict otherwise.
|
|
31
31
|
*/
|
|
32
32
|
export declare function evaluatePins(pipelineDir: string): Promise<PinsResult>;
|
|
33
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* Validates the shared sidecar, then evaluates every record and prevents one
|
|
35
|
+
* malformed record from coexisting with a current one.
|
|
36
|
+
*
|
|
37
|
+
* @throws {PinError} when shared sidecar metadata is malformed at file level.
|
|
38
|
+
*/
|
|
34
39
|
export declare function evaluatePinFile(pipelineDir: string, file: PinFile, opts?: PinEvaluationOptions): Promise<Record<string, PinVerdict>>;
|
|
35
40
|
/**
|
|
36
|
-
* Evaluates one phase's pin record against the committed files (
|
|
37
|
-
*
|
|
41
|
+
* Evaluates one phase's pin record against the committed files (pinning-2..pinning-6,
|
|
42
|
+
* pinning-13).
|
|
38
43
|
*
|
|
39
44
|
* Structural defects are reported as `malformed` before currency is judged, so a
|
|
40
45
|
* record that is both malformed and stale reports `malformed`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pin-currency.d.ts","sourceRoot":"","sources":["../src/pin-currency.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pin-currency.d.ts","sourceRoot":"","sources":["../src/pin-currency.ts"],"names":[],"mappings":"AAkDA,OAAO,EAIL,KAAK,OAAO,EAGZ,KAAK,SAAS,EAEf,MAAM,WAAW,CAAC;AAMnB,iDAAiD;AACjD,MAAM,MAAM,UAAU,GAClB;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5C,qEAAqE;AACrE,MAAM,WAAW,UAAU;IACzB,qFAAqF;IACrF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACtC,oGAAoG;IACpG,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,gFAAgF;AAChF,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAwB3E;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,OAAO,EACb,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAsCrC;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,SAAS,EACjB,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,UAAU,CAAC,CAErB;AA4QD;;;;GAIG;AACH,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyBxB;AA0JD;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,uFAAuF;IACvF,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,eAAoB,GACzB,OAAO,CAAC,MAAM,CAAC,CAajB"}
|
package/dist/pin-currency.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// SPDX-FileCopyrightText: 2026 SubLang International <https://sublang.ai>
|
|
3
3
|
/**
|
|
4
4
|
* Pin-currency engine: the per-phase verdict that drives compiled selection
|
|
5
|
-
* (
|
|
5
|
+
* (pinning-1..pinning-6, pinning-13; DR-007).
|
|
6
6
|
*
|
|
7
7
|
* Given a pipeline directory, {@link evaluatePins} loads `slc.pins.json` and, for
|
|
8
8
|
* each pinned phase, combines the validator stages into a verdict: `current` when
|
|
@@ -16,19 +16,21 @@
|
|
|
16
16
|
* target by a deterministic `sha256:` tree hash over its files' sorted relative
|
|
17
17
|
* paths and contents. Beyond existing and matching its recorded hash, the
|
|
18
18
|
* compiled artifact must resolve to the linked `playbook` format — a module
|
|
19
|
-
* exposing the runtime factory — or the phase is stale (
|
|
20
|
-
* specs/
|
|
19
|
+
* exposing the runtime factory — or the phase is stale (pinning-13). See
|
|
20
|
+
* specs/packages/pinning.md.
|
|
21
21
|
*/
|
|
22
22
|
import { lstat, readFile, readdir, readlink } from 'node:fs/promises';
|
|
23
|
-
import { basename, dirname, isAbsolute, join, relative, resolve, sep, } from 'node:path';
|
|
23
|
+
import { basename as hostBasename, dirname, isAbsolute, join, relative, resolve, sep, } from 'node:path';
|
|
24
|
+
import { basename as posixBasename } from 'node:path/posix';
|
|
24
25
|
import { hashFile, hashTreeRecords, isHash, serializeTreeRecord, } from './hash.js';
|
|
25
26
|
import { resolvesToPlaybook } from './phase-runner.js';
|
|
26
|
-
import { closureMatchesRecord } from './pin-closure.js';
|
|
27
|
+
import { closureMatchesRecord, deriveClosure, derivedClosureMatchesRecord, } from './pin-closure.js';
|
|
28
|
+
import { loadPinInputsFile } from './pin-inputs.js';
|
|
27
29
|
import { resolvePinPath } from './pin-paths.js';
|
|
28
30
|
import { PinError, loadPinFile, } from './pins.js';
|
|
29
31
|
import { isBarePackageSpecifier, resolveRuntimePackage, } from './runtime-package.js';
|
|
30
32
|
/**
|
|
31
|
-
* Evaluates every pin in `<pipelineDir>/slc.pins.json` (
|
|
33
|
+
* Evaluates every pin in `<pipelineDir>/slc.pins.json` (pinning-1..pinning-6).
|
|
32
34
|
*
|
|
33
35
|
* @returns `{}` when the file is absent (no pins), `{ malformed }` when the file
|
|
34
36
|
* is unparseable or invalid at the file level, or `{ path, verdicts }` with a
|
|
@@ -48,14 +50,31 @@ export async function evaluatePins(pipelineDir) {
|
|
|
48
50
|
if (loaded.file === undefined) {
|
|
49
51
|
return {};
|
|
50
52
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
+
try {
|
|
54
|
+
const verdicts = await evaluatePinFile(pipelineDir, loaded.file);
|
|
55
|
+
return { path: loaded.path, verdicts };
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
if (error instanceof PinError) {
|
|
59
|
+
return { path: loaded.path, malformed: error.message };
|
|
60
|
+
}
|
|
61
|
+
throw error;
|
|
62
|
+
}
|
|
53
63
|
}
|
|
54
|
-
/**
|
|
64
|
+
/**
|
|
65
|
+
* Validates the shared sidecar, then evaluates every record and prevents one
|
|
66
|
+
* malformed record from coexisting with a current one.
|
|
67
|
+
*
|
|
68
|
+
* @throws {PinError} when shared sidecar metadata is malformed at file level.
|
|
69
|
+
*/
|
|
55
70
|
export async function evaluatePinFile(pipelineDir, file, opts = {}) {
|
|
71
|
+
const pinInputs = await loadPinInputsFile(pipelineDir, file.pathBoundary.path);
|
|
72
|
+
if (pinInputs.path !== undefined) {
|
|
73
|
+
opts.observePath?.(pinInputs.path);
|
|
74
|
+
}
|
|
56
75
|
const verdicts = Object.create(null);
|
|
57
76
|
for (const [phase, record] of Object.entries(file.pins)) {
|
|
58
|
-
verdicts[phase] = await
|
|
77
|
+
verdicts[phase] = await evaluatePinRecord(pipelineDir, file, phase, record, opts, pinInputs);
|
|
59
78
|
}
|
|
60
79
|
const malformedPhase = Object.entries(verdicts).find(([, verdict]) => verdict.status === 'malformed');
|
|
61
80
|
if (malformedPhase !== undefined) {
|
|
@@ -70,13 +89,16 @@ export async function evaluatePinFile(pipelineDir, file, opts = {}) {
|
|
|
70
89
|
return verdicts;
|
|
71
90
|
}
|
|
72
91
|
/**
|
|
73
|
-
* Evaluates one phase's pin record against the committed files (
|
|
74
|
-
*
|
|
92
|
+
* Evaluates one phase's pin record against the committed files (pinning-2..pinning-6,
|
|
93
|
+
* pinning-13).
|
|
75
94
|
*
|
|
76
95
|
* Structural defects are reported as `malformed` before currency is judged, so a
|
|
77
96
|
* record that is both malformed and stale reports `malformed`.
|
|
78
97
|
*/
|
|
79
98
|
export async function evaluatePin(pipelineDir, file, phase, record, opts = {}) {
|
|
99
|
+
return evaluatePinRecord(pipelineDir, file, phase, record, opts);
|
|
100
|
+
}
|
|
101
|
+
async function evaluatePinRecord(pipelineDir, file, phase, record, opts, preloadedPinInputs) {
|
|
80
102
|
const boundary = file.pathBoundary.path;
|
|
81
103
|
try {
|
|
82
104
|
// Structural (malformed) checks first.
|
|
@@ -109,8 +131,20 @@ export async function evaluatePin(pipelineDir, file, phase, record, opts = {}) {
|
|
|
109
131
|
if (bundleMalformed !== null) {
|
|
110
132
|
return malformed(bundleMalformed);
|
|
111
133
|
}
|
|
134
|
+
// A present sidecar is structural pin metadata. Validate its complete
|
|
135
|
+
// shape and boundary, then prederive an applicable sidecar entry, before
|
|
136
|
+
// any byte-currency check so malformed input is never masked by an
|
|
137
|
+
// independently stale recorded file (pinning-18, pinning-20).
|
|
138
|
+
const pinInputs = preloadedPinInputs ?? (await loadPinInputsFile(pipelineDir, boundary));
|
|
139
|
+
if (pinInputs.path !== undefined) {
|
|
140
|
+
opts.observePath?.(pinInputs.path);
|
|
141
|
+
}
|
|
142
|
+
const derivedSidecarClosure = pinInputs.file !== undefined &&
|
|
143
|
+
Object.hasOwn(pinInputs.file.closures, phase)
|
|
144
|
+
? await deriveClosure(pipelineDir, boundary, record.definition.path, phase, opts.observePath, pinInputs)
|
|
145
|
+
: undefined;
|
|
112
146
|
// Currency (stale) checks. resolvePinPath throws PinError for a bad path,
|
|
113
|
-
// which the catch below maps to malformed (
|
|
147
|
+
// which the catch below maps to malformed (pinning-5).
|
|
114
148
|
for (const [field, ref] of recordedFileRefs(record)) {
|
|
115
149
|
const reason = await fileStale(pipelineDir, boundary, ref, field, opts.observePath);
|
|
116
150
|
if (reason !== null) {
|
|
@@ -125,13 +159,16 @@ export async function evaluatePin(pipelineDir, file, phase, record, opts = {}) {
|
|
|
125
159
|
if (bundleLayout !== null) {
|
|
126
160
|
return stale(bundleLayout);
|
|
127
161
|
}
|
|
128
|
-
// The hash-verified artifact must resolve to the linked `
|
|
162
|
+
// The hash-verified artifact must resolve to the linked `playbook` format (pinning-13).
|
|
129
163
|
const artifactFormat = await artifactFormatStale(pipelineDir, boundary, record.artifact, opts.observePath);
|
|
130
164
|
if (artifactFormat !== null) {
|
|
131
165
|
return stale(artifactFormat);
|
|
132
166
|
}
|
|
133
|
-
|
|
134
|
-
|
|
167
|
+
const closureMatches = derivedSidecarClosure === undefined
|
|
168
|
+
? await closureMatchesRecord(pipelineDir, boundary, record, phase, opts.observePath, pinInputs)
|
|
169
|
+
: derivedClosureMatchesRecord(pipelineDir, boundary, record, derivedSidecarClosure);
|
|
170
|
+
if (!closureMatches) {
|
|
171
|
+
return stale('the semantic-input closure differs from its applicable sidecar or inline declaration');
|
|
135
172
|
}
|
|
136
173
|
const linkStale = await linkTargetStale(pipelineDir, boundary, record.linkTarget, 'linkTarget', opts.observePath);
|
|
137
174
|
if (linkStale !== null) {
|
|
@@ -158,8 +195,8 @@ function phaseRecordMalformed(phase, record) {
|
|
|
158
195
|
const expectedDefinition = `${phase}.md`;
|
|
159
196
|
const expectedBundle = `${phase}.slc`;
|
|
160
197
|
const expectedArtifact = `${expectedBundle}/${phase}.playbook.ts`;
|
|
161
|
-
if (record.definition.path !== expectedDefinition) {
|
|
162
|
-
return `pin key "${phase}" requires definition
|
|
198
|
+
if (posixBasename(record.definition.path) !== expectedDefinition) {
|
|
199
|
+
return `pin key "${phase}" requires definition basename "${expectedDefinition}"`;
|
|
163
200
|
}
|
|
164
201
|
if (record.artifactBundle.path !== expectedBundle) {
|
|
165
202
|
return `pin key "${phase}" requires artifactBundle path "${expectedBundle}"`;
|
|
@@ -221,7 +258,7 @@ function artifactBundleMalformed(pipelineDir, boundary, record) {
|
|
|
221
258
|
* being reviewed is actually the runnable FSM/GEARS/verification bundle.
|
|
222
259
|
*/
|
|
223
260
|
export async function artifactBundleLayoutIssue(bundleRoot, artifactPath) {
|
|
224
|
-
const entry =
|
|
261
|
+
const entry = hostBasename(artifactPath);
|
|
225
262
|
if (!entry.endsWith('.playbook.ts')) {
|
|
226
263
|
return `artifact is not a canonical .playbook.ts entry module (${entry})`;
|
|
227
264
|
}
|
|
@@ -249,7 +286,7 @@ export async function artifactBundleLayoutIssue(bundleRoot, artifactPath) {
|
|
|
249
286
|
}
|
|
250
287
|
/**
|
|
251
288
|
* Returns a stale reason when the compiled artifact's bytes do not resolve to the
|
|
252
|
-
* linked `playbook` format, or `null` when they do (
|
|
289
|
+
* linked `playbook` format, or `null` when they do (pinning-13). The caller has already
|
|
253
290
|
* verified the artifact exists and matches its recorded hash.
|
|
254
291
|
*/
|
|
255
292
|
async function artifactFormatStale(pipelineDir, boundary, artifact, observePath) {
|
package/dist/pin-currency.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pin-currency.js","sourceRoot":"","sources":["../src/pin-currency.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pin-currency.js","sourceRoot":"","sources":["../src/pin-currency.ts"],"names":[],"mappings":"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"}
|
package/dist/pin-generate.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type PinExternalInput, type PinLinkTarget, type PinProducer, type PinRecord, type PinRuntimeDependency } from './pins.js';
|
|
2
2
|
/** The committed inputs that produced one compiled phase, to pin (DR-007). */
|
|
3
3
|
export interface PinSpec {
|
|
4
|
-
/**
|
|
4
|
+
/** Portable pipeline-relative locator to the phase definition, inside the boundary. */
|
|
5
5
|
definition: string;
|
|
6
6
|
/** Pipeline-dir-relative path to the compiled `.playbook.ts` entry module. */
|
|
7
7
|
artifact: string;
|
|
@@ -22,25 +22,25 @@ export interface PinSpec {
|
|
|
22
22
|
/** Provenance of the producing run; never a currency input. */
|
|
23
23
|
producer?: PinProducer;
|
|
24
24
|
}
|
|
25
|
-
/** Options for pin generation (
|
|
25
|
+
/** Options for pin generation (pinning-15). */
|
|
26
26
|
export interface PinGenerateOptions {
|
|
27
27
|
/**
|
|
28
28
|
* The recorded path boundary, a relative POSIX path from the pipeline
|
|
29
29
|
* directory; defaults to `.`. A wider boundary (e.g. `../..`) lets a pin
|
|
30
|
-
* record a
|
|
31
|
-
*
|
|
30
|
+
* record a definition, semantic input, dependency, or link target outside the
|
|
31
|
+
* pipeline directory, such as an installed package module.
|
|
32
32
|
*/
|
|
33
33
|
boundary?: string;
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
36
|
* Generates a current {@link PinRecord} for one phase from its committed inputs
|
|
37
|
-
* (
|
|
38
|
-
* closure becomes the enumerated `semanticInputs`.
|
|
37
|
+
* (pinning-15). The definition is recorded separately; the rest of its
|
|
38
|
+
* applicable sidecar or inline closure becomes the enumerated `semanticInputs`.
|
|
39
39
|
*/
|
|
40
40
|
export declare function generatePinRecord(pipelineDir: string, spec: PinSpec, opts?: PinGenerateOptions): Promise<PinRecord>;
|
|
41
41
|
/**
|
|
42
42
|
* Writes the pin index `<pipelineDir>/slc.pins.json` for the given phase records
|
|
43
|
-
* and returns its path (
|
|
43
|
+
* and returns its path (pinning-15).
|
|
44
44
|
*/
|
|
45
45
|
export declare function writePinFile(pipelineDir: string, pins: Readonly<Record<string, PinRecord>>, opts?: PinGenerateOptions): Promise<string>;
|
|
46
46
|
//# sourceMappingURL=pin-generate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pin-generate.d.ts","sourceRoot":"","sources":["../src/pin-generate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pin-generate.d.ts","sourceRoot":"","sources":["../src/pin-generate.ts"],"names":[],"mappings":"AA4BA,OAAO,EAKL,KAAK,gBAAgB,EAErB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,oBAAoB,EAC1B,MAAM,WAAW,CAAC;AAGnB,8EAA8E;AAC9E,MAAM,WAAW,OAAO;IACtB,uFAAuF;IACvF,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,CAAC;IACjB,oGAAoG;IACpG,cAAc,EAAE,MAAM,CAAC;IACvB,uDAAuD;IACvD,UAAU,EAAE;QACV,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,yFAAyF;IACzF,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACzC,2DAA2D;IAC3D,cAAc,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC7C,qEAAqE;IACrE,mBAAmB,CAAC,EAAE,SAAS,IAAI,CAAC,oBAAoB,EAAE,UAAU,CAAC,EAAE,CAAC;IACxE,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAKD,+CAA+C;AAC/C,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,OAAO,EACb,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,SAAS,CAAC,CAyIpB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,EACzC,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAUjB"}
|
package/dist/pin-generate.js
CHANGED
|
@@ -2,20 +2,22 @@
|
|
|
2
2
|
// SPDX-FileCopyrightText: 2026 SubLang International <https://sublang.ai>
|
|
3
3
|
/**
|
|
4
4
|
* Pin generation: the explicit build-and-review flow that writes `slc.pins.json`
|
|
5
|
-
* (
|
|
5
|
+
* (pinning-15, pinning-17; DR-007, DR-026).
|
|
6
6
|
*
|
|
7
7
|
* This is the inverse of the currency validator: given a built and reviewed
|
|
8
8
|
* compiled artifact, {@link generatePinRecord} records — over committed bytes —
|
|
9
9
|
* the definition, compiled entry module and reviewed artifact bundle, the
|
|
10
|
-
* semantic-input closure derived from
|
|
11
|
-
* link-target identity, so the resulting record validates
|
|
10
|
+
* semantic-input closure derived from its applicable sidecar or inline
|
|
11
|
+
* declaration, and the link-target identity, so the resulting record validates
|
|
12
|
+
* as current.
|
|
12
13
|
* {@link writePinFile} writes the pin index for a pipeline directory. Generation
|
|
13
14
|
* is invoked only by an explicit build-and-review step, never during an ordinary
|
|
14
15
|
* pipeline run; `slc` does not regenerate or rewrite pins per invocation
|
|
15
|
-
* (DR-007 lifecycle). See specs/
|
|
16
|
+
* (DR-007 lifecycle). See specs/packages/pinning.md.
|
|
16
17
|
*/
|
|
17
18
|
import { writeFile } from 'node:fs/promises';
|
|
18
19
|
import { dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';
|
|
20
|
+
import { basename as posixBasename } from 'node:path/posix';
|
|
19
21
|
import { messageOf } from './errors.js';
|
|
20
22
|
import { hashFile } from './hash.js';
|
|
21
23
|
import { deriveClosure } from './pin-closure.js';
|
|
@@ -27,13 +29,13 @@ import { resolveRuntimePackage } from './runtime-package.js';
|
|
|
27
29
|
const BOUNDARY = '.';
|
|
28
30
|
/**
|
|
29
31
|
* Generates a current {@link PinRecord} for one phase from its committed inputs
|
|
30
|
-
* (
|
|
31
|
-
* closure becomes the enumerated `semanticInputs`.
|
|
32
|
+
* (pinning-15). The definition is recorded separately; the rest of its
|
|
33
|
+
* applicable sidecar or inline closure becomes the enumerated `semanticInputs`.
|
|
32
34
|
*/
|
|
33
35
|
export async function generatePinRecord(pipelineDir, spec, opts = {}) {
|
|
34
36
|
const boundary = opts.boundary ?? BOUNDARY;
|
|
35
37
|
const definitionResolved = resolvePinPath(pipelineDir, boundary, spec.definition, 'definition');
|
|
36
|
-
const closure = await deriveClosure(pipelineDir, boundary, spec.definition);
|
|
38
|
+
const closure = await deriveClosure(pipelineDir, boundary, spec.definition, phaseName(spec.definition));
|
|
37
39
|
const semanticInputs = await Promise.all([...closure]
|
|
38
40
|
.filter((resolved) => resolved !== definitionResolved)
|
|
39
41
|
.sort()
|
|
@@ -110,7 +112,7 @@ export async function generatePinRecord(pipelineDir, spec, opts = {}) {
|
|
|
110
112
|
}
|
|
111
113
|
/**
|
|
112
114
|
* Writes the pin index `<pipelineDir>/slc.pins.json` for the given phase records
|
|
113
|
-
* and returns its path (
|
|
115
|
+
* and returns its path (pinning-15).
|
|
114
116
|
*/
|
|
115
117
|
export async function writePinFile(pipelineDir, pins, opts = {}) {
|
|
116
118
|
const file = {
|
|
@@ -126,4 +128,8 @@ export async function writePinFile(pipelineDir, pins, opts = {}) {
|
|
|
126
128
|
function toPosix(path) {
|
|
127
129
|
return path.split(sep).join('/');
|
|
128
130
|
}
|
|
131
|
+
function phaseName(definitionPath) {
|
|
132
|
+
const name = posixBasename(definitionPath);
|
|
133
|
+
return name.endsWith('.md') ? name.slice(0, -'.md'.length) : name;
|
|
134
|
+
}
|
|
129
135
|
//# sourceMappingURL=pin-generate.js.map
|
package/dist/pin-generate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pin-generate.js","sourceRoot":"","sources":["../src/pin-generate.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,0EAA0E;AAE1E
|
|
1
|
+
{"version":3,"file":"pin-generate.js","sourceRoot":"","sources":["../src/pin-generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { PinError } from './pins.js';
|
|
2
|
+
/** Optional per-pipeline semantic-input declaration filename (DR-026). */
|
|
3
|
+
export declare const PIN_INPUTS_FILE = "slc.pin-inputs.json";
|
|
4
|
+
/** The only supported semantic-input declaration schema (DR-026). */
|
|
5
|
+
export declare const PIN_INPUTS_SCHEMA = "sublang.slc.pin-inputs.v1";
|
|
6
|
+
/** Parsed SLC-owned semantic-input declarations. */
|
|
7
|
+
export interface PinInputsFile {
|
|
8
|
+
schema: string;
|
|
9
|
+
closures: Record<string, string[]>;
|
|
10
|
+
}
|
|
11
|
+
/** A loaded declaration and its path, or neither when the sidecar is absent. */
|
|
12
|
+
export interface LoadedPinInputs {
|
|
13
|
+
path?: string;
|
|
14
|
+
file?: PinInputsFile;
|
|
15
|
+
}
|
|
16
|
+
/** A tolerant boundary inspection used by runtime protected-input discovery. */
|
|
17
|
+
export interface InspectedPinInputs extends LoadedPinInputs {
|
|
18
|
+
/** Resolved members by entry and source order; invalid members stay absent. */
|
|
19
|
+
resolvedClosures: Record<string, Array<string | undefined>>;
|
|
20
|
+
/** First boundary failure in file order, when any member is invalid. */
|
|
21
|
+
issue?: PinError;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Loads and validates `<pipelineDir>/slc.pin-inputs.json` (pinning-18).
|
|
25
|
+
*
|
|
26
|
+
* Every closure path is validated inside `boundary`, including paths belonging
|
|
27
|
+
* to phases other than the one a caller is about to derive.
|
|
28
|
+
*/
|
|
29
|
+
export declare function loadPinInputsFile(pipelineDir: string, boundary: string): Promise<LoadedPinInputs>;
|
|
30
|
+
/**
|
|
31
|
+
* Reads the complete sidecar structure and inspects every member boundary.
|
|
32
|
+
*
|
|
33
|
+
* Unlike {@link loadPinInputsFile}, a member boundary failure is returned with
|
|
34
|
+
* every independently valid resolved member. Structural failures still throw
|
|
35
|
+
* because no trustworthy sidecar member list can be recovered; closure
|
|
36
|
+
* inspection may separately recover inline paths for conservative protection.
|
|
37
|
+
*/
|
|
38
|
+
export declare function inspectPinInputsFile(pipelineDir: string, boundary: string): Promise<InspectedPinInputs>;
|
|
39
|
+
/** Parses strict sidecar JSON and validates its complete field shape. */
|
|
40
|
+
export declare function parsePinInputsFile(source: string, path?: string): PinInputsFile;
|
|
41
|
+
//# sourceMappingURL=pin-inputs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pin-inputs.d.ts","sourceRoot":"","sources":["../src/pin-inputs.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,0EAA0E;AAC1E,eAAO,MAAM,eAAe,wBAAwB,CAAC;AACrD,qEAAqE;AACrE,eAAO,MAAM,iBAAiB,8BAA8B,CAAC;AAE7D,oDAAoD;AACpD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACpC;AAED,gFAAgF;AAChF,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB;AAED,gFAAgF;AAChF,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,+EAA+E;IAC/E,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAC5D,wEAAwE;IACxE,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,eAAe,CAAC,CAS1B;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,kBAAkB,CAAC,CAiC7B;AAqCD,yEAAyE;AACzE,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAwB,GAC7B,aAAa,CAqBf"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// SPDX-FileCopyrightText: 2026 SubLang International <https://sublang.ai>
|
|
3
|
+
/**
|
|
4
|
+
* SLC-owned semantic-input closure declarations (pinning-17, pinning-18;
|
|
5
|
+
* DR-026).
|
|
6
|
+
*
|
|
7
|
+
* A pipeline's optional `slc.pin-inputs.json` maps a phase or pass name to its
|
|
8
|
+
* complete flattened local semantic-input closure, excluding the separately
|
|
9
|
+
* recorded definition. Strict loading validates every declared path; tolerant
|
|
10
|
+
* inspection also retains independently valid paths for runtime protection.
|
|
11
|
+
*/
|
|
12
|
+
import { lstat, readFile } from 'node:fs/promises';
|
|
13
|
+
import { join } from 'node:path';
|
|
14
|
+
import { errorCode, messageOf } from './errors.js';
|
|
15
|
+
import { resolvePinPath } from './pin-paths.js';
|
|
16
|
+
import { isPortablePhaseName } from './phase.js';
|
|
17
|
+
import { PinError } from './pins.js';
|
|
18
|
+
/** Optional per-pipeline semantic-input declaration filename (DR-026). */
|
|
19
|
+
export const PIN_INPUTS_FILE = 'slc.pin-inputs.json';
|
|
20
|
+
/** The only supported semantic-input declaration schema (DR-026). */
|
|
21
|
+
export const PIN_INPUTS_SCHEMA = 'sublang.slc.pin-inputs.v1';
|
|
22
|
+
/**
|
|
23
|
+
* Loads and validates `<pipelineDir>/slc.pin-inputs.json` (pinning-18).
|
|
24
|
+
*
|
|
25
|
+
* Every closure path is validated inside `boundary`, including paths belonging
|
|
26
|
+
* to phases other than the one a caller is about to derive.
|
|
27
|
+
*/
|
|
28
|
+
export async function loadPinInputsFile(pipelineDir, boundary) {
|
|
29
|
+
const inspected = await inspectPinInputsFile(pipelineDir, boundary);
|
|
30
|
+
if (inspected.issue !== undefined) {
|
|
31
|
+
throw inspected.issue;
|
|
32
|
+
}
|
|
33
|
+
if (inspected.path === undefined || inspected.file === undefined) {
|
|
34
|
+
return {};
|
|
35
|
+
}
|
|
36
|
+
return { path: inspected.path, file: inspected.file };
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Reads the complete sidecar structure and inspects every member boundary.
|
|
40
|
+
*
|
|
41
|
+
* Unlike {@link loadPinInputsFile}, a member boundary failure is returned with
|
|
42
|
+
* every independently valid resolved member. Structural failures still throw
|
|
43
|
+
* because no trustworthy sidecar member list can be recovered; closure
|
|
44
|
+
* inspection may separately recover inline paths for conservative protection.
|
|
45
|
+
*/
|
|
46
|
+
export async function inspectPinInputsFile(pipelineDir, boundary) {
|
|
47
|
+
const loaded = await readPinInputsFile(pipelineDir);
|
|
48
|
+
const resolvedClosures = Object.create(null);
|
|
49
|
+
if (loaded.file === undefined) {
|
|
50
|
+
return { resolvedClosures };
|
|
51
|
+
}
|
|
52
|
+
let issue;
|
|
53
|
+
for (const [phase, closure] of Object.entries(loaded.file.closures)) {
|
|
54
|
+
const resolved = [];
|
|
55
|
+
resolvedClosures[phase] = resolved;
|
|
56
|
+
for (let index = 0; index < closure.length; index++) {
|
|
57
|
+
try {
|
|
58
|
+
resolved[index] = resolvePinPath(pipelineDir, boundary, closure[index], `${loaded.path}.closures.${phase}[${index}]`);
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
if (!(error instanceof PinError))
|
|
62
|
+
throw error;
|
|
63
|
+
issue ??= error;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
...loaded,
|
|
69
|
+
resolvedClosures,
|
|
70
|
+
...(issue === undefined ? {} : { issue }),
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/** Reads and structurally validates the sidecar without resolving members. */
|
|
74
|
+
async function readPinInputsFile(pipelineDir) {
|
|
75
|
+
const path = join(pipelineDir, PIN_INPUTS_FILE);
|
|
76
|
+
let info;
|
|
77
|
+
try {
|
|
78
|
+
info = await lstat(path);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
if (errorCode(error) === 'ENOENT')
|
|
82
|
+
return {};
|
|
83
|
+
throw new PinError('pin-invalid', `${path} cannot be inspected: ${errorCode(error)}`);
|
|
84
|
+
}
|
|
85
|
+
if (!info.isFile() || info.isSymbolicLink()) {
|
|
86
|
+
throw new PinError('pin-invalid', `${path} must be a regular non-symbolic-link file`);
|
|
87
|
+
}
|
|
88
|
+
let source;
|
|
89
|
+
try {
|
|
90
|
+
source = await readFile(path, 'utf8');
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
throw new PinError('pin-invalid', `${path} cannot be read: ${errorCode(error)}`);
|
|
94
|
+
}
|
|
95
|
+
const file = parsePinInputsFile(source, path);
|
|
96
|
+
return { path, file };
|
|
97
|
+
}
|
|
98
|
+
/** Parses strict sidecar JSON and validates its complete field shape. */
|
|
99
|
+
export function parsePinInputsFile(source, path = PIN_INPUTS_FILE) {
|
|
100
|
+
let raw;
|
|
101
|
+
try {
|
|
102
|
+
raw = JSON.parse(source);
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
throw new PinError('pin-parse', `${path} is not valid JSON: ${messageOf(error)}`);
|
|
106
|
+
}
|
|
107
|
+
const input = requireObject(raw, path);
|
|
108
|
+
rejectUnknownKeys(input, new Set(['schema', 'closures']), path);
|
|
109
|
+
const schema = requireString(input.schema, `${path}.schema`);
|
|
110
|
+
if (schema !== PIN_INPUTS_SCHEMA) {
|
|
111
|
+
throw invalid(`${path}.schema`, `must be "${PIN_INPUTS_SCHEMA}"`);
|
|
112
|
+
}
|
|
113
|
+
return {
|
|
114
|
+
schema,
|
|
115
|
+
closures: normalizeClosures(input.closures, `${path}.closures`),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
function normalizeClosures(value, path) {
|
|
119
|
+
const input = requireObject(value, path);
|
|
120
|
+
const closures = Object.create(null);
|
|
121
|
+
for (const [phase, rawClosure] of Object.entries(input)) {
|
|
122
|
+
if (phase !== 'link' && !isPortablePhaseName(phase)) {
|
|
123
|
+
throw invalid(`${path}.${phase}`, 'key must be "link" or a portable phase/pass name');
|
|
124
|
+
}
|
|
125
|
+
const values = requireArray(rawClosure, `${path}.${phase}`);
|
|
126
|
+
const closure = [];
|
|
127
|
+
const seen = new Set();
|
|
128
|
+
for (let index = 0; index < values.length; index++) {
|
|
129
|
+
const item = `${path}.${phase}[${index}]`;
|
|
130
|
+
const declared = requirePortablePath(values[index], item);
|
|
131
|
+
if (seen.has(declared)) {
|
|
132
|
+
throw invalid(item, `duplicates closure path "${declared}"`);
|
|
133
|
+
}
|
|
134
|
+
seen.add(declared);
|
|
135
|
+
closure.push(declared);
|
|
136
|
+
}
|
|
137
|
+
closures[phase] = closure;
|
|
138
|
+
}
|
|
139
|
+
return closures;
|
|
140
|
+
}
|
|
141
|
+
function requireObject(value, path) {
|
|
142
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value)) {
|
|
143
|
+
throw invalid(path, 'must be an object');
|
|
144
|
+
}
|
|
145
|
+
return value;
|
|
146
|
+
}
|
|
147
|
+
function requireArray(value, path) {
|
|
148
|
+
if (!Array.isArray(value)) {
|
|
149
|
+
throw invalid(path, 'must be an array');
|
|
150
|
+
}
|
|
151
|
+
return value;
|
|
152
|
+
}
|
|
153
|
+
function requireString(value, path) {
|
|
154
|
+
if (typeof value !== 'string' || value.length === 0) {
|
|
155
|
+
throw invalid(path, 'must be a non-empty string');
|
|
156
|
+
}
|
|
157
|
+
return value;
|
|
158
|
+
}
|
|
159
|
+
function requirePortablePath(value, path) {
|
|
160
|
+
const result = requireString(value, path);
|
|
161
|
+
if (result.includes('\\') ||
|
|
162
|
+
result.includes('\0') ||
|
|
163
|
+
result.startsWith('/') ||
|
|
164
|
+
/^[a-zA-Z]:/.test(result)) {
|
|
165
|
+
throw invalid(path, 'must be a non-empty portable relative POSIX path');
|
|
166
|
+
}
|
|
167
|
+
return result;
|
|
168
|
+
}
|
|
169
|
+
function rejectUnknownKeys(value, allowed, path) {
|
|
170
|
+
for (const key of Object.keys(value)) {
|
|
171
|
+
if (!allowed.has(key)) {
|
|
172
|
+
throw invalid(`${path}.${key}`, 'is an unknown field');
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
function invalid(field, detail) {
|
|
177
|
+
return new PinError('pin-invalid', `${field} ${detail}`);
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=pin-inputs.js.map
|