@on-par/factory-core 0.9.7-next.2 → 0.9.7-next.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 (127) hide show
  1. package/dist/checkers/index.d.ts +10 -1
  2. package/dist/checkers/index.d.ts.map +1 -1
  3. package/dist/checkers/index.js +14 -22
  4. package/dist/checkers/index.js.map +1 -1
  5. package/dist/checkers/probe.d.ts.map +1 -1
  6. package/dist/checkers/probe.js +5 -3
  7. package/dist/checkers/probe.js.map +1 -1
  8. package/dist/config/repo.js +1 -1
  9. package/dist/config/repo.js.map +1 -1
  10. package/dist/eval/baseline.d.ts.map +1 -1
  11. package/dist/eval/baseline.js +4 -4
  12. package/dist/eval/baseline.js.map +1 -1
  13. package/dist/eval/judge.d.ts.map +1 -1
  14. package/dist/eval/judge.js +9 -7
  15. package/dist/eval/judge.js.map +1 -1
  16. package/dist/eval/regression-report.js +1 -1
  17. package/dist/eval/regression-report.js.map +1 -1
  18. package/dist/harness/catalog.js +1 -1
  19. package/dist/harness/catalog.js.map +1 -1
  20. package/dist/harness/contract.js +4 -4
  21. package/dist/harness/contract.js.map +1 -1
  22. package/dist/hosted/store-contract.js +1 -1
  23. package/dist/hosted/store-contract.js.map +1 -1
  24. package/dist/internal.d.ts +2 -2
  25. package/dist/internal.d.ts.map +1 -1
  26. package/dist/internal.js +1 -0
  27. package/dist/internal.js.map +1 -1
  28. package/dist/kpis/human.d.ts.map +1 -1
  29. package/dist/kpis/human.js +4 -8
  30. package/dist/kpis/human.js.map +1 -1
  31. package/dist/logger/index.d.ts +2 -1
  32. package/dist/logger/index.d.ts.map +1 -1
  33. package/dist/logger/index.js +1 -0
  34. package/dist/logger/index.js.map +1 -1
  35. package/dist/phases/build.d.ts +3 -0
  36. package/dist/phases/build.d.ts.map +1 -1
  37. package/dist/phases/build.js +39 -12
  38. package/dist/phases/build.js.map +1 -1
  39. package/dist/phases/check.d.ts +29 -0
  40. package/dist/phases/check.d.ts.map +1 -1
  41. package/dist/phases/check.js +2 -2
  42. package/dist/phases/check.js.map +1 -1
  43. package/dist/phases/plan-design-retry.d.ts +4 -0
  44. package/dist/phases/plan-design-retry.d.ts.map +1 -1
  45. package/dist/phases/plan-design-retry.js +8 -0
  46. package/dist/phases/plan-design-retry.js.map +1 -1
  47. package/dist/phases/plan.d.ts.map +1 -1
  48. package/dist/phases/plan.js +2 -2
  49. package/dist/phases/plan.js.map +1 -1
  50. package/dist/phases/ship-git.d.ts +52 -0
  51. package/dist/phases/ship-git.d.ts.map +1 -0
  52. package/dist/phases/ship-git.js +104 -0
  53. package/dist/phases/ship-git.js.map +1 -0
  54. package/dist/phases/ship-spec.d.ts +5 -0
  55. package/dist/phases/ship-spec.d.ts.map +1 -0
  56. package/dist/phases/ship-spec.js +26 -0
  57. package/dist/phases/ship-spec.js.map +1 -0
  58. package/dist/phases/ship.d.ts +11 -7
  59. package/dist/phases/ship.d.ts.map +1 -1
  60. package/dist/phases/ship.js +73 -144
  61. package/dist/phases/ship.js.map +1 -1
  62. package/dist/readiness/slice-plan.js +1 -1
  63. package/dist/readiness/slice-plan.js.map +1 -1
  64. package/dist/review/backtest.js +2 -2
  65. package/dist/review/backtest.js.map +1 -1
  66. package/dist/review/containment.js +1 -1
  67. package/dist/review/containment.js.map +1 -1
  68. package/dist/run/ci-rework-loop.d.ts +65 -0
  69. package/dist/run/ci-rework-loop.d.ts.map +1 -0
  70. package/dist/run/ci-rework-loop.js +169 -0
  71. package/dist/run/ci-rework-loop.js.map +1 -0
  72. package/dist/run/ci-rework.d.ts +25 -0
  73. package/dist/run/ci-rework.d.ts.map +1 -0
  74. package/dist/run/ci-rework.js +113 -0
  75. package/dist/run/ci-rework.js.map +1 -0
  76. package/dist/run/ci-suppression-guard.d.ts +11 -0
  77. package/dist/run/ci-suppression-guard.d.ts.map +1 -0
  78. package/dist/run/ci-suppression-guard.js +143 -0
  79. package/dist/run/ci-suppression-guard.js.map +1 -0
  80. package/dist/run/park-comment.d.ts +55 -0
  81. package/dist/run/park-comment.d.ts.map +1 -0
  82. package/dist/run/park-comment.js +157 -0
  83. package/dist/run/park-comment.js.map +1 -0
  84. package/dist/run/phase-snapshot.js +2 -2
  85. package/dist/run/phase-snapshot.js.map +1 -1
  86. package/dist/run/run-issue.d.ts +4 -2
  87. package/dist/run/run-issue.d.ts.map +1 -1
  88. package/dist/run/run-issue.js +43 -49
  89. package/dist/run/run-issue.js.map +1 -1
  90. package/dist/run/ship-park.d.ts +14 -0
  91. package/dist/run/ship-park.d.ts.map +1 -0
  92. package/dist/run/ship-park.js +21 -0
  93. package/dist/run/ship-park.js.map +1 -0
  94. package/dist/sandbox/index.js +1 -1
  95. package/dist/sandbox/index.js.map +1 -1
  96. package/dist/steward/detect.d.ts +5 -2
  97. package/dist/steward/detect.d.ts.map +1 -1
  98. package/dist/steward/detect.js +6 -3
  99. package/dist/steward/detect.js.map +1 -1
  100. package/dist/types/index.d.ts +55 -0
  101. package/dist/types/index.d.ts.map +1 -1
  102. package/dist/utils/ci-evidence.d.ts +21 -0
  103. package/dist/utils/ci-evidence.d.ts.map +1 -0
  104. package/dist/utils/ci-evidence.js +66 -0
  105. package/dist/utils/ci-evidence.js.map +1 -0
  106. package/dist/utils/ci-watch.d.ts +12 -0
  107. package/dist/utils/ci-watch.d.ts.map +1 -1
  108. package/dist/utils/ci-watch.js +1 -1
  109. package/dist/utils/ci-watch.js.map +1 -1
  110. package/dist/utils/command-runner.js +2 -2
  111. package/dist/utils/command-runner.js.map +1 -1
  112. package/dist/utils/index.d.ts +2 -1
  113. package/dist/utils/index.d.ts.map +1 -1
  114. package/dist/utils/index.js +2 -0
  115. package/dist/utils/index.js.map +1 -1
  116. package/dist/utils/worktree-gc.d.ts.map +1 -1
  117. package/dist/utils/worktree-gc.js +5 -5
  118. package/dist/utils/worktree-gc.js.map +1 -1
  119. package/dist/utils/worktree-location.d.ts +2 -2
  120. package/dist/utils/worktree-location.d.ts.map +1 -1
  121. package/dist/utils/worktree-location.js +16 -9
  122. package/dist/utils/worktree-location.js.map +1 -1
  123. package/dist/utils/worktree-name.d.ts +6 -0
  124. package/dist/utils/worktree-name.d.ts.map +1 -1
  125. package/dist/utils/worktree-name.js +16 -1
  126. package/dist/utils/worktree-name.js.map +1 -1
  127. package/package.json +5 -5
