codex-orchestrator 0.1.30 → 0.1.35

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.
Files changed (133) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/README.md +152 -164
  3. package/dist/src/cli.js +68 -1
  4. package/dist/src/cli.js.map +1 -1
  5. package/dist/src/codex/command-adapter.d.ts +2 -1
  6. package/dist/src/codex/command-adapter.d.ts.map +1 -1
  7. package/dist/src/codex/command-adapter.js +13 -2
  8. package/dist/src/codex/command-adapter.js.map +1 -1
  9. package/dist/src/codex/mobile-device-guard.d.ts +7 -0
  10. package/dist/src/codex/mobile-device-guard.d.ts.map +1 -0
  11. package/dist/src/codex/mobile-device-guard.js +63 -0
  12. package/dist/src/codex/mobile-device-guard.js.map +1 -0
  13. package/dist/src/config/constants.d.ts +1 -1
  14. package/dist/src/config/constants.d.ts.map +1 -1
  15. package/dist/src/config/constants.js +1 -0
  16. package/dist/src/config/constants.js.map +1 -1
  17. package/dist/src/config/schema.d.ts +16 -2
  18. package/dist/src/config/schema.d.ts.map +1 -1
  19. package/dist/src/config/schema.js +42 -0
  20. package/dist/src/config/schema.js.map +1 -1
  21. package/dist/src/github/gh-pull-request-adapter.d.ts +1 -0
  22. package/dist/src/github/gh-pull-request-adapter.d.ts.map +1 -1
  23. package/dist/src/github/gh-pull-request-adapter.js +20 -0
  24. package/dist/src/github/gh-pull-request-adapter.js.map +1 -1
  25. package/dist/src/github/pull-requests.d.ts +2 -0
  26. package/dist/src/github/pull-requests.d.ts.map +1 -1
  27. package/dist/src/github/pull-requests.js +9 -0
  28. package/dist/src/github/pull-requests.js.map +1 -1
  29. package/dist/src/runner/acceptance-proof-runner.d.ts +54 -0
  30. package/dist/src/runner/acceptance-proof-runner.d.ts.map +1 -0
  31. package/dist/src/runner/acceptance-proof-runner.js +229 -0
  32. package/dist/src/runner/acceptance-proof-runner.js.map +1 -0
  33. package/dist/src/runner/acceptance-proof.d.ts +121 -0
  34. package/dist/src/runner/acceptance-proof.d.ts.map +1 -0
  35. package/dist/src/runner/acceptance-proof.js +405 -0
  36. package/dist/src/runner/acceptance-proof.js.map +1 -0
  37. package/dist/src/runner/android-visual-proof-command.d.ts +26 -0
  38. package/dist/src/runner/android-visual-proof-command.d.ts.map +1 -0
  39. package/dist/src/runner/android-visual-proof-command.js +598 -0
  40. package/dist/src/runner/android-visual-proof-command.js.map +1 -0
  41. package/dist/src/runner/command-utils.d.ts.map +1 -1
  42. package/dist/src/runner/command-utils.js +55 -6
  43. package/dist/src/runner/command-utils.js.map +1 -1
  44. package/dist/src/runner/completion-report.d.ts +3 -1
  45. package/dist/src/runner/completion-report.d.ts.map +1 -1
  46. package/dist/src/runner/completion-report.js +2 -1
  47. package/dist/src/runner/completion-report.js.map +1 -1
  48. package/dist/src/runner/daemon-command.d.ts +1 -0
  49. package/dist/src/runner/daemon-command.d.ts.map +1 -1
  50. package/dist/src/runner/daemon-command.js +139 -14
  51. package/dist/src/runner/daemon-command.js.map +1 -1
  52. package/dist/src/runner/doctor-command.js +3 -3
  53. package/dist/src/runner/doctor-command.js.map +1 -1
  54. package/dist/src/runner/durable-run-summary.d.ts +3 -0
  55. package/dist/src/runner/durable-run-summary.d.ts.map +1 -1
  56. package/dist/src/runner/durable-run-summary.js +2 -0
  57. package/dist/src/runner/durable-run-summary.js.map +1 -1
  58. package/dist/src/runner/handoff-evidence.d.ts +5 -0
  59. package/dist/src/runner/handoff-evidence.d.ts.map +1 -1
  60. package/dist/src/runner/handoff-evidence.js +22 -0
  61. package/dist/src/runner/handoff-evidence.js.map +1 -1
  62. package/dist/src/runner/ios-visual-proof-command.d.ts +25 -0
  63. package/dist/src/runner/ios-visual-proof-command.d.ts.map +1 -0
  64. package/dist/src/runner/ios-visual-proof-command.js +355 -0
  65. package/dist/src/runner/ios-visual-proof-command.js.map +1 -0
  66. package/dist/src/runner/lifecycle-events.d.ts +1 -1
  67. package/dist/src/runner/lifecycle-events.d.ts.map +1 -1
  68. package/dist/src/runner/local-execution-session.d.ts +20 -6
  69. package/dist/src/runner/local-execution-session.d.ts.map +1 -1
  70. package/dist/src/runner/local-execution-session.js +98 -11
  71. package/dist/src/runner/local-execution-session.js.map +1 -1
  72. package/dist/src/runner/local-state.d.ts +6 -0
  73. package/dist/src/runner/local-state.d.ts.map +1 -1
  74. package/dist/src/runner/local-state.js +14 -0
  75. package/dist/src/runner/local-state.js.map +1 -1
  76. package/dist/src/runner/mobile-device-lease.d.ts +11 -0
  77. package/dist/src/runner/mobile-device-lease.d.ts.map +1 -0
  78. package/dist/src/runner/mobile-device-lease.js +121 -0
  79. package/dist/src/runner/mobile-device-lease.js.map +1 -0
  80. package/dist/src/runner/mobile-visual-proof-command.d.ts +17 -0
  81. package/dist/src/runner/mobile-visual-proof-command.d.ts.map +1 -0
  82. package/dist/src/runner/mobile-visual-proof-command.js +168 -0
  83. package/dist/src/runner/mobile-visual-proof-command.js.map +1 -0
  84. package/dist/src/runner/plan-auto-command.d.ts.map +1 -1
  85. package/dist/src/runner/plan-auto-command.js +58 -7
  86. package/dist/src/runner/plan-auto-command.js.map +1 -1
  87. package/dist/src/runner/prompt.js +2 -2
  88. package/dist/src/runner/prompt.js.map +1 -1
  89. package/dist/src/runner/recovery.d.ts +2 -1
  90. package/dist/src/runner/recovery.d.ts.map +1 -1
  91. package/dist/src/runner/recovery.js +24 -0
  92. package/dist/src/runner/recovery.js.map +1 -1
  93. package/dist/src/runner/review-gate-policy.d.ts +7 -0
  94. package/dist/src/runner/review-gate-policy.d.ts.map +1 -1
  95. package/dist/src/runner/review-gate-policy.js +88 -22
  96. package/dist/src/runner/review-gate-policy.js.map +1 -1
  97. package/dist/src/runner/review-gates.d.ts.map +1 -1
  98. package/dist/src/runner/review-gates.js +44 -11
  99. package/dist/src/runner/review-gates.js.map +1 -1
  100. package/dist/src/runner/rework-policy.d.ts +1 -0
  101. package/dist/src/runner/rework-policy.d.ts.map +1 -1
  102. package/dist/src/runner/rework-policy.js +7 -0
  103. package/dist/src/runner/rework-policy.js.map +1 -1
  104. package/dist/src/runner/scoped-auto-command.d.ts +46 -1
  105. package/dist/src/runner/scoped-auto-command.d.ts.map +1 -1
  106. package/dist/src/runner/scoped-auto-command.js +148 -48
  107. package/dist/src/runner/scoped-auto-command.js.map +1 -1
  108. package/dist/src/runner/scoped-recovery.d.ts +65 -0
  109. package/dist/src/runner/scoped-recovery.d.ts.map +1 -0
  110. package/dist/src/runner/scoped-recovery.js +484 -0
  111. package/dist/src/runner/scoped-recovery.js.map +1 -0
  112. package/dist/src/runner/status-command.d.ts.map +1 -1
  113. package/dist/src/runner/status-command.js +1 -0
  114. package/dist/src/runner/status-command.js.map +1 -1
  115. package/dist/src/runner/visual-proof-runner.d.ts +1 -0
  116. package/dist/src/runner/visual-proof-runner.d.ts.map +1 -1
  117. package/dist/src/runner/visual-proof-runner.js +144 -16
  118. package/dist/src/runner/visual-proof-runner.js.map +1 -1
  119. package/dist/src/setup/project-config.d.ts +4 -0
  120. package/dist/src/setup/project-config.d.ts.map +1 -1
  121. package/dist/src/setup/project-config.js +142 -9
  122. package/dist/src/setup/project-config.js.map +1 -1
  123. package/dist/src/setup/setup-command.d.ts.map +1 -1
  124. package/dist/src/setup/setup-command.js +2 -2
  125. package/dist/src/setup/setup-command.js.map +1 -1
  126. package/dist/src/setup/workflows.d.ts.map +1 -1
  127. package/dist/src/setup/workflows.js +5 -0
  128. package/dist/src/setup/workflows.js.map +1 -1
  129. package/docs/deep-dive.md +230 -31
  130. package/package.json +1 -1
  131. package/prompts/workflows/acceptance-proof.md +25 -0
  132. package/prompts/workflows/issue-breakdown.md +7 -0
  133. package/prompts/workflows/scoped-implementation.md +6 -2
