@sublang/slc 0.3.0 → 0.5.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 +102 -84
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +13 -5
- package/dist/app.js.map +1 -1
- package/dist/build-history.d.ts +74 -0
- package/dist/build-history.d.ts.map +1 -0
- package/dist/build-history.js +309 -0
- package/dist/build-history.js.map +1 -0
- package/dist/cli.js +2 -1
- package/dist/cli.js.map +1 -1
- package/dist/compiled-executor.d.ts +1 -1
- package/dist/compiled-executor.d.ts.map +1 -1
- package/dist/compiled-executor.js +10 -3
- package/dist/compiled-executor.js.map +1 -1
- package/dist/config-file.d.ts +4 -0
- package/dist/config-file.d.ts.map +1 -1
- package/dist/config-file.js +19 -8
- package/dist/config-file.js.map +1 -1
- package/dist/config.d.ts +6 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +65 -12
- package/dist/config.js.map +1 -1
- package/dist/errors.d.ts +14 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +28 -0
- package/dist/errors.js.map +1 -0
- package/dist/execution.d.ts +42 -0
- package/dist/execution.d.ts.map +1 -1
- package/dist/execution.js +224 -29
- package/dist/execution.js.map +1 -1
- package/dist/hash.d.ts +22 -0
- package/dist/hash.d.ts.map +1 -1
- package/dist/hash.js +47 -0
- package/dist/hash.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/interpreter.d.ts +1 -1
- package/dist/interpreter.d.ts.map +1 -1
- package/dist/interpreter.js +9 -0
- package/dist/interpreter.js.map +1 -1
- package/dist/invocation.d.ts +5 -1
- package/dist/invocation.d.ts.map +1 -1
- package/dist/invocation.js +14 -3
- package/dist/invocation.js.map +1 -1
- package/dist/line-diff.d.ts +7 -0
- package/dist/line-diff.d.ts.map +1 -0
- package/dist/line-diff.js +66 -0
- package/dist/line-diff.js.map +1 -0
- package/dist/phase.d.ts +2 -0
- package/dist/phase.d.ts.map +1 -1
- package/dist/phase.js +19 -3
- package/dist/phase.js.map +1 -1
- package/dist/pin-closure.d.ts +2 -2
- package/dist/pin-closure.d.ts.map +1 -1
- package/dist/pin-closure.js +4 -3
- package/dist/pin-closure.js.map +1 -1
- package/dist/pin-currency.d.ts +6 -2
- package/dist/pin-currency.d.ts.map +1 -1
- package/dist/pin-currency.js +24 -43
- package/dist/pin-currency.js.map +1 -1
- package/dist/pin-generate.d.ts.map +1 -1
- package/dist/pin-generate.js +1 -3
- package/dist/pin-generate.js.map +1 -1
- package/dist/pin-paths.d.ts.map +1 -1
- package/dist/pin-paths.js +2 -13
- package/dist/pin-paths.js.map +1 -1
- package/dist/pins.d.ts.map +1 -1
- package/dist/pins.js +5 -15
- package/dist/pins.js.map +1 -1
- package/dist/playbook-ports.d.ts +9 -0
- package/dist/playbook-ports.d.ts.map +1 -1
- package/dist/playbook-ports.js +10 -5
- package/dist/playbook-ports.js.map +1 -1
- package/dist/reviewing-agent.d.ts +18 -0
- package/dist/reviewing-agent.d.ts.map +1 -0
- package/dist/reviewing-agent.js +295 -0
- package/dist/reviewing-agent.js.map +1 -0
- package/dist/runner.d.ts +2 -0
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +628 -88
- package/dist/runner.js.map +1 -1
- package/dist/runtime-package.d.ts.map +1 -1
- package/dist/runtime-package.js +3 -11
- package/dist/runtime-package.js.map +1 -1
- package/dist/slc.config.template.yaml +6 -2
- package/dist/verify-coverage.d.ts.map +1 -1
- package/dist/verify-coverage.js +2 -0
- package/dist/verify-coverage.js.map +1 -1
- package/dist/verify-support.d.ts +7 -0
- package/dist/verify-support.d.ts.map +1 -1
- package/dist/verify-support.js +13 -6
- package/dist/verify-support.js.map +1 -1
- package/dist/verify.d.ts.map +1 -1
- package/dist/verify.js +2 -0
- package/dist/verify.js.map +1 -1
- package/package.json +1 -1
package/dist/hash.d.ts
CHANGED
|
@@ -11,4 +11,26 @@ export declare function hashBytes(bytes: Uint8Array): Hash;
|
|
|
11
11
|
export declare function hashFile(path: string): Promise<Hash>;
|
|
12
12
|
/** Reports whether a string is a well-formed `sha256:<64 lowercase hex>` hash (DR-007). */
|
|
13
13
|
export declare function isHash(value: string): value is Hash;
|
|
14
|
+
/**
|
|
15
|
+
* Orders two strings by their exact UTF-8 bytes (DR-007).
|
|
16
|
+
*
|
|
17
|
+
* This is the ordering every hashed tree record is sorted and validated by,
|
|
18
|
+
* so it belongs beside the hashes themselves: a second implementation that
|
|
19
|
+
* disagreed on one code point would silently change identities.
|
|
20
|
+
*/
|
|
21
|
+
export declare function compareUtf8(left: string, right: string): number;
|
|
22
|
+
/** One tree entry: its path, and its frozen serialized form. */
|
|
23
|
+
export interface TreeEntryRecord {
|
|
24
|
+
readonly path: string;
|
|
25
|
+
readonly serialized: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Serializes one tree entry as `[kind,path,identity]` (DR-007).
|
|
29
|
+
*
|
|
30
|
+
* Every tree identity — whatever walker produced its entries — is this exact
|
|
31
|
+
* encoding, so it is written once beside the hash it feeds.
|
|
32
|
+
*/
|
|
33
|
+
export declare function serializeTreeRecord(kind: 'file' | 'symlink', path: string, identity: string): string;
|
|
34
|
+
/** Hashes tree entries in UTF-8 path order, one LF between entries. */
|
|
35
|
+
export declare function hashTreeRecords(records: readonly TreeEntryRecord[]): Hash;
|
|
14
36
|
//# sourceMappingURL=hash.d.ts.map
|
package/dist/hash.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"AAkBA,sEAAsE;AACtE,MAAM,MAAM,IAAI,GAAG,UAAU,MAAM,EAAE,CAAC;AAItC,6FAA6F;AAC7F,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAEjD;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1D;AAED,2FAA2F;AAC3F,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,IAAI,CAEnD"}
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"AAkBA,sEAAsE;AACtE,MAAM,MAAM,IAAI,GAAG,UAAU,MAAM,EAAE,CAAC;AAItC,6FAA6F;AAC7F,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAEjD;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1D;AAED,2FAA2F;AAC3F,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,IAAI,CAEnD;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,gEAAgE;AAChE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAqBD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAED,uEAAuE;AACvE,wBAAgB,eAAe,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,GAAG,IAAI,CASzE"}
|
package/dist/hash.js
CHANGED
|
@@ -31,4 +31,51 @@ export async function hashFile(path) {
|
|
|
31
31
|
export function isHash(value) {
|
|
32
32
|
return HASH_PATTERN.test(value);
|
|
33
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Orders two strings by their exact UTF-8 bytes (DR-007).
|
|
36
|
+
*
|
|
37
|
+
* This is the ordering every hashed tree record is sorted and validated by,
|
|
38
|
+
* so it belongs beside the hashes themselves: a second implementation that
|
|
39
|
+
* disagreed on one code point would silently change identities.
|
|
40
|
+
*/
|
|
41
|
+
export function compareUtf8(left, right) {
|
|
42
|
+
return Buffer.compare(Buffer.from(left, 'utf8'), Buffer.from(right, 'utf8'));
|
|
43
|
+
}
|
|
44
|
+
function canonicalJsonString(value) {
|
|
45
|
+
let serialized = '"';
|
|
46
|
+
for (const character of value) {
|
|
47
|
+
const codePoint = character.codePointAt(0);
|
|
48
|
+
if (codePoint === undefined)
|
|
49
|
+
continue;
|
|
50
|
+
if (codePoint >= 0xd800 && codePoint <= 0xdfff) {
|
|
51
|
+
throw new Error('tree entry contains an unpaired Unicode surrogate');
|
|
52
|
+
}
|
|
53
|
+
if (character === '"' || character === '\\') {
|
|
54
|
+
serialized += `\\${character}`;
|
|
55
|
+
}
|
|
56
|
+
else if (codePoint <= 0x1f) {
|
|
57
|
+
serialized += `\\u${codePoint.toString(16).padStart(4, '0')}`;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
serialized += character;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return `${serialized}"`;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Serializes one tree entry as `[kind,path,identity]` (DR-007).
|
|
67
|
+
*
|
|
68
|
+
* Every tree identity — whatever walker produced its entries — is this exact
|
|
69
|
+
* encoding, so it is written once beside the hash it feeds.
|
|
70
|
+
*/
|
|
71
|
+
export function serializeTreeRecord(kind, path, identity) {
|
|
72
|
+
return `[${canonicalJsonString(kind)},${canonicalJsonString(path)},${canonicalJsonString(identity)}]`;
|
|
73
|
+
}
|
|
74
|
+
/** Hashes tree entries in UTF-8 path order, one LF between entries. */
|
|
75
|
+
export function hashTreeRecords(records) {
|
|
76
|
+
return hashBytes(new TextEncoder().encode([...records]
|
|
77
|
+
.sort((left, right) => compareUtf8(left.path, right.path))
|
|
78
|
+
.map((record) => record.serialized)
|
|
79
|
+
.join('\n')));
|
|
80
|
+
}
|
|
34
81
|
//# sourceMappingURL=hash.js.map
|
package/dist/hash.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,0EAA0E;AAE1E;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAK5C,MAAM,YAAY,GAAG,uBAAuB,CAAC;AAE7C,6FAA6F;AAC7F,MAAM,UAAU,SAAS,CAAC,KAAiB;IACzC,OAAO,UAAU,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAY;IACzC,OAAO,SAAS,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,MAAM,CAAC,KAAa;IAClC,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC"}
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,0EAA0E;AAE1E;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAK5C,MAAM,YAAY,GAAG,uBAAuB,CAAC;AAE7C,6FAA6F;AAC7F,MAAM,UAAU,SAAS,CAAC,KAAiB;IACzC,OAAO,UAAU,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAY;IACzC,OAAO,SAAS,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,MAAM,CAAC,KAAa;IAClC,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,KAAa;IACrD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAC/E,CAAC;AAQD,SAAS,mBAAmB,CAAC,KAAa;IACxC,IAAI,UAAU,GAAG,GAAG,CAAC;IACrB,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,SAAS,KAAK,SAAS;YAAE,SAAS;QACtC,IAAI,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YAC5C,UAAU,IAAI,KAAK,SAAS,EAAE,CAAC;QACjC,CAAC;aAAM,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YAC7B,UAAU,IAAI,MAAM,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,UAAU,IAAI,SAAS,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,GAAG,UAAU,GAAG,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAwB,EACxB,IAAY,EACZ,QAAgB;IAEhB,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC;AACxG,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,eAAe,CAAC,OAAmC;IACjE,OAAO,SAAS,CACd,IAAI,WAAW,EAAE,CAAC,MAAM,CACtB,CAAC,GAAG,OAAO,CAAC;SACT,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;SACzD,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;SAClC,IAAI,CAAC,IAAI,CAAC,CACd,CACF,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,0EAA0E;AAE1E;;;;;;GAMG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,0EAA0E;AAE1E;;;;;;GAMG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC"}
|
package/dist/interpreter.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ExecuteRequest, type PhaseExecutor } from './execution.js';
|
|
2
2
|
/** A single agent invocation: a prompt plus per-run configuration. */
|
|
3
3
|
export interface AgentRunRequest {
|
|
4
4
|
prompt: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interpreter.d.ts","sourceRoot":"","sources":["../src/interpreter.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"interpreter.d.ts","sourceRoot":"","sources":["../src/interpreter.ts"],"names":[],"mappings":"AAmBA,OAAO,EAEL,KAAK,cAAc,EAGnB,KAAK,aAAa,EACnB,MAAM,gBAAgB,CAAC;AAExB,sEAAsE;AACtE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACxB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,sDAAsD;AACtD,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,YAAY,CAAC;IAC3C,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wEAAwE;AACxE,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACxD;AAED,uFAAuF;AACvF,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,OAAO,EAAE,cAAc,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,MAAM,CAkDT;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B,GAAG,aAAa,CAoChB"}
|
package/dist/interpreter.js
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* specs/dev/phase-execution.md.
|
|
15
15
|
*/
|
|
16
16
|
import { readFile } from 'node:fs/promises';
|
|
17
|
+
import { updateContextLines, } from './execution.js';
|
|
17
18
|
/**
|
|
18
19
|
* Builds the agent-contract prompt for a phase from its definition and inputs
|
|
19
20
|
* (PHEXEC-11, PHEXEC-14, PHEXEC-15).
|
|
@@ -25,6 +26,11 @@ export function buildPhasePrompt(opts) {
|
|
|
25
26
|
? [
|
|
26
27
|
`source to read: ${request.source}`,
|
|
27
28
|
...(request.references ?? []).map((path) => `reference to consult (read-only): ${path}`),
|
|
29
|
+
...(request.update === undefined
|
|
30
|
+
? []
|
|
31
|
+
: [
|
|
32
|
+
`prior input to consult (read-only): ${request.update.priorInput}`,
|
|
33
|
+
]),
|
|
28
34
|
]
|
|
29
35
|
: [
|
|
30
36
|
`object artifacts to read, in order: ${request.objects.join(', ')}`,
|
|
@@ -53,6 +59,9 @@ export function buildPhasePrompt(opts) {
|
|
|
53
59
|
'- run only the deterministic tools or commands the definition calls for, and read only the content it cites or references;',
|
|
54
60
|
'- verify the produced artifact against the definition before finishing.',
|
|
55
61
|
'',
|
|
62
|
+
...(request.kind === 'compile' && request.update !== undefined
|
|
63
|
+
? [...updateContextLines(request.update, request.target), '']
|
|
64
|
+
: []),
|
|
56
65
|
'When done, reply with a concise summary of what you produced and any ambiguity you resolved.',
|
|
57
66
|
'If the inputs are malformed under the definition, or the definition is incompatible with them, do not guess: leave the artifact unwritten and reply with a line beginning "BLOCKED:" followed by the concrete reason(s).',
|
|
58
67
|
].join('\n');
|
package/dist/interpreter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interpreter.js","sourceRoot":"","sources":["../src/interpreter.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,0EAA0E;AAE1E;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"interpreter.js","sourceRoot":"","sources":["../src/interpreter.ts"],"names":[],"mappings":"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"}
|
package/dist/invocation.d.ts
CHANGED
|
@@ -21,6 +21,8 @@ export type Invocation = {
|
|
|
21
21
|
optimize: boolean;
|
|
22
22
|
noOptimize: boolean;
|
|
23
23
|
normalize: boolean;
|
|
24
|
+
/** Bypass reuse and update, then record fresh history (DR-021). */
|
|
25
|
+
rebuild?: true;
|
|
24
26
|
} | {
|
|
25
27
|
kind: 'phase';
|
|
26
28
|
pipeline: string;
|
|
@@ -37,6 +39,8 @@ export type Invocation = {
|
|
|
37
39
|
optimize: boolean;
|
|
38
40
|
noOptimize: boolean;
|
|
39
41
|
normalize: boolean;
|
|
42
|
+
/** Bypass reuse and update, then record fresh history (DR-021). */
|
|
43
|
+
rebuild?: true;
|
|
40
44
|
} | {
|
|
41
45
|
kind: 'link';
|
|
42
46
|
pipeline: string;
|
|
@@ -55,7 +59,7 @@ export declare class CliError extends Error {
|
|
|
55
59
|
/**
|
|
56
60
|
* Parses argv (without the node/script prefix) into a routed {@link Invocation}.
|
|
57
61
|
*
|
|
58
|
-
* Options (`-o`, `--link`, `--link-option`) may be interspersed with positionals;
|
|
62
|
+
* Options (`-o`, `--link`, `--link-option`, `--rebuild`) may be interspersed with positionals;
|
|
59
63
|
* positional roles are assigned by position alone (PIPE-12).
|
|
60
64
|
*
|
|
61
65
|
* @throws {CliError} when the grammar is violated.
|
package/dist/invocation.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invocation.d.ts","sourceRoot":"","sources":["../src/invocation.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAEH,wEAAwE;AACxE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,sEAAsE;AACtE,MAAM,MAAM,UAAU,GAClB;IACE,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"invocation.d.ts","sourceRoot":"","sources":["../src/invocation.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAEH,wEAAwE;AACxE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,sEAAsE;AACtE,MAAM,MAAM,UAAU,GAClB;IACE,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,GACD;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB,CAAC;AAEN,yDAAyD;AACzD,MAAM,MAAM,YAAY,GACpB,aAAa,GACb,UAAU,GACV,iBAAiB,GACjB,wBAAwB,GACxB,iBAAiB,GACjB,cAAc,GACd,qBAAqB,GACrB,gBAAgB,GAChB,kBAAkB,CAAC;AAEvB,8EAA8E;AAC9E,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;gBAEhB,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM;CAKhD;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CA2InE"}
|
package/dist/invocation.js
CHANGED
|
@@ -12,7 +12,7 @@ export class CliError extends Error {
|
|
|
12
12
|
/**
|
|
13
13
|
* Parses argv (without the node/script prefix) into a routed {@link Invocation}.
|
|
14
14
|
*
|
|
15
|
-
* Options (`-o`, `--link`, `--link-option`) may be interspersed with positionals;
|
|
15
|
+
* Options (`-o`, `--link`, `--link-option`, `--rebuild`) may be interspersed with positionals;
|
|
16
16
|
* positional roles are assigned by position alone (PIPE-12).
|
|
17
17
|
*
|
|
18
18
|
* @throws {CliError} when the grammar is violated.
|
|
@@ -24,6 +24,7 @@ export function parseInvocation(argv) {
|
|
|
24
24
|
let optimize = false;
|
|
25
25
|
let noOptimize = false;
|
|
26
26
|
let normalize = false;
|
|
27
|
+
let rebuild = false;
|
|
27
28
|
const options = [];
|
|
28
29
|
for (let i = 0; i < argv.length; i++) {
|
|
29
30
|
const arg = argv[i];
|
|
@@ -49,6 +50,11 @@ export function parseInvocation(argv) {
|
|
|
49
50
|
else if (arg === '--normalize') {
|
|
50
51
|
normalize = true;
|
|
51
52
|
}
|
|
53
|
+
else if (arg === '--rebuild') {
|
|
54
|
+
if (rebuild)
|
|
55
|
+
throw new CliError('duplicate-option', 'repeated --rebuild');
|
|
56
|
+
rebuild = true;
|
|
57
|
+
}
|
|
52
58
|
else if (arg.startsWith('-') && arg !== '-') {
|
|
53
59
|
throw new CliError('unknown-option', `unknown option "${arg}"`);
|
|
54
60
|
}
|
|
@@ -70,8 +76,11 @@ export function parseInvocation(argv) {
|
|
|
70
76
|
if (optimize && noOptimize) {
|
|
71
77
|
throw new CliError('duplicate-option', '-O/--optimize conflicts with --no-optimize');
|
|
72
78
|
}
|
|
73
|
-
if (phase !== null && (optimize || noOptimize || normalize)) {
|
|
74
|
-
throw new CliError('unexpected-flag', `${optimize ? '-O' : noOptimize ? '--no-optimize' : '--normalize'} is only valid for a full-pipeline invocation`);
|
|
79
|
+
if (phase !== null && (optimize || noOptimize || normalize || rebuild)) {
|
|
80
|
+
throw new CliError('unexpected-flag', `${optimize ? '-O' : noOptimize ? '--no-optimize' : normalize ? '--normalize' : '--rebuild'} is only valid for a full-pipeline invocation`);
|
|
81
|
+
}
|
|
82
|
+
if (rebuild && output !== null) {
|
|
83
|
+
throw new CliError('unexpected-flag', '--rebuild is not valid with -o');
|
|
75
84
|
}
|
|
76
85
|
if (phase === 'link') {
|
|
77
86
|
if (link !== null) {
|
|
@@ -112,6 +121,7 @@ export function parseInvocation(argv) {
|
|
|
112
121
|
optimize,
|
|
113
122
|
noOptimize,
|
|
114
123
|
normalize,
|
|
124
|
+
...(rebuild ? { rebuild: true } : {}),
|
|
115
125
|
};
|
|
116
126
|
}
|
|
117
127
|
if (options.length > 0) {
|
|
@@ -125,6 +135,7 @@ export function parseInvocation(argv) {
|
|
|
125
135
|
optimize,
|
|
126
136
|
noOptimize,
|
|
127
137
|
normalize,
|
|
138
|
+
...(rebuild ? { rebuild: true } : {}),
|
|
128
139
|
};
|
|
129
140
|
}
|
|
130
141
|
function takeValue(argv, index, flag) {
|
package/dist/invocation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invocation.js","sourceRoot":"","sources":["../src/invocation.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,0EAA0E;
|
|
1
|
+
{"version":3,"file":"invocation.js","sourceRoot":"","sources":["../src/invocation.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,0EAA0E;AAwE1E,8EAA8E;AAC9E,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,IAAI,CAAe;IAE5B,YAAY,IAAkB,EAAE,OAAe;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,IAAuB;IACrD,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,IAAI,IAAI,GAAkB,IAAI,CAAC;IAC/B,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,OAAO,GAAiB,EAAE,CAAC;IAEjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,IAAI,MAAM,KAAK,IAAI;gBACjB,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;YACxD,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,IAAI,KAAK,IAAI;gBACf,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;YAC5D,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;QACxC,CAAC;aAAM,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC;aAAM,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YAChD,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;aAAM,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YACnC,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;aAAM,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YACjC,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;aAAM,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAC/B,IAAI,OAAO;gBAAE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;YAC1E,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;YAC9C,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,mBAAmB,GAAG,GAAG,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,QAAQ,CAAC,aAAa,EAAE,4BAA4B,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACtD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QAC1C,MAAM,IAAI,QAAQ,CAAC,aAAa,EAAE,+BAA+B,IAAI,GAAG,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAElC,IAAI,QAAQ,IAAI,UAAU,EAAE,CAAC;QAC3B,MAAM,IAAI,QAAQ,CAChB,kBAAkB,EAClB,4CAA4C,CAC7C,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,UAAU,IAAI,SAAS,IAAI,OAAO,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,QAAQ,CAChB,iBAAiB,EACjB,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,+CAA+C,CAC3I,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAC/B,MAAM,IAAI,QAAQ,CAAC,iBAAiB,EAAE,gCAAgC,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,QAAQ,CAChB,iBAAiB,EACjB,6CAA6C,CAC9C,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,QAAQ,CAChB,UAAU,EACV,iDAAiD,CAClD,CAAC;QACJ,CAAC;QACD,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,QAAQ;YACR,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1B,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YACjC,MAAM;YACN,OAAO;SACR,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,QAAQ,CAChB,iBAAiB,EACjB,qDAAqD,CACtD,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,QAAQ,CAChB,wBAAwB,EACxB,qCAAqC,CACtC,CAAC;QACJ,CAAC;QACD,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC1B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IACrE,CAAC;IAED,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,QAAQ;YACR,MAAM;YACN,UAAU,EAAE,IAAI;YAChB,MAAM;YACN,OAAO;YACP,QAAQ;YACR,UAAU;YACV,SAAS;YACT,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/C,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,QAAQ,CAChB,wBAAwB,EACxB,+BAA+B,CAChC,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,QAAQ;QACR,MAAM;QACN,MAAM;QACN,QAAQ;QACR,UAAU;QACV,SAAS;QACT,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/C,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAChB,IAAuB,EACvB,KAAa,EACb,IAAY;IAEZ,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,IAAI,QAAQ,CAAC,cAAc,EAAE,qBAAqB,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACZ,MAAM,IAAI,QAAQ,CAChB,qBAAqB,EACrB,0CAA0C,KAAK,GAAG,CACnD,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAuB;IAClD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,QAAQ,CAChB,UAAU,EACV,sCAAsC,IAAI,CAAC,MAAM,EAAE,CACpD,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Renders one unified hunk around the changed middle. This is a hint, not a
|
|
3
|
+
* machine patch: identical text returns `''`, and oversized context returns
|
|
4
|
+
* `null` without changing Update-mode selection.
|
|
5
|
+
*/
|
|
6
|
+
export declare function unifiedLineDiff(prior: string, current: string): string | null;
|
|
7
|
+
//# sourceMappingURL=line-diff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"line-diff.d.ts","sourceRoot":"","sources":["../src/line-diff.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiE7E"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// SPDX-FileCopyrightText: 2026 SubLang International <https://sublang.ai>
|
|
3
|
+
/** A deliberately small, best-effort diff for agent update context. */
|
|
4
|
+
const CONTEXT_LINES = 3;
|
|
5
|
+
const MAX_RENDERED_BYTES = 64 * 1024;
|
|
6
|
+
/**
|
|
7
|
+
* Renders one unified hunk around the changed middle. This is a hint, not a
|
|
8
|
+
* machine patch: identical text returns `''`, and oversized context returns
|
|
9
|
+
* `null` without changing Update-mode selection.
|
|
10
|
+
*/
|
|
11
|
+
export function unifiedLineDiff(prior, current) {
|
|
12
|
+
if (prior === current)
|
|
13
|
+
return '';
|
|
14
|
+
const before = prior.split('\n');
|
|
15
|
+
const after = current.split('\n');
|
|
16
|
+
let prefix = 0;
|
|
17
|
+
while (prefix < before.length &&
|
|
18
|
+
prefix < after.length &&
|
|
19
|
+
before[prefix] === after[prefix]) {
|
|
20
|
+
prefix++;
|
|
21
|
+
}
|
|
22
|
+
let beforeEnd = before.length;
|
|
23
|
+
let afterEnd = after.length;
|
|
24
|
+
while (beforeEnd > prefix &&
|
|
25
|
+
afterEnd > prefix &&
|
|
26
|
+
before[beforeEnd - 1] === after[afterEnd - 1]) {
|
|
27
|
+
beforeEnd--;
|
|
28
|
+
afterEnd--;
|
|
29
|
+
}
|
|
30
|
+
const contextStart = Math.max(0, prefix - CONTEXT_LINES);
|
|
31
|
+
const beforeContextEnd = Math.min(before.length, beforeEnd + CONTEXT_LINES);
|
|
32
|
+
const afterContextEnd = Math.min(after.length, afterEnd + CONTEXT_LINES);
|
|
33
|
+
const oldCount = beforeContextEnd - contextStart;
|
|
34
|
+
const newCount = afterContextEnd - contextStart;
|
|
35
|
+
const output = [];
|
|
36
|
+
let size = 0;
|
|
37
|
+
const append = (line) => {
|
|
38
|
+
size += Buffer.byteLength(line, 'utf8') + (output.length === 0 ? 0 : 1);
|
|
39
|
+
if (size > MAX_RENDERED_BYTES)
|
|
40
|
+
return false;
|
|
41
|
+
output.push(line);
|
|
42
|
+
return true;
|
|
43
|
+
};
|
|
44
|
+
if (!append(`@@ -${contextStart + 1},${oldCount} +${contextStart + 1},${newCount} @@`)) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
for (let index = contextStart; index < prefix; index++) {
|
|
48
|
+
if (!append(` ${before[index]}`))
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
for (let index = prefix; index < beforeEnd; index++) {
|
|
52
|
+
if (!append(`-${before[index]}`))
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
for (let index = prefix; index < afterEnd; index++) {
|
|
56
|
+
if (!append(`+${after[index]}`))
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
for (let offset = 0; beforeEnd + offset < beforeContextEnd &&
|
|
60
|
+
afterEnd + offset < afterContextEnd; offset++) {
|
|
61
|
+
if (!append(` ${before[beforeEnd + offset]}`))
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
return output.join('\n');
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=line-diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"line-diff.js","sourceRoot":"","sources":["../src/line-diff.ts"],"names":[],"mappings":"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"}
|
package/dist/phase.d.ts
CHANGED
|
@@ -29,6 +29,8 @@ export declare class PhaseError extends Error {
|
|
|
29
29
|
readonly code: PhaseErrorCode;
|
|
30
30
|
constructor(code: PhaseErrorCode, message: string);
|
|
31
31
|
}
|
|
32
|
+
/** True when a phase/pass basename is a portable direct-child filename. */
|
|
33
|
+
export declare function isPortablePhaseName(value: string): boolean;
|
|
32
34
|
/**
|
|
33
35
|
* Reads the authoritative `## Formats` table into its source and target
|
|
34
36
|
* declarations (PIPE-1), shared by the phase and link loaders.
|
package/dist/phase.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phase.d.ts","sourceRoot":"","sources":["../src/phase.ts"],"names":[],"mappings":"AAkBA,4DAA4D;AAC5D,MAAM,WAAW,UAAU;IACzB,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,GAAG,EAAE,MAAM,CAAC;CACb;AAED,uEAAuE;AACvE,MAAM,WAAW,KAAK;IACpB,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB,4BAA4B;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB;;;;OAIG;IACH,IAAI,EAAE,OAAO,CAAC;CACf;AAED,gEAAgE;AAChE,MAAM,MAAM,gBAAgB,GACxB,iBAAiB,GACjB,mBAAmB,GACnB,cAAc,CAAC;AAEnB,mDAAmD;AACnD,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,mBAAmB,GACnB,oBAAoB,CAAC;AAEzB,8DAA8D;AAC9D,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;gBAElB,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM;CAKlD;AAKD;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,KAAK,KAAK,GACvD;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAwC5C;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"phase.d.ts","sourceRoot":"","sources":["../src/phase.ts"],"names":[],"mappings":"AAkBA,4DAA4D;AAC5D,MAAM,WAAW,UAAU;IACzB,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,GAAG,EAAE,MAAM,CAAC;CACb;AAED,uEAAuE;AACvE,MAAM,WAAW,KAAK;IACpB,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB,4BAA4B;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB;;;;OAIG;IACH,IAAI,EAAE,OAAO,CAAC;CACf;AAED,gEAAgE;AAChE,MAAM,MAAM,gBAAgB,GACxB,iBAAiB,GACjB,mBAAmB,GACnB,cAAc,CAAC;AAEnB,mDAAmD;AACnD,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,mBAAmB,GACnB,oBAAoB,CAAC;AAEzB,8DAA8D;AAC9D,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;gBAElB,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM;CAKlD;AAKD,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAU1D;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,KAAK,KAAK,GACvD;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAwC5C;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,KAAK,CA2BzE;AAED,8EAA8E;AAC9E,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAGhE;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,IAAI,CAgBxE"}
|
package/dist/phase.js
CHANGED
|
@@ -23,6 +23,16 @@ export class PhaseError extends Error {
|
|
|
23
23
|
}
|
|
24
24
|
const FORMAT_TOKEN = /^[a-z0-9]+(-[a-z0-9]+)*$/;
|
|
25
25
|
const EXTENSION = /^\.[A-Za-z0-9]+$/;
|
|
26
|
+
/** True when a phase/pass basename is a portable direct-child filename. */
|
|
27
|
+
export function isPortablePhaseName(value) {
|
|
28
|
+
return (value.length > 0 &&
|
|
29
|
+
value !== '.' &&
|
|
30
|
+
value !== '..' &&
|
|
31
|
+
!value.includes('/') &&
|
|
32
|
+
!value.includes('\\') &&
|
|
33
|
+
!value.includes('\0') &&
|
|
34
|
+
!/^[a-zA-Z]:/.test(value));
|
|
35
|
+
}
|
|
26
36
|
/**
|
|
27
37
|
* Reads the authoritative `## Formats` table into its source and target
|
|
28
38
|
* declarations (PIPE-1), shared by the phase and link loaders.
|
|
@@ -71,10 +81,16 @@ export function parsePhase(file) {
|
|
|
71
81
|
const { source, target } = readFormats(file.content, (code, message) => {
|
|
72
82
|
throw new PhaseError(code, message);
|
|
73
83
|
});
|
|
74
|
-
// A format-preserving pass phase is named freely — its filename is the pass
|
|
75
|
-
// name (DR-013); the `<source>2<target>.md` rule identifies transform phases.
|
|
76
84
|
const pass = source.format === target.format;
|
|
77
|
-
if (
|
|
85
|
+
if (pass) {
|
|
86
|
+
const name = file.name.endsWith('.md')
|
|
87
|
+
? file.name.slice(0, -'.md'.length)
|
|
88
|
+
: '';
|
|
89
|
+
if (!isPortablePhaseName(name)) {
|
|
90
|
+
throw new PhaseError('filename-mismatch', `pass filename "${file.name}" does not contain a portable phase name`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
78
94
|
const expected = `${source.format}2${target.format}.md`;
|
|
79
95
|
if (file.name !== expected) {
|
|
80
96
|
throw new PhaseError('filename-mismatch', `phase filename "${file.name}" does not match its ## Formats tokens (expected "${expected}")`);
|
package/dist/phase.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phase.js","sourceRoot":"","sources":["../src/phase.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,0EAA0E;AAE1E;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAsCxD,8DAA8D;AAC9D,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,IAAI,CAAiB;IAE9B,YAAY,IAAoB,EAAE,OAAe;QAC/C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,MAAM,YAAY,GAAG,0BAA0B,CAAC;AAChD,MAAM,SAAS,GAAG,kBAAkB,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,OAAe,EACf,IAAwD;IAExD,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAChD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,iBAAiB,EAAE,8BAA8B,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,GAAG,EAAmC,CAAC;IACzD,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ;YAAE,SAAS;QAErD,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,IAAI,CACF,mBAAmB,EACnB,GAAG,IAAI,kBAAkB,MAAM,kCAAkC,CAClE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CACF,mBAAmB,EACnB,GAAG,IAAI,eAAe,GAAG,6CAA6C,CACvE,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,mBAAmB,EAAE,uBAAuB,IAAI,iBAAiB,CAAC,CAAC;QAC1E,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACjD,IAAI,CACF,cAAc,EACd,2BAA2B,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,MAAM,CAC5E,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,IAAuC;IAChE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;QACrE,MAAM,IAAI,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,
|
|
1
|
+
{"version":3,"file":"phase.js","sourceRoot":"","sources":["../src/phase.ts"],"names":[],"mappings":"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"}
|
package/dist/pin-closure.d.ts
CHANGED
|
@@ -9,11 +9,11 @@ export declare function parsePinInputs(content: string): string[];
|
|
|
9
9
|
* @throws {import('./pins.js').PinError} when a cited path is absolute or escapes
|
|
10
10
|
* the recorded boundary (PIN-5).
|
|
11
11
|
*/
|
|
12
|
-
export declare function deriveClosure(pipelineDir: string, boundary: string, definitionPath: string): Promise<Set<string>>;
|
|
12
|
+
export declare function deriveClosure(pipelineDir: string, boundary: string, definitionPath: string, observePath?: (path: string) => void): Promise<Set<string>>;
|
|
13
13
|
/**
|
|
14
14
|
* Reports whether the closure derived from `record.definition` matches the
|
|
15
15
|
* recorded definition plus semanticInputs, compared as sets of resolved paths
|
|
16
16
|
* (PIN-4).
|
|
17
17
|
*/
|
|
18
|
-
export declare function closureMatchesRecord(pipelineDir: string, boundary: string, record: PinRecord): Promise<boolean>;
|
|
18
|
+
export declare function closureMatchesRecord(pipelineDir: string, boundary: string, record: PinRecord, observePath?: (path: string) => void): Promise<boolean>;
|
|
19
19
|
//# sourceMappingURL=pin-closure.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pin-closure.d.ts","sourceRoot":"","sources":["../src/pin-closure.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAK3C,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAYxD;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"pin-closure.d.ts","sourceRoot":"","sources":["../src/pin-closure.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAK3C,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAYxD;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GACnC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAqCtB;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,EACjB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GACnC,OAAO,CAAC,OAAO,CAAC,CAsBlB"}
|
package/dist/pin-closure.js
CHANGED
|
@@ -42,7 +42,7 @@ export function parsePinInputs(content) {
|
|
|
42
42
|
* @throws {import('./pins.js').PinError} when a cited path is absolute or escapes
|
|
43
43
|
* the recorded boundary (PIN-5).
|
|
44
44
|
*/
|
|
45
|
-
export async function deriveClosure(pipelineDir, boundary, definitionPath) {
|
|
45
|
+
export async function deriveClosure(pipelineDir, boundary, definitionPath, observePath) {
|
|
46
46
|
const closure = new Set();
|
|
47
47
|
const seen = new Set();
|
|
48
48
|
const queue = [definitionPath];
|
|
@@ -54,6 +54,7 @@ export async function deriveClosure(pipelineDir, boundary, definitionPath) {
|
|
|
54
54
|
seen.add(rel);
|
|
55
55
|
const resolved = resolvePinPath(pipelineDir, boundary, rel, PIN_INPUT_FIELD);
|
|
56
56
|
closure.add(resolved);
|
|
57
|
+
observePath?.(resolved);
|
|
57
58
|
// Recurse only into Markdown inputs that declare their own ## Pin Inputs;
|
|
58
59
|
// non-Markdown and sectionless inputs are members but terminate the walk.
|
|
59
60
|
if (!isMarkdown(rel)) {
|
|
@@ -76,8 +77,8 @@ export async function deriveClosure(pipelineDir, boundary, definitionPath) {
|
|
|
76
77
|
* recorded definition plus semanticInputs, compared as sets of resolved paths
|
|
77
78
|
* (PIN-4).
|
|
78
79
|
*/
|
|
79
|
-
export async function closureMatchesRecord(pipelineDir, boundary, record) {
|
|
80
|
-
const derived = await deriveClosure(pipelineDir, boundary, record.definition.path);
|
|
80
|
+
export async function closureMatchesRecord(pipelineDir, boundary, record, observePath) {
|
|
81
|
+
const derived = await deriveClosure(pipelineDir, boundary, record.definition.path, observePath);
|
|
81
82
|
const recorded = new Set();
|
|
82
83
|
recorded.add(resolvePinPath(pipelineDir, boundary, record.definition.path, 'definition.path'));
|
|
83
84
|
for (const input of record.semanticInputs) {
|
package/dist/pin-closure.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pin-closure.js","sourceRoot":"","sources":["../src/pin-closure.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,0EAA0E;AAE1E;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,MAAM,eAAe,GAAG,gBAAgB,CAAC;AACzC,MAAM,WAAW,GAAG,YAAY,CAAC;AAEjC,kFAAkF;AAClF,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACjD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,WAAmB,EACnB,QAAgB,EAChB,cAAsB;
|
|
1
|
+
{"version":3,"file":"pin-closure.js","sourceRoot":"","sources":["../src/pin-closure.ts"],"names":[],"mappings":"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"}
|
package/dist/pin-currency.d.ts
CHANGED
|
@@ -18,6 +18,10 @@ export interface PinsResult {
|
|
|
18
18
|
/** File-level malformed diagnostic (unparseable or invalid file); when set, no phase is current. */
|
|
19
19
|
malformed?: string;
|
|
20
20
|
}
|
|
21
|
+
/** Optional observation hook for local paths consumed during pin validation. */
|
|
22
|
+
export interface PinEvaluationOptions {
|
|
23
|
+
observePath?: (path: string) => void;
|
|
24
|
+
}
|
|
21
25
|
/**
|
|
22
26
|
* Evaluates every pin in `<pipelineDir>/slc.pins.json` (PIN-1..PIN-6).
|
|
23
27
|
*
|
|
@@ -27,7 +31,7 @@ export interface PinsResult {
|
|
|
27
31
|
*/
|
|
28
32
|
export declare function evaluatePins(pipelineDir: string): Promise<PinsResult>;
|
|
29
33
|
/** Evaluates every record and prevents one malformed record from coexisting with a current one. */
|
|
30
|
-
export declare function evaluatePinFile(pipelineDir: string, file: PinFile): Promise<Record<string, PinVerdict>>;
|
|
34
|
+
export declare function evaluatePinFile(pipelineDir: string, file: PinFile, opts?: PinEvaluationOptions): Promise<Record<string, PinVerdict>>;
|
|
31
35
|
/**
|
|
32
36
|
* Evaluates one phase's pin record against the committed files (PIN-2..PIN-6,
|
|
33
37
|
* PIN-13).
|
|
@@ -35,7 +39,7 @@ export declare function evaluatePinFile(pipelineDir: string, file: PinFile): Pro
|
|
|
35
39
|
* Structural defects are reported as `malformed` before currency is judged, so a
|
|
36
40
|
* record that is both malformed and stale reports `malformed`.
|
|
37
41
|
*/
|
|
38
|
-
export declare function evaluatePin(pipelineDir: string, file: PinFile, phase: string, record: PinRecord): Promise<PinVerdict>;
|
|
42
|
+
export declare function evaluatePin(pipelineDir: string, file: PinFile, phase: string, record: PinRecord, opts?: PinEvaluationOptions): Promise<PinVerdict>;
|
|
39
43
|
/**
|
|
40
44
|
* Checks the canonical reviewed bundle layout beside a linked playbook entry.
|
|
41
45
|
* The tree hash binds every byte; these required siblings ensure that the tree
|
|
@@ -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":"AA4CA,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,CAiB3E;AAED,mGAAmG;AACnG,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,OAAO,EACb,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAwBrC;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,CAuIrB;AA6FD;;;;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"}
|