@sublang/slc 0.2.0 → 0.4.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 +86 -14
- package/dist/app.d.ts +13 -2
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +65 -15
- 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/cligent-agent.d.ts +19 -0
- package/dist/cligent-agent.d.ts.map +1 -1
- package/dist/cligent-agent.js +125 -30
- package/dist/cligent-agent.js.map +1 -1
- package/dist/compiled-executor.d.ts +7 -1
- package/dist/compiled-executor.d.ts.map +1 -1
- package/dist/compiled-executor.js +11 -3
- package/dist/compiled-executor.js.map +1 -1
- package/dist/config-file.d.ts +9 -0
- package/dist/config-file.d.ts.map +1 -1
- package/dist/config-file.js +29 -5
- package/dist/config-file.js.map +1 -1
- package/dist/config.d.ts +8 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +9 -3
- 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 +17 -0
- package/dist/playbook-ports.d.ts.map +1 -1
- package/dist/playbook-ports.js +21 -6
- package/dist/playbook-ports.js.map +1 -1
- package/dist/progress.d.ts +71 -0
- package/dist/progress.d.ts.map +1 -0
- package/dist/progress.js +96 -0
- package/dist/progress.js.map +1 -0
- package/dist/runner.d.ts +8 -0
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +673 -89
- 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 +5 -1
- 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 +5 -3
package/dist/execution.js
CHANGED
|
@@ -15,13 +15,66 @@
|
|
|
15
15
|
* report naming the phase, target, and reasons (PHEXEC-7, PHEXEC-9).
|
|
16
16
|
*
|
|
17
17
|
* The executor honors PHEXEC-2 by treating the passed definition as the
|
|
18
|
-
* semantic source of truth.
|
|
19
|
-
*
|
|
18
|
+
* semantic source of truth. The host refuses target/input aliases and verifies
|
|
19
|
+
* protected inputs afterward; sandboxing arbitrary unrelated writes remains a
|
|
20
|
+
* host capability outside this boundary.
|
|
20
21
|
* See specs/dev/phase-execution.md.
|
|
21
22
|
*/
|
|
22
23
|
import { createHash } from 'node:crypto';
|
|
23
|
-
import { lstat, readFile, readdir, readlink, stat } from 'node:fs/promises';
|
|
24
|
-
import { extname, join } from 'node:path';
|
|
24
|
+
import { lstat, readFile, readdir, readlink, realpath, stat, } from 'node:fs/promises';
|
|
25
|
+
import { basename, dirname, extname, isAbsolute, join, relative, resolve, sep, } from 'node:path';
|
|
26
|
+
import { errorCode, isAbsentPathError, messageOf } from './errors.js';
|
|
27
|
+
/**
|
|
28
|
+
* Renders the host-owned update instruction shared by interpreted prompts and
|
|
29
|
+
* compiled performing prompts (INCR-16).
|
|
30
|
+
*/
|
|
31
|
+
export function updateContextLines(update, target) {
|
|
32
|
+
const diff = update.diff === null
|
|
33
|
+
? [
|
|
34
|
+
'- a useful line diff is unavailable; compare the prior and current inputs directly;',
|
|
35
|
+
]
|
|
36
|
+
: update.diff === ''
|
|
37
|
+
? [
|
|
38
|
+
'- the input file is byte-identical to the prior input; the definition or another declared input changed instead;',
|
|
39
|
+
]
|
|
40
|
+
: [
|
|
41
|
+
'- the input changes, as a unified diff of prior to current input:',
|
|
42
|
+
'--- BEGIN INPUT DIFF ---',
|
|
43
|
+
update.diff,
|
|
44
|
+
'--- END INPUT DIFF ---',
|
|
45
|
+
];
|
|
46
|
+
return [
|
|
47
|
+
'Incremental update — the artifact to write already holds the accepted output of a previous run (possibly with deliberate manual refinements):',
|
|
48
|
+
`- the prior input is available read-only at: ${update.priorInput};`,
|
|
49
|
+
`- the existing output to update is: ${target};`,
|
|
50
|
+
...diff,
|
|
51
|
+
'- update the existing artifact under the definition: apply what the input changes imply, preserve everything unaffected including refinements, and keep the artifact complete and consistent;',
|
|
52
|
+
'- if the existing artifact is missing or unusable under the definition, produce a fresh complete artifact instead.',
|
|
53
|
+
];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Refuses an unsafe planned write without running an executor. This is shared
|
|
57
|
+
* by phase targets and the runner's deterministic completion outputs.
|
|
58
|
+
*/
|
|
59
|
+
export async function assertSafeTarget(target, protectedPaths, opts = {}) {
|
|
60
|
+
await inspectTarget(target, protectedPaths, opts);
|
|
61
|
+
}
|
|
62
|
+
/** Whether two writable/readable path spellings currently name one file. */
|
|
63
|
+
export async function pathsAlias(left, right) {
|
|
64
|
+
const leftPath = await prospectiveRealPath(resolve(left));
|
|
65
|
+
const rightPath = await prospectiveRealPath(resolve(right));
|
|
66
|
+
if (leftPath === rightPath)
|
|
67
|
+
return true;
|
|
68
|
+
try {
|
|
69
|
+
const [leftInfo, rightInfo] = await Promise.all([stat(left), stat(right)]);
|
|
70
|
+
return leftInfo.dev === rightInfo.dev && leftInfo.ino === rightInfo.ino;
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
if (isAbsentPathError(error))
|
|
74
|
+
return false;
|
|
75
|
+
throw error;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
25
78
|
/**
|
|
26
79
|
* Runs a single phase through the execution boundary: generic mechanics only,
|
|
27
80
|
* plus the DR-003 generic checks and blocked protocol (PHEXEC-1, PHEXEC-4..9).
|
|
@@ -31,11 +84,35 @@ export async function runPhase(opts) {
|
|
|
31
84
|
const signal = opts.signal ?? new AbortController().signal;
|
|
32
85
|
const target = request.kind === 'compile' ? request.target : request.linked;
|
|
33
86
|
const inputs = request.kind === 'compile'
|
|
34
|
-
? [
|
|
87
|
+
? [
|
|
88
|
+
request.source,
|
|
89
|
+
...(request.references ?? []),
|
|
90
|
+
...(request.update === undefined ? [] : [request.update.priorInput]),
|
|
91
|
+
]
|
|
35
92
|
: [...request.objects, request.linkTarget];
|
|
36
93
|
const definitions = [request.definitionPath, ...(opts.definitions ?? [])];
|
|
37
|
-
const protectedPaths = [
|
|
94
|
+
const protectedPaths = [
|
|
95
|
+
...new Set([...inputs, ...definitions, ...(opts.protectedInputs ?? [])]),
|
|
96
|
+
];
|
|
97
|
+
const targetProtectedPaths = [
|
|
98
|
+
...new Set([...protectedPaths, ...(opts.aliasInputs ?? [])]),
|
|
99
|
+
];
|
|
100
|
+
let targetBefore;
|
|
101
|
+
try {
|
|
102
|
+
targetBefore = await inspectTarget(target, targetProtectedPaths);
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
return failure(phase, target, [messageOf(error)]);
|
|
106
|
+
}
|
|
38
107
|
const before = await snapshot(protectedPaths);
|
|
108
|
+
if (opts.beforeExecute) {
|
|
109
|
+
try {
|
|
110
|
+
await opts.beforeExecute();
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
return failure(phase, target, [messageOf(error)]);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
39
116
|
const reasons = [];
|
|
40
117
|
let result = null;
|
|
41
118
|
try {
|
|
@@ -48,12 +125,23 @@ export async function runPhase(opts) {
|
|
|
48
125
|
reasons.push(...reasonsFor(result));
|
|
49
126
|
}
|
|
50
127
|
if (result?.status === 'ok') {
|
|
51
|
-
if (
|
|
52
|
-
reasons.push(`expected target "${target}" was not written`);
|
|
53
|
-
}
|
|
54
|
-
else if (extname(target) !== targetExt) {
|
|
128
|
+
if (extname(target) !== targetExt) {
|
|
55
129
|
reasons.push(`target "${target}" extension does not match the declared "${targetExt}"`);
|
|
56
130
|
}
|
|
131
|
+
else {
|
|
132
|
+
try {
|
|
133
|
+
const targetAfter = await inspectTarget(target, targetProtectedPaths);
|
|
134
|
+
if (!targetAfter.exists) {
|
|
135
|
+
reasons.push(`expected target "${target}" was not written`);
|
|
136
|
+
}
|
|
137
|
+
else if (targetBefore.path !== targetAfter.path) {
|
|
138
|
+
reasons.push(`target "${target}" changed physical location during the run`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
reasons.push(messageOf(error));
|
|
143
|
+
}
|
|
144
|
+
}
|
|
57
145
|
}
|
|
58
146
|
// Protected inputs and chain definitions are re-checked after any outcome, so
|
|
59
147
|
// a mutation is caught even when the executor blocks, errors, or throws
|
|
@@ -114,7 +202,7 @@ async function pathIdentity(path) {
|
|
|
114
202
|
return identityForInfo(path, rootInfo);
|
|
115
203
|
}
|
|
116
204
|
catch (error) {
|
|
117
|
-
if (
|
|
205
|
+
if (isAbsentPathError(error))
|
|
118
206
|
return 'missing';
|
|
119
207
|
return `unreadable:${errorCode(error)}`;
|
|
120
208
|
}
|
|
@@ -124,7 +212,7 @@ async function followedPathIdentity(path) {
|
|
|
124
212
|
return await identityForInfo(path, await stat(path));
|
|
125
213
|
}
|
|
126
214
|
catch (error) {
|
|
127
|
-
if (
|
|
215
|
+
if (isAbsentPathError(error))
|
|
128
216
|
return 'missing';
|
|
129
217
|
return `unreadable:${errorCode(error)}`;
|
|
130
218
|
}
|
|
@@ -179,29 +267,136 @@ async function collectTreeRecords(root, prefix, records) {
|
|
|
179
267
|
function compareNames(left, right) {
|
|
180
268
|
return left < right ? -1 : left > right ? 1 : 0;
|
|
181
269
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
270
|
+
/**
|
|
271
|
+
* Establishes the one pre/post target rule used by every executor: the target
|
|
272
|
+
* is outside host-owned namespaces, does not alias a read input, and is absent
|
|
273
|
+
* or a single-link regular file. An existing target may remain byte-identical when
|
|
274
|
+
* the executor accepts that no semantic output change is needed.
|
|
275
|
+
*/
|
|
276
|
+
async function inspectTarget(target, protectedPaths, opts = {}) {
|
|
277
|
+
const lexical = resolve(target);
|
|
278
|
+
rejectReservedTarget(lexical, target, opts);
|
|
279
|
+
let exists = false;
|
|
280
|
+
let targetInfo = null;
|
|
281
|
+
try {
|
|
282
|
+
targetInfo = await lstat(lexical);
|
|
283
|
+
if (targetInfo.isSymbolicLink()) {
|
|
284
|
+
throw new Error(`target "${target}" is a symbolic link`);
|
|
285
|
+
}
|
|
286
|
+
if (!targetInfo.isFile()) {
|
|
287
|
+
throw new Error(`target "${target}" is not a regular file`);
|
|
288
|
+
}
|
|
289
|
+
if (targetInfo.nlink !== 1) {
|
|
290
|
+
throw new Error(`target "${target}" has multiple hard links`);
|
|
291
|
+
}
|
|
292
|
+
exists = true;
|
|
293
|
+
}
|
|
294
|
+
catch (error) {
|
|
295
|
+
if (!isAbsentPathError(error))
|
|
296
|
+
throw error;
|
|
192
297
|
}
|
|
193
|
-
|
|
298
|
+
const physical = await prospectiveRealPath(lexical);
|
|
299
|
+
rejectReservedTarget(physical, target, opts);
|
|
300
|
+
for (const input of protectedPaths) {
|
|
301
|
+
const conflict = await aliasesProtectedPath(physical, targetInfo, resolve(input));
|
|
302
|
+
if (conflict) {
|
|
303
|
+
throw new Error(`target "${target}" aliases protected input "${input}"`);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
return { path: physical, exists };
|
|
194
307
|
}
|
|
195
|
-
async function
|
|
308
|
+
async function aliasesProtectedPath(targetPath, targetInfo, input) {
|
|
309
|
+
let inputInfo = null;
|
|
310
|
+
try {
|
|
311
|
+
inputInfo = await stat(input);
|
|
312
|
+
}
|
|
313
|
+
catch (error) {
|
|
314
|
+
if (!isAbsentPathError(error))
|
|
315
|
+
throw error;
|
|
316
|
+
}
|
|
317
|
+
let inputPath;
|
|
196
318
|
try {
|
|
197
|
-
await
|
|
319
|
+
inputPath = await prospectiveRealPath(input);
|
|
320
|
+
}
|
|
321
|
+
catch (error) {
|
|
322
|
+
// An impossible protected path cannot itself alias this target, but its
|
|
323
|
+
// existing blocking ancestor remains protected. Permission and I/O errors
|
|
324
|
+
// are indeterminate and continue to fail closed.
|
|
325
|
+
if (error instanceof ImpossiblePathError) {
|
|
326
|
+
const blocker = error.blocker;
|
|
327
|
+
return (blocker !== undefined &&
|
|
328
|
+
(targetPath === blocker.path ||
|
|
329
|
+
(targetInfo !== null &&
|
|
330
|
+
targetInfo.dev === blocker.info.dev &&
|
|
331
|
+
targetInfo.ino === blocker.info.ino)));
|
|
332
|
+
}
|
|
333
|
+
throw error;
|
|
334
|
+
}
|
|
335
|
+
if (targetPath === inputPath)
|
|
198
336
|
return true;
|
|
337
|
+
if (inputInfo?.isDirectory() && isWithin(inputPath, targetPath))
|
|
338
|
+
return true;
|
|
339
|
+
return (targetInfo !== null &&
|
|
340
|
+
inputInfo !== null &&
|
|
341
|
+
targetInfo.dev === inputInfo.dev &&
|
|
342
|
+
targetInfo.ino === inputInfo.ino);
|
|
343
|
+
}
|
|
344
|
+
class ImpossiblePathError extends Error {
|
|
345
|
+
blocker;
|
|
346
|
+
constructor(message, blocker) {
|
|
347
|
+
super(message);
|
|
348
|
+
this.blocker = blocker;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
/** Resolves a missing leaf through its nearest real directory ancestor. */
|
|
352
|
+
async function prospectiveRealPath(path) {
|
|
353
|
+
const suffix = [];
|
|
354
|
+
let cursor = path;
|
|
355
|
+
while (true) {
|
|
356
|
+
try {
|
|
357
|
+
const resolved = await realpath(cursor);
|
|
358
|
+
if (suffix.length > 0) {
|
|
359
|
+
const info = await stat(resolved);
|
|
360
|
+
if (!info.isDirectory()) {
|
|
361
|
+
throw new ImpossiblePathError(`target parent "${cursor}" is not a directory`, { path: resolved, info });
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
return resolve(resolved, ...suffix.reverse());
|
|
365
|
+
}
|
|
366
|
+
catch (error) {
|
|
367
|
+
if (!isAbsentPathError(error))
|
|
368
|
+
throw error;
|
|
369
|
+
}
|
|
370
|
+
// `realpath` reports ENOENT for both an absent path and a dangling link.
|
|
371
|
+
// An existing unresolved link is not a safe ancestor to write through.
|
|
372
|
+
try {
|
|
373
|
+
const info = await lstat(cursor);
|
|
374
|
+
throw new ImpossiblePathError(`target path "${cursor}" cannot be resolved safely`, { path: resolve(cursor), info });
|
|
375
|
+
}
|
|
376
|
+
catch (error) {
|
|
377
|
+
if (!isAbsentPathError(error))
|
|
378
|
+
throw error;
|
|
379
|
+
}
|
|
380
|
+
const parent = dirname(cursor);
|
|
381
|
+
if (parent === cursor) {
|
|
382
|
+
throw new ImpossiblePathError(`target path "${path}" has no existing directory ancestor`);
|
|
383
|
+
}
|
|
384
|
+
suffix.push(basename(cursor));
|
|
385
|
+
cursor = parent;
|
|
199
386
|
}
|
|
200
|
-
|
|
201
|
-
|
|
387
|
+
}
|
|
388
|
+
function rejectReservedTarget(path, display, opts) {
|
|
389
|
+
const parts = resolve(path).split(sep);
|
|
390
|
+
if (parts.includes('.slc') ||
|
|
391
|
+
(!opts.allowVerifierOutput && parts.includes('.slc-verify'))) {
|
|
392
|
+
throw new Error(`target "${display}" enters a host-owned slc directory`);
|
|
202
393
|
}
|
|
203
394
|
}
|
|
204
|
-
function
|
|
205
|
-
|
|
395
|
+
function isWithin(root, candidate) {
|
|
396
|
+
const rel = relative(root, candidate);
|
|
397
|
+
return (rel !== '' &&
|
|
398
|
+
rel !== '..' &&
|
|
399
|
+
!rel.startsWith(`..${sep}`) &&
|
|
400
|
+
!isAbsolute(rel));
|
|
206
401
|
}
|
|
207
402
|
//# sourceMappingURL=execution.js.map
|
package/dist/execution.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../src/execution.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../src/execution.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,0EAA0E;AAE1E;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EACL,KAAK,EACL,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,IAAI,GACL,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,QAAQ,EACR,OAAO,EACP,OAAO,EACP,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,GAAG,GACJ,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AA0BtE;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAqB,EACrB,MAAc;IAEd,MAAM,IAAI,GACR,MAAM,CAAC,IAAI,KAAK,IAAI;QAClB,CAAC,CAAC;YACE,qFAAqF;SACtF;QACH,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,EAAE;YAClB,CAAC,CAAC;gBACE,kHAAkH;aACnH;YACH,CAAC,CAAC;gBACE,mEAAmE;gBACnE,0BAA0B;gBAC1B,MAAM,CAAC,IAAI;gBACX,wBAAwB;aACzB,CAAC;IACV,OAAO;QACL,+IAA+I;QAC/I,gDAAgD,MAAM,CAAC,UAAU,GAAG;QACpE,uCAAuC,MAAM,GAAG;QAChD,GAAG,IAAI;QACP,+LAA+L;QAC/L,oHAAoH;KACrH,CAAC;AACJ,CAAC;AA6DD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAc,EACd,cAAiC,EACjC,OAA0B,EAAE;IAE5B,MAAM,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;AACpD,CAAC;AAED,4EAA4E;AAC5E,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAY,EACZ,KAAa;IAEb,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3E,OAAO,QAAQ,CAAC,GAAG,KAAK,SAAS,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG,KAAK,SAAS,CAAC,GAAG,CAAC;IAC1E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,iBAAiB,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3C,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAgB9B;IACC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACrD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC,MAAM,CAAC;IAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAC5E,MAAM,MAAM,GACV,OAAO,CAAC,IAAI,KAAK,SAAS;QACxB,CAAC,CAAC;YACE,OAAO,CAAC,MAAM;YACd,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;YAC7B,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SACrE;QACH,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1E,MAAM,cAAc,GAAG;QACrB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,CAAC;KACzE,CAAC;IACF,MAAM,oBAAoB,GAAG;QAC3B,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC;KAC7D,CAAC;IAEF,IAAI,YAA+B,CAAC;IACpC,IAAI,CAAC;QACH,YAAY,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACnE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,CAAC;IAE9C,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,MAAM,GAA0B,IAAI,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,mBAAmB,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,MAAM,EAAE,MAAM,KAAK,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CACV,WAAW,MAAM,4CAA4C,SAAS,GAAG,CAC1E,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;gBACtE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;oBACxB,OAAO,CAAC,IAAI,CAAC,oBAAoB,MAAM,mBAAmB,CAAC,CAAC;gBAC9D,CAAC;qBAAM,IAAI,YAAY,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,EAAE,CAAC;oBAClD,OAAO,CAAC,IAAI,CACV,WAAW,MAAM,4CAA4C,CAC9D,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,wEAAwE;IACxE,wBAAwB;IACxB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,mBAAmB,IAAI,0BAA0B,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,sCAAsC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,IAAI,EAAE,EAAE,CAAC;AACtE,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,mBAAmB,CAAC,MAAqB;IACvD,MAAM,KAAK,GAAG,CAAC,eAAe,MAAM,CAAC,KAAK,gBAAgB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5E,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,UAAU,CAAC,MAAsB;IACxC,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,WAAW,CAAC;IAC5B,CAAC;IACD,OAAO,CAAC,kBAAkB,MAAM,CAAC,MAAM,sBAAsB,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,OAAO,CACd,KAAa,EACb,MAAc,EACd,OAAiB;IAEjB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,KAAwB;IAExB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,CAAU,CAAC,CACrE,CAAC;IACF,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,YAAY,CAAC,IAAY;IACtC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpC,OAAO,WAAW,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;QACjF,CAAC;QACD,OAAO,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,iBAAiB,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAC/C,OAAO,cAAc,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,IAAY;IAC9C,IAAI,CAAC;QACH,OAAO,MAAM,eAAe,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,iBAAiB,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAC/C,OAAO,cAAc,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,IAAW;IACtD,IAAI,IAAI,CAAC,MAAM,EAAE;QAAE,OAAO,QAAQ,MAAM,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IAC3D,IAAI,IAAI,CAAC,WAAW,EAAE;QAAE,OAAO,aAAa,MAAM,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IACrE,OAAO,SAAS,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AAC3E,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC5B,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC;AAED,qFAAqF;AACrF,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,MAAM,OAAO,GAAe,EAAE,CAAC;IAC/B,MAAM,kBAAkB,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5E,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,IAAY,EACZ,MAAc,EACd,OAAmB;IAEnB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QACjE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;YACtC,MAAM,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC;aAAM,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC;gBACX,OAAO;gBACP,QAAQ;gBACR,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;gBACjB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;gBACjB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;aACrB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,KAAa;IAC/C,OAAO,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AASD;;;;;GAKG;AACH,KAAK,UAAU,aAAa,CAC1B,MAAc,EACd,cAAiC,EACjC,OAA0B,EAAE;IAE5B,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAE5C,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,UAAU,GAAiB,IAAI,CAAC;IACpC,IAAI,CAAC;QACH,UAAU,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,UAAU,CAAC,cAAc,EAAE,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,WAAW,MAAM,sBAAsB,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,WAAW,MAAM,yBAAyB,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,UAAU,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,WAAW,MAAM,2BAA2B,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;YAAE,MAAM,KAAK,CAAC;IAC7C,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACpD,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7C,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CACzC,QAAQ,EACR,UAAU,EACV,OAAO,CAAC,KAAK,CAAC,CACf,CAAC;QACF,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,WAAW,MAAM,8BAA8B,KAAK,GAAG,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AACpC,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,UAAkB,EAClB,UAAwB,EACxB,KAAa;IAEb,IAAI,SAAS,GAAiB,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;YAAE,MAAM,KAAK,CAAC;IAC7C,CAAC;IACD,IAAI,SAAiB,CAAC;IACtB,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,wEAAwE;QACxE,0EAA0E;QAC1E,iDAAiD;QACjD,IAAI,KAAK,YAAY,mBAAmB,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAC9B,OAAO,CACL,OAAO,KAAK,SAAS;gBACrB,CAAC,UAAU,KAAK,OAAO,CAAC,IAAI;oBAC1B,CAAC,UAAU,KAAK,IAAI;wBAClB,UAAU,CAAC,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG;wBACnC,UAAU,CAAC,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAC1C,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IACD,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,SAAS,EAAE,WAAW,EAAE,IAAI,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7E,OAAO,CACL,UAAU,KAAK,IAAI;QACnB,SAAS,KAAK,IAAI;QAClB,UAAU,CAAC,GAAG,KAAK,SAAS,CAAC,GAAG;QAChC,UAAU,CAAC,GAAG,KAAK,SAAS,CAAC,GAAG,CACjC,CAAC;AACJ,CAAC;AAED,MAAM,mBAAoB,SAAQ,KAAK;IAG1B;IAFX,YACE,OAAe,EACN,OAAuC;QAEhD,KAAK,CAAC,OAAO,CAAC,CAAC;QAFN,YAAO,GAAP,OAAO,CAAgC;IAGlD,CAAC;CACF;AAED,2EAA2E;AAC3E,KAAK,UAAU,mBAAmB,CAAC,IAAY;IAC7C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;YACxC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAClC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxB,MAAM,IAAI,mBAAmB,CAC3B,kBAAkB,MAAM,sBAAsB,EAC9C,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CACzB,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,OAAO,OAAO,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAC;QAC7C,CAAC;QAED,yEAAyE;QACzE,uEAAuE;QACvE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;YACjC,MAAM,IAAI,mBAAmB,CAC3B,gBAAgB,MAAM,6BAA6B,EACnD,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAChC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAC;QAC7C,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,mBAAmB,CAC3B,gBAAgB,IAAI,sCAAsC,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,SAAS,oBAAoB,CAC3B,IAAY,EACZ,OAAe,EACf,IAAuB;IAEvB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,IACE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QACtB,CAAC,CAAC,IAAI,CAAC,mBAAmB,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAC5D,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,WAAW,OAAO,qCAAqC,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,SAAiB;IAC/C,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACtC,OAAO,CACL,GAAG,KAAK,EAAE;QACV,GAAG,KAAK,IAAI;QACZ,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC;QAC3B,CAAC,UAAU,CAAC,GAAG,CAAC,CACjB,CAAC;AACJ,CAAC"}
|
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
|
@@ -15,6 +15,7 @@ export * from './invocation.js';
|
|
|
15
15
|
export * from './link.js';
|
|
16
16
|
export * from './phase.js';
|
|
17
17
|
export * from './pipeline.js';
|
|
18
|
+
export * from './progress.js';
|
|
18
19
|
export * from './resolver.js';
|
|
19
20
|
export * from './runner.js';
|
|
20
21
|
//# sourceMappingURL=index.d.ts.map
|
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,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,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -17,6 +17,7 @@ export * from './invocation.js';
|
|
|
17
17
|
export * from './link.js';
|
|
18
18
|
export * from './phase.js';
|
|
19
19
|
export * from './pipeline.js';
|
|
20
|
+
export * from './progress.js';
|
|
20
21
|
export * from './resolver.js';
|
|
21
22
|
export * from './runner.js';
|
|
22
23
|
//# sourceMappingURL=index.js.map
|
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,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,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) {
|