@sublang/slc 0.5.0 → 0.7.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 +10 -5
- package/dist/app.d.ts +20 -20
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +44 -31
- 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 +9 -2
- package/dist/cligent-agent.d.ts.map +1 -1
- package/dist/cligent-agent.js +6 -5
- package/dist/cligent-agent.js.map +1 -1
- package/dist/compiled-execution.d.ts +44 -0
- package/dist/compiled-execution.d.ts.map +1 -0
- package/dist/compiled-execution.js +184 -0
- package/dist/compiled-execution.js.map +1 -0
- package/dist/compiled-executor.d.ts +16 -6
- package/dist/compiled-executor.d.ts.map +1 -1
- package/dist/compiled-executor.js +182 -35
- package/dist/compiled-executor.js.map +1 -1
- package/dist/config-file.d.ts +9 -6
- package/dist/config-file.d.ts.map +1 -1
- package/dist/config-file.js +27 -9
- package/dist/config-file.js.map +1 -1
- package/dist/config.d.ts +77 -24
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +128 -52
- 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/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 +13 -6
- package/dist/phase-runner.d.ts.map +1 -1
- package/dist/phase-runner.js +12 -10
- package/dist/phase-runner.js.map +1 -1
- 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 +24 -10
- 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 +49 -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 +2 -2
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +218 -81
- package/dist/runner.js.map +1 -1
- package/dist/runtime-contract.d.ts +17 -0
- package/dist/runtime-contract.d.ts.map +1 -0
- package/dist/runtime-contract.js +114 -0
- package/dist/runtime-contract.js.map +1 -0
- package/dist/slc.config.template.yaml +7 -2
- 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 +153 -15
- package/dist/verify.d.ts.map +1 -1
- package/dist/verify.js +707 -59
- package/dist/verify.js.map +1 -1
- package/package.json +3 -3
|
@@ -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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pin-inputs.js","sourceRoot":"","sources":["../src/pin-inputs.ts"],"names":[],"mappings":"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"}
|
package/dist/pin-paths.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Resolves a relative POSIX `relPath` against `pipelineDir`, requiring it to stay
|
|
3
|
-
* inside `boundary` (also a relative POSIX path from `pipelineDir`) (
|
|
3
|
+
* inside `boundary` (also a relative POSIX path from `pipelineDir`) (pinning-2, pinning-5).
|
|
4
4
|
*
|
|
5
5
|
* @returns the resolved absolute host path.
|
|
6
6
|
* @throws {PinError} (`pin-invalid`) when the recorded `boundary` is absolute
|
package/dist/pin-paths.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
// SPDX-FileCopyrightText: 2026 SubLang International <https://sublang.ai>
|
|
3
3
|
/**
|
|
4
|
-
* Pin path-boundary resolution for the pin-currency validator (
|
|
4
|
+
* Pin path-boundary resolution for the pin-currency validator (pinning-2, pinning-5;
|
|
5
5
|
* DR-007).
|
|
6
6
|
*
|
|
7
7
|
* Every pin path is a relative POSIX-style path resolved from the pipeline
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* pipeline directory); every local pin path must resolve inside that boundary,
|
|
11
11
|
* so `..` is permitted only when the recorded boundary is wide enough to contain
|
|
12
12
|
* the result. A violation is a {@link PinError} naming the offending field, which
|
|
13
|
-
* the currency engine maps to a malformed verdict. See specs/
|
|
13
|
+
* the currency engine maps to a malformed verdict. See specs/packages/pinning.md.
|
|
14
14
|
*/
|
|
15
15
|
import { realpathSync } from 'node:fs';
|
|
16
16
|
import { basename, dirname, isAbsolute, relative, resolve, sep, } from 'node:path';
|
|
@@ -19,7 +19,7 @@ import { errorCode, isAbsentPathError } from './errors.js';
|
|
|
19
19
|
import { PinError } from './pins.js';
|
|
20
20
|
/**
|
|
21
21
|
* Resolves a relative POSIX `relPath` against `pipelineDir`, requiring it to stay
|
|
22
|
-
* inside `boundary` (also a relative POSIX path from `pipelineDir`) (
|
|
22
|
+
* inside `boundary` (also a relative POSIX path from `pipelineDir`) (pinning-2, pinning-5).
|
|
23
23
|
*
|
|
24
24
|
* @returns the resolved absolute host path.
|
|
25
25
|
* @throws {PinError} (`pin-invalid`) when the recorded `boundary` is absolute
|
|
@@ -69,7 +69,7 @@ function canonicalProspectivePath(path, field) {
|
|
|
69
69
|
cursor = parent;
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
-
/** Rejects an absolute (POSIX or Windows) path, naming `field` (
|
|
72
|
+
/** Rejects an absolute (POSIX or Windows) path, naming `field` (pinning-5). */
|
|
73
73
|
function requireRelative(path, field) {
|
|
74
74
|
if (path === '' || path.includes('\\') || path.includes('\0')) {
|
|
75
75
|
throw new PinError('pin-invalid', `${field} must be a non-empty portable POSIX path`);
|
package/dist/pin-paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pin-paths.js","sourceRoot":"","sources":["../src/pin-paths.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,0EAA0E;AAE1E;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EACL,QAAQ,EACR,OAAO,EACP,UAAU,EACV,QAAQ,EACR,OAAO,EACP,GAAG,GACJ,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAC5B,WAAmB,EACnB,QAAgB,EAChB,OAAe,EACf,KAAa;IAEb,eAAe,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IAC/C,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChC,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,QAAQ,CAChB,aAAa,EACb,GAAG,KAAK,KAAK,OAAO,6BAA6B,CAClD,CAAC;IACJ,CAAC;IACD,2EAA2E;IAC3E,oEAAoE;IACpE,sEAAsE;IACtE,MAAM,YAAY,GAAG,wBAAwB,CAC3C,YAAY,EACZ,mBAAmB,CACpB,CAAC;IACF,MAAM,YAAY,GAAG,wBAAwB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC/D,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,QAAQ,CAChB,aAAa,EACb,GAAG,KAAK,KAAK,OAAO,sCAAsC,CAC3D,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,SAAS,wBAAwB,CAAC,IAAY,EAAE,KAAa;IAC3D,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,QAAQ,CAChB,aAAa,EACb,GAAG,KAAK,+BAA+B,SAAS,CAAC,KAAK,CAAC,EAAE,CAC1D,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,QAAQ,CAChB,aAAa,EACb,GAAG,KAAK,kDAAkD,CAC3D,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9B,MAAM,GAAG,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"pin-paths.js","sourceRoot":"","sources":["../src/pin-paths.ts"],"names":[],"mappings":"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"}
|
package/dist/pins.d.ts
CHANGED
|
@@ -64,21 +64,21 @@ export interface LoadedPins {
|
|
|
64
64
|
path?: string;
|
|
65
65
|
file?: PinFile;
|
|
66
66
|
}
|
|
67
|
-
/** Machine-readable reason a pin file was rejected (
|
|
67
|
+
/** Machine-readable reason a pin file was rejected (pinning-5). */
|
|
68
68
|
export type PinErrorCode = 'pin-parse' | 'pin-invalid';
|
|
69
|
-
/** Raised when `slc.pins.json` is not valid JSON or violates the pin schema (
|
|
69
|
+
/** Raised when `slc.pins.json` is not valid JSON or violates the pin schema (pinning-5). */
|
|
70
70
|
export declare class PinError extends Error {
|
|
71
71
|
readonly code: PinErrorCode;
|
|
72
72
|
constructor(code: PinErrorCode, message: string);
|
|
73
73
|
}
|
|
74
74
|
/**
|
|
75
|
-
* Loads and validates `<pipelineDir>/slc.pins.json` (
|
|
75
|
+
* Loads and validates `<pipelineDir>/slc.pins.json` (pinning-1, pinning-5).
|
|
76
76
|
*
|
|
77
77
|
* @returns `{ path, file }` when present and valid, or `{}` (no pins) when absent.
|
|
78
78
|
* @throws {PinError} when the file is not valid JSON (`pin-parse`) or violates the
|
|
79
79
|
* schema (`pin-invalid`), with a diagnostic naming the offending field.
|
|
80
80
|
*/
|
|
81
81
|
export declare function loadPinFile(pipelineDir: string): Promise<LoadedPins>;
|
|
82
|
-
/** Parses and structurally validates the text of a pin file into a {@link PinFile} (
|
|
82
|
+
/** Parses and structurally validates the text of a pin file into a {@link PinFile} (pinning-5). */
|
|
83
83
|
export declare function parsePinFile(source: string, path?: string): PinFile;
|
|
84
84
|
//# sourceMappingURL=pins.d.ts.map
|
package/dist/pins.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pins.d.ts","sourceRoot":"","sources":["../src/pins.ts"],"names":[],"mappings":"AAyBA,qEAAqE;AACrE,eAAO,MAAM,SAAS,kBAAkB,CAAC;AACzC,8DAA8D;AAC9D,eAAO,MAAM,UAAU,wBAAwB,CAAC;AAChD,sDAAsD;AACtD,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAI3C,yEAAyE;AACzE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,sFAAsF;AACtF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,iGAAiG;AACjG,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,6EAA6E;AAC7E,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,4FAA4F;AAC5F,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEvD,sFAAsF;AACtF,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,6CAA6C;AAC7C,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,UAAU,CAAC;IACrB,6FAA6F;IAC7F,cAAc,EAAE,UAAU,CAAC;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,EAAE,gBAAgB,EAAE,CAAC;IACnC,cAAc,EAAE,gBAAgB,EAAE,CAAC;IACnC,uEAAuE;IACvE,mBAAmB,EAAE,oBAAoB,EAAE,CAAC;IAC5C,UAAU,EAAE,aAAa,CAAC;IAC1B,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED,qFAAqF;AACrF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,yCAAyC;AACzC,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,eAAe,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACjC;AAED,4FAA4F;AAC5F,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED
|
|
1
|
+
{"version":3,"file":"pins.d.ts","sourceRoot":"","sources":["../src/pins.ts"],"names":[],"mappings":"AAyBA,qEAAqE;AACrE,eAAO,MAAM,SAAS,kBAAkB,CAAC;AACzC,8DAA8D;AAC9D,eAAO,MAAM,UAAU,wBAAwB,CAAC;AAChD,sDAAsD;AACtD,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAI3C,yEAAyE;AACzE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,sFAAsF;AACtF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,iGAAiG;AACjG,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,6EAA6E;AAC7E,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,4FAA4F;AAC5F,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEvD,sFAAsF;AACtF,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,6CAA6C;AAC7C,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,UAAU,CAAC;IACrB,6FAA6F;IAC7F,cAAc,EAAE,UAAU,CAAC;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,EAAE,gBAAgB,EAAE,CAAC;IACnC,cAAc,EAAE,gBAAgB,EAAE,CAAC;IACnC,uEAAuE;IACvE,mBAAmB,EAAE,oBAAoB,EAAE,CAAC;IAC5C,UAAU,EAAE,aAAa,CAAC;IAC1B,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED,qFAAqF;AACrF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,yCAAyC;AACzC,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,eAAe,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACjC;AAED,4FAA4F;AAC5F,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,mEAAmE;AACnE,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,aAAa,CAAC;AAEvD,4FAA4F;AAC5F,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;gBAEhB,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM;CAKhD;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAoB1E;AAED,mGAAmG;AACnG,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAkB,GACvB,OAAO,CAWT"}
|
package/dist/pins.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
// SPDX-FileCopyrightText: 2026 SubLang International <https://sublang.ai>
|
|
3
3
|
/**
|
|
4
|
-
* Pin-file model and strict parser for the pin-currency validator (
|
|
4
|
+
* Pin-file model and strict parser for the pin-currency validator (pinning-1, pinning-5;
|
|
5
5
|
* DR-007).
|
|
6
6
|
*
|
|
7
7
|
* Loads a pipeline's committed `slc.pins.json` and structurally validates it into
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* {@link PinError} naming the offending field. This module performs structural
|
|
13
13
|
* validation only: it does not hash inputs, resolve the path boundary, derive the
|
|
14
14
|
* semantic closure, or judge currency — those are later validator stages. See
|
|
15
|
-
* specs/
|
|
15
|
+
* specs/packages/pinning.md.
|
|
16
16
|
*/
|
|
17
17
|
import { lstat, readFile } from 'node:fs/promises';
|
|
18
18
|
import { join } from 'node:path';
|
|
@@ -26,7 +26,7 @@ export const PIN_SCHEMA = 'sublang.slc.pins.v2';
|
|
|
26
26
|
/** The only supported pin hash algorithm (DR-007). */
|
|
27
27
|
export const PIN_HASH_ALGORITHM = 'sha256';
|
|
28
28
|
const LINK_TARGET_KINDS = new Set(['file', 'directory', 'package']);
|
|
29
|
-
/** Raised when `slc.pins.json` is not valid JSON or violates the pin schema (
|
|
29
|
+
/** Raised when `slc.pins.json` is not valid JSON or violates the pin schema (pinning-5). */
|
|
30
30
|
export class PinError extends Error {
|
|
31
31
|
code;
|
|
32
32
|
constructor(code, message) {
|
|
@@ -36,7 +36,7 @@ export class PinError extends Error {
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
|
-
* Loads and validates `<pipelineDir>/slc.pins.json` (
|
|
39
|
+
* Loads and validates `<pipelineDir>/slc.pins.json` (pinning-1, pinning-5).
|
|
40
40
|
*
|
|
41
41
|
* @returns `{ path, file }` when present and valid, or `{}` (no pins) when absent.
|
|
42
42
|
* @throws {PinError} when the file is not valid JSON (`pin-parse`) or violates the
|
|
@@ -59,7 +59,7 @@ export async function loadPinFile(pipelineDir) {
|
|
|
59
59
|
const source = await readFile(path, 'utf8');
|
|
60
60
|
return { path, file: parsePinFile(source, path) };
|
|
61
61
|
}
|
|
62
|
-
/** Parses and structurally validates the text of a pin file into a {@link PinFile} (
|
|
62
|
+
/** Parses and structurally validates the text of a pin file into a {@link PinFile} (pinning-5). */
|
|
63
63
|
export function parsePinFile(source, path = PINS_FILE) {
|
|
64
64
|
let raw;
|
|
65
65
|
try {
|
package/dist/pins.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pins.js","sourceRoot":"","sources":["../src/pins.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,0EAA0E;AAE1E;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,qEAAqE;AACrE,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC;AACzC,8DAA8D;AAC9D,MAAM,CAAC,MAAM,UAAU,GAAG,qBAAqB,CAAC;AAChD,sDAAsD;AACtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAE3C,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;AA2EpE,
|
|
1
|
+
{"version":3,"file":"pins.js","sourceRoot":"","sources":["../src/pins.ts"],"names":[],"mappings":"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"}
|
package/dist/pipeline.d.ts
CHANGED
|
@@ -26,14 +26,14 @@ export declare class PipelineError extends Error {
|
|
|
26
26
|
constructor(code: PipelineErrorCode, message: string);
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
|
-
* Resolves a pipeline reference to exactly one directory (
|
|
29
|
+
* Resolves a pipeline reference to exactly one directory (pipeline-16).
|
|
30
30
|
*
|
|
31
31
|
* @throws {PipelineError} when the reference resolves to zero (`unresolved`) or
|
|
32
32
|
* more than one (`ambiguous`) directory.
|
|
33
33
|
*/
|
|
34
34
|
export declare function resolvePipeline(reference: string, resolver: PipelineResolver): Promise<string>;
|
|
35
35
|
/**
|
|
36
|
-
* Lists the `.md` files directly inside a resolved pipeline directory (
|
|
36
|
+
* Lists the `.md` files directly inside a resolved pipeline directory (pipeline-17).
|
|
37
37
|
*
|
|
38
38
|
* Subdirectories are not descended into, and `link.md` is returned separately as
|
|
39
39
|
* the reserved link phase rather than as an ordinary phase file.
|
|
@@ -44,15 +44,15 @@ export declare function discoverPhaseFiles(dir: string): Promise<{
|
|
|
44
44
|
}>;
|
|
45
45
|
/**
|
|
46
46
|
* Infers the single linear phase order by chaining each phase's target format to
|
|
47
|
-
* the next phase's source format (
|
|
47
|
+
* the next phase's source format (pipeline-4).
|
|
48
48
|
*
|
|
49
49
|
* @throws {PipelineError} when the chain is incomplete, branches, or cycles
|
|
50
|
-
* (
|
|
50
|
+
* (pipeline-5).
|
|
51
51
|
*/
|
|
52
52
|
export declare function inferChain(phases: readonly Phase[]): Phase[];
|
|
53
53
|
/**
|
|
54
54
|
* Discovers, loads, and orders the ordinary phases of a pipeline directory,
|
|
55
|
-
* validating extension consistency (
|
|
55
|
+
* validating extension consistency (pipeline-3) and chain shape (pipeline-4, pipeline-5).
|
|
56
56
|
* Format-preserving pass phases are split out of chain inference (DR-013) and
|
|
57
57
|
* returned sorted by name. Names cannot collide: every phase — chain or pass —
|
|
58
58
|
* is named by its unique filename, and `link.md` is reserved before loading.
|
package/dist/pipeline.js
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
/**
|
|
4
4
|
* Pipeline resolution, phase discovery, and chain inference (DR-001).
|
|
5
5
|
*
|
|
6
|
-
* Implements
|
|
7
|
-
* directory),
|
|
8
|
-
* reserving `link.md`),
|
|
9
|
-
*
|
|
10
|
-
* specs/
|
|
6
|
+
* Implements pipeline-16 (refuse a reference that resolves to other than one
|
|
7
|
+
* directory), pipeline-17 (discover phase files directly in a pipeline directory,
|
|
8
|
+
* reserving `link.md`), pipeline-4 (infer the single linear phase order), and
|
|
9
|
+
* pipeline-5 (refuse incomplete, branching, or cyclic chains). See
|
|
10
|
+
* specs/packages/pipeline.md.
|
|
11
11
|
*/
|
|
12
12
|
import { readdir } from 'node:fs/promises';
|
|
13
13
|
import { join } from 'node:path';
|
|
@@ -22,7 +22,7 @@ export class PipelineError extends Error {
|
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
|
-
* Resolves a pipeline reference to exactly one directory (
|
|
25
|
+
* Resolves a pipeline reference to exactly one directory (pipeline-16).
|
|
26
26
|
*
|
|
27
27
|
* @throws {PipelineError} when the reference resolves to zero (`unresolved`) or
|
|
28
28
|
* more than one (`ambiguous`) directory.
|
|
@@ -38,7 +38,7 @@ export async function resolvePipeline(reference, resolver) {
|
|
|
38
38
|
return candidates[0];
|
|
39
39
|
}
|
|
40
40
|
/**
|
|
41
|
-
* Lists the `.md` files directly inside a resolved pipeline directory (
|
|
41
|
+
* Lists the `.md` files directly inside a resolved pipeline directory (pipeline-17).
|
|
42
42
|
*
|
|
43
43
|
* Subdirectories are not descended into, and `link.md` is returned separately as
|
|
44
44
|
* the reserved link phase rather than as an ordinary phase file.
|
|
@@ -63,10 +63,10 @@ export async function discoverPhaseFiles(dir) {
|
|
|
63
63
|
}
|
|
64
64
|
/**
|
|
65
65
|
* Infers the single linear phase order by chaining each phase's target format to
|
|
66
|
-
* the next phase's source format (
|
|
66
|
+
* the next phase's source format (pipeline-4).
|
|
67
67
|
*
|
|
68
68
|
* @throws {PipelineError} when the chain is incomplete, branches, or cycles
|
|
69
|
-
* (
|
|
69
|
+
* (pipeline-5).
|
|
70
70
|
*/
|
|
71
71
|
export function inferChain(phases) {
|
|
72
72
|
if (phases.length === 0) {
|
|
@@ -106,7 +106,7 @@ export function inferChain(phases) {
|
|
|
106
106
|
}
|
|
107
107
|
/**
|
|
108
108
|
* Discovers, loads, and orders the ordinary phases of a pipeline directory,
|
|
109
|
-
* validating extension consistency (
|
|
109
|
+
* validating extension consistency (pipeline-3) and chain shape (pipeline-4, pipeline-5).
|
|
110
110
|
* Format-preserving pass phases are split out of chain inference (DR-013) and
|
|
111
111
|
* returned sorted by name. Names cannot collide: every phase — chain or pass —
|
|
112
112
|
* is named by its unique filename, and `link.md` is reserved before loading.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Compatibility types for Playbook's evolving
|
|
2
|
+
* Compatibility types for Playbook's evolving runtime contracts.
|
|
3
3
|
*
|
|
4
4
|
* The installed `@sublang/playbook` now supplies the composed six-port
|
|
5
5
|
* contract, so the retired 0.9 profile is frozen here as local structural
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* compiled for, independent of how the shared contract module evolves
|
|
8
8
|
* (DR-010, DR-011).
|
|
9
9
|
*/
|
|
10
|
+
import type { HostCapabilities } from '@sublang/playbook/host-capabilities';
|
|
10
11
|
/** The frozen 0.9 player result (DR-010 legacy profile). */
|
|
11
12
|
export interface LegacyPlayerResult {
|
|
12
13
|
status: 'ok' | 'aborted' | 'error';
|
|
@@ -53,7 +54,7 @@ export interface CaptainResult {
|
|
|
53
54
|
finalText?: string;
|
|
54
55
|
error?: string;
|
|
55
56
|
}
|
|
56
|
-
export type RuntimeContractProfile = 'legacy' | 'session-v1' | 'composed-v2';
|
|
57
|
+
export type RuntimeContractProfile = 'legacy' | 'session-v1' | 'composed-v2' | 'composed-v3';
|
|
57
58
|
export type JsonValue = null | boolean | number | string | readonly JsonValue[] | {
|
|
58
59
|
readonly [key: string]: JsonValue;
|
|
59
60
|
};
|
|
@@ -125,6 +126,19 @@ export type PlaybookRunResult = {
|
|
|
125
126
|
state: PlaybookState;
|
|
126
127
|
pendingCall: PlaybookPendingCall;
|
|
127
128
|
};
|
|
129
|
+
/** The schema-3 structured result extends v2 only at exact variant seams. */
|
|
130
|
+
export type Schema3PlaybookRunResult = Exclude<PlaybookRunResult, {
|
|
131
|
+
outcome: 'terminal';
|
|
132
|
+
}> | {
|
|
133
|
+
outcome: 'terminal';
|
|
134
|
+
state: PlaybookState;
|
|
135
|
+
stateDescription?: string;
|
|
136
|
+
output?: JsonValue;
|
|
137
|
+
} | {
|
|
138
|
+
outcome: 'unresolved-effect';
|
|
139
|
+
state: PlaybookState;
|
|
140
|
+
};
|
|
141
|
+
export type CompatiblePlaybookRunResult = PlaybookRunResult | Schema3PlaybookRunResult;
|
|
128
142
|
/** The six source-owned ports, additive over the locked four-port contract. */
|
|
129
143
|
export interface CompatiblePlaybookPorts extends LegacyPlaybookPorts {
|
|
130
144
|
callPlayer(playerId: string, prompt: string, signal: AbortSignal, options?: PlayerCallOptions): Promise<PlayerResult>;
|
|
@@ -172,12 +186,12 @@ export interface SessionPlaybookRuntime {
|
|
|
172
186
|
handleBossInput(turn: {
|
|
173
187
|
text: string;
|
|
174
188
|
signal: AbortSignal;
|
|
175
|
-
}): Promise<
|
|
189
|
+
}): Promise<CompatiblePlaybookRunResult | void>;
|
|
176
190
|
resumePlaybookCall?(input: {
|
|
177
191
|
callId: string;
|
|
178
192
|
result: PlaybookCallResult;
|
|
179
193
|
signal: AbortSignal;
|
|
180
|
-
}): Promise<
|
|
194
|
+
}): Promise<CompatiblePlaybookRunResult>;
|
|
181
195
|
dispose(): Promise<void>;
|
|
182
196
|
}
|
|
183
197
|
export interface SessionV1PlaybookRuntime {
|
|
@@ -189,6 +203,36 @@ export interface SessionV1PlaybookRuntime {
|
|
|
189
203
|
dispose(): Promise<void>;
|
|
190
204
|
}
|
|
191
205
|
export type CompatiblePlaybookRuntime = LegacyPlaybookRuntime | SessionV1PlaybookRuntime | SessionPlaybookRuntime;
|
|
192
|
-
|
|
206
|
+
/** Exact shared-factory compatibility required by the schema-3 phase host. */
|
|
207
|
+
export interface ComposedV3FactoryCompat {
|
|
208
|
+
readonly artifactSchema: 3;
|
|
209
|
+
readonly runtimeAbi: 1;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* The live capabilities SLC's roleless phase host supplies: the installed
|
|
213
|
+
* engine's published `{ repository, effectLedger }` shape (DR-046), with no
|
|
214
|
+
* authority capability (DR-024). The host constructs them fail-closed because
|
|
215
|
+
* it runs no governed state.
|
|
216
|
+
*/
|
|
217
|
+
export type ComposedV3PhaseHostCapabilities = HostCapabilities;
|
|
218
|
+
/**
|
|
219
|
+
* The configured options SLC's roleless host may supply: the exact empty
|
|
220
|
+
* record, or the single option `definition` — the exact text of the
|
|
221
|
+
* definition file the request names — for an artifact whose options contract
|
|
222
|
+
* requires it (DR-028).
|
|
223
|
+
*/
|
|
224
|
+
export type ComposedV3ConfiguredOptions = Record<string, never> | {
|
|
225
|
+
readonly definition: string;
|
|
226
|
+
};
|
|
227
|
+
export interface ComposedV3FactoryInput {
|
|
228
|
+
configuredOptions: ComposedV3ConfiguredOptions;
|
|
229
|
+
hostCapabilities: ComposedV3PhaseHostCapabilities;
|
|
230
|
+
}
|
|
231
|
+
export type CompatiblePlaybookRuntimeFactory<Options = unknown> = ((options: Options) => CompatiblePlaybookRuntime) & {
|
|
232
|
+
readonly compat?: unknown;
|
|
233
|
+
};
|
|
193
234
|
export declare function isPlaybookRunResult(value: unknown): value is PlaybookRunResult;
|
|
235
|
+
export declare function isPlaybookRunResult(value: unknown, profile: 'composed-v2'): value is PlaybookRunResult;
|
|
236
|
+
export declare function isPlaybookRunResult(value: unknown, profile: 'composed-v3'): value is Schema3PlaybookRunResult;
|
|
237
|
+
export declare function isPlaybookRunResult(value: unknown, profile: 'composed-v2' | 'composed-v3'): value is CompatiblePlaybookRunResult;
|
|
194
238
|
//# sourceMappingURL=playbook-contract.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playbook-contract.d.ts","sourceRoot":"","sources":["../src/playbook-contract.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAEH,4DAA4D;AAC5D,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,iEAAiE;AACjE,MAAM,WAAW,mBAAmB;IAClC,UAAU,CACR,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/B,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChE,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,aAAa,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1E;AAED,8DAA8D;AAC9D,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,eAAe,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;CACxB;AAED,MAAM,WAAW,YAAa,SAAQ,kBAAkB;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,SAAS,GAAG,QAAQ,CAAC;IACjC,MAAM,EAAE,KAAK,CAAC;IACd;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"playbook-contract.d.ts","sourceRoot":"","sources":["../src/playbook-contract.ts"],"names":[],"mappings":"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"}
|