chief-clancy 0.3.5 → 0.3.7
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/README.md +3 -0
- package/dist/bundle/clancy-once.js +78 -0
- package/dist/scripts/once/once.d.ts.map +1 -1
- package/dist/scripts/once/once.js +33 -10
- package/dist/scripts/once/once.js.map +1 -1
- package/dist/scripts/shared/claude-cli/claude-cli.d.ts +14 -0
- package/dist/scripts/shared/claude-cli/claude-cli.d.ts.map +1 -1
- package/dist/scripts/shared/claude-cli/claude-cli.js +25 -0
- package/dist/scripts/shared/claude-cli/claude-cli.js.map +1 -1
- package/dist/scripts/shared/feasibility/feasibility.d.ts +30 -0
- package/dist/scripts/shared/feasibility/feasibility.d.ts.map +1 -0
- package/dist/scripts/shared/feasibility/feasibility.js +68 -0
- package/dist/scripts/shared/feasibility/feasibility.js.map +1 -0
- package/package.json +1 -1
- package/src/workflows/once.md +49 -9
package/README.md
CHANGED
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/chief-clancy) [](./LICENSE) [](docs/TESTING.md) [](https://github.com/Pushedskydiver/clancy/stargazers)
|
|
6
6
|
|
|
7
|
+
> [!WARNING]
|
|
8
|
+
> Clancy is in early development. Expect bugs, breaking changes, and rough edges. If you hit an issue, please [open a bug report](https://github.com/Pushedskydiver/clancy/issues/new).
|
|
9
|
+
|
|
7
10
|
```bash
|
|
8
11
|
npx chief-clancy
|
|
9
12
|
```
|
|
@@ -13326,6 +13326,21 @@ function computeTargetBranch(provider, baseBranch, parent) {
|
|
|
13326
13326
|
|
|
13327
13327
|
// dist/scripts/shared/claude-cli/claude-cli.js
|
|
13328
13328
|
import { spawnSync } from "node:child_process";
|
|
13329
|
+
function invokeClaudePrint(prompt, model) {
|
|
13330
|
+
const args = ["-p", "--dangerously-skip-permissions"];
|
|
13331
|
+
if (model) {
|
|
13332
|
+
args.push("--model", model);
|
|
13333
|
+
}
|
|
13334
|
+
const result = spawnSync("claude", args, {
|
|
13335
|
+
input: prompt,
|
|
13336
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
13337
|
+
encoding: "utf8"
|
|
13338
|
+
});
|
|
13339
|
+
return {
|
|
13340
|
+
stdout: result.stdout ?? "",
|
|
13341
|
+
ok: result.status === 0 && !result.error
|
|
13342
|
+
};
|
|
13343
|
+
}
|
|
13329
13344
|
function invokeClaudeSession(prompt, model) {
|
|
13330
13345
|
const args = ["--dangerously-skip-permissions"];
|
|
13331
13346
|
if (model) {
|
|
@@ -13396,6 +13411,49 @@ function detectBoard(raw) {
|
|
|
13396
13411
|
return "\u2717 No board detected \u2014 set Jira, GitHub, or Linear credentials in .clancy/.env";
|
|
13397
13412
|
}
|
|
13398
13413
|
|
|
13414
|
+
// dist/scripts/shared/feasibility/feasibility.js
|
|
13415
|
+
function buildFeasibilityPrompt(ticket) {
|
|
13416
|
+
return [
|
|
13417
|
+
"You are evaluating whether a ticket can be implemented as pure code changes in a repository.",
|
|
13418
|
+
"",
|
|
13419
|
+
`Ticket: [${ticket.key}] ${ticket.title}`,
|
|
13420
|
+
"Description:",
|
|
13421
|
+
ticket.description,
|
|
13422
|
+
"",
|
|
13423
|
+
"Can this ticket be completed entirely through code changes committed to a git repository?",
|
|
13424
|
+
"",
|
|
13425
|
+
"Answer INFEASIBLE if the ticket requires ANY of:",
|
|
13426
|
+
"- Manual testing or configuration in external tools or admin panels",
|
|
13427
|
+
"- Access to external services, APIs, or platforms not available in the codebase",
|
|
13428
|
+
"- Physical, hardware, or infrastructure changes",
|
|
13429
|
+
"- Design assets that do not yet exist",
|
|
13430
|
+
"- Deployment or infrastructure changes outside the repository",
|
|
13431
|
+
"- Human judgment calls that require stakeholder input",
|
|
13432
|
+
"",
|
|
13433
|
+
"Answer with exactly one line in this format:",
|
|
13434
|
+
"FEASIBLE",
|
|
13435
|
+
"or",
|
|
13436
|
+
"INFEASIBLE: one-line reason",
|
|
13437
|
+
"",
|
|
13438
|
+
"Do not include any other text."
|
|
13439
|
+
].join("\n");
|
|
13440
|
+
}
|
|
13441
|
+
function parseFeasibilityResponse(stdout) {
|
|
13442
|
+
const line = stdout.trim().split("\n").pop()?.trim() ?? "";
|
|
13443
|
+
if (/^INFEASIBLE/i.test(line)) {
|
|
13444
|
+
const reason = line.replace(/^INFEASIBLE:?\s*/i, "").trim() || void 0;
|
|
13445
|
+
return { feasible: false, reason };
|
|
13446
|
+
}
|
|
13447
|
+
return { feasible: true };
|
|
13448
|
+
}
|
|
13449
|
+
function checkFeasibility(ticket, model) {
|
|
13450
|
+
const prompt = buildFeasibilityPrompt(ticket);
|
|
13451
|
+
const { stdout, ok } = invokeClaudePrint(prompt, model);
|
|
13452
|
+
if (!ok)
|
|
13453
|
+
return { feasible: true };
|
|
13454
|
+
return parseFeasibilityResponse(stdout);
|
|
13455
|
+
}
|
|
13456
|
+
|
|
13399
13457
|
// dist/scripts/shared/git-ops/git-ops.js
|
|
13400
13458
|
import { execFileSync } from "node:child_process";
|
|
13401
13459
|
function git(...args) {
|
|
@@ -13764,6 +13822,7 @@ async function transitionToStatus(config2, ticket, statusName) {
|
|
|
13764
13822
|
}
|
|
13765
13823
|
async function run(argv) {
|
|
13766
13824
|
const dryRun = argv.includes("--dry-run");
|
|
13825
|
+
const skipFeasibility = argv.includes("--skip-feasibility");
|
|
13767
13826
|
const startTime = Date.now();
|
|
13768
13827
|
console.log(dim("\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510"));
|
|
13769
13828
|
console.log(dim("\u2502") + bold(" \u{1F916} Clancy \u2014 once mode ") + dim("\u2502"));
|
|
@@ -13816,6 +13875,9 @@ async function run(argv) {
|
|
|
13816
13875
|
console.log(` Blockers: ${ticket.blockers}`);
|
|
13817
13876
|
}
|
|
13818
13877
|
console.log(` Target branch: ${ticketBranch} \u2192 ${targetBranch}`);
|
|
13878
|
+
if (ticket.description) {
|
|
13879
|
+
console.log(` Description: ${ticket.description}`);
|
|
13880
|
+
}
|
|
13819
13881
|
console.log(yellow("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"));
|
|
13820
13882
|
console.log(dim(" No changes made. Remove --dry-run to run for real."));
|
|
13821
13883
|
return;
|
|
@@ -13828,6 +13890,22 @@ async function run(argv) {
|
|
|
13828
13890
|
console.log(yellow(` Blockers: ${ticket.blockers}`));
|
|
13829
13891
|
}
|
|
13830
13892
|
console.log("");
|
|
13893
|
+
if (!skipFeasibility) {
|
|
13894
|
+
console.log(dim(" Checking feasibility..."));
|
|
13895
|
+
const feasibility = checkFeasibility({
|
|
13896
|
+
key: ticket.key,
|
|
13897
|
+
title: ticket.title,
|
|
13898
|
+
description: ticket.description
|
|
13899
|
+
}, config2.env.CLANCY_MODEL);
|
|
13900
|
+
if (!feasibility.feasible) {
|
|
13901
|
+
const reason = feasibility.reason ?? "not implementable as code changes";
|
|
13902
|
+
console.log(yellow(`\u23ED\uFE0F Ticket skipped [${ticket.key}]: ${reason}`));
|
|
13903
|
+
appendProgress(process.cwd(), ticket.key, ticket.title, "SKIPPED");
|
|
13904
|
+
return;
|
|
13905
|
+
}
|
|
13906
|
+
console.log(green(" \u2713 Feasibility check passed"));
|
|
13907
|
+
}
|
|
13908
|
+
console.log("");
|
|
13831
13909
|
originalBranch = currentBranch();
|
|
13832
13910
|
ensureBranch(targetBranch, baseBranch);
|
|
13833
13911
|
checkout(targetBranch);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"once.d.ts","sourceRoot":"","sources":["../../../src/scripts/once/once.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"once.d.ts","sourceRoot":"","sources":["../../../src/scripts/once/once.ts"],"names":[],"mappings":"AAwPA;;;;;;;;;GASG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuPvD"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Unified once orchestrator — replaces all three `clancy-once-*.sh` scripts.
|
|
3
3
|
*
|
|
4
4
|
* Full lifecycle: preflight → detect board → fetch ticket → compute branches →
|
|
5
|
-
* [dry-run gate] →
|
|
6
|
-
* squash merge → transition Done → log → notify.
|
|
5
|
+
* [dry-run gate] → feasibility check → create branch → transition In Progress →
|
|
6
|
+
* invoke Claude → squash merge → transition Done → log → notify.
|
|
7
7
|
*
|
|
8
8
|
* All errors exit with code 0 (not 1). This is intentional — the AFK runner
|
|
9
9
|
* detects stop conditions by parsing stdout, not exit codes.
|
|
@@ -16,6 +16,7 @@ import { fetchIssue as fetchLinearIssue, isValidTeamId, pingLinear, transitionIs
|
|
|
16
16
|
import { computeTargetBranch, computeTicketBranch, } from '../../scripts/shared/branch/branch.js';
|
|
17
17
|
import { invokeClaudeSession } from '../../scripts/shared/claude-cli/claude-cli.js';
|
|
18
18
|
import { detectBoard } from '../../scripts/shared/env-schema/env-schema.js';
|
|
19
|
+
import { checkFeasibility } from '../../scripts/shared/feasibility/feasibility.js';
|
|
19
20
|
import { checkout, currentBranch, deleteBranch, ensureBranch, squashMerge, } from '../../scripts/shared/git-ops/git-ops.js';
|
|
20
21
|
import { sendNotification } from '../../scripts/shared/notify/notify.js';
|
|
21
22
|
import { runPreflight } from '../../scripts/shared/preflight/preflight.js';
|
|
@@ -169,6 +170,7 @@ async function transitionToStatus(config, ticket, statusName) {
|
|
|
169
170
|
*/
|
|
170
171
|
export async function run(argv) {
|
|
171
172
|
const dryRun = argv.includes('--dry-run');
|
|
173
|
+
const skipFeasibility = argv.includes('--skip-feasibility');
|
|
172
174
|
const startTime = Date.now();
|
|
173
175
|
console.log(dim('┌──────────────────────────────────────┐'));
|
|
174
176
|
console.log(dim('│') + bold(' 🤖 Clancy — once mode ') + dim('│'));
|
|
@@ -228,6 +230,9 @@ export async function run(argv) {
|
|
|
228
230
|
console.log(` Blockers: ${ticket.blockers}`);
|
|
229
231
|
}
|
|
230
232
|
console.log(` Target branch: ${ticketBranch} → ${targetBranch}`);
|
|
233
|
+
if (ticket.description) {
|
|
234
|
+
console.log(` Description: ${ticket.description}`);
|
|
235
|
+
}
|
|
231
236
|
console.log(yellow('─────────────────────────────────────────────────'));
|
|
232
237
|
console.log(dim(' No changes made. Remove --dry-run to run for real.'));
|
|
233
238
|
return;
|
|
@@ -241,17 +246,35 @@ export async function run(argv) {
|
|
|
241
246
|
console.log(yellow(` Blockers: ${ticket.blockers}`));
|
|
242
247
|
}
|
|
243
248
|
console.log('');
|
|
244
|
-
// 9.
|
|
249
|
+
// 9. Feasibility check (skipped when --skip-feasibility is passed;
|
|
250
|
+
// the workflow handles feasibility evaluation directly in that case)
|
|
251
|
+
if (!skipFeasibility) {
|
|
252
|
+
console.log(dim(' Checking feasibility...'));
|
|
253
|
+
const feasibility = checkFeasibility({
|
|
254
|
+
key: ticket.key,
|
|
255
|
+
title: ticket.title,
|
|
256
|
+
description: ticket.description,
|
|
257
|
+
}, config.env.CLANCY_MODEL);
|
|
258
|
+
if (!feasibility.feasible) {
|
|
259
|
+
const reason = feasibility.reason ?? 'not implementable as code changes';
|
|
260
|
+
console.log(yellow(`⏭️ Ticket skipped [${ticket.key}]: ${reason}`));
|
|
261
|
+
appendProgress(process.cwd(), ticket.key, ticket.title, 'SKIPPED');
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
console.log(green(' ✓ Feasibility check passed'));
|
|
265
|
+
}
|
|
266
|
+
console.log('');
|
|
267
|
+
// 10. Git: set up branches
|
|
245
268
|
originalBranch = currentBranch();
|
|
246
269
|
ensureBranch(targetBranch, baseBranch);
|
|
247
270
|
checkout(targetBranch);
|
|
248
271
|
checkout(ticketBranch, true);
|
|
249
|
-
//
|
|
272
|
+
// 11. Transition to In Progress (best-effort)
|
|
250
273
|
const statusInProgress = config.env.CLANCY_STATUS_IN_PROGRESS;
|
|
251
274
|
if (statusInProgress) {
|
|
252
275
|
await transitionToStatus(config, ticket, statusInProgress);
|
|
253
276
|
}
|
|
254
|
-
//
|
|
277
|
+
// 12. Build prompt and invoke Claude
|
|
255
278
|
const prompt = buildPrompt({
|
|
256
279
|
provider: config.provider,
|
|
257
280
|
key: ticket.key,
|
|
@@ -265,16 +288,16 @@ export async function run(argv) {
|
|
|
265
288
|
console.log(yellow('⚠ Claude session exited with an error. Skipping merge.'));
|
|
266
289
|
return;
|
|
267
290
|
}
|
|
268
|
-
//
|
|
291
|
+
// 13. Squash merge
|
|
269
292
|
checkout(targetBranch);
|
|
270
293
|
const commitMsg = `feat(${ticket.key}): ${ticket.title}`;
|
|
271
294
|
const hadChanges = squashMerge(ticketBranch, commitMsg);
|
|
272
295
|
if (!hadChanges) {
|
|
273
296
|
console.log(yellow('⚠ No changes staged after squash merge. Claude may not have committed any work.'));
|
|
274
297
|
}
|
|
275
|
-
//
|
|
298
|
+
// 14. Delete feature branch
|
|
276
299
|
deleteBranch(ticketBranch);
|
|
277
|
-
//
|
|
300
|
+
// 15. Transition to Done / close issue (best-effort)
|
|
278
301
|
const statusDone = config.env.CLANCY_STATUS_DONE;
|
|
279
302
|
if (config.provider === 'github') {
|
|
280
303
|
const issueNumber = parseInt(ticket.key.replace('#', ''), 10);
|
|
@@ -291,13 +314,13 @@ export async function run(argv) {
|
|
|
291
314
|
else if (statusDone) {
|
|
292
315
|
await transitionToStatus(config, ticket, statusDone);
|
|
293
316
|
}
|
|
294
|
-
//
|
|
317
|
+
// 16. Log progress
|
|
295
318
|
appendProgress(process.cwd(), ticket.key, ticket.title, 'DONE');
|
|
296
319
|
const elapsed = formatDuration(Date.now() - startTime);
|
|
297
320
|
console.log('');
|
|
298
321
|
console.log(green(`🏁 ${ticket.key} complete`) + dim(` (${elapsed})`));
|
|
299
322
|
console.log(dim(' "Bake \'em away, toys."'));
|
|
300
|
-
//
|
|
323
|
+
// 17. Send notification (best-effort)
|
|
301
324
|
const webhook = config.env.CLANCY_NOTIFY_WEBHOOK;
|
|
302
325
|
if (webhook) {
|
|
303
326
|
await sendNotification(webhook, `✓ Clancy completed [${ticket.key}] ${ticket.title}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"once.js","sourceRoot":"","sources":["../../../src/scripts/once/once.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"once.js","sourceRoot":"","sources":["../../../src/scripts/once/once.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Invoke Claude in print mode and capture the response.
|
|
3
|
+
*
|
|
4
|
+
* Uses `claude -p` for a single-prompt, non-interactive invocation.
|
|
5
|
+
* Stdout is captured (not streamed) so the caller can parse it.
|
|
6
|
+
*
|
|
7
|
+
* @param prompt - The prompt to send.
|
|
8
|
+
* @param model - Optional model override.
|
|
9
|
+
* @returns The captured stdout and whether the process succeeded.
|
|
10
|
+
*/
|
|
11
|
+
export declare function invokeClaudePrint(prompt: string, model?: string): {
|
|
12
|
+
stdout: string;
|
|
13
|
+
ok: boolean;
|
|
14
|
+
};
|
|
1
15
|
/**
|
|
2
16
|
* Invoke a Claude Code session with the given prompt.
|
|
3
17
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-cli.d.ts","sourceRoot":"","sources":["../../../../src/scripts/shared/claude-cli/claude-cli.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAc3E"}
|
|
1
|
+
{"version":3,"file":"claude-cli.d.ts","sourceRoot":"","sources":["../../../../src/scripts/shared/claude-cli/claude-cli.ts"],"names":[],"mappings":"AAQA;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,OAAO,CAAA;CAAE,CAiBjC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAc3E"}
|
|
@@ -5,6 +5,31 @@
|
|
|
5
5
|
* to stdin. Output streams live to the user's terminal.
|
|
6
6
|
*/
|
|
7
7
|
import { spawnSync } from 'node:child_process';
|
|
8
|
+
/**
|
|
9
|
+
* Invoke Claude in print mode and capture the response.
|
|
10
|
+
*
|
|
11
|
+
* Uses `claude -p` for a single-prompt, non-interactive invocation.
|
|
12
|
+
* Stdout is captured (not streamed) so the caller can parse it.
|
|
13
|
+
*
|
|
14
|
+
* @param prompt - The prompt to send.
|
|
15
|
+
* @param model - Optional model override.
|
|
16
|
+
* @returns The captured stdout and whether the process succeeded.
|
|
17
|
+
*/
|
|
18
|
+
export function invokeClaudePrint(prompt, model) {
|
|
19
|
+
const args = ['-p', '--dangerously-skip-permissions'];
|
|
20
|
+
if (model) {
|
|
21
|
+
args.push('--model', model);
|
|
22
|
+
}
|
|
23
|
+
const result = spawnSync('claude', args, {
|
|
24
|
+
input: prompt,
|
|
25
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
26
|
+
encoding: 'utf8',
|
|
27
|
+
});
|
|
28
|
+
return {
|
|
29
|
+
stdout: result.stdout ?? '',
|
|
30
|
+
ok: result.status === 0 && !result.error,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
8
33
|
/**
|
|
9
34
|
* Invoke a Claude Code session with the given prompt.
|
|
10
35
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-cli.js","sourceRoot":"","sources":["../../../../src/scripts/shared/claude-cli/claude-cli.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,KAAc;IAChE,MAAM,IAAI,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAEhD,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE;QACvC,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC;QACrC,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAC9C,CAAC"}
|
|
1
|
+
{"version":3,"file":"claude-cli.js","sourceRoot":"","sources":["../../../../src/scripts/shared/claude-cli/claude-cli.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAc,EACd,KAAc;IAEd,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,gCAAgC,CAAC,CAAC;IAEtD,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE;QACvC,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QAC/B,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAC;IAEH,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,EAAE,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;KACzC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,KAAc;IAChE,MAAM,IAAI,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAEhD,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE;QACvC,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC;QACrC,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export type FeasibilityResult = {
|
|
2
|
+
feasible: boolean;
|
|
3
|
+
reason?: string;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Build the feasibility evaluation prompt.
|
|
7
|
+
*/
|
|
8
|
+
export declare function buildFeasibilityPrompt(ticket: {
|
|
9
|
+
key: string;
|
|
10
|
+
title: string;
|
|
11
|
+
description: string;
|
|
12
|
+
}): string;
|
|
13
|
+
/**
|
|
14
|
+
* Parse the raw Claude output into a feasibility result.
|
|
15
|
+
*
|
|
16
|
+
* Fails open — malformed or empty output is treated as feasible.
|
|
17
|
+
*/
|
|
18
|
+
export declare function parseFeasibilityResponse(stdout: string): FeasibilityResult;
|
|
19
|
+
/**
|
|
20
|
+
* Run a feasibility check for a ticket.
|
|
21
|
+
*
|
|
22
|
+
* @returns A result indicating whether the ticket is feasible and an
|
|
23
|
+
* optional reason if not.
|
|
24
|
+
*/
|
|
25
|
+
export declare function checkFeasibility(ticket: {
|
|
26
|
+
key: string;
|
|
27
|
+
title: string;
|
|
28
|
+
description: string;
|
|
29
|
+
}, model?: string): FeasibilityResult;
|
|
30
|
+
//# sourceMappingURL=feasibility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feasibility.d.ts","sourceRoot":"","sources":["../../../../src/scripts/shared/feasibility/feasibility.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,CAyBT;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAU1E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EAC3D,KAAK,CAAC,EAAE,MAAM,GACb,iBAAiB,CAQnB"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight feasibility check — evaluates whether a ticket can be
|
|
3
|
+
* implemented as pure code changes before creating branches or
|
|
4
|
+
* transitioning board status.
|
|
5
|
+
*
|
|
6
|
+
* Uses `claude -p` (print mode) for a fast, single-prompt evaluation.
|
|
7
|
+
* Fails open: if Claude is unavailable or output is malformed the
|
|
8
|
+
* ticket is assumed feasible so work is never silently blocked.
|
|
9
|
+
*/
|
|
10
|
+
import { invokeClaudePrint } from '../../../scripts/shared/claude-cli/claude-cli.js';
|
|
11
|
+
/**
|
|
12
|
+
* Build the feasibility evaluation prompt.
|
|
13
|
+
*/
|
|
14
|
+
export function buildFeasibilityPrompt(ticket) {
|
|
15
|
+
return [
|
|
16
|
+
'You are evaluating whether a ticket can be implemented as pure code changes in a repository.',
|
|
17
|
+
'',
|
|
18
|
+
`Ticket: [${ticket.key}] ${ticket.title}`,
|
|
19
|
+
'Description:',
|
|
20
|
+
ticket.description,
|
|
21
|
+
'',
|
|
22
|
+
'Can this ticket be completed entirely through code changes committed to a git repository?',
|
|
23
|
+
'',
|
|
24
|
+
'Answer INFEASIBLE if the ticket requires ANY of:',
|
|
25
|
+
'- Manual testing or configuration in external tools or admin panels',
|
|
26
|
+
'- Access to external services, APIs, or platforms not available in the codebase',
|
|
27
|
+
'- Physical, hardware, or infrastructure changes',
|
|
28
|
+
'- Design assets that do not yet exist',
|
|
29
|
+
'- Deployment or infrastructure changes outside the repository',
|
|
30
|
+
'- Human judgment calls that require stakeholder input',
|
|
31
|
+
'',
|
|
32
|
+
'Answer with exactly one line in this format:',
|
|
33
|
+
'FEASIBLE',
|
|
34
|
+
'or',
|
|
35
|
+
'INFEASIBLE: one-line reason',
|
|
36
|
+
'',
|
|
37
|
+
'Do not include any other text.',
|
|
38
|
+
].join('\n');
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Parse the raw Claude output into a feasibility result.
|
|
42
|
+
*
|
|
43
|
+
* Fails open — malformed or empty output is treated as feasible.
|
|
44
|
+
*/
|
|
45
|
+
export function parseFeasibilityResponse(stdout) {
|
|
46
|
+
const line = stdout.trim().split('\n').pop()?.trim() ?? '';
|
|
47
|
+
if (/^INFEASIBLE/i.test(line)) {
|
|
48
|
+
const reason = line.replace(/^INFEASIBLE:?\s*/i, '').trim() || undefined;
|
|
49
|
+
return { feasible: false, reason };
|
|
50
|
+
}
|
|
51
|
+
// Fail open — FEASIBLE, empty, or malformed output all pass
|
|
52
|
+
return { feasible: true };
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Run a feasibility check for a ticket.
|
|
56
|
+
*
|
|
57
|
+
* @returns A result indicating whether the ticket is feasible and an
|
|
58
|
+
* optional reason if not.
|
|
59
|
+
*/
|
|
60
|
+
export function checkFeasibility(ticket, model) {
|
|
61
|
+
const prompt = buildFeasibilityPrompt(ticket);
|
|
62
|
+
const { stdout, ok } = invokeClaudePrint(prompt, model);
|
|
63
|
+
// Fail open — if Claude failed to run, assume feasible
|
|
64
|
+
if (!ok)
|
|
65
|
+
return { feasible: true };
|
|
66
|
+
return parseFeasibilityResponse(stdout);
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=feasibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feasibility.js","sourceRoot":"","sources":["../../../../src/scripts/shared/feasibility/feasibility.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAO9E;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAItC;IACC,OAAO;QACL,8FAA8F;QAC9F,EAAE;QACF,YAAY,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,KAAK,EAAE;QACzC,cAAc;QACd,MAAM,CAAC,WAAW;QAClB,EAAE;QACF,2FAA2F;QAC3F,EAAE;QACF,kDAAkD;QAClD,qEAAqE;QACrE,iFAAiF;QACjF,iDAAiD;QACjD,uCAAuC;QACvC,+DAA+D;QAC/D,uDAAuD;QACvD,EAAE;QACF,8CAA8C;QAC9C,UAAU;QACV,IAAI;QACJ,6BAA6B;QAC7B,EAAE;QACF,gCAAgC;KACjC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAc;IACrD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAE3D,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;QACzE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACrC,CAAC;IAED,4DAA4D;IAC5D,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAA2D,EAC3D,KAAc;IAEd,MAAM,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAExD,uDAAuD;IACvD,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAEnC,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC"}
|
package/package.json
CHANGED
package/src/workflows/once.md
CHANGED
|
@@ -47,49 +47,89 @@ Pick up exactly one ticket from the Kanban board, implement it, commit, squash-m
|
|
|
47
47
|
|
|
48
48
|
Check if the user passed `--dry-run` as an argument to the slash command.
|
|
49
49
|
|
|
50
|
-
**
|
|
50
|
+
**With `--dry-run`:**
|
|
51
51
|
|
|
52
52
|
Display:
|
|
53
53
|
```
|
|
54
|
-
🚨 Clancy —
|
|
54
|
+
🚨 Clancy — Dry Run
|
|
55
55
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
56
56
|
|
|
57
|
-
"
|
|
57
|
+
"Just a routine patrol." — Running in dry-run mode, no changes will be made.
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
Execute:
|
|
61
61
|
```bash
|
|
62
|
-
node .clancy/clancy-once.js
|
|
62
|
+
node .clancy/clancy-once.js --dry-run
|
|
63
63
|
```
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
Stream output directly — do not buffer or summarise. Stop here (do not continue to Step 3).
|
|
66
|
+
|
|
67
|
+
**Without `--dry-run`:**
|
|
66
68
|
|
|
67
69
|
Display:
|
|
68
70
|
```
|
|
69
|
-
🚨 Clancy —
|
|
71
|
+
🚨 Clancy — Once
|
|
70
72
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
71
73
|
|
|
72
|
-
"
|
|
74
|
+
"I'm on the case." — Running for one ticket.
|
|
73
75
|
```
|
|
74
76
|
|
|
75
|
-
|
|
77
|
+
### 2a. Fetch ticket details
|
|
78
|
+
|
|
79
|
+
Execute a dry-run first to retrieve ticket details:
|
|
76
80
|
```bash
|
|
77
81
|
node .clancy/clancy-once.js --dry-run
|
|
78
82
|
```
|
|
79
83
|
|
|
84
|
+
Stream output directly. If the output contains `No tickets found` or a preflight error (`✗`), stop — there is nothing to do.
|
|
85
|
+
|
|
86
|
+
### 2b. Feasibility evaluation
|
|
87
|
+
|
|
88
|
+
Read the ticket title and description from the dry-run output. Evaluate whether this ticket can be implemented entirely as code changes committed to a git repository.
|
|
89
|
+
|
|
90
|
+
The ticket is **infeasible** if it requires ANY of:
|
|
91
|
+
- Manual testing or configuration in external tools or admin panels
|
|
92
|
+
- Access to external services, APIs, or platforms not available in the codebase
|
|
93
|
+
- Physical, hardware, or infrastructure changes
|
|
94
|
+
- Design assets that do not yet exist
|
|
95
|
+
- Deployment or infrastructure changes outside the repository
|
|
96
|
+
- Human judgment calls that require stakeholder input
|
|
97
|
+
|
|
98
|
+
If the ticket is infeasible, display:
|
|
99
|
+
```
|
|
100
|
+
⏭️ {TICKET-KEY} skipped — {one-line reason}.
|
|
101
|
+
|
|
102
|
+
"Not on my watch." — The ticket requires work that Clancy can't do as code changes. A human should handle this one.
|
|
103
|
+
```
|
|
104
|
+
Stop here.
|
|
105
|
+
|
|
106
|
+
### 2c. Execute
|
|
107
|
+
|
|
108
|
+
If the ticket is feasible, run the full lifecycle (skipping the script's built-in feasibility check since we just evaluated it):
|
|
109
|
+
```bash
|
|
110
|
+
node .clancy/clancy-once.js --skip-feasibility
|
|
111
|
+
```
|
|
112
|
+
|
|
80
113
|
Stream output directly — do not buffer or summarise.
|
|
81
114
|
|
|
82
115
|
---
|
|
83
116
|
|
|
84
117
|
## Step 3 — Result
|
|
85
118
|
|
|
86
|
-
On success
|
|
119
|
+
On success (output contains `complete`), echo:
|
|
87
120
|
```
|
|
88
121
|
✅ {TICKET-KEY} complete.
|
|
89
122
|
|
|
90
123
|
"That's some fine police work there, Lou."
|
|
91
124
|
```
|
|
92
125
|
|
|
126
|
+
On skip (output contains `Ticket skipped`), echo:
|
|
127
|
+
```
|
|
128
|
+
⏭️ {TICKET-KEY} skipped — {reason from output}.
|
|
129
|
+
|
|
130
|
+
"Not on my watch." — The ticket requires work that Clancy can't do as code changes. A human should handle this one.
|
|
131
|
+
```
|
|
132
|
+
|
|
93
133
|
On failure:
|
|
94
134
|
```
|
|
95
135
|
❌ Clancy stopped. See output above for details.
|