sandcastle-drain 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +108 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +139 -0
- package/dist/cli.js.map +1 -0
- package/dist/content/agent-docs/issue-tracker.md +22 -0
- package/dist/content/agent-docs/sandcastle-windows-cleanup.md +45 -0
- package/dist/content/agent-docs/triage-labels.md +101 -0
- package/dist/content/principles/README.md +39 -0
- package/dist/content/principles/architecture.md +124 -0
- package/dist/content/principles/claude-code-modes.md +47 -0
- package/dist/content/principles/clean-code.md +102 -0
- package/dist/content/principles/context-budget.md +81 -0
- package/dist/content/principles/cqrs.md +70 -0
- package/dist/content/principles/domain-modeling.md +62 -0
- package/dist/content/principles/frontend-organization.md +120 -0
- package/dist/content/principles/language-and-types.md +85 -0
- package/dist/content/principles/linting-and-tooling.md +122 -0
- package/dist/content/principles/personal-use-tradeoffs.md +55 -0
- package/dist/content/principles/testing.md +89 -0
- package/dist/orchestrator/blocked-by.d.ts +17 -0
- package/dist/orchestrator/blocked-by.d.ts.map +1 -0
- package/dist/orchestrator/blocked-by.js +48 -0
- package/dist/orchestrator/blocked-by.js.map +1 -0
- package/dist/orchestrator/ci-gate.d.ts +28 -0
- package/dist/orchestrator/ci-gate.d.ts.map +1 -0
- package/dist/orchestrator/ci-gate.js +198 -0
- package/dist/orchestrator/ci-gate.js.map +1 -0
- package/dist/orchestrator/main.d.ts +10 -0
- package/dist/orchestrator/main.d.ts.map +1 -0
- package/dist/orchestrator/main.js +883 -0
- package/dist/orchestrator/main.js.map +1 -0
- package/dist/orchestrator/prereqs.d.ts +30 -0
- package/dist/orchestrator/prereqs.d.ts.map +1 -0
- package/dist/orchestrator/prereqs.js +191 -0
- package/dist/orchestrator/prereqs.js.map +1 -0
- package/dist/orchestrator/rejection.d.ts +60 -0
- package/dist/orchestrator/rejection.d.ts.map +1 -0
- package/dist/orchestrator/rejection.js +187 -0
- package/dist/orchestrator/rejection.js.map +1 -0
- package/dist/orchestrator/reviewer.d.ts +75 -0
- package/dist/orchestrator/reviewer.d.ts.map +1 -0
- package/dist/orchestrator/reviewer.js +260 -0
- package/dist/orchestrator/reviewer.js.map +1 -0
- package/dist/orchestrator/ship.d.ts +19 -0
- package/dist/orchestrator/ship.d.ts.map +1 -0
- package/dist/orchestrator/ship.js +73 -0
- package/dist/orchestrator/ship.js.map +1 -0
- package/dist/orchestrator/sibling-context.d.ts +16 -0
- package/dist/orchestrator/sibling-context.d.ts.map +1 -0
- package/dist/orchestrator/sibling-context.js +61 -0
- package/dist/orchestrator/sibling-context.js.map +1 -0
- package/dist/orchestrator/splits.d.ts +60 -0
- package/dist/orchestrator/splits.d.ts.map +1 -0
- package/dist/orchestrator/splits.js +149 -0
- package/dist/orchestrator/splits.js.map +1 -0
- package/dist/orchestrator/status.d.ts +13 -0
- package/dist/orchestrator/status.d.ts.map +1 -0
- package/dist/orchestrator/status.js +43 -0
- package/dist/orchestrator/status.js.map +1 -0
- package/dist/orchestrator/summary.d.ts +33 -0
- package/dist/orchestrator/summary.d.ts.map +1 -0
- package/dist/orchestrator/summary.js +59 -0
- package/dist/orchestrator/summary.js.map +1 -0
- package/dist/orchestrator/sweep.d.ts +18 -0
- package/dist/orchestrator/sweep.d.ts.map +1 -0
- package/dist/orchestrator/sweep.js +79 -0
- package/dist/orchestrator/sweep.js.map +1 -0
- package/dist/orchestrator/teardown.d.ts +12 -0
- package/dist/orchestrator/teardown.d.ts.map +1 -0
- package/dist/orchestrator/teardown.js +42 -0
- package/dist/orchestrator/teardown.js.map +1 -0
- package/dist/orchestrator/worktree-cleanup.d.ts +2 -0
- package/dist/orchestrator/worktree-cleanup.d.ts.map +1 -0
- package/dist/orchestrator/worktree-cleanup.js +39 -0
- package/dist/orchestrator/worktree-cleanup.js.map +1 -0
- package/dist/prompts/implementer.md.tpl +85 -0
- package/dist/prompts/reviewer.md.tpl +118 -0
- package/dist/render-prompt.d.ts +22 -0
- package/dist/render-prompt.d.ts.map +1 -0
- package/dist/render-prompt.js +64 -0
- package/dist/render-prompt.js.map +1 -0
- package/dist/stage.d.ts +43 -0
- package/dist/stage.d.ts.map +1 -0
- package/dist/stage.js +105 -0
- package/dist/stage.js.map +1 -0
- package/docker/Dockerfile +42 -0
- package/package.json +48 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/orchestrator/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export declare const REPO_ROOT: string;
|
|
2
|
+
export declare const IMAGE_NAME: string;
|
|
3
|
+
export declare const HOST_CREDS_PATH: string;
|
|
4
|
+
export declare const SANDBOX_CREDS_PATH = "/home/agent/.claude";
|
|
5
|
+
export declare const REQUIRED_SKILLS: readonly ["tdd", "diagnose"];
|
|
6
|
+
export interface LabelDefinition {
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
color: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const LABEL_DEFINITIONS: readonly LabelDefinition[];
|
|
12
|
+
export declare function probeSkills(): string[];
|
|
13
|
+
export declare function probeAuth(): Promise<string | null>;
|
|
14
|
+
export declare function probeGhAuth(): Promise<{
|
|
15
|
+
token: string;
|
|
16
|
+
} | string>;
|
|
17
|
+
export declare function probeLabels(): Promise<string | null>;
|
|
18
|
+
/**
|
|
19
|
+
* Runs every startup probe in order. On any failure, logs the actionable error
|
|
20
|
+
* to stderr and exits the process with code 1. On success, returns the gh
|
|
21
|
+
* token so the caller can pass it into the sandbox as GH_TOKEN.
|
|
22
|
+
*
|
|
23
|
+
* This is the single place the CLI converts probe results into a process exit,
|
|
24
|
+
* keeping the individual probes pure (and unit-testable) functions that just
|
|
25
|
+
* report what they found.
|
|
26
|
+
*/
|
|
27
|
+
export declare function runAllPrereqs(): Promise<{
|
|
28
|
+
token: string;
|
|
29
|
+
}>;
|
|
30
|
+
//# sourceMappingURL=prereqs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prereqs.d.ts","sourceRoot":"","sources":["../../src/orchestrator/prereqs.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,SAAS,QAAgB,CAAC;AAMvC,eAAO,MAAM,UAAU,QAAsC,CAAC;AAE9D,eAAO,MAAM,eAAe,QAAwD,CAAC;AACrF,eAAO,MAAM,kBAAkB,wBAAwB,CAAC;AAIxD,eAAO,MAAM,eAAe,8BAA+B,CAAC;AAE5D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAMD,eAAO,MAAM,iBAAiB,EAAE,SAAS,eAAe,EAsCvD,CAAC;AAEF,wBAAgB,WAAW,IAAI,MAAM,EAAE,CAOtC;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAaxD;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,CAoBvE;AAQD,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA2C1D;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA6BhE"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared startup probes the CLI runs once before dispatching to drain / ship /
|
|
3
|
+
* sweep. Each probe returns an actionable error string (or `null` on success)
|
|
4
|
+
* rather than throwing or exiting itself — `runAllPrereqs` is the single place
|
|
5
|
+
* that turns a failed probe into a non-zero exit so subcommands can stay pure.
|
|
6
|
+
*
|
|
7
|
+
* Also owns the wrapper's shared host-side constants (REPO_ROOT, IMAGE_NAME,
|
|
8
|
+
* credential paths) so the CLI is the only place that resolves `process.cwd()`
|
|
9
|
+
* and every subcommand sees the same view of "where the host project lives".
|
|
10
|
+
*/
|
|
11
|
+
import { execa } from 'execa';
|
|
12
|
+
import { existsSync } from 'node:fs';
|
|
13
|
+
import { homedir } from 'node:os';
|
|
14
|
+
import { basename, join } from 'node:path';
|
|
15
|
+
// Host-project root: when `npx sandcastle-drain` is run, this is the user's project
|
|
16
|
+
// directory (where their `.sandcastle-drain/`, `.git/`, etc. live), NOT the installed
|
|
17
|
+
// library's directory. Computed once at module load — `process.cwd()` is stable
|
|
18
|
+
// for the lifetime of the process.
|
|
19
|
+
export const REPO_ROOT = process.cwd();
|
|
20
|
+
// Matches Sandcastle's default image-name convention: `sandcastle:<dir-name>`.
|
|
21
|
+
// `npx sandcastle docker build-image` (the @ai-hero/sandcastle CLI, not this
|
|
22
|
+
// wrapper) produces this name without a flag; we derive it from the host
|
|
23
|
+
// project's directory name so the wrapper stays portable across user projects.
|
|
24
|
+
export const IMAGE_NAME = `sandcastle:${basename(REPO_ROOT)}`;
|
|
25
|
+
export const HOST_CREDS_PATH = join(homedir(), '.config', 'sandcastle-claude-creds');
|
|
26
|
+
export const SANDBOX_CREDS_PATH = '/home/agent/.claude';
|
|
27
|
+
// Skills the implementer prompt depends on. probeSkills enforces these exist
|
|
28
|
+
// under `.claude/skills/` before any subcommand runs.
|
|
29
|
+
export const REQUIRED_SKILLS = ['tdd', 'diagnose'];
|
|
30
|
+
// Canonical wrapper-touched labels. `probeLabels` ensures each exists in the
|
|
31
|
+
// GitHub repo before the drain starts — without this, a fresh clone hits a
|
|
32
|
+
// hard crash the first time the rejection loop fires (the `priority` label
|
|
33
|
+
// is referenced by code but isn't a default GitHub label).
|
|
34
|
+
export const LABEL_DEFINITIONS = [
|
|
35
|
+
{
|
|
36
|
+
name: 'sandcastle',
|
|
37
|
+
description: 'Queued for sandcastle-drain to process',
|
|
38
|
+
color: '5319E7',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: 'in-progress',
|
|
42
|
+
description: 'sandcastle-drain picked up the issue (wrapper-managed)',
|
|
43
|
+
color: 'FEF2C0',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'needs-review',
|
|
47
|
+
description: 'sandcastle-drain run produced commits — review before merging',
|
|
48
|
+
color: 'E99695',
|
|
49
|
+
},
|
|
50
|
+
{ name: 'blocked', description: 'Skip this issue (manually applied)', color: 'B60205' },
|
|
51
|
+
{
|
|
52
|
+
name: 'retry',
|
|
53
|
+
description: 'Discard prior agent attempt and re-run (apply alongside sandcastle)',
|
|
54
|
+
color: 'D4C5F9',
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: 'priority',
|
|
58
|
+
description: 'sandcastle-drain rejection-loop follow-up jumps the queue (wrapper-managed)',
|
|
59
|
+
color: 'E11D21',
|
|
60
|
+
},
|
|
61
|
+
{ name: 'needs-info', description: 'Waiting for more information', color: 'D93F0B' },
|
|
62
|
+
{
|
|
63
|
+
name: 'oversized',
|
|
64
|
+
description: 'sandcastle-drain run exceeded the 150k context ceiling — split via to-issues',
|
|
65
|
+
color: 'CCCCCC',
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: 'skipped-this-run',
|
|
69
|
+
description: 'Most recent drain skipped this issue — see latest comment (wrapper-managed)',
|
|
70
|
+
color: 'BFD4F2',
|
|
71
|
+
},
|
|
72
|
+
];
|
|
73
|
+
export function probeSkills() {
|
|
74
|
+
const missing = [];
|
|
75
|
+
for (const skill of REQUIRED_SKILLS) {
|
|
76
|
+
const path = join(REPO_ROOT, '.claude', 'skills', skill, 'SKILL.md');
|
|
77
|
+
if (!existsSync(path))
|
|
78
|
+
missing.push(skill);
|
|
79
|
+
}
|
|
80
|
+
return missing;
|
|
81
|
+
}
|
|
82
|
+
export async function probeAuth() {
|
|
83
|
+
// Light auth probe: credential file present + claude --version succeeds on
|
|
84
|
+
// the host. We do NOT make a real API call — that's network spend, slow,
|
|
85
|
+
// and the actual sandbox will fail loudly within ~30s of the run starting
|
|
86
|
+
// if the OAuth token has been revoked.
|
|
87
|
+
if (!existsSync(HOST_CREDS_PATH)) {
|
|
88
|
+
return `OAuth credential directory not found at ${HOST_CREDS_PATH}. Bootstrap with:\n docker run -it --rm --entrypoint claude -v ${HOST_CREDS_PATH}:/home/agent/.claude ${IMAGE_NAME} login`;
|
|
89
|
+
}
|
|
90
|
+
const result = await execa('claude', ['--version'], { reject: false });
|
|
91
|
+
if (result.exitCode !== 0) {
|
|
92
|
+
return `\`claude --version\` failed on the host — the Claude Code CLI is not installed or not on PATH. Install with:\n npm install -g @anthropic-ai/claude-code`;
|
|
93
|
+
}
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
export async function probeGhAuth() {
|
|
97
|
+
// The wrapper itself uses host-side gh for queue / labels / comments — but
|
|
98
|
+
// the prompt's `!gh issue view ...` shell-expansion block runs *inside* the
|
|
99
|
+
// sandbox, where no auth exists by default. Sandcastle does not bridge
|
|
100
|
+
// keyring auth into the container, so we export the token here and pass it
|
|
101
|
+
// through as GH_TOKEN. (On Windows the keyring is Credential Manager, which
|
|
102
|
+
// isn't mountable as a file, so token-via-env is the only viable path.)
|
|
103
|
+
const versionResult = await execa('gh', ['--version'], { reject: false });
|
|
104
|
+
if (versionResult.exitCode !== 0) {
|
|
105
|
+
return `\`gh --version\` failed on the host — the GitHub CLI is not installed or not on PATH. Install from:\n https://cli.github.com/`;
|
|
106
|
+
}
|
|
107
|
+
const tokenResult = await execa('gh', ['auth', 'token'], { reject: false });
|
|
108
|
+
if (tokenResult.exitCode !== 0) {
|
|
109
|
+
return `GitHub CLI is not authenticated on the host. Run:\n gh auth login`;
|
|
110
|
+
}
|
|
111
|
+
const token = tokenResult.stdout.trim();
|
|
112
|
+
if (!token) {
|
|
113
|
+
return `GitHub CLI returned an empty auth token. Run:\n gh auth login`;
|
|
114
|
+
}
|
|
115
|
+
return { token };
|
|
116
|
+
}
|
|
117
|
+
// Ensures every canonical wrapper-touched label exists in the repo. Idempotent:
|
|
118
|
+
// only creates missing labels, never edits existing ones (so a human who
|
|
119
|
+
// recolored a label keeps their choice). The historical reason this exists:
|
|
120
|
+
// the `priority` label is referenced by the rejection-loop code but isn't a
|
|
121
|
+
// default GitHub label — a fresh clone would crash the first time the
|
|
122
|
+
// reviewer FAILed on a commit.
|
|
123
|
+
export async function probeLabels() {
|
|
124
|
+
let existing;
|
|
125
|
+
try {
|
|
126
|
+
const listResult = await execa('gh', ['label', 'list', '--limit', '200', '--json', 'name'], { cwd: REPO_ROOT, reject: false });
|
|
127
|
+
if (listResult.exitCode !== 0) {
|
|
128
|
+
return `\`gh label list\` failed: ${listResult.stderr || listResult.stdout}`;
|
|
129
|
+
}
|
|
130
|
+
const rows = JSON.parse(listResult.stdout);
|
|
131
|
+
existing = new Set(rows.map((r) => r.name));
|
|
132
|
+
}
|
|
133
|
+
catch (err) {
|
|
134
|
+
return `\`gh label list\` failed: ${err.message}`;
|
|
135
|
+
}
|
|
136
|
+
const missing = LABEL_DEFINITIONS.filter((d) => !existing.has(d.name));
|
|
137
|
+
if (missing.length === 0) {
|
|
138
|
+
console.log('[wrapper] all canonical labels present');
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
for (const def of missing) {
|
|
142
|
+
const createResult = await execa('gh', [
|
|
143
|
+
'label',
|
|
144
|
+
'create',
|
|
145
|
+
def.name,
|
|
146
|
+
'--description',
|
|
147
|
+
def.description,
|
|
148
|
+
'--color',
|
|
149
|
+
def.color,
|
|
150
|
+
], { cwd: REPO_ROOT, reject: false });
|
|
151
|
+
if (createResult.exitCode !== 0) {
|
|
152
|
+
return `failed to create label '${def.name}': ${createResult.stderr || createResult.stdout}`;
|
|
153
|
+
}
|
|
154
|
+
console.log(`[wrapper] created missing label: ${def.name}`);
|
|
155
|
+
}
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Runs every startup probe in order. On any failure, logs the actionable error
|
|
160
|
+
* to stderr and exits the process with code 1. On success, returns the gh
|
|
161
|
+
* token so the caller can pass it into the sandbox as GH_TOKEN.
|
|
162
|
+
*
|
|
163
|
+
* This is the single place the CLI converts probe results into a process exit,
|
|
164
|
+
* keeping the individual probes pure (and unit-testable) functions that just
|
|
165
|
+
* report what they found.
|
|
166
|
+
*/
|
|
167
|
+
export async function runAllPrereqs() {
|
|
168
|
+
const missingSkills = probeSkills();
|
|
169
|
+
if (missingSkills.length > 0) {
|
|
170
|
+
const installArgs = missingSkills.map((s) => `mattpocock/skills/${s}`).join(' ');
|
|
171
|
+
console.error(`sandcastle-drain: missing required skills under .claude/skills/: ${missingSkills.join(', ')}. Install with:\n npx skills@latest add ${installArgs}`);
|
|
172
|
+
process.exit(1);
|
|
173
|
+
}
|
|
174
|
+
const authError = await probeAuth();
|
|
175
|
+
if (authError) {
|
|
176
|
+
console.error(`sandcastle-drain: ${authError}`);
|
|
177
|
+
process.exit(1);
|
|
178
|
+
}
|
|
179
|
+
const ghAuth = await probeGhAuth();
|
|
180
|
+
if (typeof ghAuth === 'string') {
|
|
181
|
+
console.error(`sandcastle-drain: ${ghAuth}`);
|
|
182
|
+
process.exit(1);
|
|
183
|
+
}
|
|
184
|
+
const labelsError = await probeLabels();
|
|
185
|
+
if (labelsError) {
|
|
186
|
+
console.error(`sandcastle-drain: ${labelsError}`);
|
|
187
|
+
process.exit(1);
|
|
188
|
+
}
|
|
189
|
+
return { token: ghAuth.token };
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=prereqs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prereqs.js","sourceRoot":"","sources":["../../src/orchestrator/prereqs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { ReviewerOutput } from './reviewer.js';
|
|
2
|
+
export declare const REJECTION_TAG_PREFIX = "rejected/issue-";
|
|
3
|
+
export declare const PRIORITY_LABEL = "priority";
|
|
4
|
+
/**
|
|
5
|
+
* Queue ordering: `priority`-labeled issues first (so a rejection-loop
|
|
6
|
+
* follow-up runs ahead of pending work), then by issue number. Stable for
|
|
7
|
+
* issues with the same priority bucket so a fixed queue produces a fixed
|
|
8
|
+
* order.
|
|
9
|
+
*/
|
|
10
|
+
export declare function sortQueue<T extends {
|
|
11
|
+
number: number;
|
|
12
|
+
labels: readonly string[];
|
|
13
|
+
}>(issues: readonly T[]): T[];
|
|
14
|
+
export declare function rejectionTagName(issue: number, attempt: number): string;
|
|
15
|
+
/**
|
|
16
|
+
* Given the set of existing local tags, returns the next attempt number for
|
|
17
|
+
* this issue. Counts only tags matching `rejected/issue-N-attempt-K` exactly —
|
|
18
|
+
* unrelated tags are ignored.
|
|
19
|
+
*/
|
|
20
|
+
export declare function nextAttemptNumber(issue: number, tags: readonly string[]): number;
|
|
21
|
+
export interface FollowUpIssueBodyArgs {
|
|
22
|
+
originalIssueNumber: number;
|
|
23
|
+
rejectionTag: string;
|
|
24
|
+
attempt: number;
|
|
25
|
+
reviewerOutput: ReviewerOutput;
|
|
26
|
+
changedFiles: readonly string[];
|
|
27
|
+
commitTitles: readonly string[];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Renders the body of the follow-up issue. The next implementer reads this as
|
|
31
|
+
* their starting point — it must contain enough context to restart without
|
|
32
|
+
* cold-starting from the original issue alone:
|
|
33
|
+
*
|
|
34
|
+
* - link back to the original
|
|
35
|
+
* - reviewer summary + findings as a checklist (each becomes a TODO)
|
|
36
|
+
* - what the prior attempt touched (files, commit titles)
|
|
37
|
+
* - pointer to the rejected tag for `git diff` of the prior attempt
|
|
38
|
+
*/
|
|
39
|
+
export declare function buildFollowUpBody(args: FollowUpIssueBodyArgs): string;
|
|
40
|
+
export declare function buildFollowUpTitle(originalNumber: number, originalTitle: string): string;
|
|
41
|
+
export interface OriginalIssueRejectionCommentArgs {
|
|
42
|
+
rejectionTag: string;
|
|
43
|
+
attempt: number;
|
|
44
|
+
reviewerSummary: string;
|
|
45
|
+
followUpIssueNumber?: number;
|
|
46
|
+
followUpIssueUrl?: string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The note left on the original issue. Tells the human reader: "this attempt
|
|
50
|
+
* was rejected, here's the verdict, here's the follow-up that picks it up."
|
|
51
|
+
*/
|
|
52
|
+
export declare function buildOriginalIssueRejectionComment(args: OriginalIssueRejectionCommentArgs): string;
|
|
53
|
+
export declare function listRejectionTagsForIssue(issue: number, cwd: string): Promise<string[]>;
|
|
54
|
+
export declare function createRejectionTag(args: {
|
|
55
|
+
tag: string;
|
|
56
|
+
branch: string;
|
|
57
|
+
cwd: string;
|
|
58
|
+
message: string;
|
|
59
|
+
}): Promise<void>;
|
|
60
|
+
//# sourceMappingURL=rejection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rejection.d.ts","sourceRoot":"","sources":["../../src/orchestrator/rejection.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,cAAc,EAAoC,MAAM,eAAe,CAAC;AAEtF,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AACtD,eAAO,MAAM,cAAc,aAAa,CAAC;AAEzC;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,EAC/E,MAAM,EAAE,SAAS,CAAC,EAAE,GACnB,CAAC,EAAE,CAOL;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAWhF;AAED,MAAM,WAAW,qBAAqB;IACpC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AAmBD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAoDrE;AAED,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAExF;AAED,MAAM,WAAW,iCAAiC;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,iCAAiC,GACtC,MAAM,CAoBR;AAMD,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAW7F;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAWhB"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rejection loop — close out a reviewer-FAIL run.
|
|
3
|
+
*
|
|
4
|
+
* When the reviewer returns `FAIL`, the implementer's commits are not safe to
|
|
5
|
+
* merge but the work is still worth preserving for the next attempt's prompt.
|
|
6
|
+
* This module:
|
|
7
|
+
*
|
|
8
|
+
* 1. Computes the next `attempt-K` number by counting existing
|
|
9
|
+
* `rejected/issue-N-attempt-*` tags.
|
|
10
|
+
* 2. Tags the branch tip as `rejected/issue-N-attempt-K` so the commits
|
|
11
|
+
* survive the upcoming branch deletion.
|
|
12
|
+
* 3. Returns the rendered body for a follow-up GitHub issue (reviewer
|
|
13
|
+
* findings as a checklist, files touched, pointer to the tag), plus the
|
|
14
|
+
* comment to leave on the original issue.
|
|
15
|
+
*
|
|
16
|
+
* Branch deletion, label changes, and gh CLI calls happen in `main.ts` so this
|
|
17
|
+
* module stays a thin layer over pure rendering + git plumbing.
|
|
18
|
+
*/
|
|
19
|
+
import { execa } from 'execa';
|
|
20
|
+
export const REJECTION_TAG_PREFIX = 'rejected/issue-';
|
|
21
|
+
export const PRIORITY_LABEL = 'priority';
|
|
22
|
+
/**
|
|
23
|
+
* Queue ordering: `priority`-labeled issues first (so a rejection-loop
|
|
24
|
+
* follow-up runs ahead of pending work), then by issue number. Stable for
|
|
25
|
+
* issues with the same priority bucket so a fixed queue produces a fixed
|
|
26
|
+
* order.
|
|
27
|
+
*/
|
|
28
|
+
export function sortQueue(issues) {
|
|
29
|
+
return [...issues].sort((a, b) => {
|
|
30
|
+
const aPriority = a.labels.includes(PRIORITY_LABEL);
|
|
31
|
+
const bPriority = b.labels.includes(PRIORITY_LABEL);
|
|
32
|
+
if (aPriority !== bPriority)
|
|
33
|
+
return aPriority ? -1 : 1;
|
|
34
|
+
return a.number - b.number;
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
export function rejectionTagName(issue, attempt) {
|
|
38
|
+
return `${REJECTION_TAG_PREFIX}${issue}-attempt-${attempt}`;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Given the set of existing local tags, returns the next attempt number for
|
|
42
|
+
* this issue. Counts only tags matching `rejected/issue-N-attempt-K` exactly —
|
|
43
|
+
* unrelated tags are ignored.
|
|
44
|
+
*/
|
|
45
|
+
export function nextAttemptNumber(issue, tags) {
|
|
46
|
+
const re = new RegExp(`^${REJECTION_TAG_PREFIX}${issue}-attempt-(\\d+)$`);
|
|
47
|
+
let max = 0;
|
|
48
|
+
for (const tag of tags) {
|
|
49
|
+
const m = re.exec(tag);
|
|
50
|
+
if (m) {
|
|
51
|
+
const n = Number(m[1]);
|
|
52
|
+
if (Number.isFinite(n) && n > max)
|
|
53
|
+
max = n;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return max + 1;
|
|
57
|
+
}
|
|
58
|
+
function severityBadge(s) {
|
|
59
|
+
if (s === 'high')
|
|
60
|
+
return 'high';
|
|
61
|
+
if (s === 'medium')
|
|
62
|
+
return 'medium';
|
|
63
|
+
return 'low';
|
|
64
|
+
}
|
|
65
|
+
function findingChecklistLine(f) {
|
|
66
|
+
const location = f.line > 0 ? `${f.file}:${f.line}` : f.file;
|
|
67
|
+
return `- [ ] **[${severityBadge(f.severity)}] ${f.principle}** — \`${location}\`: ${f.message} _(suggested: ${f.suggestedFix})_`;
|
|
68
|
+
}
|
|
69
|
+
function severityRank(s) {
|
|
70
|
+
if (s === 'high')
|
|
71
|
+
return 0;
|
|
72
|
+
if (s === 'medium')
|
|
73
|
+
return 1;
|
|
74
|
+
return 2;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Renders the body of the follow-up issue. The next implementer reads this as
|
|
78
|
+
* their starting point — it must contain enough context to restart without
|
|
79
|
+
* cold-starting from the original issue alone:
|
|
80
|
+
*
|
|
81
|
+
* - link back to the original
|
|
82
|
+
* - reviewer summary + findings as a checklist (each becomes a TODO)
|
|
83
|
+
* - what the prior attempt touched (files, commit titles)
|
|
84
|
+
* - pointer to the rejected tag for `git diff` of the prior attempt
|
|
85
|
+
*/
|
|
86
|
+
export function buildFollowUpBody(args) {
|
|
87
|
+
const { originalIssueNumber, rejectionTag, attempt, reviewerOutput, changedFiles, commitTitles } = args;
|
|
88
|
+
const orderedFindings = [...reviewerOutput.findings].sort((a, b) => severityRank(a.severity) - severityRank(b.severity));
|
|
89
|
+
const lines = [];
|
|
90
|
+
lines.push(`Follow-up to #${originalIssueNumber} — attempt ${attempt - 1} was rejected by the`);
|
|
91
|
+
lines.push(`sandcastle-drain reviewer. Address the findings below and try again.`);
|
|
92
|
+
lines.push('');
|
|
93
|
+
lines.push(`## Reviewer summary`);
|
|
94
|
+
lines.push('');
|
|
95
|
+
lines.push(reviewerOutput.summary);
|
|
96
|
+
lines.push('');
|
|
97
|
+
lines.push(`## Reviewer findings`);
|
|
98
|
+
lines.push('');
|
|
99
|
+
if (orderedFindings.length === 0) {
|
|
100
|
+
lines.push('_No structured findings — see the reviewer comment on the original issue._');
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
for (const f of orderedFindings) {
|
|
104
|
+
lines.push(findingChecklistLine(f));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
lines.push('');
|
|
108
|
+
lines.push(`## Prior attempt`);
|
|
109
|
+
lines.push('');
|
|
110
|
+
lines.push(`Commits from the rejected attempt are preserved at the \`${rejectionTag}\` tag.`);
|
|
111
|
+
lines.push(`Diff with \`git diff main..${rejectionTag}\` to see what the prior implementer tried.`);
|
|
112
|
+
lines.push('');
|
|
113
|
+
if (commitTitles.length > 0) {
|
|
114
|
+
lines.push('Commit titles:');
|
|
115
|
+
lines.push('');
|
|
116
|
+
for (const title of commitTitles) {
|
|
117
|
+
lines.push(`- ${title}`);
|
|
118
|
+
}
|
|
119
|
+
lines.push('');
|
|
120
|
+
}
|
|
121
|
+
if (changedFiles.length > 0) {
|
|
122
|
+
lines.push('Files touched:');
|
|
123
|
+
lines.push('');
|
|
124
|
+
for (const file of changedFiles) {
|
|
125
|
+
lines.push(`- \`${file}\``);
|
|
126
|
+
}
|
|
127
|
+
lines.push('');
|
|
128
|
+
}
|
|
129
|
+
lines.push(`## Original issue`);
|
|
130
|
+
lines.push('');
|
|
131
|
+
lines.push(`See #${originalIssueNumber} for the full requirements.`);
|
|
132
|
+
return lines.join('\n').trimEnd();
|
|
133
|
+
}
|
|
134
|
+
export function buildFollowUpTitle(originalNumber, originalTitle) {
|
|
135
|
+
return `[follow-up #${originalNumber}] ${originalTitle}`;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* The note left on the original issue. Tells the human reader: "this attempt
|
|
139
|
+
* was rejected, here's the verdict, here's the follow-up that picks it up."
|
|
140
|
+
*/
|
|
141
|
+
export function buildOriginalIssueRejectionComment(args) {
|
|
142
|
+
const lines = [];
|
|
143
|
+
lines.push(`**Attempt ${args.attempt} rejected.** The reviewer FAILed this run.`);
|
|
144
|
+
lines.push('');
|
|
145
|
+
lines.push(`> ${args.reviewerSummary}`);
|
|
146
|
+
lines.push('');
|
|
147
|
+
lines.push(`Rejected commits preserved at tag \`${args.rejectionTag}\`.`);
|
|
148
|
+
lines.push(`The working branch has been discarded.`);
|
|
149
|
+
lines.push('');
|
|
150
|
+
if (args.followUpIssueNumber !== undefined) {
|
|
151
|
+
const ref = args.followUpIssueUrl
|
|
152
|
+
? `#${args.followUpIssueNumber} (${args.followUpIssueUrl})`
|
|
153
|
+
: `#${args.followUpIssueNumber}`;
|
|
154
|
+
lines.push(`Follow-up filed as ${ref} with the \`priority\` label — it will run next.`);
|
|
155
|
+
lines.push('');
|
|
156
|
+
lines.push(`Closing this issue — the follow-up is the active work item.`);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
lines.push(`_(Follow-up issue creation failed — see wrapper logs.)_`);
|
|
160
|
+
}
|
|
161
|
+
return lines.join('\n');
|
|
162
|
+
}
|
|
163
|
+
// ---------------------------------------------------------------------------
|
|
164
|
+
// git plumbing
|
|
165
|
+
// ---------------------------------------------------------------------------
|
|
166
|
+
export async function listRejectionTagsForIssue(issue, cwd) {
|
|
167
|
+
const result = await execa('git', ['tag', '--list', `${REJECTION_TAG_PREFIX}${issue}-attempt-*`], { cwd, reject: false });
|
|
168
|
+
if (result.exitCode !== 0)
|
|
169
|
+
return [];
|
|
170
|
+
return result.stdout
|
|
171
|
+
.split(/\r?\n/)
|
|
172
|
+
.map((s) => s.trim())
|
|
173
|
+
.filter((s) => s.length > 0);
|
|
174
|
+
}
|
|
175
|
+
export async function createRejectionTag(args) {
|
|
176
|
+
// Annotated tag (-a) so the message — which records the rejection reason —
|
|
177
|
+
// survives in `git show <tag>`. Targets the branch tip explicitly so the tag
|
|
178
|
+
// is independent of HEAD.
|
|
179
|
+
const result = await execa('git', ['tag', '-a', args.tag, args.branch, '-m', args.message], {
|
|
180
|
+
cwd: args.cwd,
|
|
181
|
+
reject: false,
|
|
182
|
+
});
|
|
183
|
+
if (result.exitCode !== 0) {
|
|
184
|
+
throw new Error(`git tag failed: ${result.stderr || result.stdout}`);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=rejection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rejection.js","sourceRoot":"","sources":["../../src/orchestrator/rejection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
export type ReviewerVerdict = 'PASS' | 'FAIL';
|
|
2
|
+
export type FindingSeverity = 'high' | 'medium' | 'low';
|
|
3
|
+
export interface ReviewerFinding {
|
|
4
|
+
severity: FindingSeverity;
|
|
5
|
+
principle: string;
|
|
6
|
+
file: string;
|
|
7
|
+
line: number;
|
|
8
|
+
message: string;
|
|
9
|
+
suggestedFix: string;
|
|
10
|
+
}
|
|
11
|
+
export interface ReviewerOutput {
|
|
12
|
+
verdict: ReviewerVerdict;
|
|
13
|
+
findings: readonly ReviewerFinding[];
|
|
14
|
+
summary: string;
|
|
15
|
+
}
|
|
16
|
+
export type ReviewerParseResult = {
|
|
17
|
+
ok: true;
|
|
18
|
+
value: ReviewerOutput;
|
|
19
|
+
} | {
|
|
20
|
+
ok: false;
|
|
21
|
+
reason: string;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Extracts the last fenced ```json``` block from the reviewer's stdout and
|
|
25
|
+
* validates it against the expected shape. We take the *last* block to be
|
|
26
|
+
* resilient against the reviewer including an example JSON block earlier in
|
|
27
|
+
* its thinking — the final answer is always the last one.
|
|
28
|
+
*/
|
|
29
|
+
export declare function parseReviewerOutput(stdout: string): ReviewerParseResult;
|
|
30
|
+
/**
|
|
31
|
+
* Renders the reviewer's verdict as a GitHub issue comment body. The summary
|
|
32
|
+
* leads, then findings are listed by severity (high → medium → low) so the
|
|
33
|
+
* human sees the load-bearing items first.
|
|
34
|
+
*/
|
|
35
|
+
export declare function formatReviewerComment(output: ReviewerOutput): string;
|
|
36
|
+
/**
|
|
37
|
+
* Formats a fallback comment when the reviewer either didn't run, or ran but
|
|
38
|
+
* didn't emit parseable JSON. We still want the human to know the reviewer
|
|
39
|
+
* was invoked and that its output is in the log file.
|
|
40
|
+
*/
|
|
41
|
+
export declare function formatReviewerErrorComment(args: {
|
|
42
|
+
reason: string;
|
|
43
|
+
logFilePath?: string;
|
|
44
|
+
}): string;
|
|
45
|
+
export interface RunReviewerArgs {
|
|
46
|
+
imageName: string;
|
|
47
|
+
hostCredsPath: string;
|
|
48
|
+
sandboxCredsPath: string;
|
|
49
|
+
stagedHostPath: string;
|
|
50
|
+
ghToken: string;
|
|
51
|
+
issueNumber: number;
|
|
52
|
+
branch: string;
|
|
53
|
+
reviewerLogPath: string;
|
|
54
|
+
idleTimeoutSeconds: number;
|
|
55
|
+
wallClockTimeoutMs: number;
|
|
56
|
+
}
|
|
57
|
+
export interface ReviewerRunResult {
|
|
58
|
+
output: ReviewerOutput | undefined;
|
|
59
|
+
parseError: string | undefined;
|
|
60
|
+
stdout: string;
|
|
61
|
+
logFilePath: string | undefined;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Spawns the reviewer Sandcastle run. The branch already exists with the
|
|
65
|
+
* implementer's commits — the reviewer checks it out into a separate worktree,
|
|
66
|
+
* reads the diff, and emits its verdict. We do not pass a `branchStrategy` that
|
|
67
|
+
* would create a new branch; sandcastle reuses the existing one.
|
|
68
|
+
*
|
|
69
|
+
* On any failure (timeout, missing JSON, throw), we return a result with
|
|
70
|
+
* `output: undefined` and a non-empty `parseError`. The wrapper posts an error
|
|
71
|
+
* comment in that case rather than skipping the comment entirely — the absence
|
|
72
|
+
* of a reviewer verdict on an issue would itself be confusing.
|
|
73
|
+
*/
|
|
74
|
+
export declare function runReviewer(args: RunReviewerArgs): Promise<ReviewerRunResult>;
|
|
75
|
+
//# sourceMappingURL=reviewer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reviewer.d.ts","sourceRoot":"","sources":["../../src/orchestrator/reviewer.ts"],"names":[],"mappings":"AAuBA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,CAAC;AAC9C,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAExD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,eAAe,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,mBAAmB,GAC3B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,cAAc,CAAA;CAAE,GACnC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAoClC;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAgDvE;AAoBD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAqBpE;AAQD;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAUjG;AAMD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC;IACnC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAiFnF"}
|