codex-orchestrator 0.1.19 → 0.1.21

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 (92) hide show
  1. package/README.md +132 -33
  2. package/dist/src/codex/command-adapter.d.ts +3 -0
  3. package/dist/src/codex/command-adapter.d.ts.map +1 -1
  4. package/dist/src/codex/command-adapter.js +18 -7
  5. package/dist/src/codex/command-adapter.js.map +1 -1
  6. package/dist/src/config/schema.d.ts +3 -0
  7. package/dist/src/config/schema.d.ts.map +1 -1
  8. package/dist/src/config/schema.js +3 -0
  9. package/dist/src/config/schema.js.map +1 -1
  10. package/dist/src/git/worktree.d.ts +17 -0
  11. package/dist/src/git/worktree.d.ts.map +1 -1
  12. package/dist/src/git/worktree.js +35 -2
  13. package/dist/src/git/worktree.js.map +1 -1
  14. package/dist/src/github/gh-issue-adapter.js +6 -3
  15. package/dist/src/github/gh-issue-adapter.js.map +1 -1
  16. package/dist/src/github/issues.d.ts +1 -1
  17. package/dist/src/github/issues.d.ts.map +1 -1
  18. package/dist/src/index.d.ts +6 -2
  19. package/dist/src/index.d.ts.map +1 -1
  20. package/dist/src/index.js +3 -1
  21. package/dist/src/index.js.map +1 -1
  22. package/dist/src/path-policy.d.ts +27 -0
  23. package/dist/src/path-policy.d.ts.map +1 -0
  24. package/dist/src/path-policy.js +83 -0
  25. package/dist/src/path-policy.js.map +1 -0
  26. package/dist/src/process/command.d.ts +3 -0
  27. package/dist/src/process/command.d.ts.map +1 -1
  28. package/dist/src/process/command.js +59 -9
  29. package/dist/src/process/command.js.map +1 -1
  30. package/dist/src/runner/command-utils.d.ts +5 -0
  31. package/dist/src/runner/command-utils.d.ts.map +1 -1
  32. package/dist/src/runner/command-utils.js +46 -1
  33. package/dist/src/runner/command-utils.js.map +1 -1
  34. package/dist/src/runner/completion-report.d.ts +54 -0
  35. package/dist/src/runner/completion-report.d.ts.map +1 -0
  36. package/dist/src/runner/completion-report.js +220 -0
  37. package/dist/src/runner/completion-report.js.map +1 -0
  38. package/dist/src/runner/handoff-evidence.d.ts +105 -0
  39. package/dist/src/runner/handoff-evidence.d.ts.map +1 -0
  40. package/dist/src/runner/handoff-evidence.js +224 -0
  41. package/dist/src/runner/handoff-evidence.js.map +1 -0
  42. package/dist/src/runner/issue-tree.d.ts +4 -1
  43. package/dist/src/runner/issue-tree.d.ts.map +1 -1
  44. package/dist/src/runner/issue-tree.js +75 -0
  45. package/dist/src/runner/issue-tree.js.map +1 -1
  46. package/dist/src/runner/local-execution-session.d.ts +79 -0
  47. package/dist/src/runner/local-execution-session.d.ts.map +1 -0
  48. package/dist/src/runner/local-execution-session.js +236 -0
  49. package/dist/src/runner/local-execution-session.js.map +1 -0
  50. package/dist/src/runner/local-state.d.ts +1 -0
  51. package/dist/src/runner/local-state.d.ts.map +1 -1
  52. package/dist/src/runner/local-state.js +2 -1
  53. package/dist/src/runner/local-state.js.map +1 -1
  54. package/dist/src/runner/plan-auto-command.d.ts +1 -0
  55. package/dist/src/runner/plan-auto-command.d.ts.map +1 -1
  56. package/dist/src/runner/plan-auto-command.js +143 -302
  57. package/dist/src/runner/plan-auto-command.js.map +1 -1
  58. package/dist/src/runner/prompt.d.ts +2 -53
  59. package/dist/src/runner/prompt.d.ts.map +1 -1
  60. package/dist/src/runner/prompt.js +20 -265
  61. package/dist/src/runner/prompt.js.map +1 -1
  62. package/dist/src/runner/review-gate-policy.d.ts +24 -0
  63. package/dist/src/runner/review-gate-policy.d.ts.map +1 -0
  64. package/dist/src/runner/review-gate-policy.js +104 -0
  65. package/dist/src/runner/review-gate-policy.js.map +1 -0
  66. package/dist/src/runner/review-gates.d.ts +4 -9
  67. package/dist/src/runner/review-gates.d.ts.map +1 -1
  68. package/dist/src/runner/review-gates.js +17 -63
  69. package/dist/src/runner/review-gates.js.map +1 -1
  70. package/dist/src/runner/run-log.d.ts +18 -0
  71. package/dist/src/runner/run-log.d.ts.map +1 -0
  72. package/dist/src/runner/run-log.js +53 -0
  73. package/dist/src/runner/run-log.js.map +1 -0
  74. package/dist/src/runner/safety.d.ts +1 -1
  75. package/dist/src/runner/safety.d.ts.map +1 -1
  76. package/dist/src/runner/safety.js +5 -20
  77. package/dist/src/runner/safety.js.map +1 -1
  78. package/dist/src/runner/scoped-auto-command.d.ts +4 -0
  79. package/dist/src/runner/scoped-auto-command.d.ts.map +1 -1
  80. package/dist/src/runner/scoped-auto-command.js +70 -172
  81. package/dist/src/runner/scoped-auto-command.js.map +1 -1
  82. package/dist/src/runner/visual-proof-runner.d.ts +3 -8
  83. package/dist/src/runner/visual-proof-runner.d.ts.map +1 -1
  84. package/dist/src/runner/visual-proof-runner.js +71 -17
  85. package/dist/src/runner/visual-proof-runner.js.map +1 -1
  86. package/dist/src/setup/project-config.d.ts.map +1 -1
  87. package/dist/src/setup/project-config.js +5 -0
  88. package/dist/src/setup/project-config.js.map +1 -1
  89. package/dist/src/setup/setup-command.d.ts.map +1 -1
  90. package/dist/src/setup/setup-command.js +42 -0
  91. package/dist/src/setup/setup-command.js.map +1 -1
  92. package/package.json +2 -1
