@aviaratech/ai-delivery 0.3.4 → 0.3.6
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 +135 -20
- package/dist/agent.d.ts +2 -0
- package/dist/agent.js +1 -0
- package/dist/agent.js.map +1 -1
- package/dist/cli.js +77 -2
- package/dist/cli.js.map +1 -1
- package/dist/dispatch.js +39 -1
- package/dist/dispatch.js.map +1 -1
- package/dist/github/client.d.ts +1 -0
- package/dist/github/client.js +4 -1
- package/dist/github/client.js.map +1 -1
- package/dist/github/commandIdentityPolicy.js +3 -0
- package/dist/github/commandIdentityPolicy.js.map +1 -1
- package/dist/issue.d.ts +1 -0
- package/dist/issue.js +24 -10
- package/dist/issue.js.map +1 -1
- package/dist/lifecycle.test.js +496 -30
- package/dist/lifecycle.test.js.map +1 -1
- package/dist/mcp/index.js +1 -1
- package/dist/mcp/tools.d.ts +63 -0
- package/dist/mcp/tools.js +66 -0
- package/dist/mcp/tools.js.map +1 -1
- package/dist/pr.d.ts +4 -4
- package/dist/pr.js +10 -6
- package/dist/pr.js.map +1 -1
- package/dist/review.test.js +163 -0
- package/dist/review.test.js.map +1 -1
- package/dist/services/deliveryAdmission.d.ts +13 -2
- package/dist/services/deliveryAdmission.js +41 -2
- package/dist/services/deliveryAdmission.js.map +1 -1
- package/dist/services/worktreeRegistry.d.ts +12 -0
- package/dist/services/worktreeRegistry.js +146 -4
- package/dist/services/worktreeRegistry.js.map +1 -1
- package/dist/setup.d.ts +58 -0
- package/dist/setup.js +415 -0
- package/dist/setup.js.map +1 -0
- package/dist/setup.test.d.ts +1 -0
- package/dist/setup.test.js +744 -0
- package/dist/setup.test.js.map +1 -0
- package/dist/verification.d.ts +37 -0
- package/dist/verification.js +214 -15
- package/dist/verification.js.map +1 -1
- package/dist/worktree.d.ts +3 -0
- package/dist/worktree.js +38 -8
- package/dist/worktree.js.map +1 -1
- package/dist/worktreeTransition.d.ts +173 -0
- package/dist/worktreeTransition.js +1012 -0
- package/dist/worktreeTransition.js.map +1 -0
- package/dist/worktreeTransition.test.d.ts +1 -0
- package/dist/worktreeTransition.test.js +1179 -0
- package/dist/worktreeTransition.test.js.map +1 -0
- package/package.json +1 -1
- package/plugins/ai-delivery/.claude-plugin/plugin.json +1 -1
- package/plugins/ai-delivery/README.md +1 -1
- package/plugins/ai-delivery/skills/worktree-lifecycle/SKILL.md +9 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.test.js","sourceRoot":"","sources":["../src/setup.test.ts"],"names":[],"mappings":"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"}
|
package/dist/verification.d.ts
CHANGED
|
@@ -35,6 +35,38 @@ declare const ResourceSummarySchema: z.ZodObject<{
|
|
|
35
35
|
sampleCount: z.ZodNumber;
|
|
36
36
|
}, z.core.$strict>;
|
|
37
37
|
export type VerificationResourceSummary = z.infer<typeof ResourceSummarySchema>;
|
|
38
|
+
/** @internal Durable transition evidence must precede changes to the existing writer slot. */
|
|
39
|
+
export interface WorktreeTransitionWriterLeaseInput {
|
|
40
|
+
repoRoot: string;
|
|
41
|
+
worktreePath?: string;
|
|
42
|
+
writerId: string;
|
|
43
|
+
beforeClaim(input: {
|
|
44
|
+
previousBytes: Buffer | undefined;
|
|
45
|
+
owner: {
|
|
46
|
+
pid: number;
|
|
47
|
+
identity: string;
|
|
48
|
+
};
|
|
49
|
+
}): void | Promise<void>;
|
|
50
|
+
recordClaim(bytes: Buffer): void | Promise<void>;
|
|
51
|
+
afterClaim?(bytes: Buffer): void | Promise<void>;
|
|
52
|
+
recordRelease(bytes: Buffer): void | Promise<void>;
|
|
53
|
+
afterRelease?(): void | Promise<void>;
|
|
54
|
+
}
|
|
55
|
+
/** @internal Read-only closure check shared by inspection and the locked transition lease. */
|
|
56
|
+
export declare function assertWorktreeTransitionWriterQuiescent(worktreePath: string, bytes: Buffer | undefined): void;
|
|
57
|
+
/** @internal Hold the existing writer lock while reading a sealed transition; never claim or recover its slot. */
|
|
58
|
+
export declare function withWorktreeTransitionWriterAbsent<T>(repoRoot: string, worktreePath: string, operation: () => Promise<T>): Promise<T>;
|
|
59
|
+
/** @internal Check-only lease for the explicit transition owner; never recovers or signals old commands. */
|
|
60
|
+
export declare function withWorktreeTransitionWriterLease<T>(input: WorktreeTransitionWriterLeaseInput, operation: () => Promise<T>): Promise<T>;
|
|
61
|
+
/** @internal Retained public code is hashed as data; it is never imported or executed. */
|
|
62
|
+
export declare function retainedWorktreeTransitionProducerDigest(distDirectory: string): string;
|
|
63
|
+
/** @internal Preserve the same dependency manifests that participate in the existing producer digest. */
|
|
64
|
+
export declare function retainedWorktreeTransitionDependencyManifests(distDirectory: string): {
|
|
65
|
+
source: string;
|
|
66
|
+
digest: string;
|
|
67
|
+
}[];
|
|
68
|
+
/** @internal Original manifests validate as history and cannot authorize current verification. */
|
|
69
|
+
export declare function readWorktreeTransitionRun(bytes: Buffer): VerificationRun;
|
|
38
70
|
export declare function verifyIssue(input: {
|
|
39
71
|
personalAuth?: boolean;
|
|
40
72
|
admittedResourceClasses?: readonly string[];
|
|
@@ -54,4 +86,9 @@ export declare function createIssuePhaseEvidence(input: {
|
|
|
54
86
|
export declare function loadVerifiedRun(repoRoot: string, issueNumber: number): VerificationRun;
|
|
55
87
|
/** Recover an exact merged run after worktree removal interrupted terminal recording. */
|
|
56
88
|
export declare function loadRemovedMergedRun(primaryRepoRoot: string, issueNumber: number): VerificationRun;
|
|
89
|
+
/** @internal Runtime setup shares the existing writer, ownership handshake and bounded command runner. */
|
|
90
|
+
export declare function withRuntimeSetupWriter<T>(root: string, operation: (runner: {
|
|
91
|
+
assertQuiescent(): void;
|
|
92
|
+
run(argv: readonly string[], bounds: VerificationResourceBounds, signal?: AbortSignal): Promise<Buffer>;
|
|
93
|
+
}) => Promise<T>): Promise<T>;
|
|
57
94
|
export {};
|
package/dist/verification.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { spawn, spawnSync } from 'node:child_process';
|
|
2
2
|
import { randomUUID } from 'node:crypto';
|
|
3
3
|
import { createRequire } from 'node:module';
|
|
4
|
-
import { existsSync, unlinkSync, lstatSync, readFileSync, readdirSync, statfsSync } from 'node:fs';
|
|
4
|
+
import { closeSync, existsSync, fsyncSync, openSync, unlinkSync, lstatSync, readFileSync, readdirSync, realpathSync, statfsSync, } from 'node:fs';
|
|
5
5
|
import { basename, dirname, join, resolve, sep } from 'node:path';
|
|
6
6
|
import { fileURLToPath } from 'node:url';
|
|
7
7
|
import { z } from 'zod';
|
|
@@ -155,7 +155,18 @@ function scanOutputRoots(roots) {
|
|
|
155
155
|
throw error;
|
|
156
156
|
}
|
|
157
157
|
if (metadata.isSymbolicLink()) {
|
|
158
|
-
|
|
158
|
+
let target;
|
|
159
|
+
try {
|
|
160
|
+
target = realpathSync(path);
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
throw new DeliveryError('Filesystem output observation encountered a broken or cyclic symbolic link.');
|
|
164
|
+
}
|
|
165
|
+
if (!roots.some((root) => target === root || target.startsWith(`${root}${sep}`))) {
|
|
166
|
+
throw new DeliveryError('Filesystem output observation encountered an escaping symbolic link.');
|
|
167
|
+
}
|
|
168
|
+
// Observe physical targets through their declared root only, never traverse aliases.
|
|
169
|
+
return;
|
|
159
170
|
}
|
|
160
171
|
if (metadata.isDirectory()) {
|
|
161
172
|
for (const name of readdirSync(path))
|
|
@@ -169,8 +180,11 @@ function scanOutputRoots(roots) {
|
|
|
169
180
|
if (files.size > 1_000_000)
|
|
170
181
|
throw new DeliveryError('Filesystem output observation exceeded its file limit.');
|
|
171
182
|
};
|
|
172
|
-
for (const root of roots)
|
|
183
|
+
for (const root of roots) {
|
|
184
|
+
if (existsSync(root) && realpathSync(root) !== root)
|
|
185
|
+
throw new DeliveryError('Filesystem output roots must not be symbolic links.');
|
|
173
186
|
visit(root);
|
|
187
|
+
}
|
|
174
188
|
return files;
|
|
175
189
|
}
|
|
176
190
|
function outputBaseline(repoRoot, common, classificationReceiptId, bounds) {
|
|
@@ -478,9 +492,30 @@ const WriterStateSchema = z
|
|
|
478
492
|
if (stateId !== digestValue(content))
|
|
479
493
|
ctx.addIssue({ code: 'custom', message: 'Writer state is corrupt.' });
|
|
480
494
|
});
|
|
481
|
-
|
|
495
|
+
/** @internal Read-only closure check shared by inspection and the locked transition lease. */
|
|
496
|
+
export function assertWorktreeTransitionWriterQuiescent(worktreePath, bytes) {
|
|
497
|
+
if (bytes === undefined)
|
|
498
|
+
return;
|
|
499
|
+
const previous = WriterStateSchema.parse(JSON.parse(bytes.toString('utf8')));
|
|
500
|
+
if (previous.worktreeDigest !== worktreeDigest(worktreePath))
|
|
501
|
+
throw new DeliveryError('Verification writer belongs to another worktree.');
|
|
502
|
+
const snapshot = processSnapshot();
|
|
503
|
+
const owner = snapshot.get(previous.owner.pid);
|
|
504
|
+
if (owner?.identity === previous.owner.identity && !owner.status.startsWith('Z'))
|
|
505
|
+
throw new DeliveryError('A live verification writer still owns this worktree.');
|
|
506
|
+
if (previous.command.phase === 'starting')
|
|
507
|
+
throw new DeliveryError('Interrupted writer has unknown command ownership; reconcile before retrying.');
|
|
508
|
+
if (previous.command.phase === 'running') {
|
|
509
|
+
const identities = [previous.command.root, ...previous.command.tracked];
|
|
510
|
+
const groups = new Set([previous.command.root.pid, ...previous.command.tracked.map((member) => member.pgid)]);
|
|
511
|
+
if (identities.some((member) => snapshot.has(member.pid)) ||
|
|
512
|
+
[...snapshot.values()].some((member) => groups.has(member.pgid)))
|
|
513
|
+
throw new DeliveryError('Transition requires identity-bound command and process-group absence.');
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
async function withVerificationWriter(root, operation, transition, commonDirectory) {
|
|
482
517
|
const digest = worktreeDigest(root);
|
|
483
|
-
const path = join(gitCommonDir(root), 'ai-delivery', 'writers@1', `${digest.slice(7)}.json`);
|
|
518
|
+
const path = join(commonDirectory ?? gitCommonDir(root), 'ai-delivery', 'writers@1', `${digest.slice(7)}.json`);
|
|
484
519
|
ensurePrivateDirectoryDurably(dirname(path));
|
|
485
520
|
return withLock(path, {
|
|
486
521
|
projectRoot: root,
|
|
@@ -490,8 +525,23 @@ async function withVerificationWriter(root, operation) {
|
|
|
490
525
|
const owner = snapshot.get(process.pid);
|
|
491
526
|
if (owner === undefined || owner.status.startsWith('Z'))
|
|
492
527
|
throw new DeliveryError('Verification writer identity is unknown.');
|
|
493
|
-
|
|
494
|
-
|
|
528
|
+
let previousBytes;
|
|
529
|
+
if (transition) {
|
|
530
|
+
try {
|
|
531
|
+
lstatSync(path);
|
|
532
|
+
previousBytes = assertPrivateFile(path);
|
|
533
|
+
}
|
|
534
|
+
catch (error) {
|
|
535
|
+
if (error.code !== 'ENOENT')
|
|
536
|
+
throw error;
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
else if (existsSync(path))
|
|
540
|
+
previousBytes = assertPrivateFile(path);
|
|
541
|
+
if (transition)
|
|
542
|
+
assertWorktreeTransitionWriterQuiescent(root, previousBytes);
|
|
543
|
+
if (previousBytes !== undefined && !transition) {
|
|
544
|
+
const previous = WriterStateSchema.parse(JSON.parse(previousBytes.toString('utf8')));
|
|
495
545
|
if (previous.worktreeDigest !== digest)
|
|
496
546
|
throw new DeliveryError('Verification writer belongs to another worktree.');
|
|
497
547
|
const priorOwner = snapshot.get(previous.owner.pid);
|
|
@@ -519,9 +569,15 @@ async function withVerificationWriter(root, operation) {
|
|
|
519
569
|
});
|
|
520
570
|
}
|
|
521
571
|
}
|
|
572
|
+
if (transition) {
|
|
573
|
+
await transition.beforeClaim({
|
|
574
|
+
previousBytes: previousBytes === undefined ? undefined : Buffer.from(previousBytes),
|
|
575
|
+
owner: { pid: owner.pid, identity: owner.identity },
|
|
576
|
+
});
|
|
577
|
+
}
|
|
522
578
|
let state = {
|
|
523
579
|
schemaVersion: 'ai-delivery.verification-writer@1',
|
|
524
|
-
writerId: randomUUID(),
|
|
580
|
+
writerId: transition?.writerId ?? randomUUID(),
|
|
525
581
|
worktreeDigest: digest,
|
|
526
582
|
owner: { pid: owner.pid, identity: owner.identity },
|
|
527
583
|
command: { phase: 'idle' },
|
|
@@ -530,6 +586,22 @@ async function withVerificationWriter(root, operation) {
|
|
|
530
586
|
state = { ...state, command };
|
|
531
587
|
writePrivateJsonFileAtomically(path, { ...state, stateId: digestValue(state) });
|
|
532
588
|
};
|
|
589
|
+
if (transition) {
|
|
590
|
+
const bytes = Buffer.from(`${JSON.stringify({ ...state, stateId: digestValue(state) }, null, 2)}\n`);
|
|
591
|
+
await transition.recordClaim(Buffer.from(bytes));
|
|
592
|
+
let actual;
|
|
593
|
+
try {
|
|
594
|
+
lstatSync(path);
|
|
595
|
+
actual = assertPrivateFile(path);
|
|
596
|
+
}
|
|
597
|
+
catch (error) {
|
|
598
|
+
if (error.code !== 'ENOENT')
|
|
599
|
+
throw error;
|
|
600
|
+
}
|
|
601
|
+
if ((actual === undefined) !== (previousBytes === undefined) ||
|
|
602
|
+
(actual !== undefined && previousBytes !== undefined && !actual.equals(previousBytes)))
|
|
603
|
+
throw new DeliveryError('Writer changed after transition intent preservation.');
|
|
604
|
+
}
|
|
533
605
|
persist({ phase: 'idle' });
|
|
534
606
|
const writer = {
|
|
535
607
|
starting: () => persist({ phase: 'starting' }),
|
|
@@ -543,23 +615,86 @@ async function withVerificationWriter(root, operation) {
|
|
|
543
615
|
});
|
|
544
616
|
},
|
|
545
617
|
idle: () => persist({ phase: 'idle' }),
|
|
618
|
+
assertQuiescent: () => {
|
|
619
|
+
const current = WriterStateSchema.parse(JSON.parse(assertPrivateFile(path).toString('utf8')));
|
|
620
|
+
if (current.writerId !== state.writerId || current.command.phase !== 'idle')
|
|
621
|
+
throw new DeliveryError('Verification writer command quiescence is not confirmed.');
|
|
622
|
+
},
|
|
546
623
|
};
|
|
547
|
-
const releaseWriter = () => {
|
|
548
|
-
const
|
|
624
|
+
const releaseWriter = async () => {
|
|
625
|
+
const bytes = assertPrivateFile(path);
|
|
626
|
+
const current = WriterStateSchema.parse(JSON.parse(bytes.toString('utf8')));
|
|
549
627
|
if (current.writerId !== state.writerId)
|
|
550
628
|
throw new DeliveryError('Verification writer ownership changed.');
|
|
551
|
-
if (current.command.phase === 'idle')
|
|
629
|
+
if (current.command.phase === 'idle') {
|
|
630
|
+
if (transition) {
|
|
631
|
+
await transition.recordRelease(Buffer.from(bytes));
|
|
632
|
+
if (!assertPrivateFile(path).equals(bytes))
|
|
633
|
+
throw new DeliveryError('Writer changed before recorded release.');
|
|
634
|
+
}
|
|
552
635
|
unlinkSync(path);
|
|
636
|
+
if (transition) {
|
|
637
|
+
const descriptor = openSync(dirname(path), 'r');
|
|
638
|
+
try {
|
|
639
|
+
fsyncSync(descriptor);
|
|
640
|
+
}
|
|
641
|
+
finally {
|
|
642
|
+
closeSync(descriptor);
|
|
643
|
+
}
|
|
644
|
+
try {
|
|
645
|
+
lstatSync(path);
|
|
646
|
+
}
|
|
647
|
+
catch (error) {
|
|
648
|
+
if (error.code !== 'ENOENT')
|
|
649
|
+
throw error;
|
|
650
|
+
await transition.afterRelease?.();
|
|
651
|
+
return;
|
|
652
|
+
}
|
|
653
|
+
throw new DeliveryError('Writer absence is not confirmed after recorded release.');
|
|
654
|
+
}
|
|
655
|
+
}
|
|
553
656
|
};
|
|
554
657
|
try {
|
|
658
|
+
await transition?.afterClaim?.(Buffer.from(assertPrivateFile(path)));
|
|
555
659
|
return await operation(writer);
|
|
556
660
|
}
|
|
557
661
|
finally {
|
|
558
|
-
releaseWriter();
|
|
662
|
+
await releaseWriter();
|
|
559
663
|
}
|
|
560
664
|
},
|
|
561
665
|
});
|
|
562
666
|
}
|
|
667
|
+
/** @internal Hold the existing writer lock while reading a sealed transition; never claim or recover its slot. */
|
|
668
|
+
export async function withWorktreeTransitionWriterAbsent(repoRoot, worktreePath, operation) {
|
|
669
|
+
const path = join(gitCommonDir(repoRoot), 'ai-delivery', 'writers@1', `${worktreeDigest(worktreePath).slice(7)}.json`);
|
|
670
|
+
return withLock(path, {
|
|
671
|
+
projectRoot: repoRoot,
|
|
672
|
+
timeout: 200,
|
|
673
|
+
operation: async () => {
|
|
674
|
+
try {
|
|
675
|
+
lstatSync(path);
|
|
676
|
+
}
|
|
677
|
+
catch (error) {
|
|
678
|
+
if (error.code !== 'ENOENT')
|
|
679
|
+
throw error;
|
|
680
|
+
return operation();
|
|
681
|
+
}
|
|
682
|
+
throw new DeliveryError('Sealed transition writer absence postcondition drifted.');
|
|
683
|
+
},
|
|
684
|
+
});
|
|
685
|
+
}
|
|
686
|
+
/** @internal Check-only lease for the explicit transition owner; never recovers or signals old commands. */
|
|
687
|
+
export async function withWorktreeTransitionWriterLease(input, operation) {
|
|
688
|
+
z.uuid().parse(input.writerId);
|
|
689
|
+
const repository = gitRoot(input.repoRoot);
|
|
690
|
+
const subject = input.worktreePath === undefined ? repository : resolve(input.worktreePath);
|
|
691
|
+
return withVerificationWriter(subject, async (writer) => {
|
|
692
|
+
writer.assertQuiescent();
|
|
693
|
+
const result = await operation();
|
|
694
|
+
writer.assertQuiescent();
|
|
695
|
+
return result;
|
|
696
|
+
}, input, gitCommonDir(repository));
|
|
697
|
+
}
|
|
563
698
|
function primaryRoot(worktreeRoot) {
|
|
564
699
|
const common = gitCommonDir(worktreeRoot);
|
|
565
700
|
if (basename(common) !== '.git')
|
|
@@ -578,8 +713,7 @@ function assertRegisteredIssue(worktreeRoot, issueNumber, allowMerged = false) {
|
|
|
578
713
|
function worktreeDigest(root) {
|
|
579
714
|
return digestValue(resolve(root));
|
|
580
715
|
}
|
|
581
|
-
function
|
|
582
|
-
const root = dirname(fileURLToPath(import.meta.url));
|
|
716
|
+
function producerContent(root) {
|
|
583
717
|
const code = [];
|
|
584
718
|
const collect = (directory) => {
|
|
585
719
|
for (const entry of readdirSync(directory, { withFileTypes: true }).sort((a, b) => a.name.localeCompare(b.name))) {
|
|
@@ -627,7 +761,22 @@ function producerDigest() {
|
|
|
627
761
|
}
|
|
628
762
|
};
|
|
629
763
|
collectDependencies(join(dirname(root), 'package.json'));
|
|
630
|
-
return
|
|
764
|
+
return { code, dependencies: [...dependencies].sort(([a], [b]) => a.localeCompare(b)) };
|
|
765
|
+
}
|
|
766
|
+
function producerDigest(root = dirname(fileURLToPath(import.meta.url))) {
|
|
767
|
+
return digestValue(producerContent(root));
|
|
768
|
+
}
|
|
769
|
+
/** @internal Retained public code is hashed as data; it is never imported or executed. */
|
|
770
|
+
export function retainedWorktreeTransitionProducerDigest(distDirectory) {
|
|
771
|
+
return producerDigest(realpathSync(distDirectory));
|
|
772
|
+
}
|
|
773
|
+
/** @internal Preserve the same dependency manifests that participate in the existing producer digest. */
|
|
774
|
+
export function retainedWorktreeTransitionDependencyManifests(distDirectory) {
|
|
775
|
+
return producerContent(realpathSync(distDirectory)).dependencies.map(([source, digest]) => ({ source, digest }));
|
|
776
|
+
}
|
|
777
|
+
/** @internal Original manifests validate as history and cannot authorize current verification. */
|
|
778
|
+
export function readWorktreeTransitionRun(bytes) {
|
|
779
|
+
return parseRun(JSON.parse(bytes.toString('utf8')));
|
|
631
780
|
}
|
|
632
781
|
function manifestPath(common, headSha, root) {
|
|
633
782
|
return root === undefined
|
|
@@ -1268,4 +1417,54 @@ export function loadRemovedMergedRun(primaryRepoRoot, issueNumber) {
|
|
|
1268
1417
|
}
|
|
1269
1418
|
return run;
|
|
1270
1419
|
}
|
|
1420
|
+
/** @internal Runtime setup shares the existing writer, ownership handshake and bounded command runner. */
|
|
1421
|
+
export async function withRuntimeSetupWriter(root, operation) {
|
|
1422
|
+
return withVerificationWriter(root, async (writer) => operation({
|
|
1423
|
+
assertQuiescent: () => writer.assertQuiescent(),
|
|
1424
|
+
run: async (argv, bounds, signal) => {
|
|
1425
|
+
assertResourceBounds(bounds);
|
|
1426
|
+
const roots = bounds.outputRoots?.map((path) => resolve(root, path)).sort();
|
|
1427
|
+
if (roots !== undefined) {
|
|
1428
|
+
for (let i = 1; i < roots.length; i++)
|
|
1429
|
+
if (roots[i] === roots[i - 1] || roots[i].startsWith(`${roots[i - 1]}${sep}`))
|
|
1430
|
+
throw new DeliveryError('Filesystem output roots must not overlap.');
|
|
1431
|
+
}
|
|
1432
|
+
const files = roots === undefined ? undefined : scanOutputRoots(roots);
|
|
1433
|
+
const baseline = roots === undefined || files === undefined
|
|
1434
|
+
? undefined
|
|
1435
|
+
: {
|
|
1436
|
+
roots,
|
|
1437
|
+
files,
|
|
1438
|
+
baselineId: digestValue([...files]),
|
|
1439
|
+
};
|
|
1440
|
+
assertDiskHeadroom(root, bounds, baseline);
|
|
1441
|
+
const started = Date.now();
|
|
1442
|
+
const output = await runStageCommand(root, argv, signal, (capturedOutputBytes, sample) => reportVerificationProgress({
|
|
1443
|
+
state: 'running',
|
|
1444
|
+
stageId: 'runtime-setup',
|
|
1445
|
+
completedStages: 0,
|
|
1446
|
+
reusedStages: 0,
|
|
1447
|
+
remainingStages: 1,
|
|
1448
|
+
elapsedMs: Date.now() - started,
|
|
1449
|
+
capturedOutputBytes,
|
|
1450
|
+
...(sample === undefined
|
|
1451
|
+
? {}
|
|
1452
|
+
: {
|
|
1453
|
+
sampledAggregateRssBytes: sample.aggregateRssBytes,
|
|
1454
|
+
sampledFreeDiskBytes: sample.freeDiskBytes,
|
|
1455
|
+
sampledNewOutputBytes: sample.newOutputBytes,
|
|
1456
|
+
}),
|
|
1457
|
+
}), bounds, baseline, undefined, writer);
|
|
1458
|
+
reportVerificationProgress({
|
|
1459
|
+
state: 'completed',
|
|
1460
|
+
stageId: 'runtime-setup',
|
|
1461
|
+
completedStages: 1,
|
|
1462
|
+
reusedStages: 0,
|
|
1463
|
+
remainingStages: 0,
|
|
1464
|
+
elapsedMs: Date.now() - started,
|
|
1465
|
+
});
|
|
1466
|
+
return output;
|
|
1467
|
+
},
|
|
1468
|
+
}));
|
|
1469
|
+
}
|
|
1271
1470
|
//# sourceMappingURL=verification.js.map
|