@tokenfactory/acc-runner 0.27.0 → 0.27.1

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 (161) hide show
  1. package/dist/anthropic-auth.d.ts +53 -0
  2. package/dist/anthropic-auth.d.ts.map +1 -0
  3. package/dist/anthropic-auth.js +89 -0
  4. package/dist/anthropic-auth.js.map +1 -0
  5. package/dist/bin-resolve.d.ts +16 -0
  6. package/dist/bin-resolve.d.ts.map +1 -0
  7. package/dist/bin-resolve.js +35 -0
  8. package/dist/bin-resolve.js.map +1 -0
  9. package/dist/cli.d.ts +3 -0
  10. package/dist/cli.d.ts.map +1 -0
  11. package/dist/cli.js +128 -0
  12. package/dist/cli.js.map +1 -0
  13. package/dist/config.d.ts +121 -0
  14. package/dist/config.d.ts.map +1 -0
  15. package/dist/config.js +396 -0
  16. package/dist/config.js.map +1 -0
  17. package/dist/cost-pricing.d.ts +130 -0
  18. package/dist/cost-pricing.d.ts.map +1 -0
  19. package/dist/cost-pricing.js +191 -0
  20. package/dist/cost-pricing.js.map +1 -0
  21. package/dist/doctor.d.ts +49 -0
  22. package/dist/doctor.d.ts.map +1 -0
  23. package/dist/doctor.js +776 -0
  24. package/dist/doctor.js.map +1 -0
  25. package/dist/failure-classifier.d.ts +112 -0
  26. package/dist/failure-classifier.d.ts.map +1 -0
  27. package/dist/failure-classifier.js +353 -0
  28. package/dist/failure-classifier.js.map +1 -0
  29. package/dist/gh.d.ts +22 -0
  30. package/dist/gh.d.ts.map +1 -0
  31. package/dist/gh.js +48 -0
  32. package/dist/gh.js.map +1 -0
  33. package/dist/git.d.ts +50 -0
  34. package/dist/git.d.ts.map +1 -0
  35. package/dist/git.js +127 -0
  36. package/dist/git.js.map +1 -0
  37. package/dist/github-client.d.ts +133 -0
  38. package/dist/github-client.d.ts.map +1 -0
  39. package/dist/github-client.js +234 -0
  40. package/dist/github-client.js.map +1 -0
  41. package/dist/keychain.d.ts +21 -0
  42. package/dist/keychain.d.ts.map +1 -0
  43. package/dist/keychain.js +45 -0
  44. package/dist/keychain.js.map +1 -0
  45. package/dist/login.d.ts +12 -0
  46. package/dist/login.d.ts.map +1 -0
  47. package/dist/login.js +133 -0
  48. package/dist/login.js.map +1 -0
  49. package/dist/logout.d.ts +2 -0
  50. package/dist/logout.d.ts.map +1 -0
  51. package/dist/logout.js +31 -0
  52. package/dist/logout.js.map +1 -0
  53. package/dist/mcp-spawn.d.ts +30 -0
  54. package/dist/mcp-spawn.d.ts.map +1 -0
  55. package/dist/mcp-spawn.js +145 -0
  56. package/dist/mcp-spawn.js.map +1 -0
  57. package/dist/messaging.d.ts +49 -0
  58. package/dist/messaging.d.ts.map +1 -0
  59. package/dist/messaging.js +36 -0
  60. package/dist/messaging.js.map +1 -0
  61. package/dist/pkg-version.d.ts +3 -0
  62. package/dist/pkg-version.d.ts.map +1 -0
  63. package/dist/pkg-version.js +20 -0
  64. package/dist/pkg-version.js.map +1 -0
  65. package/dist/profiles/designer-prompt.d.ts +18 -0
  66. package/dist/profiles/designer-prompt.d.ts.map +1 -0
  67. package/dist/profiles/designer-prompt.js +172 -0
  68. package/dist/profiles/designer-prompt.js.map +1 -0
  69. package/dist/profiles/developer-prompt.d.ts +24 -0
  70. package/dist/profiles/developer-prompt.d.ts.map +1 -0
  71. package/dist/profiles/developer-prompt.js +24 -0
  72. package/dist/profiles/developer-prompt.js.map +1 -0
  73. package/dist/profiles/manager-prompt.d.ts +34 -0
  74. package/dist/profiles/manager-prompt.d.ts.map +1 -0
  75. package/dist/profiles/manager-prompt.js +93 -0
  76. package/dist/profiles/manager-prompt.js.map +1 -0
  77. package/dist/profiles/tester-prompt.d.ts +28 -0
  78. package/dist/profiles/tester-prompt.d.ts.map +1 -0
  79. package/dist/profiles/tester-prompt.js +165 -0
  80. package/dist/profiles/tester-prompt.js.map +1 -0
  81. package/dist/prompt.d.ts +38 -0
  82. package/dist/prompt.d.ts.map +1 -0
  83. package/dist/prompt.js +78 -0
  84. package/dist/prompt.js.map +1 -0
  85. package/dist/runtime/cache-dir.d.ts +10 -0
  86. package/dist/runtime/cache-dir.d.ts.map +1 -0
  87. package/dist/runtime/cache-dir.js +42 -0
  88. package/dist/runtime/cache-dir.js.map +1 -0
  89. package/dist/runtime/conflict-resolver.d.ts +65 -0
  90. package/dist/runtime/conflict-resolver.d.ts.map +1 -0
  91. package/dist/runtime/conflict-resolver.js +477 -0
  92. package/dist/runtime/conflict-resolver.js.map +1 -0
  93. package/dist/runtime/expand-args.d.ts +28 -0
  94. package/dist/runtime/expand-args.d.ts.map +1 -0
  95. package/dist/runtime/expand-args.js +50 -0
  96. package/dist/runtime/expand-args.js.map +1 -0
  97. package/dist/runtime/locks.d.ts +21 -0
  98. package/dist/runtime/locks.d.ts.map +1 -0
  99. package/dist/runtime/locks.js +103 -0
  100. package/dist/runtime/locks.js.map +1 -0
  101. package/dist/runtime/provision-mutex.d.ts +37 -0
  102. package/dist/runtime/provision-mutex.d.ts.map +1 -0
  103. package/dist/runtime/provision-mutex.js +67 -0
  104. package/dist/runtime/provision-mutex.js.map +1 -0
  105. package/dist/runtime/quarantine.d.ts +30 -0
  106. package/dist/runtime/quarantine.d.ts.map +1 -0
  107. package/dist/runtime/quarantine.js +53 -0
  108. package/dist/runtime/quarantine.js.map +1 -0
  109. package/dist/runtime/resolution-integrity.d.ts +86 -0
  110. package/dist/runtime/resolution-integrity.d.ts.map +1 -0
  111. package/dist/runtime/resolution-integrity.js +248 -0
  112. package/dist/runtime/resolution-integrity.js.map +1 -0
  113. package/dist/runtime/reviewer.d.ts +81 -0
  114. package/dist/runtime/reviewer.d.ts.map +1 -0
  115. package/dist/runtime/reviewer.js +374 -0
  116. package/dist/runtime/reviewer.js.map +1 -0
  117. package/dist/runtime/rework.d.ts +48 -0
  118. package/dist/runtime/rework.d.ts.map +1 -0
  119. package/dist/runtime/rework.js +136 -0
  120. package/dist/runtime/rework.js.map +1 -0
  121. package/dist/runtime/singleton.d.ts +66 -0
  122. package/dist/runtime/singleton.d.ts.map +1 -0
  123. package/dist/runtime/singleton.js +227 -0
  124. package/dist/runtime/singleton.js.map +1 -0
  125. package/dist/runtime/version-drift.d.ts +31 -0
  126. package/dist/runtime/version-drift.d.ts.map +1 -0
  127. package/dist/runtime/version-drift.js +114 -0
  128. package/dist/runtime/version-drift.js.map +1 -0
  129. package/dist/runtime/worktree.d.ts +74 -0
  130. package/dist/runtime/worktree.d.ts.map +1 -0
  131. package/dist/runtime/worktree.js +211 -0
  132. package/dist/runtime/worktree.js.map +1 -0
  133. package/dist/secrets/inject.d.ts +70 -0
  134. package/dist/secrets/inject.d.ts.map +1 -0
  135. package/dist/secrets/inject.js +102 -0
  136. package/dist/secrets/inject.js.map +1 -0
  137. package/dist/supabase.d.ts +4 -0
  138. package/dist/supabase.d.ts.map +1 -0
  139. package/dist/supabase.js +36 -0
  140. package/dist/supabase.js.map +1 -0
  141. package/dist/task-runner.d.ts +313 -0
  142. package/dist/task-runner.d.ts.map +1 -0
  143. package/dist/task-runner.js +1766 -0
  144. package/dist/task-runner.js.map +1 -0
  145. package/dist/token-provider.d.ts +50 -0
  146. package/dist/token-provider.d.ts.map +1 -0
  147. package/dist/token-provider.js +177 -0
  148. package/dist/token-provider.js.map +1 -0
  149. package/dist/types.d.ts +120 -0
  150. package/dist/types.d.ts.map +1 -0
  151. package/dist/types.js +16 -0
  152. package/dist/types.js.map +1 -0
  153. package/dist/version-check.d.ts +17 -0
  154. package/dist/version-check.d.ts.map +1 -0
  155. package/dist/version-check.js +56 -0
  156. package/dist/version-check.js.map +1 -0
  157. package/dist/watch.d.ts +296 -0
  158. package/dist/watch.d.ts.map +1 -0
  159. package/dist/watch.js +1570 -0
  160. package/dist/watch.js.map +1 -0
  161. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolution-integrity.js","sourceRoot":"","sources":["../../src/runtime/resolution-integrity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * v0.12-REVIEW-LOCAL — Runner-side reviewer-agent runtime.
