codex-orchestrator 2.0.2 → 2.0.3
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/CHANGELOG.md +17 -0
- package/README.md +12 -9
- package/dist/src/index.d.ts +10 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/v2/acceptance-proof.d.ts +3 -0
- package/dist/src/v2/acceptance-proof.d.ts.map +1 -1
- package/dist/src/v2/acceptance-proof.js +2 -8
- package/dist/src/v2/acceptance-proof.js.map +1 -1
- package/dist/src/v2/adapters/gh-issue-adapter.d.ts +5 -3
- package/dist/src/v2/adapters/gh-issue-adapter.d.ts.map +1 -1
- package/dist/src/v2/adapters/gh-issue-adapter.js +63 -7
- package/dist/src/v2/adapters/gh-issue-adapter.js.map +1 -1
- package/dist/src/v2/adapters/issues.d.ts +16 -2
- package/dist/src/v2/adapters/issues.d.ts.map +1 -1
- package/dist/src/v2/adapters/issues.js +15 -5
- package/dist/src/v2/adapters/issues.js.map +1 -1
- package/dist/src/v2/adapters/mission-coordinator-lock.d.ts +1 -0
- package/dist/src/v2/adapters/mission-coordinator-lock.d.ts.map +1 -1
- package/dist/src/v2/adapters/mission-coordinator-lock.js +5 -1
- package/dist/src/v2/adapters/mission-coordinator-lock.js.map +1 -1
- package/dist/src/v2/candidate-cli.d.ts +4 -0
- package/dist/src/v2/candidate-cli.d.ts.map +1 -1
- package/dist/src/v2/candidate-cli.js +26 -11
- package/dist/src/v2/candidate-cli.js.map +1 -1
- package/dist/src/v2/cli-contract.d.ts +1 -1
- package/dist/src/v2/cli-contract.d.ts.map +1 -1
- package/dist/src/v2/cli-contract.js +10 -0
- package/dist/src/v2/cli-contract.js.map +1 -1
- package/dist/src/v2/code-review-report.d.ts +66 -0
- package/dist/src/v2/code-review-report.d.ts.map +1 -0
- package/dist/src/v2/code-review-report.js +259 -0
- package/dist/src/v2/code-review-report.js.map +1 -0
- package/dist/src/v2/codex-process.d.ts +8 -1
- package/dist/src/v2/codex-process.d.ts.map +1 -1
- package/dist/src/v2/codex-process.js +11 -0
- package/dist/src/v2/codex-process.js.map +1 -1
- package/dist/src/v2/config.d.ts +2 -1
- package/dist/src/v2/config.d.ts.map +1 -1
- package/dist/src/v2/config.js +8 -3
- package/dist/src/v2/config.js.map +1 -1
- package/dist/src/v2/contained-report-operation.d.ts +100 -0
- package/dist/src/v2/contained-report-operation.d.ts.map +1 -0
- package/dist/src/v2/contained-report-operation.js +200 -0
- package/dist/src/v2/contained-report-operation.js.map +1 -0
- package/dist/src/v2/containment.d.ts +6 -0
- package/dist/src/v2/containment.d.ts.map +1 -1
- package/dist/src/v2/containment.js +40 -1
- package/dist/src/v2/containment.js.map +1 -1
- package/dist/src/v2/direct-delivery.d.ts +101 -0
- package/dist/src/v2/direct-delivery.d.ts.map +1 -0
- package/dist/src/v2/direct-delivery.js +547 -0
- package/dist/src/v2/direct-delivery.js.map +1 -0
- package/dist/src/v2/immutable-workflow-publisher.d.ts +40 -0
- package/dist/src/v2/immutable-workflow-publisher.d.ts.map +1 -0
- package/dist/src/v2/immutable-workflow-publisher.js +218 -0
- package/dist/src/v2/immutable-workflow-publisher.js.map +1 -0
- package/dist/src/v2/implementation-reviewer.d.ts +81 -0
- package/dist/src/v2/implementation-reviewer.d.ts.map +1 -0
- package/dist/src/v2/implementation-reviewer.js +157 -0
- package/dist/src/v2/implementation-reviewer.js.map +1 -0
- package/dist/src/v2/owner-control-lock.d.ts +41 -0
- package/dist/src/v2/owner-control-lock.d.ts.map +1 -0
- package/dist/src/v2/owner-control-lock.js +174 -0
- package/dist/src/v2/owner-control-lock.js.map +1 -0
- package/dist/src/v2/route-continuations.d.ts +32 -0
- package/dist/src/v2/route-continuations.d.ts.map +1 -0
- package/dist/src/v2/route-continuations.js +2 -0
- package/dist/src/v2/route-continuations.js.map +1 -0
- package/dist/src/v2/route-coordinator.d.ts +77 -0
- package/dist/src/v2/route-coordinator.d.ts.map +1 -0
- package/dist/src/v2/route-coordinator.js +370 -0
- package/dist/src/v2/route-coordinator.js.map +1 -0
- package/dist/src/v2/route-decision.d.ts +129 -0
- package/dist/src/v2/route-decision.d.ts.map +1 -0
- package/dist/src/v2/route-decision.js +400 -0
- package/dist/src/v2/route-decision.js.map +1 -0
- package/dist/src/v2/run-issue.d.ts +63 -2
- package/dist/src/v2/run-issue.d.ts.map +1 -1
- package/dist/src/v2/run-issue.js +906 -91
- package/dist/src/v2/run-issue.js.map +1 -1
- package/dist/src/v2/run-store.d.ts +25 -1
- package/dist/src/v2/run-store.d.ts.map +1 -1
- package/dist/src/v2/run-store.js +143 -3
- package/dist/src/v2/run-store.js.map +1 -1
- package/dist/src/v2/runtime-assets.d.ts +15 -13
- package/dist/src/v2/runtime-assets.d.ts.map +1 -1
- package/dist/src/v2/runtime-assets.js +263 -416
- package/dist/src/v2/runtime-assets.js.map +1 -1
- package/dist/src/v2/runtime.d.ts +14 -6
- package/dist/src/v2/runtime.d.ts.map +1 -1
- package/dist/src/v2/runtime.js +478 -56
- package/dist/src/v2/runtime.js.map +1 -1
- package/dist/src/v2/setup-cli.d.ts.map +1 -1
- package/dist/src/v2/setup-cli.js +1 -0
- package/dist/src/v2/setup-cli.js.map +1 -1
- package/dist/src/v2/setup-runtime.d.ts.map +1 -1
- package/dist/src/v2/setup-runtime.js +20 -72
- package/dist/src/v2/setup-runtime.js.map +1 -1
- package/dist/src/v2/setup.d.ts +4 -1
- package/dist/src/v2/setup.d.ts.map +1 -1
- package/dist/src/v2/setup.js +104 -1
- package/dist/src/v2/setup.js.map +1 -1
- package/dist/src/v2/spec-coordinator.d.ts +85 -0
- package/dist/src/v2/spec-coordinator.d.ts.map +1 -0
- package/dist/src/v2/spec-coordinator.js +88 -0
- package/dist/src/v2/spec-coordinator.js.map +1 -0
- package/dist/src/v2/spec-delivery.d.ts +143 -0
- package/dist/src/v2/spec-delivery.d.ts.map +1 -0
- package/dist/src/v2/spec-delivery.js +401 -0
- package/dist/src/v2/spec-delivery.js.map +1 -0
- package/dist/src/v2/triage-route.d.ts +68 -0
- package/dist/src/v2/triage-route.d.ts.map +1 -0
- package/dist/src/v2/triage-route.js +223 -0
- package/dist/src/v2/triage-route.js.map +1 -0
- package/dist/src/v2/waiting-human-coordinator.d.ts +49 -0
- package/dist/src/v2/waiting-human-coordinator.d.ts.map +1 -0
- package/dist/src/v2/waiting-human-coordinator.js +509 -0
- package/dist/src/v2/waiting-human-coordinator.js.map +1 -0
- package/dist/src/v2/waiting-human.d.ts +143 -0
- package/dist/src/v2/waiting-human.d.ts.map +1 -0
- package/dist/src/v2/waiting-human.js +408 -0
- package/dist/src/v2/waiting-human.js.map +1 -0
- package/dist/src/v2/workflow-assets.d.ts +90 -0
- package/dist/src/v2/workflow-assets.d.ts.map +1 -0
- package/dist/src/v2/workflow-assets.js +554 -0
- package/dist/src/v2/workflow-assets.js.map +1 -0
- package/docs/deep-dive.md +15 -8
- package/internal-workflow/docs/agents/artifact-review-loop.md +267 -0
- package/internal-workflow/docs/agents/bug-workflow-routing.md +24 -0
- package/internal-workflow/docs/agents/coding-skill-routing.md +203 -0
- package/internal-workflow/docs/agents/confidence-rubric.md +65 -0
- package/internal-workflow/docs/agents/contract-test-ledger.md +60 -0
- package/internal-workflow/docs/agents/implementation-review-loop.md +302 -0
- package/internal-workflow/docs/agents/review-gates.md +49 -0
- package/internal-workflow/docs/agents/review-protocol.md +170 -0
- package/internal-workflow/docs/agents/tool-usage.md +88 -0
- package/internal-workflow/manifest.json +1 -0
- package/internal-workflow/operations/acceptance-proof/SKILL.md +3 -0
- package/internal-workflow/operations/ambiguity-review/SKILL.md +3 -0
- package/internal-workflow/operations/cleanup-review/SKILL.md +3 -0
- package/internal-workflow/operations/code-review/SKILL.md +3 -0
- package/internal-workflow/operations/implementation/SKILL.md +3 -0
- package/internal-workflow/operations/spec-author/SKILL.md +3 -0
- package/internal-workflow/operations/spec-implementation/SKILL.md +3 -0
- package/internal-workflow/operations/spec-review/SKILL.md +3 -0
- package/internal-workflow/operations/triage/SKILL.md +3 -0
- package/internal-workflow/profiles/analyst_deep.toml +9 -0
- package/internal-workflow/profiles/implementer_deep.toml +9 -0
- package/internal-workflow/profiles/implementer_standard.toml +9 -0
- package/internal-workflow/profiles/proof_agent.toml +8 -0
- package/internal-workflow/profiles/researcher_standard.toml +9 -0
- package/internal-workflow/profiles/reviewer_deep.toml +9 -0
- package/internal-workflow/profiles/reviewer_fast.toml +9 -0
- package/internal-workflow/profiles/reviewer_standard.toml +9 -0
- package/internal-workflow/schemas/ambiguity-review-v1.json +1 -0
- package/internal-workflow/schemas/code-review-v1.json +1 -0
- package/internal-workflow/schemas/implementation-report-v1.json +1 -0
- package/internal-workflow/schemas/proof-report-v1.json +1 -0
- package/internal-workflow/schemas/spec-author-v1.json +1 -0
- package/internal-workflow/schemas/spec-review-v1.json +30 -0
- package/internal-workflow/schemas/triage-route-v1.json +1 -0
- package/internal-workflow/skills/acceptance-proof/agents/openai.yaml +6 -0
- package/internal-workflow/skills/agent-auto/agents/openai.yaml +6 -0
- package/internal-workflow/skills/cleanup-review/SKILL.md +84 -0
- package/internal-workflow/skills/cleanup-review/agents/openai.yaml +6 -0
- package/internal-workflow/skills/code-review/SKILL.md +257 -0
- package/internal-workflow/skills/code-review/agents/openai.yaml +4 -0
- package/internal-workflow/skills/code-review/references/bug-classes.md +56 -0
- package/internal-workflow/skills/code-review/references/framework-lenses.md +34 -0
- package/internal-workflow/skills/code-review/references/targeted-recipes.md +49 -0
- package/internal-workflow/skills/codebase-design/DEEPENING.md +35 -0
- package/internal-workflow/skills/codebase-design/DESIGN-IT-TWICE.md +50 -0
- package/internal-workflow/skills/codebase-design/SKILL.md +82 -0
- package/internal-workflow/skills/codebase-design/agents/openai.yaml +6 -0
- package/internal-workflow/skills/diagnosing-bugs/SKILL.md +138 -0
- package/internal-workflow/skills/diagnosing-bugs/agents/openai.yaml +6 -0
- package/internal-workflow/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
- package/internal-workflow/skills/implementation-spec-maker/SKILL.md +93 -0
- package/internal-workflow/skills/implementation-spec-maker/agents/openai.yaml +6 -0
- package/internal-workflow/skills/implementation-spec-maker/references/source-modes.md +31 -0
- package/internal-workflow/skills/implementation-spec-maker/references/spec-template.md +146 -0
- package/internal-workflow/skills/implementation-spec-review/SKILL.md +211 -0
- package/internal-workflow/skills/implementation-spec-review/agents/openai.yaml +6 -0
- package/internal-workflow/skills/research/SKILL.md +107 -0
- package/internal-workflow/skills/research/agents/openai.yaml +6 -0
- package/internal-workflow/skills/small-task-implementer/SKILL.md +97 -0
- package/internal-workflow/skills/small-task-implementer/agents/openai.yaml +6 -0
- package/internal-workflow/skills/spec-implementer/SKILL.md +197 -0
- package/internal-workflow/skills/spec-implementer/agents/openai.yaml +6 -0
- package/internal-workflow/skills/tdd/SKILL.md +59 -0
- package/internal-workflow/skills/tdd/agents/openai.yaml +6 -0
- package/internal-workflow/skills/tdd/interface-design.md +31 -0
- package/internal-workflow/skills/tdd/mocking.md +59 -0
- package/internal-workflow/skills/tdd/refactoring.md +10 -0
- package/internal-workflow/skills/tdd/tests.md +77 -0
- package/internal-workflow/skills/triage/AGENT-BRIEF.md +192 -0
- package/internal-workflow/skills/triage/OUT-OF-SCOPE.md +101 -0
- package/internal-workflow/skills/triage/SKILL.md +134 -0
- package/internal-workflow/skills/triage/agents/openai.yaml +6 -0
- package/internal-workflow/skills/ui-evidence-proof/SKILL.md +123 -0
- package/internal-workflow/skills/ui-evidence-proof/agents/openai.yaml +6 -0
- package/package.json +6 -3
- /package/{internal-skills → internal-workflow/skills}/acceptance-proof/SKILL.md +0 -0
- /package/{internal-skills → internal-workflow/skills}/acceptance-proof/references/android.md +0 -0
- /package/{internal-skills → internal-workflow/skills}/acceptance-proof/references/browser.md +0 -0
- /package/{internal-skills → internal-workflow/skills}/acceptance-proof/references/ios.md +0 -0
- /package/{internal-skills → internal-workflow/skills}/acceptance-proof/tools/android-lease.mjs +0 -0
- /package/{internal-skills → internal-workflow/skills}/acceptance-proof/tools/ios-lease.mjs +0 -0
- /package/{internal-skills → internal-workflow/skills}/agent-auto/SKILL.md +0 -0
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { lstat, mkdir } from 'node:fs/promises';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { canonicalJson, sha256 } from './containment.js';
|
|
5
|
+
const ZERO_OID = '0'.repeat(40);
|
|
6
|
+
export async function inspectOwnerControlLock(input) {
|
|
7
|
+
validateRepository(input.canonicalRepository);
|
|
8
|
+
const controlGitDir = join(input.orchestratorHome, 'v2', 'owner-control.git');
|
|
9
|
+
try {
|
|
10
|
+
if (!(await lstat(controlGitDir)).isDirectory())
|
|
11
|
+
return { status: 'ambiguous', reason: 'Owner control store is not a directory.' };
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
if (typeof error === 'object' && error !== null && error.code === 'ENOENT')
|
|
15
|
+
return { status: 'absent' };
|
|
16
|
+
return { status: 'ambiguous', reason: 'Owner control store cannot be inspected.' };
|
|
17
|
+
}
|
|
18
|
+
const ref = `refs/codex-orchestrator/owners/${sha256(input.canonicalRepository)}`;
|
|
19
|
+
let oid;
|
|
20
|
+
try {
|
|
21
|
+
oid = await readRef(controlGitDir, ref);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return { status: 'ambiguous', reason: 'Owner control ref is invalid.' };
|
|
25
|
+
}
|
|
26
|
+
if (!oid)
|
|
27
|
+
return { status: 'absent' };
|
|
28
|
+
let owner;
|
|
29
|
+
try {
|
|
30
|
+
owner = await readOwner(controlGitDir, oid);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return { status: 'ambiguous', reason: 'Owner control record is malformed.' };
|
|
34
|
+
}
|
|
35
|
+
if (owner.canonicalRepository !== input.canonicalRepository || owner.host !== input.host || owner.bootId !== input.bootId) {
|
|
36
|
+
return { status: 'ambiguous', reason: 'Owner control identity is foreign or stale.' };
|
|
37
|
+
}
|
|
38
|
+
return input.processAlive(owner.pid)
|
|
39
|
+
? { status: 'active' }
|
|
40
|
+
: { status: 'ambiguous', reason: 'Owner control record has ambiguous liveness.' };
|
|
41
|
+
}
|
|
42
|
+
export class OwnerControlLockBlockedError extends Error {
|
|
43
|
+
kind;
|
|
44
|
+
constructor(message = 'owner control lock is held or ambiguous', kind = 'safety') {
|
|
45
|
+
super(message);
|
|
46
|
+
this.kind = kind;
|
|
47
|
+
this.name = 'OwnerControlLockBlockedError';
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export async function acquireOwnerControlLock(input) {
|
|
51
|
+
validateRepository(input.canonicalRepository);
|
|
52
|
+
if (!input.bootId || !input.host || !Number.isSafeInteger(input.pid) || input.pid <= 0)
|
|
53
|
+
throw new OwnerControlLockBlockedError('owner identity is invalid');
|
|
54
|
+
const controlGitDir = join(input.orchestratorHome, 'v2', 'owner-control.git');
|
|
55
|
+
await mkdir(join(input.orchestratorHome, 'v2'), { recursive: true, mode: 0o700 });
|
|
56
|
+
const initialized = await runGit(['init', '--bare', '--quiet', '--object-format=sha1', controlGitDir]);
|
|
57
|
+
if (initialized.code !== 0)
|
|
58
|
+
throw new OwnerControlLockBlockedError('owner control store initialization failed');
|
|
59
|
+
const ref = `refs/codex-orchestrator/owners/${sha256(input.canonicalRepository)}`;
|
|
60
|
+
const owner = {
|
|
61
|
+
version: 1,
|
|
62
|
+
token: input.createToken(),
|
|
63
|
+
canonicalRepository: input.canonicalRepository,
|
|
64
|
+
host: input.host,
|
|
65
|
+
bootId: input.bootId,
|
|
66
|
+
pid: input.pid,
|
|
67
|
+
acquiredAt: input.now(),
|
|
68
|
+
};
|
|
69
|
+
const blob = await writeBlob(controlGitDir, owner);
|
|
70
|
+
const startedAt = Date.now();
|
|
71
|
+
while (true) {
|
|
72
|
+
const observedOid = await readRef(controlGitDir, ref);
|
|
73
|
+
if (observedOid === undefined) {
|
|
74
|
+
if (await updateRef(controlGitDir, ref, blob, ZERO_OID))
|
|
75
|
+
return handle(controlGitDir, ref, blob);
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
const observed = await readOwner(controlGitDir, observedOid).catch(() => undefined);
|
|
79
|
+
if (!observed
|
|
80
|
+
|| observed.canonicalRepository !== input.canonicalRepository
|
|
81
|
+
|| observed.host !== input.host
|
|
82
|
+
|| observed.bootId !== input.bootId) {
|
|
83
|
+
throw new OwnerControlLockBlockedError();
|
|
84
|
+
}
|
|
85
|
+
if (input.processAlive(observed.pid)) {
|
|
86
|
+
if (Date.now() - startedAt >= (input.waitMs ?? 5_000))
|
|
87
|
+
throw new OwnerControlLockBlockedError('owner control lock wait timed out', 'live-contention');
|
|
88
|
+
await delay(input.pollMs ?? 25);
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
await input.afterObservedOwner?.(structuredClone(observed));
|
|
92
|
+
if (await updateRef(controlGitDir, ref, blob, observedOid))
|
|
93
|
+
return handle(controlGitDir, ref, blob);
|
|
94
|
+
if (Date.now() - startedAt >= (input.waitMs ?? 5_000))
|
|
95
|
+
throw new OwnerControlLockBlockedError('owner control lock reclaim lost');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
function handle(controlGitDir, ref, ownBlob) {
|
|
99
|
+
let released = false;
|
|
100
|
+
return {
|
|
101
|
+
async release() {
|
|
102
|
+
if (released)
|
|
103
|
+
return;
|
|
104
|
+
const result = await runGit(['--git-dir', controlGitDir, 'update-ref', '-d', ref, ownBlob]);
|
|
105
|
+
const observed = await readRef(controlGitDir, ref);
|
|
106
|
+
if (result.code !== 0 && observed === ownBlob)
|
|
107
|
+
throw new OwnerControlLockBlockedError('owner control lock release failed');
|
|
108
|
+
if (observed === ownBlob)
|
|
109
|
+
throw new OwnerControlLockBlockedError('owner control lock release was not confirmed');
|
|
110
|
+
released = true;
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
async function writeBlob(controlGitDir, owner) {
|
|
115
|
+
const result = await runGit(['--git-dir', controlGitDir, 'hash-object', '-w', '--stdin'], `${canonicalJson(owner)}\n`);
|
|
116
|
+
const oid = result.stdout.trim();
|
|
117
|
+
if (result.code !== 0 || !/^[0-9a-f]{40}$/u.test(oid))
|
|
118
|
+
throw new OwnerControlLockBlockedError('owner control blob write failed');
|
|
119
|
+
return oid;
|
|
120
|
+
}
|
|
121
|
+
async function readRef(controlGitDir, ref) {
|
|
122
|
+
const result = await runGit(['--git-dir', controlGitDir, 'rev-parse', '--verify', '--quiet', ref]);
|
|
123
|
+
if (result.code === 1)
|
|
124
|
+
return undefined;
|
|
125
|
+
const oid = result.stdout.trim();
|
|
126
|
+
if (result.code !== 0 || !/^[0-9a-f]{40}$/u.test(oid))
|
|
127
|
+
throw new OwnerControlLockBlockedError('owner control ref is invalid');
|
|
128
|
+
return oid;
|
|
129
|
+
}
|
|
130
|
+
async function readOwner(controlGitDir, oid) {
|
|
131
|
+
const result = await runGit(['--git-dir', controlGitDir, 'cat-file', 'blob', oid]);
|
|
132
|
+
if (result.code !== 0 || Buffer.byteLength(result.stdout) > 16 * 1024)
|
|
133
|
+
throw new Error('owner control blob is invalid');
|
|
134
|
+
return parseOwner(JSON.parse(result.stdout));
|
|
135
|
+
}
|
|
136
|
+
async function updateRef(controlGitDir, ref, next, previous) {
|
|
137
|
+
return (await runGit(['--git-dir', controlGitDir, 'update-ref', ref, next, previous])).code === 0;
|
|
138
|
+
}
|
|
139
|
+
function parseOwner(value) {
|
|
140
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
141
|
+
throw new Error('owner control record is invalid');
|
|
142
|
+
const keys = Object.keys(value).sort();
|
|
143
|
+
const expected = ['version', 'token', 'canonicalRepository', 'host', 'bootId', 'pid', 'acquiredAt'].sort();
|
|
144
|
+
if (keys.length !== expected.length || keys.some((key, index) => key !== expected[index]))
|
|
145
|
+
throw new Error('owner control record keys are invalid');
|
|
146
|
+
const owner = value;
|
|
147
|
+
validateRepository(owner.canonicalRepository);
|
|
148
|
+
if (owner.version !== 1 || !owner.token || !owner.host || !owner.bootId
|
|
149
|
+
|| !Number.isSafeInteger(owner.pid) || owner.pid <= 0
|
|
150
|
+
|| Number.isNaN(Date.parse(owner.acquiredAt)) || new Date(owner.acquiredAt).toISOString() !== owner.acquiredAt) {
|
|
151
|
+
throw new Error('owner control record fields are invalid');
|
|
152
|
+
}
|
|
153
|
+
return owner;
|
|
154
|
+
}
|
|
155
|
+
function validateRepository(value) {
|
|
156
|
+
if (!/^[a-z0-9._-]+\/[a-z0-9._-]+$/u.test(value))
|
|
157
|
+
throw new OwnerControlLockBlockedError('canonical repository is invalid');
|
|
158
|
+
}
|
|
159
|
+
function runGit(args, stdin) {
|
|
160
|
+
return new Promise((resolve, reject) => {
|
|
161
|
+
const child = spawn('git', args, { stdio: ['pipe', 'pipe', 'pipe'] });
|
|
162
|
+
const stdout = [];
|
|
163
|
+
const stderr = [];
|
|
164
|
+
child.stdout.on('data', (chunk) => stdout.push(chunk));
|
|
165
|
+
child.stderr.on('data', (chunk) => stderr.push(chunk));
|
|
166
|
+
child.once('error', reject);
|
|
167
|
+
child.once('close', (code) => resolve({ code: code ?? 1, stdout: Buffer.concat(stdout).toString('utf8'), stderr: Buffer.concat(stderr).toString('utf8') }));
|
|
168
|
+
child.stdin.end(stdin);
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
function delay(ms) {
|
|
172
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=owner-control-lock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"owner-control-lock.js","sourceRoot":"","sources":["../../../src/v2/owner-control-lock.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { PersistedFrozenCriterionV1, PersistedIssueSnapshotV1 } from './run-store.js';
|
|
2
|
+
import type { RouteReceiptV1 } from './route-decision.js';
|
|
3
|
+
import type { WorkflowGenerationReceipt } from './workflow-assets.js';
|
|
4
|
+
import type { WaitingHumanResult, WaitingHumanState } from './waiting-human-coordinator.js';
|
|
5
|
+
import type { SpecCoordinatorResult, SpecDeliveryState } from './spec-coordinator.js';
|
|
6
|
+
export interface RoutedRunContext {
|
|
7
|
+
runId: string;
|
|
8
|
+
issue: PersistedIssueSnapshotV1;
|
|
9
|
+
frozenCriteria: PersistedFrozenCriterionV1[];
|
|
10
|
+
worktreePath: string;
|
|
11
|
+
workflowGeneration: WorkflowGenerationReceipt;
|
|
12
|
+
receipt: RouteReceiptV1;
|
|
13
|
+
}
|
|
14
|
+
export type RoutedContinuationResult = {
|
|
15
|
+
status: 'completed';
|
|
16
|
+
} | {
|
|
17
|
+
status: 'retryable';
|
|
18
|
+
code: string;
|
|
19
|
+
} | {
|
|
20
|
+
status: 'blocked';
|
|
21
|
+
kind: 'external' | 'safety' | 'exhausted';
|
|
22
|
+
code: string;
|
|
23
|
+
evidence: string[];
|
|
24
|
+
} | {
|
|
25
|
+
status: 'cancelled';
|
|
26
|
+
};
|
|
27
|
+
export interface RoutedContinuationRegistry {
|
|
28
|
+
direct(input: RoutedRunContext): Promise<RoutedContinuationResult>;
|
|
29
|
+
specRequired(input: RoutedRunContext, state: SpecDeliveryState, signal: AbortSignal): Promise<SpecCoordinatorResult>;
|
|
30
|
+
awaitingUser(input: RoutedRunContext, state: WaitingHumanState, signal: AbortSignal): Promise<WaitingHumanResult>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=route-continuations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-continuations.d.ts","sourceRoot":"","sources":["../../../src/v2/route-continuations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAC5F,OAAO,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAEtF,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,wBAAwB,CAAC;IAChC,cAAc,EAAE,0BAA0B,EAAE,CAAC;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,yBAAyB,CAAC;IAC9C,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,MAAM,wBAAwB,GAChC;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GACvB;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GAClG;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC;AAE5B,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACnE,YAAY,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACrH,YAAY,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACnH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-continuations.js","sourceRoot":"","sources":["../../../src/v2/route-continuations.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { type AmbiguityReviewRefV1, type CandidateRepairInputV1, type MalformedRepairInputV1, type RouteArtifactRefV1, type RouteExecutionV1, type RouteReceiptV1 } from './route-decision.js';
|
|
2
|
+
import { type TriageRouteV1 } from './triage-route.js';
|
|
3
|
+
import type { WorkflowGenerationReceipt } from './workflow-assets.js';
|
|
4
|
+
import type { ContainedReportOperation, ContainedReportOperationResult } from './contained-report-operation.js';
|
|
5
|
+
export type { AmbiguityReviewRefV1, CandidateRepairInputV1, ContainedReportOperation, MalformedRepairInputV1, RouteArtifactRefV1, RouteExecutionV1, RouteReceiptV1, };
|
|
6
|
+
export type RouteCoordinatorResult = {
|
|
7
|
+
status: 'succeeded';
|
|
8
|
+
receipt: RouteReceiptV1;
|
|
9
|
+
} | {
|
|
10
|
+
status: 'repairable';
|
|
11
|
+
code: 'triage-artifact-invalid' | 'waiting-candidate-rejected';
|
|
12
|
+
findings: string[];
|
|
13
|
+
} | {
|
|
14
|
+
status: 'retryable';
|
|
15
|
+
owner: 'triage' | 'ambiguity-review';
|
|
16
|
+
code: string;
|
|
17
|
+
} | {
|
|
18
|
+
status: 'safe-halt';
|
|
19
|
+
process: Extract<ContainedReportOperationResult, {
|
|
20
|
+
status: 'safe-halt';
|
|
21
|
+
}>['process'];
|
|
22
|
+
waitForAbsence(): Promise<void>;
|
|
23
|
+
} | {
|
|
24
|
+
status: 'awaiting-user';
|
|
25
|
+
receipt: RouteReceiptV1;
|
|
26
|
+
} | {
|
|
27
|
+
status: 'cancelled';
|
|
28
|
+
} | {
|
|
29
|
+
status: 'blocked';
|
|
30
|
+
kind: 'external' | 'safety' | 'exhausted';
|
|
31
|
+
code: string;
|
|
32
|
+
evidence: string[];
|
|
33
|
+
};
|
|
34
|
+
export interface RouteCoordinatorState {
|
|
35
|
+
read(): Promise<RouteExecutionV1>;
|
|
36
|
+
compareAndSwap(expected: RouteExecutionV1, next: RouteExecutionV1): Promise<boolean>;
|
|
37
|
+
complete(expected: RouteExecutionV1, next: RouteExecutionV1, receipt: RouteReceiptV1): Promise<boolean>;
|
|
38
|
+
cancel(expected: RouteExecutionV1): Promise<boolean>;
|
|
39
|
+
}
|
|
40
|
+
export interface RouteReceiptInput {
|
|
41
|
+
artifact: TriageRouteV1;
|
|
42
|
+
triage: RouteArtifactRefV1;
|
|
43
|
+
review: AmbiguityReviewRefV1 | null;
|
|
44
|
+
decidedAt: string;
|
|
45
|
+
}
|
|
46
|
+
export interface RouteCoordinatorDependencies {
|
|
47
|
+
state: RouteCoordinatorState;
|
|
48
|
+
operation: ContainedReportOperation;
|
|
49
|
+
createAttemptId(): string;
|
|
50
|
+
now(): string;
|
|
51
|
+
createReceipt(input: RouteReceiptInput): RouteReceiptV1;
|
|
52
|
+
}
|
|
53
|
+
export interface RouteCoordinatorInput {
|
|
54
|
+
runId: string;
|
|
55
|
+
worktreePath: string;
|
|
56
|
+
workflowGeneration: WorkflowGenerationReceipt;
|
|
57
|
+
promptFacts: string[];
|
|
58
|
+
signal: AbortSignal;
|
|
59
|
+
}
|
|
60
|
+
export declare function initialRouteExecution(): RouteExecutionV1;
|
|
61
|
+
export declare class RouteCoordinator {
|
|
62
|
+
private readonly dependencies;
|
|
63
|
+
constructor(dependencies: RouteCoordinatorDependencies);
|
|
64
|
+
run(input: RouteCoordinatorInput): Promise<RouteCoordinatorResult>;
|
|
65
|
+
private launchTriage;
|
|
66
|
+
private adoptTriage;
|
|
67
|
+
private launchReview;
|
|
68
|
+
private adoptReview;
|
|
69
|
+
private invalidTriage;
|
|
70
|
+
private retryTriage;
|
|
71
|
+
private retryReview;
|
|
72
|
+
private recoverTriage;
|
|
73
|
+
private recoverReview;
|
|
74
|
+
private complete;
|
|
75
|
+
private cancel;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=route-coordinator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-coordinator.d.ts","sourceRoot":"","sources":["../../../src/v2/route-coordinator.ts"],"names":[],"mappings":"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"}
|