@@ -0,0 +1,220 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { validatePlanGraph } from './issue-tree.js';
3
+ export async function readScopedCompletionReport(reportPath) {
4
+ let content;
5
+ try {
6
+ content = await readFile(reportPath, 'utf8');
7
+ }
8
+ catch (error) {
9
+ if (error instanceof Error && 'code' in error && error.code === 'ENOENT') {
10
+ return { kind: 'missing' };
11
+ }
12
+ throw error;
13
+ }
14
+ let parsed;
15
+ try {
16
+ parsed = JSON.parse(content);
17
+ }
18
+ catch {
19
+ throw new Error('Invalid scoped completion report: report must be valid JSON');
20
+ }
21
+ if (typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed) && !('artifacts' in parsed)) {
22
+ parsed.artifacts = [];
23
+ }
24
+ assertScopedCompletionReport(parsed);
25
+ return { kind: 'valid', report: parsed };
26
+ }
27
+ export async function readPlanAutoCompletionReport(reportPath) {
28
+ let content;
29
+ try {
30
+ content = await readFile(reportPath, 'utf8');
31
+ }
32
+ catch (error) {
33
+ if (error instanceof Error && 'code' in error && error.code === 'ENOENT') {
34
+ return { kind: 'missing' };
35
+ }
36
+ throw error;
37
+ }
38
+ let parsed;
39
+ try {
40
+ parsed = JSON.parse(content);
41
+ }
42
+ catch {
43
+ throw new Error('Invalid plan-auto completion report: report must be valid JSON');
44
+ }
45
+ assertPlanAutoCompletionReport(parsed);
46
+ return { kind: 'valid', report: parsed };
47
+ }
48
+ function assertScopedCompletionReport(value) {
49
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
50
+ throw new Error('Invalid scoped completion report: report must be an object');
51
+ }
52
+ const record = value;
53
+ if (record.status !== 'completed' && record.status !== 'needs-promotion') {
54
+ throw new Error('Invalid scoped completion report: status must be completed or needs-promotion');
55
+ }
56
+ assertStringArray(record.changes, 'changes');
57
+ assertValidation(record.validation);
58
+ assertArtifacts(record.artifacts);
59
+ assertStringArray(record.skippedChecks, 'skippedChecks');
60
+ assertStringArray(record.residualRisks, 'residualRisks');
61
+ assertProhibitedActions(record.prohibitedActions);
62
+ if (record.status === 'needs-promotion') {
63
+ assertPromotion(record.promotion);
64
+ }
65
+ }
66
+ function assertPlanAutoCompletionReport(value) {
67
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
68
+ throw new Error('Invalid plan-auto completion report: report must be an object');
69
+ }
70
+ const record = value;
71
+ if (record.status !== 'completed') {
72
+ throw new Error('Invalid plan-auto completion report: status must be completed');
73
+ }
74
+ assertPlanParent(record.parent);
75
+ assertPlanGraph(record.graph);
76
+ assertStringArray(record.residualRisks, 'residualRisks', 'Invalid plan-auto completion report');
77
+ const graphValidation = validatePlanGraph(record.graph);
78
+ if (!graphValidation.ok) {
79
+ throw new Error(`Invalid plan-auto completion report: ${graphValidation.errors.join('; ')}`);
80
+ }
81
+ }
82
+ function assertPlanParent(value) {
83
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
84
+ throw new Error('Invalid plan-auto completion report: parent must be an object');
85
+ }
86
+ const record = value;
87
+ if ('title' in record && typeof record.title !== 'string') {
88
+ throw new Error('Invalid plan-auto completion report: parent.title must be a string');
89
+ }
90
+ if (typeof record.body !== 'string' || record.body.trim().length === 0) {
91
+ throw new Error('Invalid plan-auto completion report: parent.body must be a non-empty string');
92
+ }
93
+ }
94
+ function assertPlanGraph(value) {
95
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
96
+ throw new Error('Invalid plan-auto completion report: graph must be an object');
97
+ }
98
+ const record = value;
99
+ if (!Array.isArray(record.nodes)) {
100
+ throw new Error('Invalid plan-auto completion report: graph.nodes must be an array');
101
+ }
102
+ if (!Array.isArray(record.edges)) {
103
+ throw new Error('Invalid plan-auto completion report: graph.edges must be an array');
104
+ }
105
+ if (record.specGate !== 'wave-level') {
106
+ throw new Error('Invalid plan-auto completion report: graph.specGate must be wave-level');
107
+ }
108
+ for (const item of record.nodes) {
109
+ assertPlanChildNode(item);
110
+ }
111
+ for (const item of record.edges) {
112
+ assertPlanDependencyEdge(item);
113
+ }
114
+ }
115
+ function assertPlanChildNode(value) {
116
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
117
+ throw new Error('Invalid plan-auto completion report: graph node must be an object');
118
+ }
119
+ const record = value;
120
+ for (const key of ['stableId', 'title', 'body']) {
121
+ if (typeof record[key] !== 'string' || record[key].length === 0) {
122
+ throw new Error(`Invalid plan-auto completion report: graph node ${key} must be a non-empty string`);
123
+ }
124
+ }
125
+ if ('issueNumber' in record && !Number.isInteger(record.issueNumber)) {
126
+ throw new Error('Invalid plan-auto completion report: graph node issueNumber must be an integer');
127
+ }
128
+ if (record.afkHitl !== 'afk' && record.afkHitl !== 'hitl') {
129
+ throw new Error('Invalid plan-auto completion report: graph node afkHitl must be afk or hitl');
130
+ }
131
+ assertStringArray(record.ownershipScope, 'ownershipScope', 'Invalid plan-auto completion report');
132
+ assertStringArray(record.dependsOn, 'dependsOn', 'Invalid plan-auto completion report');
133
+ assertStringArray(record.verification, 'verification', 'Invalid plan-auto completion report');
134
+ }
135
+ function assertPlanDependencyEdge(value) {
136
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
137
+ throw new Error('Invalid plan-auto completion report: graph edge must be an object');
138
+ }
139
+ const record = value;
140
+ for (const key of ['from', 'to', 'reason']) {
141
+ if (typeof record[key] !== 'string' || record[key].length === 0) {
142
+ throw new Error(`Invalid plan-auto completion report: graph edge ${key} must be a non-empty string`);
143
+ }
144
+ }
145
+ }
146
+ function assertStringArray(value, key, prefix = 'Invalid scoped completion report') {
147
+ if (!Array.isArray(value) || value.some((item) => typeof item !== 'string')) {
148
+ throw new Error(`${prefix}: ${key} must be a string array`);
149
+ }
150
+ }
151
+ function assertValidation(value) {
152
+ if (!Array.isArray(value)) {
153
+ throw new Error('Invalid scoped completion report: validation must be an array');
154
+ }
155
+ for (const item of value) {
156
+ if (typeof item !== 'object' || item === null || Array.isArray(item)) {
157
+ throw new Error('Invalid scoped completion report: validation item must be an object');
158
+ }
159
+ const record = item;
160
+ if (typeof record.command !== 'string' || !['passed', 'failed', 'skipped'].includes(String(record.status)) || typeof record.summary !== 'string') {
161
+ throw new Error('Invalid scoped completion report: validation item is malformed');
162
+ }
163
+ }
164
+ }
165
+ function assertArtifacts(value) {
166
+ if (!Array.isArray(value)) {
167
+ throw new Error('Invalid scoped completion report: artifacts must be an array');
168
+ }
169
+ for (const item of value) {
170
+ if (typeof item !== 'object' || item === null || Array.isArray(item)) {
171
+ throw new Error('Invalid scoped completion report: artifacts item must be an object');
172
+ }
173
+ const record = item;
174
+ if (typeof record.type !== 'string'
175
+ || !['screenshot', 'log', 'other'].includes(record.type)
176
+ || typeof record.description !== 'string'
177
+ || record.description.trim().length === 0) {
178
+ throw new Error('Invalid scoped completion report: artifacts item is malformed');
179
+ }
180
+ if ('path' in record && typeof record.path !== 'string') {
181
+ throw new Error('Invalid scoped completion report: artifacts path must be a string');
182
+ }
183
+ if ('url' in record && typeof record.url !== 'string') {
184
+ throw new Error('Invalid scoped completion report: artifacts url must be a string');
185
+ }
186
+ if (!record.path && !record.url) {
187
+ throw new Error('Invalid scoped completion report: artifacts item must include path or url');
188
+ }
189
+ }
190
+ }
191
+ function assertProhibitedActions(value) {
192
+ const types = new Set(['secret-file-read', 'secret-file-change', 'destructive-db-or-cache', 'production-deploy-or-release']);
193
+ if (!Array.isArray(value)) {
194
+ throw new Error('Invalid scoped completion report: prohibitedActions must be an array');
195
+ }
196
+ for (const item of value) {
197
+ if (typeof item !== 'object' || item === null || Array.isArray(item)) {
198
+ throw new Error('Invalid scoped completion report: prohibitedActions item must be an object');
199
+ }
200
+ const record = item;
201
+ if (typeof record.type !== 'string' || !types.has(record.type) || typeof record.description !== 'string') {
202
+ throw new Error('Invalid scoped completion report: prohibitedActions item is malformed');
203
+ }
204
+ }
205
+ }
206
+ function assertPromotion(value) {
207
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
208
+ throw new Error('Invalid scoped completion report: promotion is required for needs-promotion');
209
+ }
210
+ const record = value;
211
+ if (typeof record.reason !== 'string' || record.reason.trim().length === 0) {
212
+ throw new Error('Invalid scoped completion report: promotion.reason must be non-empty');
213
+ }
214
+ assertStringArray(record.criteria, 'promotion.criteria');
215
+ assertStringArray(record.evidence, 'promotion.evidence');
216
+ if (record.criteria.length === 0 || record.evidence.length === 0) {
217
+ throw new Error('Invalid scoped completion report: promotion criteria and evidence must be non-empty');
218
+ }
219
+ }
220
+ //# sourceMappingURL=completion-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion-report.js","sourceRoot":"","sources":["../../../src/runner/completion-report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ import type { CodexOrchestratorConfig } from '../config/schema.js';
2
+ import type { GitHubIssue } from '../github/issues.js';
3
+ import type { GitHubPullRequest } from '../github/pull-requests.js';
4
+ import type { SessionCommitInfo } from '../git/worktree.js';
5
+ import type { AutonomousChildNode } from './issue-tree.js';
6
+ import type { ScopedCompletionReport } from './completion-report.js';
7
+ export interface RunnerValidationLine {
8
+ command: string;
9
+ status: 'passed' | 'failed' | 'skipped';
10
+ summary: string;
11
+ }
12
+ type CommitEvidence = Pick<SessionCommitInfo, 'sha' | 'subject'>;
13
+ export interface ScopedHandoffEvidence {
14
+ config: CodexOrchestratorConfig;
15
+ branchName: string;
16
+ issueNumber: number;
17
+ changedFiles: string[];
18
+ validation: RunnerValidationLine[];
19
+ artifacts: ScopedCompletionReport['artifacts'];
20
+ skippedChecks: string[];
21
+ residualRisks: string[];
22
+ logPath: string;
23
+ commits: CommitEvidence[];
24
+ }
25
+ export interface ChildHandoffEvidence {
26
+ child: AutonomousChildNode;
27
+ branchName: string;
28
+ changedFiles: string[];
29
+ validation: RunnerValidationLine[];
30
+ artifacts: ScopedCompletionReport['artifacts'];
31
+ commits: CommitEvidence[];
32
+ skippedChecks: string[];
33
+ residualRisks: string[];
34
+ logPath: string;
35
+ }
36
+ export declare function buildScopedReviewReport(input: ScopedHandoffEvidence & {
37
+ pullRequest?: GitHubPullRequest;
38
+ pullRequestUrl?: string;
39
+ }): string;
40
+ export declare function buildScopedPullRequestBody(input: ScopedHandoffEvidence): string;
41
+ export declare function buildScopedBlockedReport(input: {
42
+ issueNumber: number;
43
+ reasons: string[];
44
+ changedFiles: string[];
45
+ logPath: string;
46
+ skippedChecks: string[];
47
+ residualRisks: string[];
48
+ }): string;
49
+ export declare function buildPromotionRequestReport(input: {
50
+ issueNumber: number;
51
+ report: ScopedCompletionReport;
52
+ }): string;
53
+ export declare function buildChildReviewReport(input: {
54
+ parentIssueNumber: number;
55
+ result: ChildHandoffEvidence;
56
+ }): string;
57
+ export declare function buildIssueTreeReviewReport(input: {
58
+ parentIssueNumber: number;
59
+ pullRequest: GitHubPullRequest;
60
+ batches: AutonomousChildNode[][];
61
+ childResults: ChildHandoffEvidence[];
62
+ finalValidation: RunnerValidationLine[];
63
+ }): string;
64
+ export declare function buildIssueTreePullRequestBody(input: {
65
+ parentIssueNumber: number;
66
+ childIssues: GitHubIssue[];
67
+ childResults: ChildHandoffEvidence[];
68
+ finalValidation: RunnerValidationLine[];
69
+ }): string;
70
+ export declare function buildChildBlockedReport(input: {
71
+ parentIssueNumber: number;
72
+ childIssueNumber: number;
73
+ reasons: string[];
74
+ details?: string[];
75
+ branchName?: string;
76
+ worktreePath?: string;
77
+ batchChildren?: Array<{
78
+ issueNumber: number;
79
+ branchName: string;
80
+ }>;
81
+ gitOutput?: string;
82
+ }): string;
83
+ export declare function buildParentBlockedReport(input: {
84
+ parentIssueNumber: number;
85
+ reasons: string[];
86
+ logPath: string;
87
+ mutatedChildren: GitHubIssue[];
88
+ }): string;
89
+ export declare function renderValidationEvidence(lines: RunnerValidationLine[], options?: {
90
+ prefix?: string;
91
+ }): string[];
92
+ export declare function renderCommitEvidence(commits: CommitEvidence[], options?: {
93
+ prefix?: string;
94
+ }): string[];
95
+ export declare function renderScopedProofArtifacts(input: {
96
+ config: CodexOrchestratorConfig;
97
+ branchName: string;
98
+ artifacts: ScopedCompletionReport['artifacts'];
99
+ }): string[];
100
+ export declare function renderLocalProofArtifacts(input: {
101
+ artifacts: ScopedCompletionReport['artifacts'];
102
+ prefix?: string;
103
+ }): string[];
104
+ export {};
105
+ //# sourceMappingURL=handoff-evidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handoff-evidence.d.ts","sourceRoot":"","sources":["../../../src/runner/handoff-evidence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,224 @@
1
+ export function buildScopedReviewReport(input) {
2
+ return [
3
+ `codex-orchestrator review report for #${input.issueNumber}`,
4
+ 'Pull Request',
5
+ `- ${input.pullRequestUrl ?? input.pullRequest?.url ?? 'none'}`,
6
+ 'Changes',
7
+ ...bulletList(input.changedFiles),
8
+ 'Validation',
9
+ ...renderValidationEvidence(input.validation),
10
+ 'Proof Artifacts',
11
+ ...renderScopedProofArtifacts(input),
12
+ 'Log',
13
+ ...bulletList([input.logPath]),
14
+ 'Local Commits',
15
+ ...renderCommitEvidence(input.commits),
16
+ 'Skipped Checks',
17
+ ...bulletList(input.skippedChecks),
18
+ 'Residual Risks',
19
+ ...bulletList(input.residualRisks),
20
+ ].join('\n');
21
+ }
22
+ export function buildScopedPullRequestBody(input) {
23
+ return [
24
+ `Closes #${input.issueNumber}`,
25
+ '',
26
+ 'Changed files:',
27
+ ...bulletList(input.changedFiles),
28
+ '',
29
+ 'Validation:',
30
+ ...renderValidationEvidence(input.validation),
31
+ '',
32
+ 'Proof artifacts:',
33
+ ...renderScopedProofArtifacts(input),
34
+ '',
35
+ 'Log:',
36
+ ...bulletList([input.logPath]),
37
+ '',
38
+ 'Local commits:',
39
+ ...renderCommitEvidence(input.commits),
40
+ '',
41
+ 'Skipped checks:',
42
+ ...bulletList(input.skippedChecks),
43
+ '',
44
+ 'Residual risks:',
45
+ ...bulletList(input.residualRisks),
46
+ ].join('\n');
47
+ }
48
+ export function buildScopedBlockedReport(input) {
49
+ return [
50
+ `codex-orchestrator blocked scoped execution for #${input.issueNumber}`,
51
+ 'Reasons',
52
+ ...bulletList(input.reasons),
53
+ 'Changed Files',
54
+ ...bulletList(input.changedFiles),
55
+ 'Log',
56
+ ...bulletList([input.logPath]),
57
+ 'Skipped Checks',
58
+ ...bulletList(input.skippedChecks),
59
+ 'Residual Risks',
60
+ ...bulletList(input.residualRisks),
61
+ ].join('\n');
62
+ }
63
+ export function buildPromotionRequestReport(input) {
64
+ const promotion = input.report.promotion;
65
+ if (!promotion) {
66
+ throw new Error('promotion is required for needs-promotion');
67
+ }
68
+ return [
69
+ `codex-orchestrator promotion requested for #${input.issueNumber}`,
70
+ `Reason: ${promotion.reason}`,
71
+ 'Criteria',
72
+ ...bulletList(promotion.criteria),
73
+ 'Evidence',
74
+ ...bulletList(promotion.evidence),
75
+ 'Review this evidence and replace agent:auto with agent:plan-auto when parent issue-tree orchestration is desired.',
76
+ ].join('\n');
77
+ }
78
+ export function buildChildReviewReport(input) {
79
+ return [
80
+ `codex-orchestrator child review report for #${input.result.child.issue.number}`,
81
+ `Parent issue: #${input.parentIssueNumber}`,
82
+ `Integration branch: ${input.result.branchName}`,
83
+ 'Changes',
84
+ ...bulletList(input.result.changedFiles),
85
+ 'Validation',
86
+ ...renderValidationEvidence(input.result.validation),
87
+ 'Proof Artifacts',
88
+ ...renderLocalProofArtifacts({ artifacts: input.result.artifacts }),
89
+ 'Local Commits',
90
+ ...renderCommitEvidence(input.result.commits),
91
+ 'Log',
92
+ ...bulletList([input.result.logPath]),
93
+ 'Skipped Checks',
94
+ ...bulletList(input.result.skippedChecks),
95
+ 'Residual Risks',
96
+ ...bulletList(input.result.residualRisks),
97
+ ].join('\n');
98
+ }
99
+ export function buildIssueTreeReviewReport(input) {
100
+ return [
101
+ `codex-orchestrator issue-tree review report for #${input.parentIssueNumber}`,
102
+ 'Pull Request',
103
+ `- ${input.pullRequest.url}`,
104
+ 'Execution Batches',
105
+ ...input.batches.map((batch, index) => `- Batch ${index + 1}: ${batch.map((child) => `#${child.issue.number}`).join(', ')}`),
106
+ 'Child Issues',
107
+ ...input.childResults.map((result) => `- #${result.child.issue.number} ${result.child.issue.title}: ${result.branchName}`),
108
+ 'Validation',
109
+ ...input.childResults.flatMap((result) => renderValidationEvidence(result.validation, { prefix: `#${result.child.issue.number} ` })),
110
+ ...renderValidationEvidence(input.finalValidation, { prefix: 'final ' }),
111
+ 'Skipped Checks',
112
+ ...bulletList(input.childResults.flatMap((result) => result.skippedChecks)),
113
+ 'Proof Artifacts',
114
+ ...input.childResults.flatMap((result) => renderLocalProofArtifacts({ artifacts: result.artifacts, prefix: `#${result.child.issue.number} ` })),
115
+ 'Logs',
116
+ ...input.childResults.map((result) => `- #${result.child.issue.number}: ${result.logPath}`),
117
+ 'Local Commits',
118
+ ...input.childResults.flatMap((result) => renderCommitEvidence(result.commits, { prefix: `#${result.child.issue.number} ` })),
119
+ 'Residual Risks',
120
+ ...bulletList(input.childResults.flatMap((result) => result.residualRisks)),
121
+ ].join('\n');
122
+ }
123
+ export function buildIssueTreePullRequestBody(input) {
124
+ return [
125
+ `Parent issue: #${input.parentIssueNumber}`,
126
+ '',
127
+ 'Child issues:',
128
+ ...input.childIssues.map((issue) => `- #${issue.number} ${issue.title}`),
129
+ '',
130
+ 'Changed files:',
131
+ ...input.childResults.flatMap((result) => [
132
+ `- #${result.child.issue.number}:`,
133
+ ...result.changedFiles.map((file) => ` - ${file}`),
134
+ ]),
135
+ '',
136
+ 'Validation:',
137
+ ...input.childResults.flatMap((result) => renderValidationEvidence(result.validation, { prefix: `#${result.child.issue.number} ` })),
138
+ ...renderValidationEvidence(input.finalValidation, { prefix: 'final ' }),
139
+ '',
140
+ 'Skipped checks:',
141
+ ...bulletList(input.childResults.flatMap((result) => result.skippedChecks)),
142
+ '',
143
+ 'Proof artifacts:',
144
+ ...input.childResults.flatMap((result) => renderLocalProofArtifacts({ artifacts: result.artifacts, prefix: `#${result.child.issue.number} ` })),
145
+ '',
146
+ 'Logs:',
147
+ ...input.childResults.map((result) => `- #${result.child.issue.number}: ${result.logPath}`),
148
+ '',
149
+ 'Local commits:',
150
+ ...input.childResults.flatMap((result) => renderCommitEvidence(result.commits, { prefix: `#${result.child.issue.number} ` })),
151
+ '',
152
+ 'Residual risks:',
153
+ ...bulletList(input.childResults.flatMap((result) => result.residualRisks)),
154
+ '',
155
+ 'Merge summary:',
156
+ ...input.childResults.map((result) => `- ${result.branchName} merged for #${result.child.issue.number}`),
157
+ '',
158
+ 'Auto-merge is disabled.',
159
+ ].join('\n');
160
+ }
161
+ export function buildChildBlockedReport(input) {
162
+ return [
163
+ `codex-orchestrator blocked child #${input.childIssueNumber} for parent #${input.parentIssueNumber}`,
164
+ 'Reasons',
165
+ ...bulletList(input.reasons),
166
+ ...(input.details ?? []),
167
+ ...(input.branchName ? [`- Branch preserved: ${input.branchName}`] : []),
168
+ ...(input.worktreePath ? [`- Worktree preserved: ${input.worktreePath}`] : []),
169
+ ...(input.batchChildren ? ['Batch Children', ...bulletList(input.batchChildren.map((child) => `#${child.issueNumber} ${child.branchName}`))] : []),
170
+ ...(input.gitOutput ? ['Git Output', ...bulletList([input.gitOutput])] : []),
171
+ ].join('\n');
172
+ }
173
+ export function buildParentBlockedReport(input) {
174
+ return [
175
+ `codex-orchestrator blocked parent issue-tree execution for #${input.parentIssueNumber}`,
176
+ 'Reasons',
177
+ ...bulletList(input.reasons),
178
+ 'Log',
179
+ ...bulletList([input.logPath]),
180
+ 'Mutated Child Issues',
181
+ ...bulletList(input.mutatedChildren.map((issue) => `#${issue.number} ${issue.title}`)),
182
+ ].join('\n');
183
+ }
184
+ export function renderValidationEvidence(lines, options = {}) {
185
+ return lines.map((line) => `- ${options.prefix ?? ''}${line.command}: ${line.status} - ${line.summary}`);
186
+ }
187
+ export function renderCommitEvidence(commits, options = {}) {
188
+ if (commits.length === 0) {
189
+ return [`- ${options.prefix ?? ''}none`];
190
+ }
191
+ return commits.map((commit) => `- ${options.prefix ?? ''}${commit.sha.slice(0, 12)} ${commit.subject}`);
192
+ }
193
+ export function renderScopedProofArtifacts(input) {
194
+ if (input.artifacts.length === 0) {
195
+ return ['- none'];
196
+ }
197
+ return input.artifacts.map((artifact) => {
198
+ const target = artifact.url ?? rawGitHubUrl(input.config, input.branchName, artifact.path ?? '');
199
+ const label = `${artifact.type}: ${artifact.description}`;
200
+ return artifact.type === 'screenshot' ? `- ![${escapeMarkdownAlt(label)}](${target})` : `- ${label}: ${target}`;
201
+ });
202
+ }
203
+ export function renderLocalProofArtifacts(input) {
204
+ if (input.artifacts.length === 0) {
205
+ return [`- ${input.prefix ?? ''}none`];
206
+ }
207
+ return input.artifacts.map((artifact) => {
208
+ const target = artifact.url ?? artifact.path ?? 'missing-target';
209
+ const label = `${artifact.type}: ${artifact.description}`;
210
+ const line = artifact.type === 'screenshot' ? `![${escapeMarkdownAlt(label)}](${target})` : `${label}: ${target}`;
211
+ return `- ${input.prefix ?? ''}${line}`;
212
+ });
213
+ }
214
+ function bulletList(items) {
215
+ return items.length > 0 ? items.map((item) => `- ${item}`) : ['- none'];
216
+ }
217
+ function rawGitHubUrl(config, branchName, path) {
218
+ const encodedPath = path.split('/').map(encodeURIComponent).join('/');
219
+ return `https://raw.githubusercontent.com/${encodeURIComponent(config.github.owner)}/${encodeURIComponent(config.github.repo)}/${encodeURIComponent(branchName)}/${encodedPath}`;
220
+ }
221
+ function escapeMarkdownAlt(value) {
222
+ return value.replace(/[\[\]]/g, '');
223
+ }
224
+ //# sourceMappingURL=handoff-evidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handoff-evidence.js","sourceRoot":"","sources":["../../../src/runner/handoff-evidence.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { CodexOrchestratorConfig } from '../config/schema.js';
2
- import type { GitHubIssue } from '../github/issues.js';
2
+ import type { GitHubIssue, GitHubIssueAdapter } from '../github/issues.js';
3
3
  export interface PlanChildNode {
4
4
  stableId: string;
5
5
  issueNumber?: number;
@@ -53,10 +53,13 @@ export type AutonomousChildBatchResult = {
53
53
  };
54
54
  export declare function renderAutonomousChildMarker(parentIssueNumber: number): string;
55
55
  export declare function ensureAutonomousChildBody(body: string, parentIssueNumber: number): string;
56
+ export declare function renderAutonomousChildBody(node: PlanChildNode, parentIssueNumber: number): string;
56
57
  export declare function isAutonomousChildOfParent(issue: GitHubIssue, config: CodexOrchestratorConfig, parentIssueNumber: number): boolean;
57
58
  export declare function validatePlanGraph(graph: PlanGraph): PlanGraphValidationResult;
58
59
  export declare function validatePlanGraphStructure(graph: PlanGraph): PlanGraphValidationResult;
59
60
  export declare function parseAutonomousChildMetadata(issue: GitHubIssue, config: CodexOrchestratorConfig, parentIssueNumber: number): AutonomousChildMetadataParseResult;
60
61
  export declare function collectExecutableChildBatches(nodes: AutonomousChildNode[], config: CodexOrchestratorConfig): AutonomousChildBatchResult;
61
62
  export declare function topologicalPlanNodes(graph: PlanGraph): PlanChildNode[];
63
+ export declare function persistAutonomousChildNode(issueAdapter: GitHubIssueAdapter, config: CodexOrchestratorConfig, parentIssueNumber: number, node: PlanChildNode): Promise<GitHubIssue>;
64
+ export declare function readAutonomousChildNodes(issueAdapter: GitHubIssueAdapter, config: CodexOrchestratorConfig, parentIssueNumber: number, childIssues: GitHubIssue[]): Promise<AutonomousChildNode[]>;
62
65
  //# sourceMappingURL=issue-tree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"issue-tree.d.ts","sourceRoot":"","sources":["../../../src/runner/issue-tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED,MAAM,MAAM,yBAAyB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEvF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,uBAAuB,CAAC;CACnC;AAED,MAAM,MAAM,kCAAkC,GAC1C;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,mBAAmB,CAAA;CAAE,GACvC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEpC,MAAM,MAAM,0BAA0B,GAClC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,mBAAmB,EAAE,EAAE,CAAA;CAAE,GAC9C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAIpC,wBAAgB,2BAA2B,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAIzF;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,uBAAuB,EAC/B,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAGT;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,yBAAyB,CAiC7E;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,SAAS,GAAG,yBAAyB,CAuEtF;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,uBAAuB,EAC/B,iBAAiB,EAAE,MAAM,GACxB,kCAAkC,CAwDpC;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,mBAAmB,EAAE,EAC5B,MAAM,EAAE,uBAAuB,GAC9B,0BAA0B,CAgD5B;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG,aAAa,EAAE,CAiBtE"}
1
+ {"version":3,"file":"issue-tree.d.ts","sourceRoot":"","sources":["../../../src/runner/issue-tree.ts"],"names":[],"mappings":"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"}