3
+ *
4
+ * Triggered by a `review_assigned` realtime broadcast on
5
+ * `runner:<id>`. Spawns `claude --print` with the reviewer prompt
6
+ * (mirrors v0.11-B's spawnClaude for task-runner.ts) against the
7
+ * operator's CLI subscription, parses the JSON decision, and posts
8
+ * it back via acc.submit_review. Cost-cap enforcement is identical
9
+ * to api/_lib/reviewer-agent.ts so the cron's downstream merge
10
+ * gate sees consistent ReviewerOutcome shape across the queue and
11
+ * fallback paths.
12
+ *
13
+ * Never throws. Every failure surfaces through acc.submit_review
14
+ * with decision='reviewer_error' so the queue row settles and the
15
+ * cron's poll-merge loop can advance.
16
+ */
17
+ import { type ExecaChildProcess } from "execa";
18
+ import type { RunnerSupabaseClient } from "../supabase.js";
19
+ export interface ReviewAssignment {
20
+ review_id: string;
21
+ task_id: string;
22
+ pr_number: number;
23
+ }
24
+ export interface ReviewerPolicy {
25
+ model_id: string;
26
+ confidence_threshold: number;
27
+ max_cost_usd_per_review: number;
28
+ }
29
+ export type ReviewerDecision = "approve" | "reject" | "cost_cap_exceeded" | "reviewer_error" | "reviewer_capacity";
30
+ export interface ReviewerOutcome {
31
+ decision: ReviewerDecision;
32
+ reasons: string[];
33
+ confidence: number;
34
+ session_id: string | null;
35
+ cost_usd: number;
36
+ /**
37
+ * v0.56 (T-56-1): set only on `reviewer_capacity` — the stated reset
38
+ * instant (ISO-8601) parsed from claude's "...resets <time>" message, or
39
+ * null when none was present. watch.ts schedules its capacity resume off
40
+ * this.
41
+ */
42
+ resume_at?: string | null;
43
+ }
44
+ /** Returns true when a claude stderr string indicates a transient API error that is safe to retry. */
45
+ export declare function isRetriableError(stderr: string): boolean;
46
+ export declare function renderReviewerPrompt(args: {
47
+ task_description: string;
48
+ acceptance_criteria: string[];
49
+ pr_title: string;
50
+ pr_body: string;
51
+ pr_diff: string;
52
+ }): string;
53
+ export declare function extractReviewerDecision(text: string): {
54
+ decision: "approve" | "reject";
55
+ reasons: string[];
56
+ confidence: number;
57
+ } | null;
58
+ export interface RunReviewDeps {
59
+ supabase: RunnerSupabaseClient;
60
+ /** Override for tests. Defaults to `gh pr view ... --json title,body`. */
61
+ fetchPRMeta?: (repo: string, prNumber: number) => Promise<{
62
+ title: string;
63
+ body: string;
64
+ }>;
65
+ /** Override for tests. Defaults to `gh pr diff <n> -R <repo>`. */
66
+ fetchPRDiff?: (repo: string, prNumber: number) => Promise<string>;
67
+ /** Override for tests. Defaults to `claude --print --output-format=json --model <modelId>` on stdin. */
68
+ spawnClaude?: (modelId: string) => ExecaChildProcess;
69
+ /** Override the policy resolver (defaults to org_settings.automerge_policy.reviewer). */
70
+ loadPolicy?: (orgId: string) => Promise<ReviewerPolicy | null>;
71
+ /** Override for tests. Defaults to real setTimeout-based sleep. */
72
+ sleep?: (ms: number) => Promise<void>;
73
+ }
74
+ /**
75
+ * Drive one review end-to-end: fetch task spec + PR meta + diff →
76
+ * render prompt → spawn claude → parse decision → submit_review.
77
+ * Always submits a row even on internal failure (reviewer_error) so
78
+ * the cron's poll-merge loop can advance.
79
+ */
80
+ export declare function runReview(assignment: ReviewAssignment, deps: RunReviewDeps): Promise<ReviewerOutcome>;
81
+ //# sourceMappingURL=reviewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reviewer.d.ts","sourceRoot":"","sources":["../../src/runtime/reviewer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAS,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAStD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAI,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uBAAuB,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,QAAQ,GACR,mBAAmB,GACnB,gBAAgB,GAOhB,mBAAmB,CAAC;AAExB,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAI,gBAAgB,CAAC;IAC7B,OAAO,EAAK,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAI,MAAM,CAAC;IACnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AA0CD,sGAAsG;AACtG,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAIxD;AAMD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,MAAM,CAeT;AAQD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG;IACrD,QAAQ,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC/B,OAAO,EAAG,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,IAAI,CA8DP;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,0EAA0E;IAC1E,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3F,kEAAkE;IAClE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE,wGAAwG;IACxG,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,iBAAiB,CAAC;IACrD,yFAAyF;IACzF,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC/D,mEAAmE;IACnE,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAoED;;;;;GAKG;AACH,wBAAsB,SAAS,CAC7B,UAAU,EAAE,gBAAgB,EAC5B,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,eAAe,CAAC,CAgC1B"}
@@ -0,0 +1,374 @@
1
+ /**
2
+ * v0.12-REVIEW-LOCAL — Runner-side reviewer-agent runtime.
3
+ *
4
+ * Triggered by a `review_assigned` realtime broadcast on
5
+ * `runner:<id>`. Spawns `claude --print` with the reviewer prompt
6
+ * (mirrors v0.11-B's spawnClaude for task-runner.ts) against the
7
+ * operator's CLI subscription, parses the JSON decision, and posts
8
+ * it back via acc.submit_review. Cost-cap enforcement is identical
9
+ * to api/_lib/reviewer-agent.ts so the cron's downstream merge
10
+ * gate sees consistent ReviewerOutcome shape across the queue and
11
+ * fallback paths.
12
+ *
13
+ * Never throws. Every failure surfaces through acc.submit_review
14
+ * with decision='reviewer_error' so the queue row settles and the
15
+ * cron's poll-merge loop can advance.
16
+ */
17
+ import { execa } from "execa";
18
+ import { parseClaudeJson, priceUsdCents, normalizeUsage, } from "../cost-pricing.js";
19
+ import { classifyClaudeExit, extractResetTime } from "../failure-classifier.js";
20
+ import { withAnthropicAuth } from "../anthropic-auth.js";
21
+ import { buildEnv } from "../bin-resolve.js";
22
+ // Same template as prompts/reviewer-agent.md. The runner does not have
23
+ // the markdown file at runtime (the package ships without prompts/) so
24
+ // the prompt is embedded. Keep this string in sync with the markdown
25
+ // version on every prompt edit; tests/integration/v0.12-REVIEW-LOCAL
26
+ // asserts both render the same outline.
27
+ const REVIEWER_PROMPT_TEMPLATE = [
28
+ "You are reviewing a pull request opened by another Claude (an ACC",
29
+ "task runner). Be skeptical. Bias toward rejecting when in doubt.",
30
+ "",
31
+ "Task spec:",
32
+ "{{task_description}}",
33
+ "",
34
+ "Acceptance criteria:",
35
+ "{{acceptance_criteria}}",
36
+ "",
37
+ "PR title: {{pr_title}}",
38
+ "PR body:",
39
+ "{{pr_body}}",
40
+ "",
41
+ "PR diff:",
42
+ "{{pr_diff}}",
43
+ "",
44
+ "Answer in this exact JSON shape, no surrounding prose:",
45
+ '{"decision":"approve"|"reject","reasons":["..."],"confidence":0.0}',
46
+ ].join("\n");
47
+ const MAX_DIFF_CHARS = 60_000;
48
+ const RETRY_DELAYS_MS = [2000, 4000, 8000];
49
+ /** Returns true when a claude stderr string indicates a transient API error that is safe to retry. */
50
+ export function isRetriableError(stderr) {
51
+ if (!stderr)
52
+ return false;
53
+ const lower = stderr.toLowerCase();
54
+ return /5\d{2}/.test(stderr) || lower.includes("overloaded") || lower.includes("timeout");
55
+ }
56
+ function defaultSleep(ms) {
57
+ return new Promise((resolve) => setTimeout(resolve, ms));
58
+ }
59
+ export function renderReviewerPrompt(args) {
60
+ const diff = args.pr_diff.length > MAX_DIFF_CHARS
61
+ ? args.pr_diff.slice(0, MAX_DIFF_CHARS) +
62
+ `\n\n... [diff truncated at ${MAX_DIFF_CHARS} chars; full length ${args.pr_diff.length}] ...\n`
63
+ : args.pr_diff;
64
+ const acceptance = (args.acceptance_criteria ?? [])
65
+ .map((a, i) => `${i + 1}. ${a}`)
66
+ .join("\n");
67
+ return REVIEWER_PROMPT_TEMPLATE
68
+ .replace("{{task_description}}", args.task_description ?? "")
69
+ .replace("{{acceptance_criteria}}", acceptance)
70
+ .replace("{{pr_title}}", args.pr_title ?? "")
71
+ .replace("{{pr_body}}", args.pr_body ?? "")
72
+ .replace("{{pr_diff}}", diff);
73
+ }
74
+ export function extractReviewerDecision(text) {
75
+ if (!text)
76
+ return null;
77
+ // Path 1: strict JSON (preserved fast path).
78
+ const first = text.indexOf("{");
79
+ const last = text.lastIndexOf("}");
80
+ if (first !== -1 && last > first) {
81
+ const candidates = [text.slice(first, last + 1), text.trim()];
82
+ for (const candidate of candidates) {
83
+ try {
84
+ const obj = JSON.parse(candidate);
85
+ if (obj.decision !== "approve" && obj.decision !== "reject")
86
+ continue;
87
+ const reasons = Array.isArray(obj.reasons)
88
+ ? obj.reasons.filter((r) => typeof r === "string")
89
+ : [];
90
+ const confidence = typeof obj.confidence === "number" &&
91
+ obj.confidence >= 0 && obj.confidence <= 1
92
+ ? obj.confidence
93
+ : 0;
94
+ return { decision: obj.decision, reasons, confidence };
95
+ }
96
+ catch { /* try next candidate */ }
97
+ }
98
+ }
99
+ // Path 2 (v0.45-FIX, mirrors api/_lib/reviewer-agent.ts v0.44 patch):
100
+ // prose fallback. Sonnet sometimes returns markdown analysis instead of
101
+ // strict JSON; without this the runner-side reviewer flips every PR to
102
+ // reviewer_error and the cron's auto-retry only burns through max_retries.
103
+ // We bias toward `reject` when the keyword is ambiguous so a parse-recovered
104
+ // approve still has to clear the configured confidence_threshold (0.7)
105
+ // before merging.
106
+ const decisionMatch = /\b(approve|reject)\b/i.exec(text);
107
+ if (!decisionMatch)
108
+ return null;
109
+ const decision = decisionMatch[1].toLowerCase();
110
+ const confidenceMatch = /confidence[^0-9]{0,20}(0?\.\d+|1(?:\.0+)?)/i.exec(text);
111
+ const confidence = confidenceMatch
112
+ ? Math.min(1, Math.max(0, Number.parseFloat(confidenceMatch[1])))
113
+ : decision === "reject"
114
+ ? 0.6 // prose reject without confidence: assume meaningful but not overwhelming
115
+ : 0.3; // prose approve without confidence: assume tentative, below default 0.7 threshold
116
+ // Best-effort reason extraction: pull bullet / numbered lines.
117
+ const reasonLines = text
118
+ .split(/\r?\n/)
119
+ .map((line) => line.trim())
120
+ .filter((line) => /^(?:[-*•]\s|\d+[.)]\s)/.test(line))
121
+ .map((line) => line.replace(/^(?:[-*•]\s|\d+[.)]\s)/, "").trim())
122
+ .filter((line) => line.length > 0)
123
+ .slice(0, 10);
124
+ const reasons = reasonLines.length > 0
125
+ ? reasonLines
126
+ : [
127
+ "parsed from prose reviewer output (no JSON found)",
128
+ `decision_keyword: ${decision}`,
129
+ ];
130
+ return { decision, reasons, confidence };
131
+ }
132
+ async function defaultFetchPRMeta(repo, prNumber) {
133
+ const { stdout } = await execa("gh", ["pr", "view", String(prNumber), "-R", repo, "--json", "title,body"], { env: buildEnv() });
134
+ const parsed = JSON.parse(stdout);
135
+ return { title: parsed.title ?? "", body: parsed.body ?? "" };
136
+ }
137
+ async function defaultFetchPRDiff(repo, prNumber) {
138
+ const { stdout } = await execa("gh", ["pr", "diff", String(prNumber), "-R", repo], { env: buildEnv() });
139
+ return stdout;
140
+ }
141
+ function defaultSpawnClaude(modelId) {
142
+ const args = ["--print", "--dangerously-skip-permissions", "--output-format=json"];
143
+ const trimmed = (modelId ?? "").trim();
144
+ if (trimmed)
145
+ args.push("--model", trimmed);
146
+ // v0.74-B: forward ANTHROPIC_API_KEY (trimmed) when set so the reviewer
147
+ // claude authenticates via the API account (no per-session cap) rather than
148
+ // the interactive OAuth session. claude has no --api-key flag; the env var
149
+ // is the only auth channel. See src/anthropic-auth.ts.
150
+ return execa("claude", args, {
151
+ stdin: "pipe",
152
+ stdout: "pipe",
153
+ stderr: "pipe",
154
+ reject: false,
155
+ env: withAnthropicAuth(buildEnv()),
156
+ });
157
+ }
158
+ function parseEnvelope(stdout, fallbackModel) {
159
+ const parsed = parseClaudeJson(stdout);
160
+ if (!parsed) {
161
+ return { result: stdout.trim(), session_id: null, cost_usd: 0, model: fallbackModel };
162
+ }
163
+ const model = parsed.model ?? fallbackModel;
164
+ const usage = normalizeUsage(parsed.usage);
165
+ const cents = priceUsdCents(model, usage);
166
+ return {
167
+ result: parsed.result ?? "",
168
+ // any-allowed: parseClaudeJson keeps additional fields on the
169
+ // record; session_id isn't on the typed shape but appears in
170
+ // every observed `--output-format=json` envelope from Claude CLI.
171
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
172
+ session_id: parsed.session_id ?? null,
173
+ cost_usd: cents / 100,
174
+ model,
175
+ };
176
+ }
177
+ /**
178
+ * Drive one review end-to-end: fetch task spec + PR meta + diff →
179
+ * render prompt → spawn claude → parse decision → submit_review.
180
+ * Always submits a row even on internal failure (reviewer_error) so
181
+ * the cron's poll-merge loop can advance.
182
+ */
183
+ export async function runReview(assignment, deps) {
184
+ const fetchMeta = deps.fetchPRMeta ?? defaultFetchPRMeta;
185
+ const fetchDiff = deps.fetchPRDiff ?? defaultFetchPRDiff;
186
+ const spawnFn = deps.spawnClaude ?? defaultSpawnClaude;
187
+ let outcome;
188
+ try {
189
+ outcome = await driveReview(assignment, deps, fetchMeta, fetchDiff, spawnFn);
190
+ }
191
+ catch (err) {
192
+ outcome = {
193
+ decision: "reviewer_error",
194
+ reasons: [`runtime_threw: ${err.message?.slice(0, 200)}`],
195
+ confidence: 0,
196
+ session_id: null,
197
+ cost_usd: 0,
198
+ };
199
+ }
200
+ const { error } = await deps.supabase.rpc("submit_review", {
201
+ p_review_id: assignment.review_id,
202
+ p_decision: outcome.decision,
203
+ p_reasons: outcome.reasons,
204
+ p_confidence: outcome.confidence,
205
+ p_session_id: outcome.session_id,
206
+ p_cost_usd: outcome.cost_usd,
207
+ });
208
+ if (error) {
209
+ process.stderr.write(`[acc-runner] submit_review(${assignment.review_id}) failed: ${error.message}\n`);
210
+ }
211
+ return outcome;
212
+ }
213
+ async function invokeClaude(spawnFn, modelId, prompt) {
214
+ const child = spawnFn(modelId);
215
+ if (child.stdin) {
216
+ child.stdin.write(prompt);
217
+ child.stdin.end();
218
+ }
219
+ const [stdout, stderr, exit] = await Promise.all([
220
+ collectStream(child.stdout),
221
+ collectStream(child.stderr),
222
+ child,
223
+ ]);
224
+ return { stdout, stderr, exitCode: exit.exitCode ?? 1 };
225
+ }
226
+ async function driveReview(assignment, deps, fetchMeta, fetchDiff, spawnFn) {
227
+ const { data, error } = await deps.supabase.rpc("fetch_task_for_runner", {
228
+ p_task_id: assignment.task_id,
229
+ });
230
+ if (error || !data) {
231
+ return {
232
+ decision: "reviewer_error",
233
+ reasons: [`fetch_task_failed: ${error?.message ?? "no data"}`],
234
+ confidence: 0,
235
+ session_id: null,
236
+ cost_usd: 0,
237
+ };
238
+ }
239
+ const result = data;
240
+ const task = result.task;
241
+ const repo = task.repo?.trim();
242
+ if (!repo) {
243
+ return {
244
+ decision: "reviewer_error",
245
+ reasons: ["task has no repo to target gh against"],
246
+ confidence: 0,
247
+ session_id: null,
248
+ cost_usd: 0,
249
+ };
250
+ }
251
+ // Look up the org's reviewer policy. The runner-side reviewer needs
252
+ // confidence_threshold + max_cost_usd_per_review to stay consistent
253
+ // with the cron-side gate, since the cron now just lifts the decision
254
+ // out of the queue row without re-checking the cap.
255
+ const policy = deps.loadPolicy
256
+ ? await deps.loadPolicy("")
257
+ : await loadReviewerPolicy(deps.supabase);
258
+ const [meta, diff] = await Promise.all([
259
+ fetchMeta(repo, assignment.pr_number),
260
+ fetchDiff(repo, assignment.pr_number),
261
+ ]);
262
+ const prompt = renderReviewerPrompt({
263
+ task_description: task.description ?? "",
264
+ acceptance_criteria: task.acceptance ?? [],
265
+ pr_title: meta.title,
266
+ pr_body: meta.body,
267
+ pr_diff: diff,
268
+ });
269
+ const sleepFn = deps.sleep ?? defaultSleep;
270
+ const modelId = policy?.model_id ?? "claude-sonnet-4-6";
271
+ let invokeResult = null;
272
+ for (let attempt = 0; attempt <= RETRY_DELAYS_MS.length; attempt++) {
273
+ invokeResult = await invokeClaude(spawnFn, modelId, prompt);
274
+ if (invokeResult.exitCode === 0)
275
+ break;
276
+ const canRetry = attempt < RETRY_DELAYS_MS.length &&
277
+ invokeResult.exitCode === 1 &&
278
+ isRetriableError(invokeResult.stderr);
279
+ if (!canRetry)
280
+ break;
281
+ const delayMs = RETRY_DELAYS_MS[attempt];
282
+ process.stderr.write(`[reviewer] retry attempt ${attempt + 1}/${RETRY_DELAYS_MS.length} after ${delayMs}ms\n`);
283
+ await sleepFn(delayMs);
284
+ }
285
+ // invokeResult is always set — the loop runs at least once
286
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
287
+ const { stdout, exitCode, stderr: claudeStderr } = invokeResult;
288
+ if (exitCode !== 0) {
289
+ // v0.56 (T-56-1): a session/usage limit (429) is NOT a reviewer error —
290
+ // report reviewer_capacity so the api side excludes it from retry caps
291
+ // and the runner pauses until the window reopens. Checked only on a
292
+ // non-zero exit so a normal review whose prose happens to mention a
293
+ // "limit" can never be mis-flagged.
294
+ const classified = classifyClaudeExit(exitCode, claudeStderr, stdout);
295
+ if (classified.class === "capacity_exhausted") {
296
+ const resumeMs = extractResetTime(`${claudeStderr}\n${stdout}`);
297
+ return {
298
+ decision: "reviewer_capacity",
299
+ reasons: [classified.detail],
300
+ confidence: 0,
301
+ session_id: null,
302
+ cost_usd: 0,
303
+ resume_at: resumeMs !== null ? new Date(resumeMs).toISOString() : null,
304
+ };
305
+ }
306
+ return {
307
+ decision: "reviewer_error",
308
+ reasons: [
309
+ `claude exited ${exitCode}`,
310
+ ...(claudeStderr ? [`stderr: ${claudeStderr.slice(0, 200)}`] : []),
311
+ ],
312
+ confidence: 0,
313
+ session_id: null,
314
+ cost_usd: 0,
315
+ };
316
+ }
317
+ const envelope = parseEnvelope(stdout, modelId);
318
+ // Cost cap parity with api/_lib/reviewer-agent.ts. A cap of 0
319
+ // disables the gate.
320
+ if (policy &&
321
+ policy.max_cost_usd_per_review > 0 &&
322
+ envelope.cost_usd > policy.max_cost_usd_per_review) {
323
+ return {
324
+ decision: "cost_cap_exceeded",
325
+ reasons: [
326
+ `reviewer cost $${envelope.cost_usd.toFixed(4)} exceeded cap $${policy.max_cost_usd_per_review.toFixed(2)}`,
327
+ ],
328
+ confidence: 0,
329
+ session_id: envelope.session_id,
330
+ cost_usd: envelope.cost_usd,
331
+ };
332
+ }
333
+ const decision = extractReviewerDecision(envelope.result);
334
+ if (!decision) {
335
+ return {
336
+ decision: "reviewer_error",
337
+ reasons: [
338
+ "could not parse reviewer JSON from claude output",
339
+ `output_head: ${envelope.result.slice(0, 200)}`,
340
+ ],
341
+ confidence: 0,
342
+ session_id: envelope.session_id,
343
+ cost_usd: envelope.cost_usd,
344
+ };
345
+ }
346
+ return {
347
+ decision: decision.decision,
348
+ reasons: decision.reasons,
349
+ confidence: decision.confidence,
350
+ session_id: envelope.session_id,
351
+ cost_usd: envelope.cost_usd,
352
+ };
353
+ }
354
+ async function loadReviewerPolicy(supabase) {
355
+ // any-allowed: org_settings rows aren't in the runner's generated
356
+ // Database type yet — same pattern as task-runner.ts cost-event sink.
357
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
358
+ const { data } = await supabase.from("org_settings")
359
+ .select("automerge_policy")
360
+ .limit(1)
361
+ .maybeSingle();
362
+ const row = data;
363
+ return row?.automerge_policy?.reviewer ?? null;
364
+ }
365
+ async function collectStream(stream) {
366
+ if (!stream)
367
+ return "";
368
+ let captured = "";
369
+ for await (const raw of stream) {
370
+ captured += typeof raw === "string" ? raw : raw.toString("utf8");
371
+ }
372
+ return captured;
373
+ }
374
+ //# sourceMappingURL=reviewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reviewer.js","sourceRoot":"","sources":["../../src/runtime/reviewer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ export interface ReworkMeta {
2
+ pr_number: number;
3
+ repo: string;
4
+ /** PR head branch. May be empty — resolve via fetchPrHeadRef then. */
5
+ branch: string;
6
+ /** The rejected task; re-review + needs-review flip target. Empty when
7
+ * the meta was reconstructed from task-row fallback fields. */
8
+ origin_task_id: string;
9
+ verdict: string;
10
+ confidence: number;
11
+ comments: string[];
12
+ cycle: number;
13
+ }
14
+ /** Mirrors the bound enforced inside acc.create_rework_task. */
15
+ export declare const MAX_REWORK_CYCLES = 3;
16
+ /**
17
+ * Extract rework metadata from the task description. Falls back to the
18
+ * task row's own pr_number/repo/branch when the sentinel is absent or
19
+ * malformed (same degradation path as parseConflictMeta).
20
+ */
21
+ export declare function parseReworkMeta(description: string | null | undefined, fallback?: {
22
+ pr_number?: number | null;
23
+ repo?: string | null;
24
+ branch?: string | null;
25
+ }): ReworkMeta | null;
26
+ /**
27
+ * Resolve the PR's head branch via gh when the sentinel carried an empty
28
+ * branch (e.g. the origin task row had no branch back-written yet).
29
+ */
30
+ export declare function fetchPrHeadRef(repo: string, prNumber: number): Promise<string>;
31
+ /**
32
+ * Rework prompt. Replaces renderTaskPrompt for rework tasks: the protocol
33
+ * header changes from "open a PR" to "update the existing PR's branch",
34
+ * and the reviewer's verdict + comments become the work spec. The runner
35
+ * pushes after Claude exits, so the session only needs to commit.
36
+ */
37
+ export declare function renderReworkPrompt(args: {
38
+ task: {
39
+ id: string;
40
+ title: string;
41
+ description?: string | null;
42
+ typecheck_cmd?: string | null;
43
+ forbidden: string[];
44
+ };
45
+ meta: ReworkMeta;
46
+ branch: string;
47
+ }): string;
48
+ //# sourceMappingURL=rework.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rework.d.ts","sourceRoot":"","sources":["../../src/runtime/rework.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf;oEACgE;IAChE,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,gEAAgE;AAChE,eAAO,MAAM,iBAAiB,IAAI,CAAC;AA+BnC;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACtC,QAAQ,CAAC,EAAE;IACT,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,GACA,UAAU,GAAG,IAAI,CA6BnB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CAqDT"}