whitesmith 0.0.1 → 0.0.2
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/dist/auto-work.d.ts +11 -0
- package/dist/auto-work.d.ts.map +1 -0
- package/dist/auto-work.js +22 -0
- package/dist/auto-work.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +99 -0
- package/dist/cli.js.map +1 -1
- package/dist/comment.d.ts +29 -0
- package/dist/comment.d.ts.map +1 -0
- package/dist/comment.js +390 -0
- package/dist/comment.js.map +1 -0
- package/dist/git.d.ts +12 -0
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +57 -14
- package/dist/git.js.map +1 -1
- package/dist/harnesses/pi.d.ts +2 -0
- package/dist/harnesses/pi.d.ts.map +1 -1
- package/dist/harnesses/pi.js +92 -6
- package/dist/harnesses/pi.js.map +1 -1
- package/dist/install-ci.d.ts +7 -0
- package/dist/install-ci.d.ts.map +1 -0
- package/dist/install-ci.js +760 -0
- package/dist/install-ci.js.map +1 -0
- package/dist/orchestrator.d.ts +24 -4
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +252 -67
- package/dist/orchestrator.js.map +1 -1
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +1 -0
- package/dist/prompts.js.map +1 -1
- package/dist/providers/github-ci.d.ts +16 -0
- package/dist/providers/github-ci.d.ts.map +1 -0
- package/dist/providers/github-ci.js +733 -0
- package/dist/providers/github-ci.js.map +1 -0
- package/dist/providers/github.d.ts +21 -0
- package/dist/providers/github.d.ts.map +1 -1
- package/dist/providers/github.js +88 -3
- package/dist/providers/github.js.map +1 -1
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/issue-provider.d.ts +26 -0
- package/dist/providers/issue-provider.d.ts.map +1 -1
- package/dist/task-manager.d.ts +4 -0
- package/dist/task-manager.d.ts.map +1 -1
- package/dist/task-manager.js +6 -0
- package/dist/task-manager.js.map +1 -1
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -1
- package/package.json +2 -1
- package/src/auto-work.ts +26 -0
- package/src/cli.ts +114 -0
- package/src/comment.ts +531 -0
- package/src/git.ts +58 -12
- package/src/harnesses/pi.ts +108 -6
- package/src/orchestrator.ts +287 -76
- package/src/prompts.ts +1 -0
- package/src/providers/github-ci.ts +840 -0
- package/src/providers/github.ts +118 -5
- package/src/providers/index.ts +1 -0
- package/src/providers/issue-provider.ts +25 -1
- package/src/task-manager.ts +7 -0
- package/src/types.ts +7 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { DevPulseConfig, Issue } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Check whether auto-work mode is enabled for a given issue.
|
|
4
|
+
*
|
|
5
|
+
* Returns true if any of these conditions are met:
|
|
6
|
+
* 1. `config.autoWork` is `true` (global config / CLI flag)
|
|
7
|
+
* 2. The issue has the `whitesmith:auto-work` label
|
|
8
|
+
* 3. The issue body contains the string `whitesmith:auto-work`
|
|
9
|
+
*/
|
|
10
|
+
export declare function isAutoWorkEnabled(config: DevPulseConfig, issue: Issue): boolean;
|
|
11
|
+
//# sourceMappingURL=auto-work.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-work.d.ts","sourceRoot":"","sources":["../src/auto-work.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,cAAc,EAAE,KAAK,EAAC,MAAM,YAAY,CAAC;AAGtD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAc/E"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { LABELS } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Check whether auto-work mode is enabled for a given issue.
|
|
4
|
+
*
|
|
5
|
+
* Returns true if any of these conditions are met:
|
|
6
|
+
* 1. `config.autoWork` is `true` (global config / CLI flag)
|
|
7
|
+
* 2. The issue has the `whitesmith:auto-work` label
|
|
8
|
+
* 3. The issue body contains the string `whitesmith:auto-work`
|
|
9
|
+
*/
|
|
10
|
+
export function isAutoWorkEnabled(config, issue) {
|
|
11
|
+
if (config.autoWork) {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
if (issue.labels.includes(LABELS.AUTO_WORK)) {
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
if (issue.body.includes('whitesmith:auto-work')) {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=auto-work.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-work.js","sourceRoot":"","sources":["../src/auto-work.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,YAAY,CAAC;AAElC;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAsB,EAAE,KAAY;IACrE,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC"}
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AA6BlC,wBAAgB,QAAQ,IAAI,OAAO,CA4PlC;AAED,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvE"}
|
package/dist/cli.js
CHANGED
|
@@ -7,6 +7,7 @@ import { Orchestrator } from './orchestrator.js';
|
|
|
7
7
|
import { GitHubProvider } from './providers/github.js';
|
|
8
8
|
import { PiHarness } from './harnesses/pi.js';
|
|
9
9
|
import { TaskManager } from './task-manager.js';
|
|
10
|
+
import { handlePRComment, handleIssueComment, isPullRequest } from './comment.js';
|
|
10
11
|
import pkg from '../package.json' with { type: 'json' };
|
|
11
12
|
const DEFAULT_AGENT_CMD = 'pi';
|
|
12
13
|
const DEFAULT_MAX_ITERATIONS = 10;
|
|
@@ -37,6 +38,8 @@ export function buildCli() {
|
|
|
37
38
|
.option('--log-file <path>', 'Log agent output to file')
|
|
38
39
|
.option('--no-push', 'Skip pushing and PR creation')
|
|
39
40
|
.option('--no-sleep', 'Skip sleep between iterations')
|
|
41
|
+
.option('--dry-run', 'Print what would be done without executing it')
|
|
42
|
+
.option('--auto-work', 'Enable auto-work mode (auto-approve task PRs)')
|
|
40
43
|
.action(async (workDir, opts) => {
|
|
41
44
|
const config = {
|
|
42
45
|
agentCmd: opts.agentCmd,
|
|
@@ -46,6 +49,8 @@ export function buildCli() {
|
|
|
46
49
|
workDir: path.resolve(workDir),
|
|
47
50
|
noPush: opts.push === false,
|
|
48
51
|
noSleep: opts.sleep === false,
|
|
52
|
+
dryRun: opts.dryRun ?? false,
|
|
53
|
+
autoWork: opts.autoWork ?? false,
|
|
49
54
|
logFile: opts.logFile,
|
|
50
55
|
repo: opts.repo,
|
|
51
56
|
};
|
|
@@ -106,6 +111,76 @@ export function buildCli() {
|
|
|
106
111
|
console.log('');
|
|
107
112
|
}
|
|
108
113
|
});
|
|
114
|
+
// --- comment ---
|
|
115
|
+
program
|
|
116
|
+
.command('comment')
|
|
117
|
+
.description('Handle a comment on an issue or PR (auto-detects which)')
|
|
118
|
+
.argument('[work_dir]', 'Working directory', '.')
|
|
119
|
+
.requiredOption('--number <n>', 'Issue or PR number')
|
|
120
|
+
.option('--body <text>', 'Comment body text (or use --body-file)')
|
|
121
|
+
.option('--body-file <path>', 'Read comment body from file instead of --body')
|
|
122
|
+
.option('--agent-cmd <cmd>', 'Agent harness command', DEFAULT_AGENT_CMD)
|
|
123
|
+
.requiredOption('--provider <name>', 'AI provider (e.g. anthropic, openai)')
|
|
124
|
+
.requiredOption('--model <id>', 'AI model ID (e.g. claude-opus-4-6)')
|
|
125
|
+
.option('--repo <owner/repo>', 'GitHub repo (auto-detected if omitted)')
|
|
126
|
+
.option('--log-file <path>', 'Log agent output to file')
|
|
127
|
+
.option('--post', 'Post the response as a GitHub comment (issue-only, otherwise prints to stdout)')
|
|
128
|
+
.action(async (workDir, opts) => {
|
|
129
|
+
const resolvedDir = path.resolve(workDir);
|
|
130
|
+
if (!fs.existsSync(resolvedDir)) {
|
|
131
|
+
console.error(`ERROR: Directory '${resolvedDir}' does not exist`);
|
|
132
|
+
process.exit(1);
|
|
133
|
+
}
|
|
134
|
+
// Read body from file if --body-file is provided, otherwise use --body
|
|
135
|
+
let commentBody;
|
|
136
|
+
if (opts.bodyFile) {
|
|
137
|
+
const bodyFilePath = path.resolve(opts.bodyFile);
|
|
138
|
+
if (!fs.existsSync(bodyFilePath)) {
|
|
139
|
+
console.error(`ERROR: Body file '${bodyFilePath}' does not exist`);
|
|
140
|
+
process.exit(1);
|
|
141
|
+
}
|
|
142
|
+
commentBody = fs.readFileSync(bodyFilePath, 'utf-8');
|
|
143
|
+
}
|
|
144
|
+
else if (opts.body) {
|
|
145
|
+
commentBody = opts.body;
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
console.error('ERROR: Either --body or --body-file is required');
|
|
149
|
+
process.exit(1);
|
|
150
|
+
}
|
|
151
|
+
process.chdir(resolvedDir);
|
|
152
|
+
const issues = new GitHubProvider(resolvedDir, opts.repo);
|
|
153
|
+
const agent = new PiHarness({
|
|
154
|
+
cmd: opts.agentCmd,
|
|
155
|
+
provider: opts.provider,
|
|
156
|
+
model: opts.model,
|
|
157
|
+
});
|
|
158
|
+
await agent.validate();
|
|
159
|
+
const number = parseInt(opts.number, 10);
|
|
160
|
+
const commentConfig = {
|
|
161
|
+
number,
|
|
162
|
+
commentBody,
|
|
163
|
+
workDir: resolvedDir,
|
|
164
|
+
repo: opts.repo,
|
|
165
|
+
logFile: opts.logFile,
|
|
166
|
+
post: opts.post === true,
|
|
167
|
+
};
|
|
168
|
+
try {
|
|
169
|
+
const isPR = await isPullRequest(issues, number);
|
|
170
|
+
if (isPR) {
|
|
171
|
+
console.log(`Detected PR #${number}`);
|
|
172
|
+
await handlePRComment(commentConfig, issues, agent);
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
console.log(`Detected issue #${number}`);
|
|
176
|
+
await handleIssueComment(commentConfig, issues, agent);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
console.error('ERROR:', error instanceof Error ? error.message : error);
|
|
181
|
+
process.exit(1);
|
|
182
|
+
}
|
|
183
|
+
});
|
|
109
184
|
// --- reconcile ---
|
|
110
185
|
program
|
|
111
186
|
.command('reconcile')
|
|
@@ -142,6 +217,30 @@ export function buildCli() {
|
|
|
142
217
|
}
|
|
143
218
|
console.log('Reconcile complete.');
|
|
144
219
|
});
|
|
220
|
+
// --- install-ci ---
|
|
221
|
+
program
|
|
222
|
+
.command('install-ci')
|
|
223
|
+
.description('Set up GitHub Actions workflows for whitesmith CI')
|
|
224
|
+
.argument('[work_dir]', 'Working directory (target repository)', '.')
|
|
225
|
+
.option('--auth-json', 'Use pi auth.json instead of models.json (requires PI_AUTH_JSON and GH_PAT secrets)')
|
|
226
|
+
.option('--repo <owner/repo>', 'GitHub repo (auto-detected if omitted)')
|
|
227
|
+
.option('--fake', 'Write workflows to .fake/workflows/ instead of .github/workflows/ (for testing)')
|
|
228
|
+
.action(async (workDir, opts) => {
|
|
229
|
+
const resolvedDir = path.resolve(workDir);
|
|
230
|
+
if (!fs.existsSync(resolvedDir)) {
|
|
231
|
+
console.error(`ERROR: Directory '${resolvedDir}' does not exist`);
|
|
232
|
+
process.exit(1);
|
|
233
|
+
}
|
|
234
|
+
const authMode = opts.authJson ? 'auth-json' : 'models-json';
|
|
235
|
+
try {
|
|
236
|
+
const provider = new GitHubProvider(resolvedDir, opts.repo);
|
|
237
|
+
await provider.installCI({ authMode, fake: opts.fake ?? false });
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
console.error('ERROR:', error instanceof Error ? error.message : error);
|
|
241
|
+
process.exit(1);
|
|
242
|
+
}
|
|
243
|
+
});
|
|
145
244
|
return program;
|
|
146
245
|
}
|
|
147
246
|
export async function main(args = process.argv) {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { AgentHarness } from './harnesses/agent-harness.js';
|
|
2
|
+
import type { IssueProvider } from './providers/issue-provider.js';
|
|
3
|
+
export interface CommentConfig {
|
|
4
|
+
/** Issue or PR number */
|
|
5
|
+
number: number;
|
|
6
|
+
/** The comment body text */
|
|
7
|
+
commentBody: string;
|
|
8
|
+
/** Working directory (the repo) */
|
|
9
|
+
workDir: string;
|
|
10
|
+
/** GitHub repo in "owner/repo" format (auto-detected if not set) */
|
|
11
|
+
repo?: string;
|
|
12
|
+
/** Log file path */
|
|
13
|
+
logFile?: string;
|
|
14
|
+
/** Whether to post the response as a GitHub comment (issue-only) */
|
|
15
|
+
post: boolean;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Handle a comment on a PR.
|
|
19
|
+
*/
|
|
20
|
+
export declare function handlePRComment(config: CommentConfig, issues: IssueProvider, agent: AgentHarness): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Handle a comment on an issue (not a PR).
|
|
23
|
+
*/
|
|
24
|
+
export declare function handleIssueComment(config: CommentConfig, issues: IssueProvider, agent: AgentHarness): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Detect whether a given number is a PR or an issue.
|
|
27
|
+
*/
|
|
28
|
+
export declare function isPullRequest(issues: IssueProvider, number: number): Promise<boolean>;
|
|
29
|
+
//# sourceMappingURL=comment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comment.d.ts","sourceRoot":"","sources":["../src/comment.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,+BAA+B,CAAC;AAKjE,MAAM,WAAW,aAAa;IAC7B,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,IAAI,EAAE,OAAO,CAAC;CACd;AA2BD;;GAEG;AACH,wBAAsB,eAAe,CACpC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CA6Ef;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACvC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAyDf;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG3F"}
|
package/dist/comment.js
ADDED
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import { GitManager } from './git.js';
|
|
4
|
+
import { TaskManager } from './task-manager.js';
|
|
5
|
+
import { LABELS } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Handle a comment on a PR.
|
|
8
|
+
*/
|
|
9
|
+
export async function handlePRComment(config, issues, agent) {
|
|
10
|
+
const git = new GitManager(config.workDir);
|
|
11
|
+
// Get PR details
|
|
12
|
+
const pr = await issues.getPR(config.number);
|
|
13
|
+
if (!pr) {
|
|
14
|
+
throw new Error(`Could not find PR #${config.number}`);
|
|
15
|
+
}
|
|
16
|
+
console.log(`PR #${config.number}: ${pr.title}`);
|
|
17
|
+
console.log(`Branch: ${pr.branch}`);
|
|
18
|
+
// Clean up temp files before checkout to avoid conflicts
|
|
19
|
+
git.cleanupTempFiles();
|
|
20
|
+
// Checkout PR branch
|
|
21
|
+
await git.fetch();
|
|
22
|
+
await git.checkout(pr.branch);
|
|
23
|
+
// Gather whitesmith context based on branch naming
|
|
24
|
+
const context = await gatherContextForPR(pr.branch, config.workDir, issues, config.number);
|
|
25
|
+
const responseFile = '.whitesmith-response.md';
|
|
26
|
+
const prompt = buildPRCommentPrompt({
|
|
27
|
+
title: pr.title,
|
|
28
|
+
url: pr.url,
|
|
29
|
+
number: config.number,
|
|
30
|
+
body: pr.body,
|
|
31
|
+
branch: pr.branch,
|
|
32
|
+
commentBody: config.commentBody,
|
|
33
|
+
context,
|
|
34
|
+
responseFile,
|
|
35
|
+
});
|
|
36
|
+
const { exitCode } = await agent.run({
|
|
37
|
+
prompt,
|
|
38
|
+
workDir: config.workDir,
|
|
39
|
+
logFile: config.logFile,
|
|
40
|
+
});
|
|
41
|
+
if (exitCode !== 0) {
|
|
42
|
+
throw new Error(`Agent failed with exit code ${exitCode}`);
|
|
43
|
+
}
|
|
44
|
+
// Read the response file before committing (so it doesn't get committed)
|
|
45
|
+
const responsePath = path.join(config.workDir, responseFile);
|
|
46
|
+
let response = null;
|
|
47
|
+
if (fs.existsSync(responsePath)) {
|
|
48
|
+
response = fs.readFileSync(responsePath, 'utf-8');
|
|
49
|
+
try {
|
|
50
|
+
fs.unlinkSync(responsePath);
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
// ignore
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Commit and push any changes
|
|
57
|
+
const committed = await git.commitAll(`fix(#${config.number}): address review comment`);
|
|
58
|
+
if (committed) {
|
|
59
|
+
await git.forcePush(pr.branch);
|
|
60
|
+
console.log(`Changes pushed to ${pr.branch}`);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
console.log('No changes to commit.');
|
|
64
|
+
}
|
|
65
|
+
// Post the response as a PR comment
|
|
66
|
+
if (response) {
|
|
67
|
+
if (config.post) {
|
|
68
|
+
await issues.comment(config.number, response);
|
|
69
|
+
console.log(`Response posted as comment on PR #${config.number}`);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
process.stdout.write(response);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
console.log('Agent did not produce a response file.');
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Handle a comment on an issue (not a PR).
|
|
81
|
+
*/
|
|
82
|
+
export async function handleIssueComment(config, issues, agent) {
|
|
83
|
+
const git = new GitManager(config.workDir);
|
|
84
|
+
const issue = await issues.getIssue(config.number);
|
|
85
|
+
console.log(`Issue #${config.number}: ${issue.title}`);
|
|
86
|
+
// Fetch so the agent can checkout related PR branches if needed
|
|
87
|
+
await git.fetch();
|
|
88
|
+
// Gather whitesmith context for this issue
|
|
89
|
+
const context = await gatherContextForIssue(config.number, config.workDir, issues);
|
|
90
|
+
const responseFile = '.whitesmith-response.md';
|
|
91
|
+
const prompt = buildIssueCommentPrompt({
|
|
92
|
+
title: issue.title,
|
|
93
|
+
url: issue.url,
|
|
94
|
+
number: config.number,
|
|
95
|
+
body: issue.body,
|
|
96
|
+
commentBody: config.commentBody,
|
|
97
|
+
responseFile,
|
|
98
|
+
context,
|
|
99
|
+
});
|
|
100
|
+
const { exitCode } = await agent.run({
|
|
101
|
+
prompt,
|
|
102
|
+
workDir: config.workDir,
|
|
103
|
+
logFile: config.logFile,
|
|
104
|
+
});
|
|
105
|
+
if (exitCode !== 0) {
|
|
106
|
+
throw new Error(`Agent failed with exit code ${exitCode}`);
|
|
107
|
+
}
|
|
108
|
+
// Read the response file
|
|
109
|
+
const responsePath = path.join(config.workDir, responseFile);
|
|
110
|
+
if (!fs.existsSync(responsePath)) {
|
|
111
|
+
console.error('Agent did not produce a response file.');
|
|
112
|
+
process.exitCode = 1;
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const response = fs.readFileSync(responsePath, 'utf-8');
|
|
116
|
+
// Clean up the response file
|
|
117
|
+
try {
|
|
118
|
+
fs.unlinkSync(responsePath);
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
// ignore
|
|
122
|
+
}
|
|
123
|
+
if (config.post) {
|
|
124
|
+
await issues.comment(config.number, response);
|
|
125
|
+
console.log(`Response posted as comment on issue #${config.number}`);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
// Print to stdout
|
|
129
|
+
process.stdout.write(response);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Detect whether a given number is a PR or an issue.
|
|
134
|
+
*/
|
|
135
|
+
export async function isPullRequest(issues, number) {
|
|
136
|
+
const pr = await issues.getPR(number);
|
|
137
|
+
return pr !== null;
|
|
138
|
+
}
|
|
139
|
+
// --- Context gathering ---
|
|
140
|
+
/**
|
|
141
|
+
* Parse a whitesmith branch name to extract the issue number.
|
|
142
|
+
*
|
|
143
|
+
* - `investigate/<N>` → issue N (task proposal PR)
|
|
144
|
+
* - `task/<N>-<seq>` → issue N (implementation PR)
|
|
145
|
+
*/
|
|
146
|
+
function parseWhitesmithBranch(branch) {
|
|
147
|
+
const investigateMatch = branch.match(/^investigate\/(\d+)$/);
|
|
148
|
+
if (investigateMatch) {
|
|
149
|
+
return { type: 'investigate', issueNumber: parseInt(investigateMatch[1], 10) };
|
|
150
|
+
}
|
|
151
|
+
const taskMatch = branch.match(/^task\/(\d+)-(\d+.*)$/);
|
|
152
|
+
if (taskMatch) {
|
|
153
|
+
return {
|
|
154
|
+
type: 'task',
|
|
155
|
+
issueNumber: parseInt(taskMatch[1], 10),
|
|
156
|
+
taskId: `${taskMatch[1]}-${taskMatch[2]}`,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Gather whitesmith context for a PR comment based on its branch name.
|
|
163
|
+
*/
|
|
164
|
+
async function gatherContextForPR(branch, workDir, issues, commentNumber) {
|
|
165
|
+
const context = { implementationPRs: [], tasks: [], number: commentNumber };
|
|
166
|
+
const parsed = parseWhitesmithBranch(branch);
|
|
167
|
+
if (!parsed)
|
|
168
|
+
return context;
|
|
169
|
+
// Fetch the parent issue
|
|
170
|
+
try {
|
|
171
|
+
const issue = await issues.getIssue(parsed.issueNumber);
|
|
172
|
+
context.parentIssue = {
|
|
173
|
+
number: issue.number,
|
|
174
|
+
title: issue.title,
|
|
175
|
+
body: issue.body,
|
|
176
|
+
url: issue.url,
|
|
177
|
+
labels: issue.labels,
|
|
178
|
+
};
|
|
179
|
+
context.stateLabel = issue.labels.find((l) => l.startsWith('whitesmith:'));
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
// Issue might not exist
|
|
183
|
+
}
|
|
184
|
+
// Find related PRs for this issue
|
|
185
|
+
await gatherRelatedPRs(parsed.issueNumber, issues, context);
|
|
186
|
+
// If tasks are on main, list them
|
|
187
|
+
const taskManager = new TaskManager(workDir);
|
|
188
|
+
context.tasks = taskManager.listTasks(parsed.issueNumber).map((t) => ({
|
|
189
|
+
id: t.id,
|
|
190
|
+
title: t.title,
|
|
191
|
+
filePath: t.filePath,
|
|
192
|
+
}));
|
|
193
|
+
return context;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Gather whitesmith context for an issue comment.
|
|
197
|
+
*/
|
|
198
|
+
async function gatherContextForIssue(issueNumber, workDir, issues) {
|
|
199
|
+
const context = { implementationPRs: [], tasks: [], number: issueNumber };
|
|
200
|
+
// Get the issue's labels for state
|
|
201
|
+
try {
|
|
202
|
+
const issue = await issues.getIssue(issueNumber);
|
|
203
|
+
context.stateLabel = issue.labels.find((l) => l.startsWith('whitesmith:'));
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
// ignore
|
|
207
|
+
}
|
|
208
|
+
// Find related PRs
|
|
209
|
+
await gatherRelatedPRs(issueNumber, issues, context);
|
|
210
|
+
// List tasks on main
|
|
211
|
+
const taskManager = new TaskManager(workDir);
|
|
212
|
+
context.tasks = taskManager.listTasks(issueNumber).map((t) => ({
|
|
213
|
+
id: t.id,
|
|
214
|
+
title: t.title,
|
|
215
|
+
filePath: t.filePath,
|
|
216
|
+
}));
|
|
217
|
+
return context;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Find task proposal and implementation PRs related to an issue.
|
|
221
|
+
*/
|
|
222
|
+
async function gatherRelatedPRs(issueNumber, issues, context) {
|
|
223
|
+
// Task proposal PR
|
|
224
|
+
const taskPR = await issues.getPRForBranch(`investigate/${issueNumber}`);
|
|
225
|
+
if (taskPR) {
|
|
226
|
+
context.taskPR = {
|
|
227
|
+
branch: `investigate/${issueNumber}`,
|
|
228
|
+
number: taskPR.number,
|
|
229
|
+
title: '',
|
|
230
|
+
state: taskPR.state,
|
|
231
|
+
url: taskPR.url,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
// Implementation PRs
|
|
235
|
+
const implPRs = await issues.listPRsByBranchPrefix(`task/${issueNumber}-`);
|
|
236
|
+
context.implementationPRs = implPRs;
|
|
237
|
+
}
|
|
238
|
+
// --- Prompt builders ---
|
|
239
|
+
function formatWhitesmithContext(context) {
|
|
240
|
+
const sections = [];
|
|
241
|
+
if (context.stateLabel) {
|
|
242
|
+
const stateDescriptions = {
|
|
243
|
+
[LABELS.INVESTIGATING]: 'The agent is currently investigating this issue and generating tasks.',
|
|
244
|
+
[LABELS.TASKS_PROPOSED]: 'Tasks have been proposed in a PR and are awaiting review.',
|
|
245
|
+
[LABELS.TASKS_ACCEPTED]: 'Tasks have been accepted and are being implemented.',
|
|
246
|
+
[LABELS.COMPLETED]: 'All tasks for this issue have been completed.',
|
|
247
|
+
};
|
|
248
|
+
const desc = stateDescriptions[context.stateLabel] || context.stateLabel;
|
|
249
|
+
sections.push(`### Whitesmith State\n\n**${context.stateLabel}**: ${desc}`);
|
|
250
|
+
}
|
|
251
|
+
if (context.parentIssue) {
|
|
252
|
+
sections.push(`### Parent Issue\n\n` +
|
|
253
|
+
`- **Title:** ${context.parentIssue.title}\n` +
|
|
254
|
+
`- **URL:** ${context.parentIssue.url}\n` +
|
|
255
|
+
`- **Number:** #${context.parentIssue.number}\n` +
|
|
256
|
+
`- **Labels:** ${context.parentIssue.labels.join(', ') || 'none'}\n\n` +
|
|
257
|
+
`#### Issue Description\n\n${context.parentIssue.body}`);
|
|
258
|
+
}
|
|
259
|
+
if (context.taskPR) {
|
|
260
|
+
sections.push(`### Task Proposal PR\n\n` +
|
|
261
|
+
`- **Branch:** \`${context.taskPR.branch}\`\n` +
|
|
262
|
+
`- **State:** ${context.taskPR.state}\n` +
|
|
263
|
+
`- **URL:** ${context.taskPR.url}`);
|
|
264
|
+
}
|
|
265
|
+
if (context.implementationPRs.length > 0) {
|
|
266
|
+
const prList = context.implementationPRs
|
|
267
|
+
.map((pr) => `- **#${pr.number}** ${pr.title} — \`${pr.branch}\` (${pr.state}) — ${pr.url}`)
|
|
268
|
+
.join('\n');
|
|
269
|
+
sections.push(`### Implementation PRs\n\n${prList}`);
|
|
270
|
+
}
|
|
271
|
+
if (context.tasks.length > 0) {
|
|
272
|
+
const taskList = context.tasks
|
|
273
|
+
.map((t) => `- **${t.id}**: ${t.title} (\`${t.filePath}\`)`)
|
|
274
|
+
.join('\n');
|
|
275
|
+
sections.push(`### Pending Tasks\n\n${taskList}`);
|
|
276
|
+
}
|
|
277
|
+
sections.push(`### Conversation History\n\n` +
|
|
278
|
+
`Previous comments are **not** included here to save context space. ` +
|
|
279
|
+
`If you need to read the conversation history, run:\n\n` +
|
|
280
|
+
`\`\`\`bash\ngh issue view ${context.number} --comments\n\`\`\``);
|
|
281
|
+
if (sections.length === 0) {
|
|
282
|
+
return '';
|
|
283
|
+
}
|
|
284
|
+
return (`\n## Whitesmith Context\n\n` +
|
|
285
|
+
`The following is the current whitesmith pipeline state and conversation history related to this issue/PR. ` +
|
|
286
|
+
`Use this context to provide informed responses.\n\n` +
|
|
287
|
+
sections.join('\n\n') +
|
|
288
|
+
'\n');
|
|
289
|
+
}
|
|
290
|
+
function buildPRCommentPrompt(args) {
|
|
291
|
+
return `# Agent Task from PR Comment
|
|
292
|
+
|
|
293
|
+
## Pull Request
|
|
294
|
+
|
|
295
|
+
- **Title:** ${args.title}
|
|
296
|
+
- **URL:** ${args.url}
|
|
297
|
+
- **PR Number:** #${args.number}
|
|
298
|
+
- **Branch:** ${args.branch}
|
|
299
|
+
|
|
300
|
+
### PR Description
|
|
301
|
+
|
|
302
|
+
${args.body}
|
|
303
|
+
${formatWhitesmithContext(args.context)}
|
|
304
|
+
## Triggering Comment
|
|
305
|
+
|
|
306
|
+
${args.commentBody}
|
|
307
|
+
|
|
308
|
+
## Instructions
|
|
309
|
+
|
|
310
|
+
You are responding to a comment on a pull request. The comment may be a question, feedback,
|
|
311
|
+
a request for changes, or a general discussion point.
|
|
312
|
+
|
|
313
|
+
1. You are already on the PR branch: \`${args.branch}\`
|
|
314
|
+
2. Read and understand the comment.
|
|
315
|
+
3. Review the whitesmith context above to understand the pipeline state.
|
|
316
|
+
4. You have full access to the repository code — read files, explore the codebase as needed.
|
|
317
|
+
5. If the comment requests code changes, make them. Do NOT commit — the caller will handle committing and pushing.
|
|
318
|
+
6. **Always** write a response in Markdown to the file \`${args.responseFile}\`. This will be posted as a reply comment on the PR.
|
|
319
|
+
- If you made changes, summarize what you changed and why.
|
|
320
|
+
- If the comment is a question or discussion, provide a thoughtful answer.
|
|
321
|
+
- Be thorough but concise.
|
|
322
|
+
|
|
323
|
+
Do NOT push. Do NOT create a new PR. Do NOT commit. The caller handles all of that.
|
|
324
|
+
`;
|
|
325
|
+
}
|
|
326
|
+
function buildIssueCommentPrompt(args) {
|
|
327
|
+
// Build the list of related PR branches the agent can work on
|
|
328
|
+
const relatedBranches = [];
|
|
329
|
+
if (args.context.taskPR && args.context.taskPR.state === 'open') {
|
|
330
|
+
relatedBranches.push(args.context.taskPR.branch);
|
|
331
|
+
}
|
|
332
|
+
for (const pr of args.context.implementationPRs) {
|
|
333
|
+
if (pr.state === 'open') {
|
|
334
|
+
relatedBranches.push(pr.branch);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
let workOnPRInstructions = '';
|
|
338
|
+
if (relatedBranches.length > 0) {
|
|
339
|
+
const branchList = relatedBranches.map((b) => ` - \`${b}\``).join('\n');
|
|
340
|
+
workOnPRInstructions = `
|
|
341
|
+
|
|
342
|
+
### Working on related PRs
|
|
343
|
+
|
|
344
|
+
If the comment asks you to make changes to a related PR (e.g. update the task plan,
|
|
345
|
+
fix something in an implementation), you **can and should** do so. The related open PR branches are:
|
|
346
|
+
|
|
347
|
+
${branchList}
|
|
348
|
+
|
|
349
|
+
To work on a PR branch:
|
|
350
|
+
|
|
351
|
+
1. \`git checkout <branch>\` (branches have been fetched already)
|
|
352
|
+
2. Make your changes.
|
|
353
|
+
3. Commit with a descriptive message.
|
|
354
|
+
4. \`git push origin <branch>\`
|
|
355
|
+
5. Still write \`${args.responseFile}\` summarizing what you did.
|
|
356
|
+
|
|
357
|
+
When done, \`git checkout main\` to return to the default branch.`;
|
|
358
|
+
}
|
|
359
|
+
return `# Agent Task from Issue Comment
|
|
360
|
+
|
|
361
|
+
## Issue
|
|
362
|
+
|
|
363
|
+
- **Title:** ${args.title}
|
|
364
|
+
- **URL:** ${args.url}
|
|
365
|
+
- **Issue Number:** #${args.number}
|
|
366
|
+
|
|
367
|
+
### Issue Description
|
|
368
|
+
|
|
369
|
+
${args.body}
|
|
370
|
+
${formatWhitesmithContext(args.context)}
|
|
371
|
+
## Triggering Comment
|
|
372
|
+
|
|
373
|
+
${args.commentBody}
|
|
374
|
+
|
|
375
|
+
## Instructions
|
|
376
|
+
|
|
377
|
+
You are responding to a comment on an issue.
|
|
378
|
+
|
|
379
|
+
1. Read and understand the issue description and the triggering comment.
|
|
380
|
+
2. Review the whitesmith context above to understand what work is already in progress.
|
|
381
|
+
3. You have full access to the repository code — read files, explore the codebase as needed.
|
|
382
|
+
4. Analyze the request and formulate a helpful response.
|
|
383
|
+
5. Write your response in Markdown to the file \`${args.responseFile}\`.
|
|
384
|
+
|
|
385
|
+
Your response will be posted as a comment on the issue.
|
|
386
|
+
Be thorough but concise. Include code snippets, file references, or suggestions as appropriate.
|
|
387
|
+
If there are pending PRs or tasks, reference them in your response when relevant.${workOnPRInstructions}
|
|
388
|
+
`;
|
|
389
|
+
}
|
|
390
|
+
//# sourceMappingURL=comment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comment.js","sourceRoot":"","sources":["../src/comment.ts"],"names":[],"mappings":"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"}
|