chief-clancy 0.7.0 → 0.7.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/README.md +4 -1
- package/dist/bundle/clancy-once.js +50 -50
- package/package.json +5 -2
- package/src/roles/planner/commands/approve-plan.md +3 -0
- package/src/roles/planner/commands/plan.md +1 -0
- package/src/roles/planner/workflows/approve-plan.md +3 -1
- package/src/roles/planner/workflows/plan.md +5 -5
- package/src/roles/strategist/commands/approve-brief.md +1 -0
- package/src/roles/strategist/workflows/approve-brief.md +3 -1
- package/src/roles/strategist/workflows/brief.md +38 -20
- package/src/templates/.env.example.github +19 -1
- package/src/templates/.env.example.jira +25 -1
- package/src/templates/.env.example.linear +19 -1
- package/dist/schemas/bitbucket-pr.d.ts +0 -137
- package/dist/schemas/bitbucket-pr.d.ts.map +0 -1
- package/dist/schemas/bitbucket-pr.js +0 -75
- package/dist/schemas/bitbucket-pr.js.map +0 -1
- package/dist/schemas/env.d.ts +0 -170
- package/dist/schemas/env.d.ts.map +0 -1
- package/dist/schemas/env.js +0 -69
- package/dist/schemas/env.js.map +0 -1
- package/dist/schemas/github-issues.d.ts +0 -105
- package/dist/schemas/github-issues.d.ts.map +0 -1
- package/dist/schemas/github-issues.js +0 -54
- package/dist/schemas/github-issues.js.map +0 -1
- package/dist/schemas/gitlab-mr.d.ts +0 -73
- package/dist/schemas/gitlab-mr.d.ts.map +0 -1
- package/dist/schemas/gitlab-mr.js +0 -33
- package/dist/schemas/gitlab-mr.js.map +0 -1
- package/dist/schemas/jira.d.ts +0 -59
- package/dist/schemas/jira.d.ts.map +0 -1
- package/dist/schemas/jira.js +0 -56
- package/dist/schemas/jira.js.map +0 -1
- package/dist/schemas/linear.d.ts +0 -108
- package/dist/schemas/linear.d.ts.map +0 -1
- package/dist/schemas/linear.js +0 -84
- package/dist/schemas/linear.js.map +0 -1
- package/dist/scripts/afk/afk.d.ts +0 -21
- package/dist/scripts/afk/afk.d.ts.map +0 -1
- package/dist/scripts/afk/afk.js +0 -145
- package/dist/scripts/afk/afk.js.map +0 -1
- package/dist/scripts/afk/report/report.d.ts +0 -47
- package/dist/scripts/afk/report/report.d.ts.map +0 -1
- package/dist/scripts/afk/report/report.js +0 -194
- package/dist/scripts/afk/report/report.js.map +0 -1
- package/dist/scripts/board/github/github.d.ts +0 -104
- package/dist/scripts/board/github/github.d.ts.map +0 -1
- package/dist/scripts/board/github/github.js +0 -291
- package/dist/scripts/board/github/github.js.map +0 -1
- package/dist/scripts/board/jira/jira.d.ts +0 -139
- package/dist/scripts/board/jira/jira.d.ts.map +0 -1
- package/dist/scripts/board/jira/jira.js +0 -378
- package/dist/scripts/board/jira/jira.js.map +0 -1
- package/dist/scripts/board/linear/linear.d.ts +0 -129
- package/dist/scripts/board/linear/linear.d.ts.map +0 -1
- package/dist/scripts/board/linear/linear.js +0 -393
- package/dist/scripts/board/linear/linear.js.map +0 -1
- package/dist/scripts/once/board-ops/board-ops.d.ts +0 -26
- package/dist/scripts/once/board-ops/board-ops.d.ts.map +0 -1
- package/dist/scripts/once/board-ops/board-ops.js +0 -113
- package/dist/scripts/once/board-ops/board-ops.js.map +0 -1
- package/dist/scripts/once/cost/cost.d.ts +0 -10
- package/dist/scripts/once/cost/cost.d.ts.map +0 -1
- package/dist/scripts/once/cost/cost.js +0 -23
- package/dist/scripts/once/cost/cost.js.map +0 -1
- package/dist/scripts/once/deliver/deliver.d.ts +0 -37
- package/dist/scripts/once/deliver/deliver.d.ts.map +0 -1
- package/dist/scripts/once/deliver/deliver.js +0 -253
- package/dist/scripts/once/deliver/deliver.js.map +0 -1
- package/dist/scripts/once/fetch-ticket/fetch-ticket.d.ts +0 -22
- package/dist/scripts/once/fetch-ticket/fetch-ticket.d.ts.map +0 -1
- package/dist/scripts/once/fetch-ticket/fetch-ticket.js +0 -123
- package/dist/scripts/once/fetch-ticket/fetch-ticket.js.map +0 -1
- package/dist/scripts/once/git-token/git-token.d.ts +0 -13
- package/dist/scripts/once/git-token/git-token.d.ts.map +0 -1
- package/dist/scripts/once/git-token/git-token.js +0 -30
- package/dist/scripts/once/git-token/git-token.js.map +0 -1
- package/dist/scripts/once/lock/lock.d.ts +0 -17
- package/dist/scripts/once/lock/lock.d.ts.map +0 -1
- package/dist/scripts/once/lock/lock.js +0 -70
- package/dist/scripts/once/lock/lock.js.map +0 -1
- package/dist/scripts/once/once.d.ts +0 -12
- package/dist/scripts/once/once.d.ts.map +0 -1
- package/dist/scripts/once/once.js +0 -452
- package/dist/scripts/once/once.js.map +0 -1
- package/dist/scripts/once/pr-creation/pr-creation.d.ts +0 -11
- package/dist/scripts/once/pr-creation/pr-creation.d.ts.map +0 -1
- package/dist/scripts/once/pr-creation/pr-creation.js +0 -50
- package/dist/scripts/once/pr-creation/pr-creation.js.map +0 -1
- package/dist/scripts/once/resume/resume.d.ts +0 -24
- package/dist/scripts/once/resume/resume.d.ts.map +0 -1
- package/dist/scripts/once/resume/resume.js +0 -159
- package/dist/scripts/once/resume/resume.js.map +0 -1
- package/dist/scripts/once/rework/rework.d.ts +0 -32
- package/dist/scripts/once/rework/rework.d.ts.map +0 -1
- package/dist/scripts/once/rework/rework.js +0 -208
- package/dist/scripts/once/rework/rework.js.map +0 -1
- package/dist/scripts/once/types/types.d.ts +0 -13
- package/dist/scripts/once/types/types.d.ts.map +0 -1
- package/dist/scripts/once/types/types.js +0 -2
- package/dist/scripts/once/types/types.js.map +0 -1
- package/dist/scripts/shared/branch/branch.d.ts +0 -50
- package/dist/scripts/shared/branch/branch.d.ts.map +0 -1
- package/dist/scripts/shared/branch/branch.js +0 -61
- package/dist/scripts/shared/branch/branch.js.map +0 -1
- package/dist/scripts/shared/claude-cli/claude-cli.d.ts +0 -31
- package/dist/scripts/shared/claude-cli/claude-cli.d.ts.map +0 -1
- package/dist/scripts/shared/claude-cli/claude-cli.js +0 -60
- package/dist/scripts/shared/claude-cli/claude-cli.js.map +0 -1
- package/dist/scripts/shared/env-schema/env-schema.d.ts +0 -27
- package/dist/scripts/shared/env-schema/env-schema.d.ts.map +0 -1
- package/dist/scripts/shared/env-schema/env-schema.js +0 -47
- package/dist/scripts/shared/env-schema/env-schema.js.map +0 -1
- package/dist/scripts/shared/feasibility/feasibility.d.ts +0 -30
- package/dist/scripts/shared/feasibility/feasibility.d.ts.map +0 -1
- package/dist/scripts/shared/feasibility/feasibility.js +0 -68
- package/dist/scripts/shared/feasibility/feasibility.js.map +0 -1
- package/dist/scripts/shared/format/format.d.ts +0 -11
- package/dist/scripts/shared/format/format.d.ts.map +0 -1
- package/dist/scripts/shared/format/format.js +0 -23
- package/dist/scripts/shared/format/format.js.map +0 -1
- package/dist/scripts/shared/git-ops/git-ops.d.ts +0 -90
- package/dist/scripts/shared/git-ops/git-ops.d.ts.map +0 -1
- package/dist/scripts/shared/git-ops/git-ops.js +0 -190
- package/dist/scripts/shared/git-ops/git-ops.js.map +0 -1
- package/dist/scripts/shared/http/http.d.ts +0 -54
- package/dist/scripts/shared/http/http.d.ts.map +0 -1
- package/dist/scripts/shared/http/http.js +0 -76
- package/dist/scripts/shared/http/http.js.map +0 -1
- package/dist/scripts/shared/notify/notify.d.ts +0 -46
- package/dist/scripts/shared/notify/notify.d.ts.map +0 -1
- package/dist/scripts/shared/notify/notify.js +0 -88
- package/dist/scripts/shared/notify/notify.js.map +0 -1
- package/dist/scripts/shared/preflight/preflight.d.ts +0 -40
- package/dist/scripts/shared/preflight/preflight.d.ts.map +0 -1
- package/dist/scripts/shared/preflight/preflight.js +0 -96
- package/dist/scripts/shared/preflight/preflight.js.map +0 -1
- package/dist/scripts/shared/progress/progress.d.ts +0 -88
- package/dist/scripts/shared/progress/progress.d.ts.map +0 -1
- package/dist/scripts/shared/progress/progress.js +0 -210
- package/dist/scripts/shared/progress/progress.js.map +0 -1
- package/dist/scripts/shared/prompt/prompt.d.ts +0 -58
- package/dist/scripts/shared/prompt/prompt.d.ts.map +0 -1
- package/dist/scripts/shared/prompt/prompt.js +0 -123
- package/dist/scripts/shared/prompt/prompt.js.map +0 -1
- package/dist/scripts/shared/pull-request/bitbucket/bitbucket.d.ts +0 -82
- package/dist/scripts/shared/pull-request/bitbucket/bitbucket.d.ts.map +0 -1
- package/dist/scripts/shared/pull-request/bitbucket/bitbucket.js +0 -301
- package/dist/scripts/shared/pull-request/bitbucket/bitbucket.js.map +0 -1
- package/dist/scripts/shared/pull-request/github/github.d.ts +0 -72
- package/dist/scripts/shared/pull-request/github/github.d.ts.map +0 -1
- package/dist/scripts/shared/pull-request/github/github.js +0 -226
- package/dist/scripts/shared/pull-request/github/github.js.map +0 -1
- package/dist/scripts/shared/pull-request/gitlab/gitlab.d.ts +0 -74
- package/dist/scripts/shared/pull-request/gitlab/gitlab.d.ts.map +0 -1
- package/dist/scripts/shared/pull-request/gitlab/gitlab.js +0 -220
- package/dist/scripts/shared/pull-request/gitlab/gitlab.js.map +0 -1
- package/dist/scripts/shared/pull-request/post-pr/post-pr.d.ts +0 -31
- package/dist/scripts/shared/pull-request/post-pr/post-pr.d.ts.map +0 -1
- package/dist/scripts/shared/pull-request/post-pr/post-pr.js +0 -61
- package/dist/scripts/shared/pull-request/post-pr/post-pr.js.map +0 -1
- package/dist/scripts/shared/pull-request/pr-body/pr-body.d.ts +0 -41
- package/dist/scripts/shared/pull-request/pr-body/pr-body.d.ts.map +0 -1
- package/dist/scripts/shared/pull-request/pr-body/pr-body.js +0 -93
- package/dist/scripts/shared/pull-request/pr-body/pr-body.js.map +0 -1
- package/dist/scripts/shared/pull-request/rework-comment/rework-comment.d.ts +0 -23
- package/dist/scripts/shared/pull-request/rework-comment/rework-comment.d.ts.map +0 -1
- package/dist/scripts/shared/pull-request/rework-comment/rework-comment.js +0 -30
- package/dist/scripts/shared/pull-request/rework-comment/rework-comment.js.map +0 -1
- package/dist/scripts/shared/remote/remote.d.ts +0 -41
- package/dist/scripts/shared/remote/remote.d.ts.map +0 -1
- package/dist/scripts/shared/remote/remote.js +0 -227
- package/dist/scripts/shared/remote/remote.js.map +0 -1
- package/dist/types/board.d.ts +0 -13
- package/dist/types/board.d.ts.map +0 -1
- package/dist/types/board.js +0 -5
- package/dist/types/board.js.map +0 -1
- package/dist/types/index.d.ts +0 -4
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -2
- package/dist/types/index.js.map +0 -1
- package/dist/types/remote.d.ts +0 -55
- package/dist/types/remote.d.ts.map +0 -1
- package/dist/types/remote.js +0 -5
- package/dist/types/remote.js.map +0 -1
- package/dist/utils/parse-json/parse-json.d.ts +0 -20
- package/dist/utils/parse-json/parse-json.d.ts.map +0 -1
- package/dist/utils/parse-json/parse-json.js +0 -27
- package/dist/utils/parse-json/parse-json.js.map +0 -1
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Resume detection and execution for crash recovery.
|
|
3
|
-
*
|
|
4
|
-
* After a stale lock is cleaned up, checks if the ticket branch exists
|
|
5
|
-
* locally with uncommitted or unpushed work. If so, offers to resume
|
|
6
|
-
* (automatic in AFK mode, interactive otherwise).
|
|
7
|
-
*/
|
|
8
|
-
import { execFileSync } from 'node:child_process';
|
|
9
|
-
import { branchExists, checkout, hasUncommittedChanges, pushBranch, } from '../../../scripts/shared/git-ops/git-ops.js';
|
|
10
|
-
import { appendProgress } from '../../../scripts/shared/progress/progress.js';
|
|
11
|
-
import { buildPrBody } from '../../../scripts/shared/pull-request/pr-body/pr-body.js';
|
|
12
|
-
import { detectRemote } from '../../../scripts/shared/remote/remote.js';
|
|
13
|
-
import { dim, green, yellow } from '../../../utils/ansi/ansi.js';
|
|
14
|
-
import { sharedEnv } from '../board-ops/board-ops.js';
|
|
15
|
-
import { attemptPrCreation } from '../pr-creation/pr-creation.js';
|
|
16
|
-
// ─── Detection ───────────────────────────────────────────────────────────────
|
|
17
|
-
/**
|
|
18
|
-
* Check if the ticket branch from a stale lock has recoverable work.
|
|
19
|
-
*
|
|
20
|
-
* @param lock - The stale lock data.
|
|
21
|
-
* @returns Resume info if the branch has work to recover, undefined otherwise.
|
|
22
|
-
*/
|
|
23
|
-
export function detectResume(lock) {
|
|
24
|
-
const branch = lock.ticketBranch;
|
|
25
|
-
if (!branchExists(branch)) {
|
|
26
|
-
return undefined;
|
|
27
|
-
}
|
|
28
|
-
// Save current branch, switch to the ticket branch to inspect it
|
|
29
|
-
let previousBranch;
|
|
30
|
-
try {
|
|
31
|
-
previousBranch = execFileSync('git', ['rev-parse', '--abbrev-ref', 'HEAD'], {
|
|
32
|
-
encoding: 'utf8',
|
|
33
|
-
}).trim();
|
|
34
|
-
}
|
|
35
|
-
catch {
|
|
36
|
-
return undefined;
|
|
37
|
-
}
|
|
38
|
-
try {
|
|
39
|
-
checkout(branch);
|
|
40
|
-
}
|
|
41
|
-
catch {
|
|
42
|
-
return undefined;
|
|
43
|
-
}
|
|
44
|
-
let uncommitted = false;
|
|
45
|
-
let unpushed = false;
|
|
46
|
-
try {
|
|
47
|
-
uncommitted = hasUncommittedChanges();
|
|
48
|
-
}
|
|
49
|
-
catch {
|
|
50
|
-
// Ignore — treat as no uncommitted changes
|
|
51
|
-
}
|
|
52
|
-
try {
|
|
53
|
-
// Check for unpushed commits (commits on branch not on remote)
|
|
54
|
-
const log = execFileSync('git', ['log', `origin/${branch}..${branch}`, '--oneline'], { encoding: 'utf8' }).trim();
|
|
55
|
-
unpushed = log.length > 0;
|
|
56
|
-
}
|
|
57
|
-
catch {
|
|
58
|
-
// Remote branch may not exist — check if there are any commits ahead of target
|
|
59
|
-
try {
|
|
60
|
-
const log = execFileSync('git', ['log', `origin/${lock.targetBranch}..${branch}`, '--oneline'], { encoding: 'utf8' }).trim();
|
|
61
|
-
unpushed = log.length > 0;
|
|
62
|
-
}
|
|
63
|
-
catch {
|
|
64
|
-
// Ignore — treat as no unpushed commits
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
// Restore original branch
|
|
68
|
-
try {
|
|
69
|
-
checkout(previousBranch);
|
|
70
|
-
}
|
|
71
|
-
catch {
|
|
72
|
-
// Best-effort
|
|
73
|
-
}
|
|
74
|
-
if (!uncommitted && !unpushed) {
|
|
75
|
-
return undefined;
|
|
76
|
-
}
|
|
77
|
-
return { branch, hasUncommitted: uncommitted, hasUnpushed: unpushed };
|
|
78
|
-
}
|
|
79
|
-
// ─── Execution ───────────────────────────────────────────────────────────────
|
|
80
|
-
/**
|
|
81
|
-
* Resume a crashed session: commit uncommitted changes, push, and create a PR.
|
|
82
|
-
*
|
|
83
|
-
* @param config - Board configuration.
|
|
84
|
-
* @param lock - The stale lock data.
|
|
85
|
-
* @param resumeInfo - The resume detection result.
|
|
86
|
-
* @returns `true` if resume succeeded.
|
|
87
|
-
*/
|
|
88
|
-
export async function executeResume(config, lock, resumeInfo) {
|
|
89
|
-
try {
|
|
90
|
-
checkout(resumeInfo.branch);
|
|
91
|
-
// Commit uncommitted changes
|
|
92
|
-
// Note: git add -A stages everything. The credential guard hook doesn't
|
|
93
|
-
// run here (direct git, not via Claude). Acceptable for crash recovery —
|
|
94
|
-
// the branch was already in-flight from a Claude session.
|
|
95
|
-
if (resumeInfo.hasUncommitted) {
|
|
96
|
-
try {
|
|
97
|
-
execFileSync('git', ['add', '-A'], { encoding: 'utf8' });
|
|
98
|
-
execFileSync('git', ['commit', '-m', `fix(${lock.ticketKey}): resume after crash`], { encoding: 'utf8' });
|
|
99
|
-
console.log(green(` ✓ Committed in-progress work for ${lock.ticketKey}`));
|
|
100
|
-
}
|
|
101
|
-
catch {
|
|
102
|
-
console.log(yellow(` ⚠ Could not commit changes on ${resumeInfo.branch}`));
|
|
103
|
-
return false;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
// Push
|
|
107
|
-
const pushed = pushBranch(resumeInfo.branch);
|
|
108
|
-
if (!pushed) {
|
|
109
|
-
console.log(yellow(` ⚠ Could not push ${resumeInfo.branch} to origin`));
|
|
110
|
-
return false;
|
|
111
|
-
}
|
|
112
|
-
console.log(green(` ✓ Pushed ${resumeInfo.branch}`));
|
|
113
|
-
// Attempt PR creation
|
|
114
|
-
const platformOverride = sharedEnv(config).CLANCY_GIT_PLATFORM;
|
|
115
|
-
const remote = detectRemote(platformOverride);
|
|
116
|
-
const prTitle = `feat(${lock.ticketKey}): ${lock.ticketTitle}`;
|
|
117
|
-
const prBody = buildPrBody(config, {
|
|
118
|
-
key: lock.ticketKey,
|
|
119
|
-
title: lock.ticketTitle,
|
|
120
|
-
description: '',
|
|
121
|
-
provider: config.provider,
|
|
122
|
-
}, lock.targetBranch);
|
|
123
|
-
if (remote.host !== 'none' &&
|
|
124
|
-
remote.host !== 'unknown' &&
|
|
125
|
-
remote.host !== 'azure') {
|
|
126
|
-
const pr = await attemptPrCreation(config, remote, resumeInfo.branch, lock.targetBranch, prTitle, prBody);
|
|
127
|
-
if (pr?.ok) {
|
|
128
|
-
console.log(green(` ✓ PR created: ${pr.url}`));
|
|
129
|
-
appendProgress(process.cwd(), lock.ticketKey, lock.ticketTitle, 'RESUMED', pr.number, lock.parentKey && lock.parentKey !== 'none'
|
|
130
|
-
? lock.parentKey
|
|
131
|
-
: undefined);
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
console.log(dim(' Branch pushed — create a PR manually.'));
|
|
135
|
-
appendProgress(process.cwd(), lock.ticketKey, lock.ticketTitle, 'RESUMED', undefined, lock.parentKey && lock.parentKey !== 'none'
|
|
136
|
-
? lock.parentKey
|
|
137
|
-
: undefined);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
appendProgress(process.cwd(), lock.ticketKey, lock.ticketTitle, 'RESUMED', undefined, lock.parentKey && lock.parentKey !== 'none'
|
|
142
|
-
? lock.parentKey
|
|
143
|
-
: undefined);
|
|
144
|
-
}
|
|
145
|
-
// Switch back to target branch
|
|
146
|
-
try {
|
|
147
|
-
checkout(lock.targetBranch);
|
|
148
|
-
}
|
|
149
|
-
catch {
|
|
150
|
-
// Best-effort
|
|
151
|
-
}
|
|
152
|
-
return true;
|
|
153
|
-
}
|
|
154
|
-
catch (err) {
|
|
155
|
-
console.log(yellow(` ⚠ Resume failed: ${err instanceof Error ? err.message : String(err)}`));
|
|
156
|
-
return false;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
//# sourceMappingURL=resume.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../../src/scripts/once/resume/resume.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import type { BoardConfig } from '../../../scripts/shared/env-schema/env-schema.js';
|
|
2
|
-
import type { FetchedTicket } from '../types/types.js';
|
|
3
|
-
/**
|
|
4
|
-
* Check open PRs for review feedback requesting changes.
|
|
5
|
-
*
|
|
6
|
-
* Scans progress.txt for tickets with status PR_CREATED, then checks
|
|
7
|
-
* the corresponding PR's review state on the detected remote platform.
|
|
8
|
-
* If a reviewer has requested changes, returns the ticket and feedback.
|
|
9
|
-
*
|
|
10
|
-
* This is best-effort — errors are swallowed so the orchestrator
|
|
11
|
-
* can fall through to fresh ticket fetch.
|
|
12
|
-
*/
|
|
13
|
-
export declare function fetchReworkFromPrReview(config: BoardConfig): Promise<{
|
|
14
|
-
ticket: FetchedTicket;
|
|
15
|
-
feedback: string[];
|
|
16
|
-
prNumber: number;
|
|
17
|
-
discussionIds?: string[];
|
|
18
|
-
reviewers: string[];
|
|
19
|
-
} | undefined>;
|
|
20
|
-
/**
|
|
21
|
-
* Build a rework comment to post on the PR after pushing fixes.
|
|
22
|
-
*
|
|
23
|
-
* Prefixed with `[clancy]` (not `Rework:`) so it does NOT trigger
|
|
24
|
-
* rework detection on the next cycle.
|
|
25
|
-
*/
|
|
26
|
-
export declare function buildReworkComment(feedback: string[]): string;
|
|
27
|
-
/**
|
|
28
|
-
* Perform post-rework actions: comment on PR, re-request review (GitHub),
|
|
29
|
-
* resolve threads (GitLab). All best-effort — failures warn but don't block.
|
|
30
|
-
*/
|
|
31
|
-
export declare function postReworkActions(config: BoardConfig, prNumber: number, feedback: string[], discussionIds?: string[], reviewers?: string[]): Promise<void>;
|
|
32
|
-
//# sourceMappingURL=rework.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rework.d.ts","sourceRoot":"","sources":["../../../../src/scripts/once/rework/rework.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AA8B7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIvD;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CACvE;IACE,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,GACD,SAAS,CACZ,CA8KA;AAID;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAW7D;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAAE,EAClB,aAAa,CAAC,EAAE,MAAM,EAAE,EACxB,SAAS,CAAC,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,IAAI,CAAC,CAiHf"}
|
|
@@ -1,208 +0,0 @@
|
|
|
1
|
-
import { resolveUsername } from '../../../scripts/board/github/github.js';
|
|
2
|
-
import { computeTicketBranch } from '../../../scripts/shared/branch/branch.js';
|
|
3
|
-
import { findEntriesWithStatus } from '../../../scripts/shared/progress/progress.js';
|
|
4
|
-
import { checkPrReviewState as checkBitbucketPrReviewState, checkServerPrReviewState as checkBitbucketServerPrReviewState, fetchPrReviewComments as fetchBitbucketPrReviewComments, fetchServerPrReviewComments as fetchBitbucketServerPrReviewComments, postCloudPrComment, postServerPrComment, } from '../../../scripts/shared/pull-request/bitbucket/bitbucket.js';
|
|
5
|
-
import { checkPrReviewState as checkGitHubPrReviewState, fetchPrReviewComments as fetchGitHubPrReviewComments, postPrComment as postGitHubPrComment, requestReview as requestGitHubReview, } from '../../../scripts/shared/pull-request/github/github.js';
|
|
6
|
-
import { checkMrReviewState as checkGitLabMrReviewState, fetchMrReviewComments as fetchGitLabMrReviewComments, postMrNote, resolveDiscussions, } from '../../../scripts/shared/pull-request/gitlab/gitlab.js';
|
|
7
|
-
import { buildApiBaseUrl, detectRemote, } from '../../../scripts/shared/remote/remote.js';
|
|
8
|
-
import { dim } from '../../../utils/ansi/ansi.js';
|
|
9
|
-
import { sharedEnv } from '../board-ops/board-ops.js';
|
|
10
|
-
import { resolveGitToken } from '../git-token/git-token.js';
|
|
11
|
-
// ─── PR-based rework detection ────────────────────────────────────────────────
|
|
12
|
-
/**
|
|
13
|
-
* Check open PRs for review feedback requesting changes.
|
|
14
|
-
*
|
|
15
|
-
* Scans progress.txt for tickets with status PR_CREATED, then checks
|
|
16
|
-
* the corresponding PR's review state on the detected remote platform.
|
|
17
|
-
* If a reviewer has requested changes, returns the ticket and feedback.
|
|
18
|
-
*
|
|
19
|
-
* This is best-effort — errors are swallowed so the orchestrator
|
|
20
|
-
* can fall through to fresh ticket fetch.
|
|
21
|
-
*/
|
|
22
|
-
export async function fetchReworkFromPrReview(config) {
|
|
23
|
-
const prCreated = findEntriesWithStatus(process.cwd(), 'PR_CREATED');
|
|
24
|
-
const reworked = findEntriesWithStatus(process.cwd(), 'REWORK');
|
|
25
|
-
const pushed = findEntriesWithStatus(process.cwd(), 'PUSHED');
|
|
26
|
-
const pushFailed = findEntriesWithStatus(process.cwd(), 'PUSH_FAILED');
|
|
27
|
-
const candidates = [...prCreated, ...reworked, ...pushed, ...pushFailed];
|
|
28
|
-
if (candidates.length === 0)
|
|
29
|
-
return undefined;
|
|
30
|
-
const platformOverride = sharedEnv(config).CLANCY_GIT_PLATFORM;
|
|
31
|
-
const remote = detectRemote(platformOverride);
|
|
32
|
-
if (remote.host === 'none' ||
|
|
33
|
-
remote.host === 'unknown' ||
|
|
34
|
-
remote.host === 'azure') {
|
|
35
|
-
return undefined;
|
|
36
|
-
}
|
|
37
|
-
const creds = resolveGitToken(config, remote);
|
|
38
|
-
if (!creds)
|
|
39
|
-
return undefined;
|
|
40
|
-
const apiBase = buildApiBaseUrl(remote, sharedEnv(config).CLANCY_GIT_API_URL);
|
|
41
|
-
if (!apiBase)
|
|
42
|
-
return undefined;
|
|
43
|
-
// Resolve GitHub username for author filtering (GitHub only)
|
|
44
|
-
let ghUsername;
|
|
45
|
-
if (remote.host === 'github') {
|
|
46
|
-
try {
|
|
47
|
-
ghUsername = await resolveUsername(creds.token, apiBase);
|
|
48
|
-
}
|
|
49
|
-
catch {
|
|
50
|
-
// Best-effort — skip author filtering if username resolution fails
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
// Limit to first 5 candidates to avoid rate limits
|
|
54
|
-
const toCheck = candidates.slice(0, 5);
|
|
55
|
-
for (const entry of toCheck) {
|
|
56
|
-
const branch = computeTicketBranch(config.provider, entry.key);
|
|
57
|
-
// Convert progress timestamp (YYYY-MM-DD HH:MM) to ISO 8601 for API filtering.
|
|
58
|
-
// Only comments created AFTER this timestamp should trigger rework,
|
|
59
|
-
// preventing stale inline comments from causing infinite rework loops.
|
|
60
|
-
// Parse UTC timestamp (YYYY-MM-DD HH:MM) to ISO 8601.
|
|
61
|
-
// Falls back to undefined if timestamp is invalid (skips filtering).
|
|
62
|
-
let since;
|
|
63
|
-
if (entry.timestamp) {
|
|
64
|
-
const date = new Date(entry.timestamp.replace(' ', 'T') + 'Z');
|
|
65
|
-
since = Number.isNaN(date.getTime()) ? undefined : date.toISOString();
|
|
66
|
-
}
|
|
67
|
-
let reviewState;
|
|
68
|
-
switch (remote.host) {
|
|
69
|
-
case 'github':
|
|
70
|
-
reviewState = await checkGitHubPrReviewState(creds.token, `${remote.owner}/${remote.repo}`, branch, remote.owner, apiBase, since, ghUsername);
|
|
71
|
-
break;
|
|
72
|
-
case 'gitlab':
|
|
73
|
-
reviewState = await checkGitLabMrReviewState(creds.token, apiBase, remote.projectPath, branch, since);
|
|
74
|
-
break;
|
|
75
|
-
case 'bitbucket':
|
|
76
|
-
reviewState = await checkBitbucketPrReviewState(creds.username, creds.token, remote.workspace, remote.repoSlug, branch, since);
|
|
77
|
-
break;
|
|
78
|
-
case 'bitbucket-server':
|
|
79
|
-
reviewState = await checkBitbucketServerPrReviewState(creds.token, apiBase, remote.projectKey, remote.repoSlug, branch, since);
|
|
80
|
-
break;
|
|
81
|
-
}
|
|
82
|
-
if (reviewState?.changesRequested) {
|
|
83
|
-
// Fetch review comments for the PR
|
|
84
|
-
let feedback = [];
|
|
85
|
-
let discussionIds;
|
|
86
|
-
switch (remote.host) {
|
|
87
|
-
case 'github':
|
|
88
|
-
feedback = await fetchGitHubPrReviewComments(creds.token, `${remote.owner}/${remote.repo}`, reviewState.prNumber, apiBase, since, ghUsername);
|
|
89
|
-
break;
|
|
90
|
-
case 'gitlab': {
|
|
91
|
-
const mrResult = await fetchGitLabMrReviewComments(creds.token, apiBase, remote.projectPath, reviewState.prNumber, since);
|
|
92
|
-
feedback = mrResult.comments;
|
|
93
|
-
discussionIds = mrResult.discussionIds;
|
|
94
|
-
break;
|
|
95
|
-
}
|
|
96
|
-
case 'bitbucket':
|
|
97
|
-
feedback = await fetchBitbucketPrReviewComments(creds.username, creds.token, remote.workspace, remote.repoSlug, reviewState.prNumber, since);
|
|
98
|
-
break;
|
|
99
|
-
case 'bitbucket-server':
|
|
100
|
-
feedback = await fetchBitbucketServerPrReviewComments(creds.token, apiBase, remote.projectKey, remote.repoSlug, reviewState.prNumber, since);
|
|
101
|
-
break;
|
|
102
|
-
}
|
|
103
|
-
const ticket = {
|
|
104
|
-
key: entry.key,
|
|
105
|
-
title: entry.summary,
|
|
106
|
-
description: entry.summary,
|
|
107
|
-
parentInfo: entry.parent ?? 'none',
|
|
108
|
-
blockers: 'None',
|
|
109
|
-
};
|
|
110
|
-
return {
|
|
111
|
-
ticket,
|
|
112
|
-
feedback,
|
|
113
|
-
prNumber: reviewState.prNumber,
|
|
114
|
-
discussionIds,
|
|
115
|
-
reviewers: reviewState.reviewers ?? [],
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
return undefined;
|
|
120
|
-
}
|
|
121
|
-
// ─── Post-rework actions ──────────────────────────────────────────────────
|
|
122
|
-
/**
|
|
123
|
-
* Build a rework comment to post on the PR after pushing fixes.
|
|
124
|
-
*
|
|
125
|
-
* Prefixed with `[clancy]` (not `Rework:`) so it does NOT trigger
|
|
126
|
-
* rework detection on the next cycle.
|
|
127
|
-
*/
|
|
128
|
-
export function buildReworkComment(feedback) {
|
|
129
|
-
if (feedback.length === 0) {
|
|
130
|
-
return '[clancy] Rework pushed addressing reviewer feedback.';
|
|
131
|
-
}
|
|
132
|
-
const count = feedback.length;
|
|
133
|
-
const summary = feedback
|
|
134
|
-
.slice(0, 3)
|
|
135
|
-
.map((f) => `- ${f.slice(0, 80)}`)
|
|
136
|
-
.join('\n');
|
|
137
|
-
const suffix = feedback.length > 3 ? '\n- ...' : '';
|
|
138
|
-
return `[clancy] Rework pushed addressing ${count} feedback item${count !== 1 ? 's' : ''}.\n\n${summary}${suffix}`;
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Perform post-rework actions: comment on PR, re-request review (GitHub),
|
|
142
|
-
* resolve threads (GitLab). All best-effort — failures warn but don't block.
|
|
143
|
-
*/
|
|
144
|
-
export async function postReworkActions(config, prNumber, feedback, discussionIds, reviewers) {
|
|
145
|
-
const platformOverride = sharedEnv(config).CLANCY_GIT_PLATFORM;
|
|
146
|
-
const remote = detectRemote(platformOverride);
|
|
147
|
-
if (remote.host === 'none' ||
|
|
148
|
-
remote.host === 'unknown' ||
|
|
149
|
-
remote.host === 'azure') {
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
const creds = resolveGitToken(config, remote);
|
|
153
|
-
if (!creds)
|
|
154
|
-
return;
|
|
155
|
-
const apiBase = buildApiBaseUrl(remote, sharedEnv(config).CLANCY_GIT_API_URL);
|
|
156
|
-
if (!apiBase)
|
|
157
|
-
return;
|
|
158
|
-
const comment = buildReworkComment(feedback);
|
|
159
|
-
// 1. Post rework comment
|
|
160
|
-
try {
|
|
161
|
-
let posted = false;
|
|
162
|
-
switch (remote.host) {
|
|
163
|
-
case 'github':
|
|
164
|
-
posted = await postGitHubPrComment(creds.token, `${remote.owner}/${remote.repo}`, prNumber, comment, apiBase);
|
|
165
|
-
break;
|
|
166
|
-
case 'gitlab':
|
|
167
|
-
posted = await postMrNote(creds.token, apiBase, remote.projectPath, prNumber, comment);
|
|
168
|
-
break;
|
|
169
|
-
case 'bitbucket':
|
|
170
|
-
posted = await postCloudPrComment(creds.username, creds.token, remote.workspace, remote.repoSlug, prNumber, comment);
|
|
171
|
-
break;
|
|
172
|
-
case 'bitbucket-server':
|
|
173
|
-
posted = await postServerPrComment(creds.token, apiBase, remote.projectKey, remote.repoSlug, prNumber, comment);
|
|
174
|
-
break;
|
|
175
|
-
}
|
|
176
|
-
if (posted) {
|
|
177
|
-
console.log(dim(' ✓ Posted rework comment'));
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
catch {
|
|
181
|
-
// Best-effort
|
|
182
|
-
}
|
|
183
|
-
// 2. GitLab: resolve addressed discussion threads
|
|
184
|
-
if (remote.host === 'gitlab' && discussionIds && discussionIds.length > 0) {
|
|
185
|
-
try {
|
|
186
|
-
const resolved = await resolveDiscussions(creds.token, apiBase, remote.projectPath, prNumber, discussionIds);
|
|
187
|
-
if (resolved > 0) {
|
|
188
|
-
console.log(dim(` ✓ Resolved ${resolved} discussion thread${resolved !== 1 ? 's' : ''}`));
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
catch {
|
|
192
|
-
// Best-effort
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
// 3. GitHub: re-request review from reviewers who requested changes
|
|
196
|
-
if (remote.host === 'github' && reviewers && reviewers.length > 0) {
|
|
197
|
-
try {
|
|
198
|
-
const ok = await requestGitHubReview(creds.token, `${remote.owner}/${remote.repo}`, prNumber, reviewers, apiBase);
|
|
199
|
-
if (ok) {
|
|
200
|
-
console.log(dim(` ✓ Re-requested review from ${reviewers.join(', ')}`));
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
catch {
|
|
204
|
-
// Best-effort
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
//# sourceMappingURL=rework.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rework.js","sourceRoot":"","sources":["../../../../src/scripts/once/rework/rework.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/** Normalised ticket representation used within the once orchestrator. */
|
|
2
|
-
export type FetchedTicket = {
|
|
3
|
-
key: string;
|
|
4
|
-
title: string;
|
|
5
|
-
description: string;
|
|
6
|
-
parentInfo: string;
|
|
7
|
-
blockers: string;
|
|
8
|
-
/** Linear internal issue ID — needed for state transitions. */
|
|
9
|
-
linearIssueId?: string;
|
|
10
|
-
/** Board-specific issue ID — needed for feedback fetching (e.g., Linear UUID). */
|
|
11
|
-
issueId?: string;
|
|
12
|
-
};
|
|
13
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/scripts/once/types/types.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/scripts/once/types/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Branch name computation for ticket workflows.
|
|
3
|
-
*
|
|
4
|
-
* Pure functions that compute feature and target branch names
|
|
5
|
-
* based on the board provider and ticket metadata.
|
|
6
|
-
*/
|
|
7
|
-
import type { BoardProvider } from '../../../types/index.js';
|
|
8
|
-
/**
|
|
9
|
-
* Compute the feature branch name for a ticket.
|
|
10
|
-
*
|
|
11
|
-
* - Jira/Linear: `feature/{key-lowercase}` (e.g., `feature/proj-123`)
|
|
12
|
-
* - GitHub: `feature/issue-{number}` (e.g., `feature/issue-42`)
|
|
13
|
-
*
|
|
14
|
-
* @param provider - The board provider.
|
|
15
|
-
* @param key - The ticket key (e.g., `'PROJ-123'`, `'#42'`, `'ENG-123'`).
|
|
16
|
-
* @returns The feature branch name.
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```ts
|
|
20
|
-
* computeTicketBranch('jira', 'PROJ-123'); // 'feature/proj-123'
|
|
21
|
-
* computeTicketBranch('github', '#42'); // 'feature/issue-42'
|
|
22
|
-
* computeTicketBranch('linear', 'ENG-123'); // 'feature/eng-123'
|
|
23
|
-
* ```
|
|
24
|
-
*/
|
|
25
|
-
export declare function computeTicketBranch(provider: BoardProvider, key: string): string;
|
|
26
|
-
/**
|
|
27
|
-
* Compute the target branch for merging.
|
|
28
|
-
*
|
|
29
|
-
* If the ticket has a parent (epic/milestone), branches from that parent's
|
|
30
|
-
* branch. Otherwise falls back to the base branch.
|
|
31
|
-
*
|
|
32
|
-
* - Jira: epic key → `epic/{key-lowercase}`
|
|
33
|
-
* - GitHub: milestone → `milestone/{slug}`
|
|
34
|
-
* - Linear: parent identifier → `epic/{id-lowercase}`
|
|
35
|
-
*
|
|
36
|
-
* @param provider - The board provider.
|
|
37
|
-
* @param baseBranch - The default base branch (e.g., `'main'`).
|
|
38
|
-
* @param parent - Optional parent identifier (epic key, milestone title, parent ID).
|
|
39
|
-
* @returns The target branch name.
|
|
40
|
-
*
|
|
41
|
-
* @example
|
|
42
|
-
* ```ts
|
|
43
|
-
* computeTargetBranch('jira', 'main', 'PROJ-100'); // 'epic/proj-100'
|
|
44
|
-
* computeTargetBranch('github', 'main', 'Sprint 3'); // 'milestone/sprint-3'
|
|
45
|
-
* computeTargetBranch('linear', 'main', 'ENG-50'); // 'epic/eng-50'
|
|
46
|
-
* computeTargetBranch('jira', 'main'); // 'main'
|
|
47
|
-
* ```
|
|
48
|
-
*/
|
|
49
|
-
export declare function computeTargetBranch(provider: BoardProvider, baseBranch: string, parent?: string): string;
|
|
50
|
-
//# sourceMappingURL=branch.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"branch.d.ts","sourceRoot":"","sources":["../../../../src/scripts/shared/branch/branch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,aAAa,EACvB,GAAG,EAAE,MAAM,GACV,MAAM,CAOR;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAaR"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Compute the feature branch name for a ticket.
|
|
3
|
-
*
|
|
4
|
-
* - Jira/Linear: `feature/{key-lowercase}` (e.g., `feature/proj-123`)
|
|
5
|
-
* - GitHub: `feature/issue-{number}` (e.g., `feature/issue-42`)
|
|
6
|
-
*
|
|
7
|
-
* @param provider - The board provider.
|
|
8
|
-
* @param key - The ticket key (e.g., `'PROJ-123'`, `'#42'`, `'ENG-123'`).
|
|
9
|
-
* @returns The feature branch name.
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```ts
|
|
13
|
-
* computeTicketBranch('jira', 'PROJ-123'); // 'feature/proj-123'
|
|
14
|
-
* computeTicketBranch('github', '#42'); // 'feature/issue-42'
|
|
15
|
-
* computeTicketBranch('linear', 'ENG-123'); // 'feature/eng-123'
|
|
16
|
-
* ```
|
|
17
|
-
*/
|
|
18
|
-
export function computeTicketBranch(provider, key) {
|
|
19
|
-
if (provider === 'github') {
|
|
20
|
-
const number = key.replace('#', '');
|
|
21
|
-
return `feature/issue-${number}`;
|
|
22
|
-
}
|
|
23
|
-
return `feature/${key.toLowerCase()}`;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Compute the target branch for merging.
|
|
27
|
-
*
|
|
28
|
-
* If the ticket has a parent (epic/milestone), branches from that parent's
|
|
29
|
-
* branch. Otherwise falls back to the base branch.
|
|
30
|
-
*
|
|
31
|
-
* - Jira: epic key → `epic/{key-lowercase}`
|
|
32
|
-
* - GitHub: milestone → `milestone/{slug}`
|
|
33
|
-
* - Linear: parent identifier → `epic/{id-lowercase}`
|
|
34
|
-
*
|
|
35
|
-
* @param provider - The board provider.
|
|
36
|
-
* @param baseBranch - The default base branch (e.g., `'main'`).
|
|
37
|
-
* @param parent - Optional parent identifier (epic key, milestone title, parent ID).
|
|
38
|
-
* @returns The target branch name.
|
|
39
|
-
*
|
|
40
|
-
* @example
|
|
41
|
-
* ```ts
|
|
42
|
-
* computeTargetBranch('jira', 'main', 'PROJ-100'); // 'epic/proj-100'
|
|
43
|
-
* computeTargetBranch('github', 'main', 'Sprint 3'); // 'milestone/sprint-3'
|
|
44
|
-
* computeTargetBranch('linear', 'main', 'ENG-50'); // 'epic/eng-50'
|
|
45
|
-
* computeTargetBranch('jira', 'main'); // 'main'
|
|
46
|
-
* ```
|
|
47
|
-
*/
|
|
48
|
-
export function computeTargetBranch(provider, baseBranch, parent) {
|
|
49
|
-
if (!parent)
|
|
50
|
-
return baseBranch;
|
|
51
|
-
if (provider === 'github') {
|
|
52
|
-
const slug = parent
|
|
53
|
-
.toLowerCase()
|
|
54
|
-
.replace(/\s+/g, '-')
|
|
55
|
-
.replace(/[^a-z0-9-]/g, '');
|
|
56
|
-
return `milestone/${slug}`;
|
|
57
|
-
}
|
|
58
|
-
// Jira and Linear both use epic/ prefix
|
|
59
|
-
return `epic/${parent.toLowerCase()}`;
|
|
60
|
-
}
|
|
61
|
-
//# sourceMappingURL=branch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"branch.js","sourceRoot":"","sources":["../../../../src/scripts/shared/branch/branch.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAuB,EACvB,GAAW;IAEX,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACpC,OAAO,iBAAiB,MAAM,EAAE,CAAC;IACnC,CAAC;IAED,OAAO,WAAW,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;AACxC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAuB,EACvB,UAAkB,EAClB,MAAe;IAEf,IAAI,CAAC,MAAM;QAAE,OAAO,UAAU,CAAC;IAE/B,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM;aAChB,WAAW,EAAE;aACb,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;aACpB,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAC9B,OAAO,aAAa,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,wCAAwC;IACxC,OAAO,QAAQ,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;AACxC,CAAC"}
|
|
@@ -1,31 +0,0 @@
|
|
|
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
|
-
};
|
|
15
|
-
/**
|
|
16
|
-
* Invoke a Claude Code session with the given prompt.
|
|
17
|
-
*
|
|
18
|
-
* Pipes the prompt to stdin and streams stdout/stderr live.
|
|
19
|
-
* Uses `--dangerously-skip-permissions` for autonomous operation.
|
|
20
|
-
*
|
|
21
|
-
* @param prompt - The full implementation prompt.
|
|
22
|
-
* @param model - Optional model override (e.g., `'opus'`, `'sonnet'`).
|
|
23
|
-
* @returns `true` if Claude exited successfully (code 0), `false` otherwise.
|
|
24
|
-
*
|
|
25
|
-
* @example
|
|
26
|
-
* ```ts
|
|
27
|
-
* invokeClaudeSession('You are implementing PROJ-123...', 'opus');
|
|
28
|
-
* ```
|
|
29
|
-
*/
|
|
30
|
-
export declare function invokeClaudeSession(prompt: string, model?: string): boolean;
|
|
31
|
-
//# sourceMappingURL=claude-cli.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|