@@ -0,0 +1,143 @@
1
+ // packages/core/src/run/ci-suppression-guard.ts — mechanical suppression guard for SHIP CI rework diffs (#2818)
2
+ import { execGit } from '../utils/git-exec.js';
3
+ export const SUPPRESSION_ATTEMPT = 'suppression-attempt';
4
+ const MAX_MATCH = 200;
5
+ const MAX_LISTED = 5;
6
+ /** True when an eslint-disable directive in `line` is blanket or names a security rule. */
7
+ function eslintDisablesSecurity(line) {
8
+ const m = /eslint-disable(?:-next-line|-line)?(?![\w-])([^\n]*)/.exec(line);
9
+ if (!m)
10
+ return false;
11
+ let list = m[1];
12
+ const dash = list.indexOf('--');
13
+ if (dash >= 0)
14
+ list = list.slice(0, dash);
15
+ const end = list.indexOf('*/');
16
+ if (end >= 0)
17
+ list = list.slice(0, end);
18
+ const rules = list.split(/[,\s]+/).filter(Boolean);
19
+ return rules.length === 0 || rules.some((r) => /security/i.test(r));
20
+ }
21
+ /** Added-line rules; the single owner of the known suppression comment forms. */
22
+ const SUPPRESSION_COMMENT_RULES = [
23
+ { rule: 'codeql-comment', test: (l) => /\bcodeql\[/i.test(l) },
24
+ { rule: 'lgtm-comment', test: (l) => /(?:\/\/|#|\/\*|\*|<!--|--).*\blgtm\b/i.test(l) },
25
+ { rule: 'nosec-comment', test: (l) => /#\s*nosec\b/i.test(l) || /\/\/\s*#?nosec\b/i.test(l) },
26
+ { rule: 'eslint-disable-security', test: eslintDisablesSecurity },
27
+ ];
28
+ function pathRules(path) {
29
+ const segments = path.split('/');
30
+ const base = segments[segments.length - 1];
31
+ const rules = [];
32
+ if (path.startsWith('.github/workflows/'))
33
+ rules.push('workflow-path');
34
+ if (segments.slice(0, -1).some((s) => /^\.?codeql$/i.test(s)) || /codeql.*\.(ya?ml|json)$/i.test(base)) {
35
+ rules.push('codeql-path');
36
+ }
37
+ if (/\.sarif(\.json)?$/i.test(base))
38
+ rules.push('sarif-path');
39
+ return rules;
40
+ }
41
+ /** Scans a unified git diff for suppression comments (added lines) and protected paths (any file header). */
42
+ export function scanReworkDiff(diff) {
43
+ const findings = [];
44
+ const seen = new Set();
45
+ const add = (f) => {
46
+ const key = `${f.kind}|${f.rule}|${f.file}|${f.line ?? ''}|${f.kind === 'path' ? f.match : ''}`;
47
+ if (seen.has(key))
48
+ return;
49
+ seen.add(key);
50
+ findings.push(f);
51
+ };
52
+ const checkPath = (path) => {
53
+ if (!path || path === '/dev/null')
54
+ return;
55
+ for (const rule of pathRules(path))
56
+ add({ kind: 'path', rule, file: path, match: path });
57
+ };
58
+ let file = '(unknown)';
59
+ let line;
60
+ let inHunk = false;
61
+ for (const raw of diff.split('\n')) {
62
+ const header = /^diff --git a\/(.+) b\/(.+)$/.exec(raw);
63
+ if (header) {
64
+ inHunk = false;
65
+ line = undefined;
66
+ file = header[2];
67
+ checkPath(header[1]);
68
+ checkPath(header[2]);
69
+ continue;
70
+ }
71
+ if (!inHunk) {
72
+ const rename = /^rename (?:from|to) (.+)$/.exec(raw);
73
+ if (rename) {
74
+ checkPath(rename[1]);
75
+ continue;
76
+ }
77
+ const oldPath = /^--- (?:a\/)?(.+)$/.exec(raw);
78
+ if (oldPath) {
79
+ checkPath(oldPath[1]);
80
+ continue;
81
+ }
82
+ const newPath = /^\+\+\+ (?:b\/)?(.+)$/.exec(raw);
83
+ if (newPath) {
84
+ if (newPath[1] !== '/dev/null')
85
+ file = newPath[1];
86
+ checkPath(newPath[1]);
87
+ continue;
88
+ }
89
+ }
90
+ const hunk = /^@@ -\d+(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(raw);
91
+ if (hunk) {
92
+ inHunk = true;
93
+ line = Number(hunk[1]);
94
+ continue;
95
+ }
96
+ if (raw.startsWith('+')) {
97
+ const text = raw.slice(1);
98
+ for (const { rule, test } of SUPPRESSION_COMMENT_RULES) {
99
+ if (test(text)) {
100
+ add({
101
+ kind: 'comment',
102
+ rule,
103
+ file,
104
+ ...(line !== undefined ? { line } : {}),
105
+ match: text.trim().slice(0, MAX_MATCH),
106
+ });
107
+ }
108
+ }
109
+ if (line !== undefined)
110
+ line++;
111
+ }
112
+ else if (raw.startsWith(' ') && line !== undefined) {
113
+ line++;
114
+ }
115
+ }
116
+ return findings;
117
+ }
118
+ /** Reads the worktree's current HEAD SHA. */
119
+ export async function readWorktreeHead(worktree) {
120
+ const { stdout } = await execGit(['rev-parse', 'HEAD'], { cwd: worktree });
121
+ const sha = stdout.trim();
122
+ if (!sha)
123
+ throw new Error('git rev-parse HEAD returned nothing');
124
+ return sha;
125
+ }
126
+ /** Reads the committed diff from `fromSha` to HEAD (SHIP re-entry pushes HEAD, not the working tree). */
127
+ export async function readReworkDiff(worktree, fromSha) {
128
+ const { stdout } = await execGit(['diff', '--no-color', '--no-ext-diff', '--unified=0', fromSha, 'HEAD'], {
129
+ cwd: worktree,
130
+ });
131
+ return stdout;
132
+ }
133
+ /** One-line summary of guard findings for park messages and logs. */
134
+ export function describeSuppression(findings) {
135
+ const items = findings.slice(0, MAX_LISTED).map((f) => {
136
+ if (f.kind === 'comment')
137
+ return `${f.rule} at ${f.file}${f.line !== undefined ? `:${f.line}` : ''}`;
138
+ return `${f.rule} ${f.match}`;
139
+ });
140
+ const more = findings.length > MAX_LISTED ? `, +${findings.length - MAX_LISTED} more` : '';
141
+ return `${SUPPRESSION_ATTEMPT}: ${findings.length} finding(s): ${items.join(', ')}${more}`;
142
+ }
143
+ //# sourceMappingURL=ci-suppression-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-suppression-guard.js","sourceRoot":"","sources":["../../src/run/ci-suppression-guard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import type { Octokit } from '@octokit/rest';
2
+ import type { ParkReason } from './outcome.js';
3
+ export declare const ISSUE_STATE_MARKER_VERSION = "v1";
4
+ export interface ParkCommentInput {
5
+ issue: number;
6
+ reason: ParkReason;
7
+ message: string;
8
+ runId: string;
9
+ branch: string;
10
+ lane?: string;
11
+ parkSha?: string;
12
+ blockers?: readonly number[];
13
+ }
14
+ /** `reason` is a plain string because the parser reads untrusted text. */
15
+ export interface ParkState {
16
+ reason: string;
17
+ lane?: string;
18
+ runId?: string;
19
+ branch?: string;
20
+ parkSha?: string;
21
+ blockers: number[];
22
+ }
23
+ export interface ParkStateComment {
24
+ id: number;
25
+ body: string;
26
+ }
27
+ export declare function issueStateMarker(issue: number): string;
28
+ export declare function parkUnblockHint(reason: ParkReason, issue: number): string;
29
+ export declare function renderParkComment(input: ParkCommentInput): string;
30
+ /** Lowest-id marked comment decides; null when none, or when its state block is unreadable. */
31
+ export declare function readParkState(comments: readonly ParkStateComment[], issue?: number): ParkState | null;
32
+ export declare function upsertParkComment(deps: {
33
+ octokit: Octokit;
34
+ repo: string;
35
+ input: ParkCommentInput;
36
+ }): Promise<{
37
+ commentId: number;
38
+ created: boolean;
39
+ }>;
40
+ /** Never throws: a GitHub or git failure comes back as `{ ok: false, error }`. */
41
+ export declare function publishParkComment(deps: {
42
+ octokit: Octokit;
43
+ repo: string;
44
+ worktree?: string;
45
+ input: Omit<ParkCommentInput, 'parkSha'>;
46
+ readHead?: (worktree: string) => Promise<string>;
47
+ }): Promise<{
48
+ ok: true;
49
+ commentId: number;
50
+ created: boolean;
51
+ } | {
52
+ ok: false;
53
+ error: string;
54
+ }>;
55
+ //# sourceMappingURL=park-comment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"park-comment.d.ts","sourceRoot":"","sources":["../../src/run/park-comment.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAI7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAE/C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B;AAED,0EAA0E;AAC1E,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAMD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtD;AAaD,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzE;AAQD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAyBjE;AAkCD,+FAA+F;AAC/F,wBAAgB,aAAa,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CASrG;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,gBAAgB,CAAC;CACzB,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA2BnD;AAED,kFAAkF;AAClF,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAClD,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAgB5F"}
@@ -0,0 +1,157 @@
1
+ // src/run/park-comment.ts — upsert one issue comment with the park state behind a hidden factory-issue-state marker (#2314, ADR-0130)
2
+ //
3
+ // Every runIssue park edits one comment per issue in place (#728). Anyone can post the marker, so only a
4
+ // marker comment written by the authenticated identity is trusted (same rule as readiness/slice-plan-github.ts).
5
+ import { fenceExcerpt, stripHiddenContent } from '../filing/sanitize.js';
6
+ import { readWorktreeHead } from './ci-suppression-guard.js';
7
+ export const ISSUE_STATE_MARKER_VERSION = 'v1';
8
+ const PAGE_SIZE = 100;
9
+ const STATE_HEADING = '**Park state**';
10
+ const MARKER_RE = new RegExp(`<!-- factory-issue-state ${ISSUE_STATE_MARKER_VERSION} issue:(\\d+) -->`);
11
+ export function issueStateMarker(issue) {
12
+ return `<!-- factory-issue-state ${ISSUE_STATE_MARKER_VERSION} issue:${issue} -->`;
13
+ }
14
+ const PARK_HINTS = {
15
+ fail: 'fix the failing checks on the branch or clarify the issue, then run `factory unpark <n>`.',
16
+ escalate: 'a human decision is needed. Answer it on the issue, then run `factory unpark <n>`.',
17
+ timeout: 'a phase timed out. Check the lane log and retry with `factory unpark <n>`.',
18
+ conflict: 'rebase the branch onto main, then run `factory unpark <n>`.',
19
+ 'ci-failed': 'fix CI on the PR, then run `factory unpark <n>`.',
20
+ 'ci-infra': 'CI infrastructure failed. Re-run CI, then run `factory unpark <n>`.',
21
+ held: 'the same failure parked a prior run. A human must change the approach before `factory unpark <n>`.',
22
+ config: 'fix the named config file and line, then run `factory unpark <n>`.',
23
+ };
24
+ export function parkUnblockHint(reason, issue) {
25
+ return PARK_HINTS[reason].replaceAll('<n>', String(issue));
26
+ }
27
+ function clean(v) {
28
+ return stripHiddenContent(v)
29
+ .replace(/[\r\n]+/g, ' ')
30
+ .trim();
31
+ }
32
+ export function renderParkComment(input) {
33
+ const blockers = input.blockers ?? [];
34
+ const stateBlock = [
35
+ `reason: ${clean(input.reason)}`,
36
+ `lane: ${(input.lane && clean(input.lane)) || '-'}`,
37
+ `run: ${clean(input.runId)}`,
38
+ `branch: ${clean(input.branch)}`,
39
+ `park-sha: ${(input.parkSha && clean(input.parkSha)) || '-'}`,
40
+ `blockers: ${blockers.length > 0 ? blockers.map((n) => `#${n}`).join(', ') : '-'}`,
41
+ ].join('\n');
42
+ return [
43
+ '### Factory park state',
44
+ '',
45
+ STATE_HEADING,
46
+ '',
47
+ fenceExcerpt(stateBlock),
48
+ '',
49
+ '**Why it parked**',
50
+ '',
51
+ fenceExcerpt(stripHiddenContent(input.message)),
52
+ '',
53
+ `**What unblocks this:** ${parkUnblockHint(input.reason, input.issue)}`,
54
+ '',
55
+ issueStateMarker(input.issue),
56
+ ].join('\n');
57
+ }
58
+ function parseStateBlock(body) {
59
+ const lines = body.split('\n');
60
+ const heading = lines.indexOf(STATE_HEADING);
61
+ if (heading === -1)
62
+ return null;
63
+ const isFence = (l) => /^`{5,}$/.test(l);
64
+ const open = lines.findIndex((l, i) => i > heading && isFence(l));
65
+ if (open === -1)
66
+ return null;
67
+ const close = lines.indexOf(lines[open], open + 1);
68
+ if (close === -1)
69
+ return null;
70
+ const values = new Map();
71
+ for (const line of lines.slice(open + 1, close)) {
72
+ const sep = line.indexOf(':');
73
+ if (sep === -1)
74
+ continue;
75
+ values.set(line.slice(0, sep).trim(), line.slice(sep + 1).trim());
76
+ }
77
+ const reason = values.get('reason');
78
+ if (!reason)
79
+ return null;
80
+ const optional = (key) => {
81
+ const v = values.get(key);
82
+ return v === undefined || v === '' || v === '-' ? undefined : v;
83
+ };
84
+ const blockers = [...(values.get('blockers') ?? '').matchAll(/#(\d+)/g)].map((m) => Number(m[1]));
85
+ return {
86
+ reason,
87
+ lane: optional('lane'),
88
+ runId: optional('run'),
89
+ branch: optional('branch'),
90
+ parkSha: optional('park-sha'),
91
+ blockers,
92
+ };
93
+ }
94
+ /** Lowest-id marked comment decides; null when none, or when its state block is unreadable. */
95
+ export function readParkState(comments, issue) {
96
+ const marked = comments
97
+ .filter((c) => {
98
+ const m = MARKER_RE.exec(c.body);
99
+ return m !== null && (issue === undefined || Number(m[1]) === issue);
100
+ })
101
+ .sort((a, b) => a.id - b.id);
102
+ if (marked.length === 0)
103
+ return null;
104
+ return parseStateBlock(marked[0].body);
105
+ }
106
+ export async function upsertParkComment(deps) {
107
+ const { octokit, repo, input } = deps;
108
+ const [owner, name] = repo.split('/');
109
+ const marker = issueStateMarker(input.issue);
110
+ const { data: me } = await octokit.rest.users.getAuthenticated();
111
+ let existing;
112
+ for (let page = 1;; page++) {
113
+ const { data } = await octokit.rest.issues.listComments({
114
+ owner,
115
+ repo: name,
116
+ issue_number: input.issue,
117
+ per_page: PAGE_SIZE,
118
+ page,
119
+ });
120
+ for (const comment of data) {
121
+ if (comment.user?.id !== me.id || !(comment.body ?? '').includes(marker))
122
+ continue;
123
+ if (existing === undefined || comment.id < existing)
124
+ existing = comment.id;
125
+ }
126
+ if (data.length < PAGE_SIZE)
127
+ break;
128
+ }
129
+ const body = renderParkComment(input);
130
+ if (existing !== undefined) {
131
+ await octokit.rest.issues.updateComment({ owner, repo: name, comment_id: existing, body });
132
+ return { commentId: existing, created: false };
133
+ }
134
+ const { data } = await octokit.rest.issues.createComment({ owner, repo: name, issue_number: input.issue, body });
135
+ return { commentId: data.id, created: true };
136
+ }
137
+ /** Never throws: a GitHub or git failure comes back as `{ ok: false, error }`. */
138
+ export async function publishParkComment(deps) {
139
+ const { octokit, repo, worktree, input, readHead = readWorktreeHead } = deps;
140
+ let parkSha;
141
+ if (worktree) {
142
+ try {
143
+ parkSha = (await readHead(worktree)) || undefined;
144
+ }
145
+ catch {
146
+ parkSha = undefined;
147
+ }
148
+ }
149
+ try {
150
+ const result = await upsertParkComment({ octokit, repo, input: { ...input, parkSha } });
151
+ return { ok: true, ...result };
152
+ }
153
+ catch (err) {
154
+ return { ok: false, error: err instanceof Error ? err.message : String(err) };
155
+ }
156
+ }
157
+ //# sourceMappingURL=park-comment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"park-comment.js","sourceRoot":"","sources":["../../src/run/park-comment.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ export function summarizeEvent(type, msg) {
13
13
  const summary = trimmed.length > 0 ? `${type}: ${trimmed}` : type;
14
14
  return summary.length > LAST_EVENT_MAX_LENGTH ? `${summary.slice(0, LAST_EVENT_MAX_LENGTH - 1)}…` : summary;
15
15
  }
16
- const PHASES = ['plan', 'build', 'check', 'ship'];
16
+ const PHASES = new Set(['plan', 'build', 'check', 'ship']);
17
17
  /** Path of one issue's persisted phase snapshot inside `runsDir`
18
18
  * (`getFactoryPaths(repoRoot).runs`). */
19
19
  export function phaseSnapshotFile(runsDir, issue) {
@@ -65,7 +65,7 @@ export async function readPhaseSnapshot(file) {
65
65
  if (typeof record.issue !== 'number' ||
66
66
  typeof record.updatedAt !== 'string' ||
67
67
  typeof record.lastActivityAt !== 'string' ||
68
- !PHASES.includes(record.phase)) {
68
+ !PHASES.has(record.phase)) {
69
69
  return null;
70
70
  }
71
71
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"phase-snapshot.js","sourceRoot":"","sources":["../../src/run/phase-snapshot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"phase-snapshot.js","sourceRoot":"","sources":["../../src/run/phase-snapshot.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,wFAAwF;AACxF,wFAAwF;AACxF,uFAAuF;AACvF,wCAAwC;AAExC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqB7C,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAElC;mFACmF;AACnF,MAAM,UAAU,cAAc,CAAC,IAAe,EAAE,GAAW;IACzD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,OAAO,OAAO,CAAC,MAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;AAC9G,CAAC;AAED,MAAM,MAAM,GAA8B,IAAI,GAAG,CAAe,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAEpG;0CAC0C;AAC1C,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,KAAa;IAC9D,OAAO,OAAO,CAAC,OAAO,EAAE,SAAS,KAAK,aAAa,CAAC,CAAC;AACvD,CAAC;AAED,0FAA0F;AAC1F,0FAA0F;AAC1F,0FAA0F;AAC1F,4FAA4F;AAC5F,uFAAuF;AACvF,sFAAsF;AACtF,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyB,CAAC;AAEpD,SAAS,iBAAiB,CAAC,IAAY,EAAE,EAAuB;IAC9D,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IACvD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClD,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3B,KAAK,IAAI;SACN,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;SACtB,OAAO,CAAC,GAAG,EAAE;QACZ,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI;YAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IACL,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,IAAY,EAAE,QAA0B;IACvE,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC;IAC1B,MAAM,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;mDACmD;AACnD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY,EAAE,QAA0B;IAC/E,OAAO,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED;2FAC2F;AAC3F,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAY;IAClD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAExF,MAAM,MAAM,GAAG,MAAmC,CAAC;IACnD,IACE,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;QAChC,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;QACpC,OAAO,MAAM,CAAC,cAAc,KAAK,QAAQ;QACzC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAqB,CAAC,EACzC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,MAAM,CAAC,KAAqB;QACnC,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,GAAG,CAAC,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjF,CAAC;AACJ,CAAC;AAED;;;mFAGmF;AACnF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,GAAW;IAC9D,OAAO,iBAAiB,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,iBAAiB,CAAC,IAAI,EAAE,EAAE,GAAG,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;2FAI2F;AAC3F,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,SAAiB;IAClE,OAAO,iBAAiB,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,iBAAiB,CAAC,IAAI,EAAE,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -16,13 +16,14 @@ import type { ModelRouter } from '../router/index.js';
16
16
  import { type ProviderBreaker } from '../router/breaker.js';
17
17
  import type { SandboxPolicy } from '../sandbox/index.js';
18
18
  import { type ConsumedSteering } from '../steering/index.js';
19
- import type { CheckFailureInfo, CheckSummary, Constitution, FailoverReason, FailurePhase, ReadinessInfo } from '../types/index.js';
19
+ import type { CheckFailureInfo, CiFailureEvidence, CheckSummary, Constitution, FailoverReason, FailurePhase, ReadinessInfo } from '../types/index.js';
20
20
  import type { WorkRequest, WorkRequestSourceKind } from '../work/index.js';
21
21
  import type { LaneFileGuard } from './lane-file-guard.js';
22
22
  import { type BuildRoute, type RunOutcome } from './outcome.js';
23
23
  import type { RunPolicy } from './policy.js';
24
24
  import { type CheckResumeStore, type PlanReuseStore } from './resume-context.js';
25
25
  import type { Environment, Workspace } from './ports.js';
26
+ import { type CiReworkPorts } from './ci-rework-loop.js';
26
27
  /** Everything one run needs decided, as a plain resolved value — the CLI adapter
27
28
  * computes this today; no config/file/path resolution happens in here. */
28
29
  export interface RunRequest {
@@ -122,6 +123,7 @@ type LogFn = (type: EventKind, msg: string, extra?: {
122
123
  readiness?: ReadinessInfo;
123
124
  prClassification?: PrClassificationRecord;
124
125
  checkFailure?: CheckFailureInfo;
126
+ ciFailure?: CiFailureEvidence;
125
127
  stewardTriggered?: StewardTriggeredPayload;
126
128
  flakyTests?: FlakyTestsPayload;
127
129
  }) => void;
@@ -143,7 +145,7 @@ interface RunReportInfo {
143
145
  /** The injected seams runIssue needs. Effectful, path-bound concerns (Octokit, worktree
144
146
  * layout, approvals/steering directories, report/artifact destinations) are the caller's
145
147
  * responsibility to wire — runIssue only calls the closures it is handed. */
146
- export interface RunPorts {
148
+ export interface RunPorts extends CiReworkPorts {
147
149
  /** Stuck-run steward seams (#2124). Used only when request.stewardEnabled is true and detectStuck fires
148
150
  * on the park; absent → only the steward-triggered event is logged (#2086). */
149
151
  steward?: RunStewardPorts;
@@ -1 +1 @@
1
- {"version":3,"file":"run-issue.d.ts","sourceRoot":"","sources":["../../src/run/run-issue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-issue.d.ts","sourceRoot":"","sources":["../../src/run/run-issue.ts"],"names":[],"mappings":"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"}