@@ -1,7 +1,11 @@
1
1
  import { hasIssueClosureEvidence } from '../github/issues.js';
2
2
  import { clearClarificationGate, hasMaintainerResponseAfterLatestClarification, } from './issue-state-machine.js';
3
+ import { classifyScopedRecoveryRun } from './scoped-recovery.js';
3
4
  const recoveryReasons = {
4
5
  active: 'GitHub still marks the issue running',
6
+ 'unknown-or-foreign': 'local scoped run is not safely recoverable from available evidence',
7
+ 'completed-pending-handoff': 'completed scoped run is pending runner-owned handoff',
8
+ 'failed-pending-block': 'stale scoped run is pending runner-owned blocked recovery',
5
9
  stale: 'local run exists but GitHub no longer marks it running',
6
10
  missing: 'local run has no matching GitHub issue',
7
11
  completed: 'GitHub marks the work completed',
@@ -17,6 +21,26 @@ export async function reconcileRunnerState(input) {
17
21
  for (const run of state.runs) {
18
22
  const issue = await input.issueAdapter.getIssue(run.issueNumber);
19
23
  const status = classifyIssue(issue, input.config);
24
+ if (run.mode === 'scoped-issue' && status === 'active' && input.targetRoot) {
25
+ const scoped = await classifyScopedRecoveryRun({
26
+ targetRoot: input.targetRoot,
27
+ config: input.config,
28
+ run,
29
+ issue,
30
+ invocation: 'status',
31
+ now: input.now,
32
+ });
33
+ entries.push({
34
+ issueNumber: run.issueNumber,
35
+ mode: run.mode,
36
+ status: scoped.status,
37
+ reason: scoped.reason,
38
+ workspacePath: run.workspacePath,
39
+ sessionId: run.sessionId,
40
+ retryCount: run.retryCount,
41
+ });
42
+ continue;
43
+ }
20
44
  if (status === 'clarification-resumable' && allowClarificationResume) {
21
45
  await clearClarificationGate(input.issueAdapter, input.config, run.issueNumber, input.now);
22
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../../src/runner/recovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../../src/runner/recovery.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,11 @@ export declare function shouldApplyVisualProofGate(input: {
8
8
  issue: GitHubIssue;
9
9
  changedFiles: string[];
10
10
  }): boolean;
11
+ export declare function isVisualProofDesirable(input: {
12
+ config: CodexOrchestratorConfig;
13
+ issue: GitHubIssue;
14
+ changedFiles: string[];
15
+ }): boolean;
11
16
  export declare function hasPassedValidation(validation: RunnerValidationLine[], patterns: string[]): boolean;
12
17
  export declare function hasPassedTddValidation(validation: RunnerValidationLine[], patterns: string[]): boolean;
13
18
  export declare function validationText(line: RunnerValidationLine): string;
@@ -20,5 +25,7 @@ export declare function runnerVisualProofPolicy(config: CodexOrchestratorConfig)
20
25
  envPassthrough: string[];
21
26
  timeoutMs?: number;
22
27
  minScreenshotArtifacts: number;
28
+ requireWhenDesirable: boolean;
29
+ blockOnMissingProof: boolean;
23
30
  };
24
31
  //# sourceMappingURL=review-gate-policy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"review-gate-policy.d.ts","sourceRoot":"","sources":["../../../src/runner/review-gate-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAgC1G;AAuBD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,uBAAuB,GAAG,MAAM,EAAE,CAerF;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,MAAM,EAAE,uBAAuB,CAAC;IAChC,KAAK,EAAE,WAAW,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,GAAG,OAAO,CAaV;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,oBAAoB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAInG;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,oBAAoB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAgBtG;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAEjE;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAE5E;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAE5E;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,uBAAuB,GAAG;IACxE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB,EAAE,MAAM,CAAC;CAChC,CASA"}
1
+ {"version":3,"file":"review-gate-policy.d.ts","sourceRoot":"","sources":["../../../src/runner/review-gate-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CA4C1G;AAuBD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,uBAAuB,GAAG,MAAM,EAAE,CAerF;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,MAAM,EAAE,uBAAuB,CAAC;IAChC,KAAK,EAAE,WAAW,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,GAAG,OAAO,CAqBV;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,MAAM,EAAE,uBAAuB,CAAC;IAChC,KAAK,EAAE,WAAW,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,GAAG,OAAO,CAiBV;AAOD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,oBAAoB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAInG;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,oBAAoB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAgBtG;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAEjE;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAE5E;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAE5E;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,uBAAuB,GAAG;IACxE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAsBA"}
@@ -1,30 +1,43 @@
1
1
  import { globMatches } from '../path-policy.js';
2
+ import { uiEvidenceFailureDimensions } from './acceptance-proof.js';
2
3
  export function buildVisualProofPromptLines(config, issueNumber) {
3
- const command = config.reviewGates.visualProof.runnerValidationCommand?.trim();
4
+ const acceptanceProof = config.reviewGates.acceptanceProof;
5
+ const policy = runnerVisualProofPolicy(config);
6
+ const command = policy.commandTemplate;
4
7
  if (!command) {
5
8
  return [
6
- `For visual/UI work, if you can produce screenshot proof, save it under ${config.reviewGates.visualProof.artifactDir}/issue-${issueNumber}/ and include it as screenshot artifacts.`,
9
+ `For acceptance proof, save proof artifacts under ${policy.artifactDir}/issue-${issueNumber}/ and include them as screenshot, ui-dump, log, smoke-output, or other artifacts.`,
10
+ 'For visual/UI work, screenshots and UI dumps require a Proof Report uiEvidence contract with workflowScope, viewportCoverage, artifactFreshness, layoutReview, copyReview, and sourceInputs; screenshot existence alone is not enough proof.',
7
11
  'For browser/web UI work, prefer a Playwright-based proof script when available; do not rely on in-session browser plugins for proof.',
8
12
  ...androidMobileProofPromptLines(),
9
13
  ...iosMobileProofPromptLines(),
10
- 'If screenshot proof is not possible in this environment, state that explicitly in skippedChecks along with the concrete reason (missing dependencies, missing credentials, dev server cannot start, etc.).',
14
+ 'For non-visual acceptance criteria, prefer a live smoke proof that exercises observable product behavior and records the output as an artifact.',
15
+ 'If acceptance proof is not possible in this environment, state that explicitly in skippedChecks along with the concrete reason (missing dependencies, missing credentials, dev server cannot start, etc.).',
11
16
  ];
12
17
  }
13
- const envNames = config.reviewGates.visualProof.envPassthrough ?? [];
18
+ const envNames = policy.envPassthrough;
14
19
  const loginEnvLine = envNames.length > 0
15
- ? `The runner visual proof command will receive these project environment variables when they exist: ${envNames.join(', ')}. Use them for login if authentication is required; never hardcode credentials.`
16
- : 'If authentication is required, make the visual proof script read credentials from environment variables configured in reviewGates.visualProof.envPassthrough; never hardcode credentials.';
20
+ ? `The runner acceptance proof command will receive these project environment variables when they exist: ${envNames.join(', ')}. Use them for login if authentication is required; never hardcode credentials.`
21
+ : 'If authentication is required, make the acceptance proof script read credentials from environment variables configured in reviewGates.acceptanceProof.envPassthrough; never hardcode credentials.';
17
22
  return [
18
- `For visual/UI work, prepare screenshot proof files under ${config.reviewGates.visualProof.artifactDir}/issue-${issueNumber}/ and include them as screenshot artifacts when you create them.`,
19
- `After your run, the runner will execute this visual proof command outside the child Codex sandbox: ${command}.`,
23
+ `For acceptance proof, prepare proof artifacts under ${policy.artifactDir}/issue-${issueNumber}/ and include them as screenshot, ui-dump, log, smoke-output, or other artifacts when you create them.`,
24
+ `After your run, the runner will execute this visual proof command outside the child Codex sandbox as the configured acceptance proof command: ${command}.`,
20
25
  'Prepare any project files this command needs, but do not execute this runner-owned command yourself or start long-lived browser/dev-server proof loops from child Codex.',
26
+ `Proof script repair is allowed only in these proof-owned paths: ${acceptanceProof.proofOwnedPathGlobs.join(', ')}.`,
27
+ 'Product-code changes made during the proof phase are blockers; route missing behavior back through implementation instead.',
28
+ 'Every required acceptance criterion must map to high-confidence artifact evidence before Draft PR Handoff.',
29
+ 'For visual/UI work, screenshots and UI dumps require a Proof Report uiEvidence contract with workflowScope, viewportCoverage, artifactFreshness, layoutReview, copyReview, and sourceInputs.',
30
+ `UI Evidence failure dimensions are runner-owned and stable: ${uiEvidenceFailureDimensions.join(', ')}.`,
31
+ 'For web layout proof, include wide desktop viewport coverage; include mobile coverage only when the issue or acceptance criteria call for mobile or responsive behavior.',
32
+ 'Prefer real UI login when configured credentials exist; session or cookie seeding must be explained in uiEvidence.authShortcutReason.',
21
33
  'For browser/web UI work, prefer Playwright-based screenshot proof via the runner-owned command; do not rely on in-session browser plugins for proof.',
22
34
  ...androidMobileProofPromptLines(),
23
35
  ...iosMobileProofPromptLines(),
24
36
  'When this runner-owned proof command can validate the visual behavior, treat it as the primary visual proof path.',
25
37
  'Do not report browser tool unavailability as a skipped check or residual risk when the runner-owned proof command is prepared.',
26
38
  'For UI layout fixes, a focused visual proof script with concrete assertions can be the TDD evidence when regular unit tests cannot observe the layout.',
27
- 'Do not claim the runner-owned visual proof passed; the runner will append the passed/failed result after your run.',
39
+ 'For non-visual acceptance criteria, prefer a live smoke proof that exercises observable product behavior and records the output as an artifact.',
40
+ 'Do not claim the runner-owned visual proof passed or acceptance proof passed; the runner will append the passed/failed result after your run.',
28
41
  'The runner will expose CODEX_ORCHESTRATOR_PLAYWRIGHT_PROFILE_DIR for proof scripts that need a stable Playwright user data directory.',
29
42
  loginEnvLine,
30
43
  'If required login environment variables are missing, the visual proof script must fail with a short clear error.',
@@ -32,10 +45,10 @@ export function buildVisualProofPromptLines(config, issueNumber) {
32
45
  }
33
46
  function androidMobileProofPromptLines() {
34
47
  return [
35
- 'For Android mobile app UI work, use device-backed proof instead of browser automation: run `adb devices -l`, prefer a connected non-emulator device serial, and run `export ANDROID_SERIAL=<serial>` for the proof session.',
36
- 'If no physical Android device is listed by adb, run `emulator -list-avds`, start an available AVD in a separate shell with `emulator -avd <avd-name>`, then wait for it with `adb wait-for-device` before testing.',
48
+ 'For Android mobile app UI work, use runner-owned device-backed proof instead of browser automation. Do not start Android emulators from child Codex; the runner-owned mobile proof command serializes shared adb/emulator access.',
49
+ 'If a specific connected Android target is required, document the desired `ANDROID_SERIAL` value or project environment requirement, but leave device selection and emulator startup to the runner-owned proof command.',
37
50
  'If Test Android Apps skills are unavailable, try to enable or load that plugin through the available Codex plugin/tool discovery mechanism before falling back.',
38
- 'After selecting the adb target, use Test Android Apps skills for app launch, navigation, screenshots, logs, and performance evidence.',
51
+ 'When a target is already selected by the runner or provided through the environment, use Test Android Apps skills for app launch, navigation, screenshots, logs, and performance evidence.',
39
52
  'For native Android projects, use the project Gradle wrapper (`./gradlew`) with a writable `GRADLE_USER_HOME`, build the relevant debug APK, then install and launch it through adb on the selected target.',
40
53
  'For Flutter Android projects only, start Flutter rebuild/install with the detected Flutter SDK and writable `PUB_CACHE` and `GRADLE_USER_HOME` directories. If rebuild/install fails because the SDK cache is read-only, retry only when `CODEX_ORCHESTRATOR_FLUTTER_ROOT` points to a preconfigured writable Flutter SDK: set `FLUTTER_ROOT` to that path, prepend `$FLUTTER_ROOT/bin` to `PATH`, run `flutter precache --android`, then rebuild/install again. If no writable Flutter SDK is configured, report the concrete SDK cache permission error.',
41
54
  'Do not use Playwright as the primary proof path for Android mobile app verification.',
@@ -65,14 +78,40 @@ export function buildQualityGatePromptLines(config) {
65
78
  ];
66
79
  }
67
80
  export function shouldApplyVisualProofGate(input) {
81
+ const acceptanceProof = input.config.reviewGates.acceptanceProof;
82
+ if (!acceptanceProof.enabled) {
83
+ return false;
84
+ }
85
+ const policy = runnerVisualProofPolicy(input.config);
86
+ if (!policy.commandTemplate) {
87
+ return false;
88
+ }
89
+ const issueText = `${input.issue.title}\n${input.issue.body}`;
90
+ const acceptanceCommand = acceptanceProof.runnerValidationCommand?.trim();
91
+ const canRunGenericAcceptanceProof = Boolean(acceptanceCommand) && !isMobileVisualProofCommand(acceptanceCommand);
92
+ const issueNeedsAcceptanceProof = canRunGenericAcceptanceProof
93
+ && acceptanceProof.issueTextPatterns.some((pattern) => regexMatches(pattern, issueText));
94
+ const changedAcceptanceProofFiles = canRunGenericAcceptanceProof
95
+ && input.changedFiles.some((path) => acceptanceProof.changedPathGlobs.some((pattern) => globMatches(pattern, path)));
96
+ return issueNeedsAcceptanceProof || changedAcceptanceProofFiles || isVisualProofDesirable(input);
97
+ }
98
+ export function isVisualProofDesirable(input) {
68
99
  const visualProof = input.config.reviewGates.visualProof;
69
100
  if (!visualProof.enabled) {
70
101
  return false;
71
102
  }
72
103
  const issueText = `${input.issue.title}\n${input.issue.body}`;
73
- const issueLooksVisual = visualProof.issueTextPatterns.some((pattern) => regexMatches(pattern, issueText));
74
- const changedUiFiles = input.changedFiles.filter((path) => visualProof.changedPathGlobs.some((pattern) => globMatches(pattern, path)));
75
- return issueLooksVisual || changedUiFiles.length > 0;
104
+ const internalRunnerProofOnlyChange = input.changedFiles.length > 0
105
+ && input.changedFiles.every(isInternalRunnerProofPath);
106
+ const issueNeedsVisualProof = visualProof.enabled
107
+ && !internalRunnerProofOnlyChange
108
+ && visualProof.issueTextPatterns.some((pattern) => regexMatches(pattern, issueText));
109
+ const changedProofFiles = input.changedFiles.filter((path) => visualProof.changedPathGlobs.some((pattern) => globMatches(pattern, path)));
110
+ return issueNeedsVisualProof || changedProofFiles.length > 0;
111
+ }
112
+ function isInternalRunnerProofPath(path) {
113
+ return /^src\/runner\/(?:acceptance-proof|visual-proof-runner)\.ts$/u.test(path)
114
+ || /^test\/(?:acceptance-proof|visual-proof-runner)\.test\.ts$/u.test(path);
76
115
  }
77
116
  export function hasPassedValidation(validation, patterns) {
78
117
  return validation.some((line) => line.status === 'passed' && patterns.some((pattern) => regexMatches(pattern, validationText(line))));
@@ -98,27 +137,54 @@ export function isStrongVisualValidation(line) {
98
137
  return /(Playwright|screenshot|viewport)/iu.test(validationText(line));
99
138
  }
100
139
  export function isRunnerVisualValidation(line) {
101
- return /runner visual proof/iu.test(validationText(line));
140
+ return /runner (?:visual|acceptance) proof/iu.test(validationText(line));
102
141
  }
103
142
  export function regexMatches(pattern, text) {
104
143
  return new RegExp(pattern, 'iu').test(text);
105
144
  }
106
145
  export function runnerVisualProofPolicy(config) {
107
146
  const visualProof = config.reviewGates.visualProof;
147
+ const acceptanceProof = config.reviewGates.acceptanceProof;
148
+ const preferLegacyVisual = isLegacyVisualProofOverride(acceptanceProof, visualProof);
149
+ const commandTemplate = preferLegacyVisual
150
+ ? visualProof.runnerValidationCommand?.trim()
151
+ : acceptanceProof.runnerValidationCommand?.trim() || visualProof.runnerValidationCommand?.trim();
108
152
  return {
109
- commandTemplate: visualProof.runnerValidationCommand?.trim() || undefined,
110
- artifactDir: visualProof.artifactDir,
111
- envPassthrough: visualProof.envPassthrough ?? [],
112
- timeoutMs: visualProof.runnerTimeoutMs,
153
+ commandTemplate: commandTemplate || undefined,
154
+ artifactDir: preferLegacyVisual ? visualProof.artifactDir : acceptanceProof.artifactDir,
155
+ envPassthrough: preferLegacyVisual
156
+ ? visualProof.envPassthrough ?? acceptanceProof.envPassthrough ?? []
157
+ : acceptanceProof.envPassthrough?.length
158
+ ? acceptanceProof.envPassthrough
159
+ : visualProof.envPassthrough ?? [],
160
+ timeoutMs: preferLegacyVisual
161
+ ? visualProof.runnerTimeoutMs ?? acceptanceProof.runnerTimeoutMs
162
+ : acceptanceProof.runnerTimeoutMs ?? visualProof.runnerTimeoutMs,
113
163
  minScreenshotArtifacts: visualProof.minScreenshotArtifacts,
164
+ requireWhenDesirable: visualProof.requireWhenDesirable ?? false,
165
+ blockOnMissingProof: !preferLegacyVisual,
114
166
  };
115
167
  }
168
+ function isLegacyVisualProofOverride(acceptanceProof, visualProof) {
169
+ const defaultMobileCommand = 'codex-orchestrator visual-proof mobile --issue ${issueNumber}';
170
+ return (acceptanceProof.runnerValidationCommand?.trim() || '') === defaultMobileCommand
171
+ && Boolean(visualProof.runnerValidationCommand?.trim())
172
+ && visualProof.runnerValidationCommand?.trim() !== defaultMobileCommand;
173
+ }
174
+ function isMobileVisualProofCommand(command) {
175
+ return /\bcodex-orchestrator\s+visual-proof\s+(?:mobile|android|ios)\b/iu.test(command ?? '');
176
+ }
116
177
  function hasTddRedEvidence(text) {
117
- return /\bred\s*:/iu.test(text) || /\b(?:test|spec|check)\b[\s\S]{0,120}\bfail(?:ed|ing)?\b/iu.test(text);
178
+ return /\bred\s*:/iu.test(text)
179
+ || /\bred\b[\s\S]{0,160}\bfail(?:ed|ing)?\b/iu.test(text)
180
+ || /\bfail(?:ed|ing)?\b[\s\S]{0,160}\bred\b/iu.test(text)
181
+ || /\b(?:test|tests|spec|specs|check|checks)\b[\s\S]{0,120}\bfail(?:ed|ing)?\b/iu.test(text);
118
182
  }
119
183
  function hasTddGreenEvidence(text) {
120
184
  return /\bgreen\s*:/iu.test(text)
121
- || /\b(?:test|spec|jest|vitest|playwright|pytest)\b[\s\S]{0,120}\bpass(?:ed|ing)?\b/iu.test(text)
185
+ || /\bgreen\b[\s\S]{0,160}\bpass(?:ed|ing)?\b/iu.test(text)
186
+ || /\bpass(?:ed|ing)?\b[\s\S]{0,160}\bgreen\b/iu.test(text)
187
+ || /\b(?:test|tests|spec|specs|check|checks|jest|vitest|playwright|pytest)\b[\s\S]{0,120}\bpass(?:ed|ing)?\b/iu.test(text)
122
188
  || /\b(?:flutter|dart|npm|pnpm|yarn)\s+(?:run\s+)?test\b[\s\S]{0,120}\bpass(?:ed|ing)?\b/iu.test(text);
123
189
  }
124
190
  function hasMissingTddProofText(text) {
@@ -1 +1 @@
1
- {"version":3,"file":"review-gate-policy.js","sourceRoot":"","sources":["../../../src/runner/review-gate-policy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"review-gate-policy.js","sourceRoot":"","sources":["../../../src/runner/review-gate-policy.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"review-gates.d.ts","sourceRoot":"","sources":["../../../src/runner/review-gates.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAMvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAWlE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,uBAAuB,CAAC;IAChC,KAAK,EAAE,WAAW,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAErE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,gBAAgB,CAsD5E"}
1
+ {"version":3,"file":"review-gates.d.ts","sourceRoot":"","sources":["../../../src/runner/review-gates.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAMvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAalE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,uBAAuB,CAAC;IAChC,KAAK,EAAE,WAAW,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAErE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,gBAAgB,CA8E5E"}
@@ -1,20 +1,25 @@
1
1
  import { existsSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
3
  import { acceptsScreenshotArtifactPath, classifyChangedPaths, isRunnerVisualProofCodeArtifactPath, } from '../path-policy.js';
4
- import { hasPassedTddValidation, hasPassedValidation, isRunnerVisualValidation, isStrongVisualValidation, shouldApplyVisualProofGate, } from './review-gate-policy.js';
4
+ import { hasPassedTddValidation, hasPassedValidation, isVisualProofDesirable, isRunnerVisualValidation, isStrongVisualValidation, runnerVisualProofPolicy, shouldApplyVisualProofGate, } from './review-gate-policy.js';
5
5
  export { shouldApplyVisualProofGate } from './review-gate-policy.js';
6
6
  export function evaluateReviewGates(input) {
7
7
  const reasons = [];
8
8
  const warnings = [];
9
9
  reasons.push(...evaluateQualityGate(input));
10
- if (!shouldApplyVisualProofGate(input)) {
10
+ const visualProofDesirable = isVisualProofDesirable(input);
11
+ const visualProofGateApplies = shouldApplyVisualProofGate(input);
12
+ if (!visualProofDesirable && !visualProofGateApplies) {
11
13
  return { ok: reasons.length === 0, reasons, warnings };
12
14
  }
13
15
  const visualProof = input.config.reviewGates.visualProof;
14
- const runnerCommand = visualProof.runnerValidationCommand?.trim() ?? '';
16
+ const runnerPolicy = runnerVisualProofPolicy(input.config);
17
+ const runnerCommand = runnerPolicy.commandTemplate ?? '';
15
18
  const runnerVisualValidation = input.validation.filter(isRunnerVisualValidation);
16
19
  const hasPassedRunnerVisualValidation = runnerVisualValidation.some((line) => line.status === 'passed' && isStrongVisualValidation(line));
17
20
  const nonPassingRunnerVisualValidation = runnerVisualValidation.filter((line) => line.status !== 'passed');
21
+ const capabilityUnavailableRunnerValidation = nonPassingRunnerVisualValidation.filter(isVisualProofCapabilityUnavailable);
22
+ const otherNonPassingRunnerVisualValidation = nonPassingRunnerVisualValidation.filter((line) => !capabilityUnavailableRunnerValidation.includes(line));
18
23
  const screenshotArtifacts = input.report.artifacts.filter((artifact) => {
19
24
  if (artifact.type !== 'screenshot') {
20
25
  return false;
@@ -28,23 +33,51 @@ export function evaluateReviewGates(input) {
28
33
  const worktreePath = input.worktreePath;
29
34
  return acceptsScreenshotArtifactPath({
30
35
  artifactPath: artifact.path,
31
- artifactDir: visualProof.artifactDir,
36
+ artifactDir: runnerPolicy.artifactDir,
32
37
  changedFiles: input.changedFiles,
33
38
  hasPassedRunnerVisualValidation,
34
39
  exists: worktreePath ? (path) => existsSync(join(worktreePath, path)) : undefined,
35
40
  });
36
41
  });
37
- if (!runnerCommand) {
38
- warnings.push('Visual proof was applicable for this issue, but no runner-owned visual proof command is configured; skipping screenshot proof.');
42
+ const proofPossible = Boolean(runnerCommand) && capabilityUnavailableRunnerValidation.length === 0;
43
+ const strictVisualProofRequired = visualProofDesirable && runnerPolicy.requireWhenDesirable;
44
+ if (!runnerCommand && visualProofDesirable) {
45
+ const message = strictVisualProofRequired
46
+ ? 'Visual proof is required by strict visual proof config, but no runner-owned visual proof command/provider is configured.'
47
+ : 'Visual proof capability note: visual proof is desirable, but no runner-owned visual proof command/provider is configured; not required for review-ready outcome.';
48
+ (strictVisualProofRequired ? reasons : warnings).push(message);
49
+ }
50
+ for (const line of capabilityUnavailableRunnerValidation) {
51
+ if (strictVisualProofRequired) {
52
+ reasons.push(`Visual proof is required by strict visual proof config, but proof capability is unavailable: ${line.command} - ${line.summary}.`);
53
+ }
54
+ else {
55
+ warnings.push(`Visual proof capability note: ${line.command} - ${line.summary}; not required for review-ready outcome.`);
56
+ }
39
57
  }
40
- for (const line of nonPassingRunnerVisualValidation) {
41
- warnings.push(`Visual proof validation warning: ${line.command} - ${line.summary}`);
58
+ for (const line of otherNonPassingRunnerVisualValidation) {
59
+ const message = strictVisualProofRequired
60
+ ? `Visual proof validation failed under strict visual proof config: ${line.command} - ${line.summary}`
61
+ : `Visual proof validation warning: ${line.command} - ${line.summary}`;
62
+ (strictVisualProofRequired ? reasons : warnings).push(message);
42
63
  }
43
- if (screenshotArtifacts.length < visualProof.minScreenshotArtifacts) {
44
- warnings.push(`Visual proof warning: expected at least ${visualProof.minScreenshotArtifacts} screenshot artifact under ${visualProof.artifactDir} or a screenshot URL.`);
64
+ if (visualProofDesirable
65
+ && (proofPossible || runnerPolicy.requireWhenDesirable)
66
+ && screenshotArtifacts.length < visualProof.minScreenshotArtifacts) {
67
+ const message = strictVisualProofRequired
68
+ ? `Visual proof is required by strict visual proof config, but expected at least ${visualProof.minScreenshotArtifacts} screenshot artifact under ${runnerPolicy.artifactDir} or a screenshot URL.`
69
+ : `Visual proof warning: expected at least ${visualProof.minScreenshotArtifacts} screenshot artifact under ${runnerPolicy.artifactDir} or a screenshot URL.`;
70
+ (strictVisualProofRequired ? reasons : warnings).push(message);
45
71
  }
46
72
  return { ok: reasons.length === 0, reasons, warnings };
47
73
  }
74
+ function isVisualProofCapabilityUnavailable(line) {
75
+ if (line.status !== 'skipped') {
76
+ return false;
77
+ }
78
+ return /(?:no runner-owned|not configured|no .*provider|unavailable|not available|not installed|not found|missing tool|no devices? connected|no usable .*device|adb|emulator|xcodebuild|simctl|flutter .*requires flutter|flutter was not found)/iu
79
+ .test(line.summary);
80
+ }
48
81
  function evaluateQualityGate(input) {
49
82
  const quality = input.config.reviewGates.quality;
50
83
  if (!quality.enabled) {
@@ -93,7 +126,7 @@ function hasPassedRunnerVisualProofEvidence(input) {
93
126
  return false;
94
127
  }
95
128
  return input.changedFiles.some((file) => {
96
- return isRunnerVisualProofCodeArtifactPath(file, input.config.reviewGates.visualProof.artifactDir);
129
+ return isRunnerVisualProofCodeArtifactPath(file, runnerVisualProofPolicy(input.config).artifactDir);
97
130
  });
98
131
  }
99
132
  //# sourceMappingURL=review-gates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"review-gates.js","sourceRoot":"","sources":["../../../src/runner/review-gates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"review-gates.js","sourceRoot":"","sources":["../../../src/runner/review-gates.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import type { CodexOrchestratorConfig } from '../config/schema.js';
2
2
  export declare function shouldRequestImplementationRework(reasons: string[], config: CodexOrchestratorConfig): boolean;
3
+ export declare function maxReworkAttemptsForReasons(reasons: string[], config: CodexOrchestratorConfig): number;
3
4
  //# sourceMappingURL=rework-policy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rework-policy.d.ts","sourceRoot":"","sources":["../../../src/runner/rework-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAgBnE,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAS7G"}
1
+ {"version":3,"file":"rework-policy.d.ts","sourceRoot":"","sources":["../../../src/runner/rework-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAiBnE,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAS7G;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,uBAAuB,GAAG,MAAM,CAKtG"}
@@ -6,6 +6,7 @@ const nonRetryableBlockerPatterns = [
6
6
  const retryableBlockerPatterns = [
7
7
  ['missing-quality-gate-evidence', /Quality gate requires/iu],
8
8
  ['failed-configured-checks', /One or more configured checks failed/iu],
9
+ ['failed-acceptance-proof', /Acceptance proof/iu],
9
10
  ['invalid-completion-report', /Invalid scoped completion report/iu],
10
11
  ['missing-completion-report', /Codex did not write CODEX_ORCHESTRATOR_REPORT_FILE/iu],
11
12
  ['no-changed-files', /Codex completed without file changes/iu],
@@ -17,4 +18,10 @@ export function shouldRequestImplementationRework(reasons, config) {
17
18
  const retryable = new Set(config.loopPolicy.rework.retryableBlockers);
18
19
  return reasons.some((reason) => retryableBlockerPatterns.some(([blocker, pattern]) => retryable.has(blocker) && pattern.test(reason)));
19
20
  }
21
+ export function maxReworkAttemptsForReasons(reasons, config) {
22
+ if (reasons.some((reason) => /Acceptance proof/iu.test(reason))) {
23
+ return Math.max(0, config.reviewGates.acceptanceProof.maxIterations - 1);
24
+ }
25
+ return config.loopPolicy.rework.maxAttempts;
26
+ }
20
27
  //# sourceMappingURL=rework-policy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rework-policy.js","sourceRoot":"","sources":["../../../src/runner/rework-policy.ts"],"names":[],"mappings":"AAEA,MAAM,2BAA2B,GAAG;IAClC,0BAA0B;IAC1B,yCAAyC;IACzC,wDAAwD;CAChD,CAAC;AAEX,MAAM,wBAAwB,GAAG;IAC/B,CAAC,+BAA+B,EAAE,yBAAyB,CAAC;IAC5D,CAAC,0BAA0B,EAAE,wCAAwC,CAAC;IACtE,CAAC,2BAA2B,EAAE,oCAAoC,CAAC;IACnE,CAAC,2BAA2B,EAAE,sDAAsD,CAAC;IACrF,CAAC,kBAAkB,EAAE,wCAAwC,CAAC;CACtD,CAAC;AAEX,MAAM,UAAU,iCAAiC,CAAC,OAAiB,EAAE,MAA+B;IAClG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAClG,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACtE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAC3D,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CACvE,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"rework-policy.js","sourceRoot":"","sources":["../../../src/runner/rework-policy.ts"],"names":[],"mappings":"AAEA,MAAM,2BAA2B,GAAG;IAClC,0BAA0B;IAC1B,yCAAyC;IACzC,wDAAwD;CAChD,CAAC;AAEX,MAAM,wBAAwB,GAAG;IAC/B,CAAC,+BAA+B,EAAE,yBAAyB,CAAC;IAC5D,CAAC,0BAA0B,EAAE,wCAAwC,CAAC;IACtE,CAAC,yBAAyB,EAAE,oBAAoB,CAAC;IACjD,CAAC,2BAA2B,EAAE,oCAAoC,CAAC;IACnE,CAAC,2BAA2B,EAAE,sDAAsD,CAAC;IACrF,CAAC,kBAAkB,EAAE,wCAAwC,CAAC;CACtD,CAAC;AAEX,MAAM,UAAU,iCAAiC,CAAC,OAAiB,EAAE,MAA+B;IAClG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAClG,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACtE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAC3D,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CACvE,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAAiB,EAAE,MAA+B;IAC5F,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAChE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC;AAC9C,CAAC"}
@@ -1,9 +1,13 @@
1
1
  import { type CodexCommandRunInput, type CodexCommandRunResult } from '../codex/command-adapter.js';
2
+ import type { CodexOrchestratorConfig } from '../config/schema.js';
2
3
  import type { GitHubIssueAdapter } from '../github/issues.js';
3
4
  import type { GitHubPullRequest, GitHubPullRequestAdapter } from '../github/pull-requests.js';
4
5
  import { GitWorktreeManager } from '../git/worktree.js';
5
6
  import { type ShellCommandExecutor } from '../process/command.js';
6
- import { type LocalExecutionPhaseExecutor } from './local-execution-session.js';
7
+ import { type FreshContextReviewEvidence } from './handoff-evidence.js';
8
+ import { writeDurableRunSummary } from './durable-run-summary.js';
9
+ import { type ImplementationPublishabilityResult, type LocalExecutionPhaseExecutor } from './local-execution-session.js';
10
+ import type { AcceptanceProofAttemptEvidence } from './acceptance-proof-runner.js';
7
11
  export interface ScopedAutoCommandOptions {
8
12
  targetRoot: string;
9
13
  issueNumber: number;
@@ -30,4 +34,45 @@ export interface ScopedAutoCommandResult {
30
34
  reportComment: string;
31
35
  }
32
36
  export declare function runScopedAutoCommand(options: ScopedAutoCommandOptions): Promise<ScopedAutoCommandResult>;
37
+ export interface FinishScopedReviewReadyHandoffInput {
38
+ issueNumber: number;
39
+ branchName: string;
40
+ baseBranch: string;
41
+ worktreePath: string;
42
+ logPath: string;
43
+ config: CodexOrchestratorConfig;
44
+ git: Pick<GitWorktreeManager, 'pushBranch'>;
45
+ pullRequestAdapter: GitHubPullRequestAdapter;
46
+ issueAdapter: GitHubIssueAdapter;
47
+ publishability: Extract<ImplementationPublishabilityResult, {
48
+ status: 'publish-ready';
49
+ }>;
50
+ freshContextReview?: FreshContextReviewEvidence;
51
+ durableRunSummary?: Awaited<ReturnType<typeof writeDurableRunSummary>>;
52
+ acceptanceProof?: AcceptanceProofAttemptEvidence;
53
+ onPullRequestReady?: (pullRequest: GitHubPullRequest) => void;
54
+ }
55
+ export declare function finishScopedReviewReadyHandoff(input: FinishScopedReviewReadyHandoffInput): Promise<{
56
+ pullRequest: GitHubPullRequest;
57
+ reportComment: string;
58
+ }>;
59
+ export interface FinishScopedBlockedHandoffInput {
60
+ issueNumber: number;
61
+ logPath: string;
62
+ issueAdapter: GitHubIssueAdapter;
63
+ config: CodexOrchestratorConfig;
64
+ reasons: string[];
65
+ changedFiles: string[];
66
+ skippedChecks: string[];
67
+ residualRisks: string[];
68
+ freshContextReview?: FreshContextReviewEvidence;
69
+ durableRunSummary?: Awaited<ReturnType<typeof writeDurableRunSummary>>;
70
+ acceptanceProof?: AcceptanceProofAttemptEvidence;
71
+ commentPrefix?: string;
72
+ skipCommentIfIncludes?: string;
73
+ }
74
+ export declare function finishScopedBlockedHandoff(input: FinishScopedBlockedHandoffInput): Promise<{
75
+ reportComment: string;
76
+ postedComment: boolean;
77
+ }>;
33
78
  //# sourceMappingURL=scoped-auto-command.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scoped-auto-command.d.ts","sourceRoot":"","sources":["../../../src/runner/scoped-auto-command.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuB,KAAK,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAIzH,OAAO,KAAK,EAAe,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAG9F,OAAO,EAAE,kBAAkB,EAAwB,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAA+B,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAiB/F,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,8BAA8B,CAAC;AAatC,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;IAC9C,GAAG,CAAC,EAAE,kBAAkB,CAAC;IACzB,YAAY,CAAC,EAAE;QAAE,GAAG,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAA;KAAE,CAAC;IACpF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,kBAAkB,CAAC,EAAE,2BAA2B,CAAC;IACjD,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,MAAM,EAAE,cAAc,GAAG,SAAS,GAAG,qBAAqB,CAAC;IAC3D,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAmb9G"}
1
+ {"version":3,"file":"scoped-auto-command.d.ts","sourceRoot":"","sources":["../../../src/runner/scoped-auto-command.ts"],"names":[],"mappings":"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"}