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.
Files changed (189) hide show
  1. package/README.md +4 -1
  2. package/dist/bundle/clancy-once.js +50 -50
  3. package/package.json +5 -2
  4. package/src/roles/planner/commands/approve-plan.md +3 -0
  5. package/src/roles/planner/commands/plan.md +1 -0
  6. package/src/roles/planner/workflows/approve-plan.md +3 -1
  7. package/src/roles/planner/workflows/plan.md +5 -5
  8. package/src/roles/strategist/commands/approve-brief.md +1 -0
  9. package/src/roles/strategist/workflows/approve-brief.md +3 -1
  10. package/src/roles/strategist/workflows/brief.md +38 -20
  11. package/src/templates/.env.example.github +19 -1
  12. package/src/templates/.env.example.jira +25 -1
  13. package/src/templates/.env.example.linear +19 -1
  14. package/dist/schemas/bitbucket-pr.d.ts +0 -137
  15. package/dist/schemas/bitbucket-pr.d.ts.map +0 -1
  16. package/dist/schemas/bitbucket-pr.js +0 -75
  17. package/dist/schemas/bitbucket-pr.js.map +0 -1
  18. package/dist/schemas/env.d.ts +0 -170
  19. package/dist/schemas/env.d.ts.map +0 -1
  20. package/dist/schemas/env.js +0 -69
  21. package/dist/schemas/env.js.map +0 -1
  22. package/dist/schemas/github-issues.d.ts +0 -105
  23. package/dist/schemas/github-issues.d.ts.map +0 -1
  24. package/dist/schemas/github-issues.js +0 -54
  25. package/dist/schemas/github-issues.js.map +0 -1
  26. package/dist/schemas/gitlab-mr.d.ts +0 -73
  27. package/dist/schemas/gitlab-mr.d.ts.map +0 -1
  28. package/dist/schemas/gitlab-mr.js +0 -33
  29. package/dist/schemas/gitlab-mr.js.map +0 -1
  30. package/dist/schemas/jira.d.ts +0 -59
  31. package/dist/schemas/jira.d.ts.map +0 -1
  32. package/dist/schemas/jira.js +0 -56
  33. package/dist/schemas/jira.js.map +0 -1
  34. package/dist/schemas/linear.d.ts +0 -108
  35. package/dist/schemas/linear.d.ts.map +0 -1
  36. package/dist/schemas/linear.js +0 -84
  37. package/dist/schemas/linear.js.map +0 -1
  38. package/dist/scripts/afk/afk.d.ts +0 -21
  39. package/dist/scripts/afk/afk.d.ts.map +0 -1
  40. package/dist/scripts/afk/afk.js +0 -145
  41. package/dist/scripts/afk/afk.js.map +0 -1
  42. package/dist/scripts/afk/report/report.d.ts +0 -47
  43. package/dist/scripts/afk/report/report.d.ts.map +0 -1
  44. package/dist/scripts/afk/report/report.js +0 -194
  45. package/dist/scripts/afk/report/report.js.map +0 -1
  46. package/dist/scripts/board/github/github.d.ts +0 -104
  47. package/dist/scripts/board/github/github.d.ts.map +0 -1
  48. package/dist/scripts/board/github/github.js +0 -291
  49. package/dist/scripts/board/github/github.js.map +0 -1
  50. package/dist/scripts/board/jira/jira.d.ts +0 -139
  51. package/dist/scripts/board/jira/jira.d.ts.map +0 -1
  52. package/dist/scripts/board/jira/jira.js +0 -378
  53. package/dist/scripts/board/jira/jira.js.map +0 -1
  54. package/dist/scripts/board/linear/linear.d.ts +0 -129
  55. package/dist/scripts/board/linear/linear.d.ts.map +0 -1
  56. package/dist/scripts/board/linear/linear.js +0 -393
  57. package/dist/scripts/board/linear/linear.js.map +0 -1
  58. package/dist/scripts/once/board-ops/board-ops.d.ts +0 -26
  59. package/dist/scripts/once/board-ops/board-ops.d.ts.map +0 -1
  60. package/dist/scripts/once/board-ops/board-ops.js +0 -113
  61. package/dist/scripts/once/board-ops/board-ops.js.map +0 -1
  62. package/dist/scripts/once/cost/cost.d.ts +0 -10
  63. package/dist/scripts/once/cost/cost.d.ts.map +0 -1
  64. package/dist/scripts/once/cost/cost.js +0 -23
  65. package/dist/scripts/once/cost/cost.js.map +0 -1
  66. package/dist/scripts/once/deliver/deliver.d.ts +0 -37
  67. package/dist/scripts/once/deliver/deliver.d.ts.map +0 -1
  68. package/dist/scripts/once/deliver/deliver.js +0 -253
  69. package/dist/scripts/once/deliver/deliver.js.map +0 -1
  70. package/dist/scripts/once/fetch-ticket/fetch-ticket.d.ts +0 -22
  71. package/dist/scripts/once/fetch-ticket/fetch-ticket.d.ts.map +0 -1
  72. package/dist/scripts/once/fetch-ticket/fetch-ticket.js +0 -123
  73. package/dist/scripts/once/fetch-ticket/fetch-ticket.js.map +0 -1
  74. package/dist/scripts/once/git-token/git-token.d.ts +0 -13
  75. package/dist/scripts/once/git-token/git-token.d.ts.map +0 -1
  76. package/dist/scripts/once/git-token/git-token.js +0 -30
  77. package/dist/scripts/once/git-token/git-token.js.map +0 -1
  78. package/dist/scripts/once/lock/lock.d.ts +0 -17
  79. package/dist/scripts/once/lock/lock.d.ts.map +0 -1
  80. package/dist/scripts/once/lock/lock.js +0 -70
  81. package/dist/scripts/once/lock/lock.js.map +0 -1
  82. package/dist/scripts/once/once.d.ts +0 -12
  83. package/dist/scripts/once/once.d.ts.map +0 -1
  84. package/dist/scripts/once/once.js +0 -452
  85. package/dist/scripts/once/once.js.map +0 -1
  86. package/dist/scripts/once/pr-creation/pr-creation.d.ts +0 -11
  87. package/dist/scripts/once/pr-creation/pr-creation.d.ts.map +0 -1
  88. package/dist/scripts/once/pr-creation/pr-creation.js +0 -50
  89. package/dist/scripts/once/pr-creation/pr-creation.js.map +0 -1
  90. package/dist/scripts/once/resume/resume.d.ts +0 -24
  91. package/dist/scripts/once/resume/resume.d.ts.map +0 -1
  92. package/dist/scripts/once/resume/resume.js +0 -159
  93. package/dist/scripts/once/resume/resume.js.map +0 -1
  94. package/dist/scripts/once/rework/rework.d.ts +0 -32
  95. package/dist/scripts/once/rework/rework.d.ts.map +0 -1
  96. package/dist/scripts/once/rework/rework.js +0 -208
  97. package/dist/scripts/once/rework/rework.js.map +0 -1
  98. package/dist/scripts/once/types/types.d.ts +0 -13
  99. package/dist/scripts/once/types/types.d.ts.map +0 -1
  100. package/dist/scripts/once/types/types.js +0 -2
  101. package/dist/scripts/once/types/types.js.map +0 -1
  102. package/dist/scripts/shared/branch/branch.d.ts +0 -50
  103. package/dist/scripts/shared/branch/branch.d.ts.map +0 -1
  104. package/dist/scripts/shared/branch/branch.js +0 -61
  105. package/dist/scripts/shared/branch/branch.js.map +0 -1
  106. package/dist/scripts/shared/claude-cli/claude-cli.d.ts +0 -31
  107. package/dist/scripts/shared/claude-cli/claude-cli.d.ts.map +0 -1
  108. package/dist/scripts/shared/claude-cli/claude-cli.js +0 -60
  109. package/dist/scripts/shared/claude-cli/claude-cli.js.map +0 -1
  110. package/dist/scripts/shared/env-schema/env-schema.d.ts +0 -27
  111. package/dist/scripts/shared/env-schema/env-schema.d.ts.map +0 -1
  112. package/dist/scripts/shared/env-schema/env-schema.js +0 -47
  113. package/dist/scripts/shared/env-schema/env-schema.js.map +0 -1
  114. package/dist/scripts/shared/feasibility/feasibility.d.ts +0 -30
  115. package/dist/scripts/shared/feasibility/feasibility.d.ts.map +0 -1
  116. package/dist/scripts/shared/feasibility/feasibility.js +0 -68
  117. package/dist/scripts/shared/feasibility/feasibility.js.map +0 -1
  118. package/dist/scripts/shared/format/format.d.ts +0 -11
  119. package/dist/scripts/shared/format/format.d.ts.map +0 -1
  120. package/dist/scripts/shared/format/format.js +0 -23
  121. package/dist/scripts/shared/format/format.js.map +0 -1
  122. package/dist/scripts/shared/git-ops/git-ops.d.ts +0 -90
  123. package/dist/scripts/shared/git-ops/git-ops.d.ts.map +0 -1
  124. package/dist/scripts/shared/git-ops/git-ops.js +0 -190
  125. package/dist/scripts/shared/git-ops/git-ops.js.map +0 -1
  126. package/dist/scripts/shared/http/http.d.ts +0 -54
  127. package/dist/scripts/shared/http/http.d.ts.map +0 -1
  128. package/dist/scripts/shared/http/http.js +0 -76
  129. package/dist/scripts/shared/http/http.js.map +0 -1
  130. package/dist/scripts/shared/notify/notify.d.ts +0 -46
  131. package/dist/scripts/shared/notify/notify.d.ts.map +0 -1
  132. package/dist/scripts/shared/notify/notify.js +0 -88
  133. package/dist/scripts/shared/notify/notify.js.map +0 -1
  134. package/dist/scripts/shared/preflight/preflight.d.ts +0 -40
  135. package/dist/scripts/shared/preflight/preflight.d.ts.map +0 -1
  136. package/dist/scripts/shared/preflight/preflight.js +0 -96
  137. package/dist/scripts/shared/preflight/preflight.js.map +0 -1
  138. package/dist/scripts/shared/progress/progress.d.ts +0 -88
  139. package/dist/scripts/shared/progress/progress.d.ts.map +0 -1
  140. package/dist/scripts/shared/progress/progress.js +0 -210
  141. package/dist/scripts/shared/progress/progress.js.map +0 -1
  142. package/dist/scripts/shared/prompt/prompt.d.ts +0 -58
  143. package/dist/scripts/shared/prompt/prompt.d.ts.map +0 -1
  144. package/dist/scripts/shared/prompt/prompt.js +0 -123
  145. package/dist/scripts/shared/prompt/prompt.js.map +0 -1
  146. package/dist/scripts/shared/pull-request/bitbucket/bitbucket.d.ts +0 -82
  147. package/dist/scripts/shared/pull-request/bitbucket/bitbucket.d.ts.map +0 -1
  148. package/dist/scripts/shared/pull-request/bitbucket/bitbucket.js +0 -301
  149. package/dist/scripts/shared/pull-request/bitbucket/bitbucket.js.map +0 -1
  150. package/dist/scripts/shared/pull-request/github/github.d.ts +0 -72
  151. package/dist/scripts/shared/pull-request/github/github.d.ts.map +0 -1
  152. package/dist/scripts/shared/pull-request/github/github.js +0 -226
  153. package/dist/scripts/shared/pull-request/github/github.js.map +0 -1
  154. package/dist/scripts/shared/pull-request/gitlab/gitlab.d.ts +0 -74
  155. package/dist/scripts/shared/pull-request/gitlab/gitlab.d.ts.map +0 -1
  156. package/dist/scripts/shared/pull-request/gitlab/gitlab.js +0 -220
  157. package/dist/scripts/shared/pull-request/gitlab/gitlab.js.map +0 -1
  158. package/dist/scripts/shared/pull-request/post-pr/post-pr.d.ts +0 -31
  159. package/dist/scripts/shared/pull-request/post-pr/post-pr.d.ts.map +0 -1
  160. package/dist/scripts/shared/pull-request/post-pr/post-pr.js +0 -61
  161. package/dist/scripts/shared/pull-request/post-pr/post-pr.js.map +0 -1
  162. package/dist/scripts/shared/pull-request/pr-body/pr-body.d.ts +0 -41
  163. package/dist/scripts/shared/pull-request/pr-body/pr-body.d.ts.map +0 -1
  164. package/dist/scripts/shared/pull-request/pr-body/pr-body.js +0 -93
  165. package/dist/scripts/shared/pull-request/pr-body/pr-body.js.map +0 -1
  166. package/dist/scripts/shared/pull-request/rework-comment/rework-comment.d.ts +0 -23
  167. package/dist/scripts/shared/pull-request/rework-comment/rework-comment.d.ts.map +0 -1
  168. package/dist/scripts/shared/pull-request/rework-comment/rework-comment.js +0 -30
  169. package/dist/scripts/shared/pull-request/rework-comment/rework-comment.js.map +0 -1
  170. package/dist/scripts/shared/remote/remote.d.ts +0 -41
  171. package/dist/scripts/shared/remote/remote.d.ts.map +0 -1
  172. package/dist/scripts/shared/remote/remote.js +0 -227
  173. package/dist/scripts/shared/remote/remote.js.map +0 -1
  174. package/dist/types/board.d.ts +0 -13
  175. package/dist/types/board.d.ts.map +0 -1
  176. package/dist/types/board.js +0 -5
  177. package/dist/types/board.js.map +0 -1
  178. package/dist/types/index.d.ts +0 -4
  179. package/dist/types/index.d.ts.map +0 -1
  180. package/dist/types/index.js +0 -2
  181. package/dist/types/index.js.map +0 -1
  182. package/dist/types/remote.d.ts +0 -55
  183. package/dist/types/remote.d.ts.map +0 -1
  184. package/dist/types/remote.js +0 -5
  185. package/dist/types/remote.js.map +0 -1
  186. package/dist/utils/parse-json/parse-json.d.ts +0 -20
  187. package/dist/utils/parse-json/parse-json.d.ts.map +0 -1
  188. package/dist/utils/parse-json/parse-json.js +0 -27
  189. package/dist/utils/parse-json/parse-json.js.map +0 -1
@@ -1,452 +0,0 @@
1
- /**
2
- * Unified once orchestrator — replaces all three `clancy-once-*.sh` scripts.
3
- *
4
- * Full lifecycle: lock check → preflight → detect board → [epic completion check] →
5
- * fetch ticket → compute branches → [dry-run gate] → feasibility check →
6
- * create branch → write lock → transition In Progress → invoke Claude → push + PR →
7
- * cost log → delete lock → notify.
8
- *
9
- * All errors exit with code 0 (not 1). This is intentional — the AFK runner
10
- * detects stop conditions by parsing stdout, not exit codes.
11
- */
12
- import { resolve } from 'node:path';
13
- import { fileURLToPath } from 'node:url';
14
- import { computeTargetBranch, computeTicketBranch, } from '../../scripts/shared/branch/branch.js';
15
- import { invokeClaudeSession } from '../../scripts/shared/claude-cli/claude-cli.js';
16
- import { detectBoard } from '../../scripts/shared/env-schema/env-schema.js';
17
- import { checkFeasibility } from '../../scripts/shared/feasibility/feasibility.js';
18
- import { formatDuration } from '../../scripts/shared/format/format.js';
19
- import { checkout, currentBranch, diffAgainstBranch, ensureBranch, fetchRemoteBranch, } from '../../scripts/shared/git-ops/git-ops.js';
20
- import { sendNotification } from '../../scripts/shared/notify/notify.js';
21
- import { runPreflight } from '../../scripts/shared/preflight/preflight.js';
22
- import { appendProgress, countReworkCycles, findEntriesWithStatus, } from '../../scripts/shared/progress/progress.js';
23
- import { buildPrompt, buildReworkPrompt, } from '../../scripts/shared/prompt/prompt.js';
24
- import { bold, dim, green, red, yellow } from '../../utils/ansi/ansi.js';
25
- import { fetchEpicChildrenStatus, pingBoard, sharedEnv, transitionToStatus, validateInputs, } from './board-ops/board-ops.js';
26
- import { appendCostEntry } from './cost/cost.js';
27
- import { deliverEpicToBase, deliverViaPullRequest, ensureEpicBranch, } from './deliver/deliver.js';
28
- import { fetchTicket } from './fetch-ticket/fetch-ticket.js';
29
- import { deleteLock, deleteVerifyAttempt, isLockStale, readLock, writeLock, } from './lock/lock.js';
30
- import { detectResume, executeResume } from './resume/resume.js';
31
- import { fetchReworkFromPrReview, postReworkActions } from './rework/rework.js';
32
- // ─── Main orchestrator ───────────────────────────────────────────────────────
33
- /**
34
- * Run the once orchestrator — full ticket lifecycle.
35
- *
36
- * @param argv - Process arguments (supports `--dry-run` flag).
37
- *
38
- * @example
39
- * ```ts
40
- * await run(process.argv);
41
- * ```
42
- */
43
- export async function run(argv) {
44
- const dryRun = argv.includes('--dry-run');
45
- const skipFeasibility = argv.includes('--skip-feasibility');
46
- const startTime = Date.now();
47
- console.log(dim('┌──────────────────────────────────────┐'));
48
- console.log(dim('│') + bold(' 🤖 Clancy — once mode ') + dim('│'));
49
- console.log(dim('│') + dim(' "Let\'s roll." ') + dim('│'));
50
- console.log(dim('└──────────────────────────────────────┘'));
51
- console.log('');
52
- // ── 0. Startup lock check ──────────────────────────────────────────────
53
- // If a lock file exists from a previous run, check if it's still active
54
- // or stale (crashed session). Only proceed if we can claim the lock.
55
- let lockOwner = false;
56
- const existingLock = readLock(process.cwd());
57
- if (existingLock) {
58
- if (!isLockStale(existingLock)) {
59
- // Another active session — abort
60
- console.log(yellow(`⚠ Another Clancy session is running (PID ${existingLock.pid}, ticket ${existingLock.ticketKey}). Aborting.`));
61
- return;
62
- }
63
- // Stale lock — clean up and check for resume
64
- console.log(dim(` Stale lock found (PID ${existingLock.pid}, ticket ${existingLock.ticketKey}). Cleaning up...`));
65
- deleteLock(process.cwd());
66
- deleteVerifyAttempt(process.cwd());
67
- // Resume detection — check if the ticket branch has recoverable work
68
- try {
69
- const resumeInfo = detectResume(existingLock);
70
- if (resumeInfo) {
71
- const isAfk = process.env.CLANCY_AFK_MODE === '1';
72
- if (isAfk) {
73
- console.log(yellow(` ↻ Resuming crashed session: ${existingLock.ticketKey} on ${resumeInfo.branch}`));
74
- // Need board config for PR creation — run preflight + detect board
75
- const preflight = runPreflight(process.cwd());
76
- if (preflight.ok) {
77
- const boardResult = detectBoard(preflight.env);
78
- if (typeof boardResult !== 'string') {
79
- const resumed = await executeResume(boardResult, existingLock, resumeInfo);
80
- if (resumed) {
81
- console.log(green(` ✓ Resumed ${existingLock.ticketKey}`));
82
- // Return after resume — one ticket per invocation.
83
- // The AFK runner will start the next iteration for a fresh ticket.
84
- return;
85
- }
86
- }
87
- }
88
- }
89
- else {
90
- console.log(yellow(` Found in-progress work on ${resumeInfo.branch}.` +
91
- (resumeInfo.hasUncommitted ? ' Has uncommitted changes.' : '') +
92
- (resumeInfo.hasUnpushed ? ' Has unpushed commits.' : '')));
93
- console.log(dim(' Run in AFK mode (CLANCY_AFK_MODE=1) to auto-resume, or handle manually.'));
94
- }
95
- }
96
- }
97
- catch {
98
- // Best-effort — resume detection failure shouldn't block the run
99
- }
100
- }
101
- let originalBranch;
102
- try {
103
- // 1. Preflight
104
- const preflight = runPreflight(process.cwd());
105
- if (!preflight.ok) {
106
- console.log(preflight.error);
107
- return;
108
- }
109
- if (preflight.warning) {
110
- console.log(preflight.warning);
111
- }
112
- // 2. Detect board
113
- const boardResult = detectBoard(preflight.env);
114
- if (typeof boardResult === 'string') {
115
- console.log(boardResult);
116
- return;
117
- }
118
- const config = boardResult;
119
- // 3. Validate board-specific inputs
120
- const validationError = validateInputs(config);
121
- if (validationError) {
122
- console.log(validationError);
123
- return;
124
- }
125
- // 4. Ping board
126
- const ping = await pingBoard(config);
127
- if (!ping.ok) {
128
- console.log(ping.error);
129
- return;
130
- }
131
- console.log(green('✅ Preflight passed'));
132
- // 4a. Epic completion check — scan for epics whose children are all done
133
- // This runs at the START of each iteration to catch epics where child PRs
134
- // were merged since the last run. The check cannot run after child delivery
135
- // because the just-delivered child is still "In Review", not "Done".
136
- // Best-effort — errors are swallowed so the run continues.
137
- try {
138
- const prEntries = findEntriesWithStatus(process.cwd(), 'PR_CREATED');
139
- const reworkEntries = findEntriesWithStatus(process.cwd(), 'REWORK');
140
- const pushedEntries = findEntriesWithStatus(process.cwd(), 'PUSHED');
141
- const allEntries = [...prEntries, ...reworkEntries, ...pushedEntries];
142
- // Skip epics that already have an EPIC_PR_CREATED entry
143
- const epicDone = new Set(findEntriesWithStatus(process.cwd(), 'EPIC_PR_CREATED').map((e) => e.key));
144
- const parentKeys = new Set(allEntries
145
- .map((e) => e.parent)
146
- .filter((p) => Boolean(p))
147
- .filter((p) => !epicDone.has(p)));
148
- const baseBranch = config.env.CLANCY_BASE_BRANCH ?? 'main';
149
- for (const parentKey of parentKeys) {
150
- const status = await fetchEpicChildrenStatus(config, parentKey);
151
- if (status && status.incomplete === 0 && status.total > 0) {
152
- const epicBranch = computeTargetBranch(config.provider, baseBranch, parentKey);
153
- const epicOk = await deliverEpicToBase(config, parentKey, parentKey, // title fallback — see WARNING #4 in review
154
- epicBranch, baseBranch);
155
- if (epicOk) {
156
- console.log(green(` ✓ Epic ${parentKey} complete — PR created`));
157
- }
158
- else {
159
- console.log(yellow(`⚠ Epic PR creation failed for ${parentKey}. Create manually:\n` +
160
- ` git push origin ${epicBranch}\n` +
161
- ` Then create a PR targeting ${baseBranch}`));
162
- }
163
- }
164
- }
165
- }
166
- catch {
167
- // Best-effort — epic completion check failure shouldn't block the run
168
- }
169
- // 5. Check rework — PR-based detection, then fresh ticket
170
- let isRework = false;
171
- let prFeedback;
172
- let reworkPrNumber;
173
- let reworkDiscussionIds;
174
- let reworkReviewers;
175
- let ticket;
176
- // PR-based rework (automatic, no config needed)
177
- try {
178
- const prRework = await fetchReworkFromPrReview(config);
179
- if (prRework) {
180
- isRework = true;
181
- ticket = prRework.ticket;
182
- prFeedback = prRework.feedback;
183
- reworkPrNumber = prRework.prNumber;
184
- reworkDiscussionIds = prRework.discussionIds;
185
- reworkReviewers = prRework.reviewers;
186
- console.log(yellow(` ↻ PR rework: [${ticket.key}] ${ticket.title}`));
187
- }
188
- }
189
- catch {
190
- // Best-effort — fall through to fresh ticket
191
- }
192
- if (!ticket) {
193
- // Fresh ticket
194
- ticket = await fetchTicket(config);
195
- }
196
- if (!ticket) {
197
- console.log(dim('No tickets found. All done!'));
198
- return;
199
- }
200
- // 5a. Max rework guard
201
- if (isRework) {
202
- const parsed = parseInt(sharedEnv(config).CLANCY_MAX_REWORK ?? '3', 10);
203
- const maxRework = Number.isFinite(parsed) && parsed > 0 ? parsed : 3;
204
- const cycles = countReworkCycles(process.cwd(), ticket.key);
205
- if (cycles >= maxRework) {
206
- console.log(yellow(`⚠ ${ticket.key} has reached max rework cycles (${maxRework}) — needs human intervention`));
207
- appendProgress(process.cwd(), ticket.key, ticket.title, 'SKIPPED');
208
- return;
209
- }
210
- }
211
- // 6. Compute branches
212
- const baseBranch = config.env.CLANCY_BASE_BRANCH ?? 'main';
213
- const parent = ticket.parentInfo !== 'none' ? ticket.parentInfo : undefined;
214
- const ticketBranch = computeTicketBranch(config.provider, ticket.key);
215
- const targetBranch = computeTargetBranch(config.provider, baseBranch, parent);
216
- // 7. Dry-run gate
217
- if (dryRun) {
218
- const parentLabel = config.provider === 'github' ? 'Milestone' : 'Epic';
219
- console.log('');
220
- console.log(yellow('── Dry Run ──────────────────────────────────────'));
221
- console.log(` Ticket: ${bold(`[${ticket.key}]`)} ${ticket.title}`);
222
- if (isRework) {
223
- console.log(` Mode: Rework`);
224
- }
225
- console.log(` ${parentLabel}:${' '.repeat(14 - parentLabel.length)}${ticket.parentInfo}`);
226
- if (config.provider !== 'github') {
227
- console.log(` Blockers: ${ticket.blockers}`);
228
- }
229
- console.log(` Target branch: ${ticketBranch} → ${targetBranch}`);
230
- if (ticket.description) {
231
- console.log(` Description: ${ticket.description}`);
232
- }
233
- console.log(yellow('─────────────────────────────────────────────────'));
234
- console.log(dim(' No changes made. Remove --dry-run to run for real.'));
235
- return;
236
- }
237
- // 8. Print ticket info
238
- const parentLabel = config.provider === 'github' ? 'Milestone' : 'Epic';
239
- console.log('');
240
- console.log(`🎫 ${bold(`[${ticket.key}]`)} ${ticket.title}`);
241
- console.log(dim(` ${parentLabel}: ${ticket.parentInfo} | Branch: ${ticketBranch} → ${targetBranch}`));
242
- if (config.provider !== 'github' && ticket.blockers !== 'None') {
243
- console.log(yellow(` Blockers: ${ticket.blockers}`));
244
- }
245
- console.log('');
246
- // 9. Feasibility check (skipped for rework tickets and --skip-feasibility)
247
- if (!isRework && !skipFeasibility) {
248
- console.log(dim(' Checking feasibility...'));
249
- const feasibility = checkFeasibility({
250
- key: ticket.key,
251
- title: ticket.title,
252
- description: ticket.description,
253
- }, config.env.CLANCY_MODEL);
254
- if (!feasibility.feasible) {
255
- const reason = feasibility.reason ?? 'not implementable as code changes';
256
- console.log(yellow(`⏭️ Ticket skipped [${ticket.key}]: ${reason}`));
257
- appendProgress(process.cwd(), ticket.key, ticket.title, 'SKIPPED');
258
- return;
259
- }
260
- console.log(green(' ✓ Feasibility check passed'));
261
- }
262
- console.log('');
263
- // 10. Git: set up branches
264
- originalBranch = currentBranch();
265
- const hasParent = ticket.parentInfo !== 'none';
266
- // Single-child skip: if epic has exactly 1 child and this is it,
267
- // skip the epic branch and deliver directly to base.
268
- let skipEpicBranch = false;
269
- if (hasParent && !isRework) {
270
- const childrenStatus = await fetchEpicChildrenStatus(config, ticket.parentInfo, ticket.linearIssueId);
271
- if (childrenStatus && childrenStatus.total === 1) {
272
- skipEpicBranch = true;
273
- }
274
- }
275
- // Effective target: epic branch (parented) or base branch (standalone/single-child)
276
- const effectiveTarget = hasParent && !skipEpicBranch ? targetBranch : baseBranch;
277
- if (isRework) {
278
- // PR-flow rework: try to fetch the existing feature branch from remote
279
- if (hasParent && !skipEpicBranch) {
280
- // Ensure epic branch exists for rework targeting it
281
- const epicReady = ensureEpicBranch(targetBranch, baseBranch);
282
- if (!epicReady) {
283
- if (originalBranch)
284
- checkout(originalBranch);
285
- return;
286
- }
287
- }
288
- else {
289
- ensureBranch(effectiveTarget, baseBranch);
290
- }
291
- const fetched = fetchRemoteBranch(ticketBranch);
292
- if (fetched) {
293
- checkout(ticketBranch);
294
- }
295
- else {
296
- checkout(effectiveTarget);
297
- checkout(ticketBranch, true);
298
- }
299
- }
300
- else if (hasParent && !skipEpicBranch) {
301
- // Epic branch flow: ensure epic branch, create feature from it
302
- const epicReady = ensureEpicBranch(targetBranch, baseBranch);
303
- if (!epicReady) {
304
- if (originalBranch)
305
- checkout(originalBranch);
306
- return;
307
- }
308
- checkout(targetBranch);
309
- checkout(ticketBranch, true);
310
- }
311
- else {
312
- // Standalone or single-child: branch from base
313
- ensureBranch(baseBranch, baseBranch);
314
- checkout(baseBranch);
315
- checkout(ticketBranch, true);
316
- }
317
- // 10a. Write lock file — branch is now known
318
- try {
319
- writeLock(process.cwd(), {
320
- pid: process.pid,
321
- ticketKey: ticket.key,
322
- ticketTitle: ticket.title,
323
- ticketBranch: ticketBranch,
324
- targetBranch: effectiveTarget,
325
- parentKey: ticket.parentInfo,
326
- description: (ticket.description ?? '').slice(0, 2000),
327
- startedAt: new Date().toISOString(),
328
- });
329
- lockOwner = true;
330
- }
331
- catch {
332
- // Best-effort — continue without crash protection
333
- console.log(dim(' (warning: could not write lock file — crash recovery disabled)'));
334
- }
335
- // 11. Transition to In Progress (best-effort)
336
- const statusInProgress = config.env.CLANCY_STATUS_IN_PROGRESS;
337
- if (statusInProgress) {
338
- await transitionToStatus(config, ticket, statusInProgress);
339
- }
340
- // 12. Build prompt and invoke Claude
341
- let prompt;
342
- const tdd = config.env.CLANCY_TDD === 'true';
343
- if (isRework) {
344
- prompt = buildReworkPrompt({
345
- key: ticket.key,
346
- title: ticket.title,
347
- description: ticket.description,
348
- provider: config.provider,
349
- feedbackComments: prFeedback ?? [],
350
- previousContext: diffAgainstBranch(targetBranch),
351
- tdd,
352
- });
353
- }
354
- else {
355
- prompt = buildPrompt({
356
- provider: config.provider,
357
- key: ticket.key,
358
- title: ticket.title,
359
- description: ticket.description,
360
- parentInfo: ticket.parentInfo,
361
- blockers: config.provider !== 'github' ? ticket.blockers : undefined,
362
- tdd,
363
- });
364
- }
365
- // Set CLANCY_ONCE_ACTIVE for hooks (verification gate, etc.)
366
- process.env.CLANCY_ONCE_ACTIVE = '1';
367
- let claudeOk;
368
- try {
369
- claudeOk = invokeClaudeSession(prompt, config.env.CLANCY_MODEL);
370
- }
371
- finally {
372
- delete process.env.CLANCY_ONCE_ACTIVE;
373
- }
374
- if (!claudeOk) {
375
- console.log(yellow('⚠ Claude session exited with an error. Skipping merge.'));
376
- return;
377
- }
378
- // 13. Deliver — all paths use PR flow (targeting epic branch or base branch)
379
- const parentKey = hasParent && !skipEpicBranch ? ticket.parentInfo : undefined;
380
- if (isRework) {
381
- // PR-flow rework: push to existing branch, PR updates automatically
382
- const delivered = await deliverViaPullRequest(config, ticket, ticketBranch, effectiveTarget, startTime, true, parentKey);
383
- if (!delivered) {
384
- appendProgress(process.cwd(), ticket.key, ticket.title, 'PUSH_FAILED', undefined, parentKey);
385
- return;
386
- }
387
- // Log single REWORK entry (skipLog prevents deliverViaPullRequest from double-logging)
388
- appendProgress(process.cwd(), ticket.key, ticket.title, 'REWORK', reworkPrNumber, parentKey);
389
- // Post-rework actions (all best-effort)
390
- if (reworkPrNumber != null) {
391
- await postReworkActions(config, reworkPrNumber, prFeedback ?? [], reworkDiscussionIds, reworkReviewers);
392
- }
393
- }
394
- else {
395
- // Fresh ticket: deliver via PR (to epic branch or base branch)
396
- const delivered = await deliverViaPullRequest(config, ticket, ticketBranch, effectiveTarget, startTime, false, parentKey);
397
- if (!delivered)
398
- return;
399
- }
400
- // 13a. Cost logging — record duration + estimated tokens
401
- try {
402
- const lock = readLock(process.cwd());
403
- if (lock) {
404
- const tokenRate = Number(config.env.CLANCY_TOKEN_RATE ?? '6600');
405
- appendCostEntry(process.cwd(), ticket.key, lock.startedAt, Number.isFinite(tokenRate) && tokenRate > 0 ? tokenRate : 6600);
406
- }
407
- }
408
- catch {
409
- // Best-effort — cost logging failure shouldn't block completion
410
- }
411
- const elapsed = formatDuration(Date.now() - startTime);
412
- console.log('');
413
- console.log(green(`🏁 ${ticket.key} complete`) + dim(` (${elapsed})`));
414
- console.log(dim(' "Bake \'em away, toys."'));
415
- // 14. Send notification (best-effort)
416
- const webhook = config.env.CLANCY_NOTIFY_WEBHOOK;
417
- if (webhook) {
418
- await sendNotification(webhook, `✓ Clancy completed [${ticket.key}] ${ticket.title}`);
419
- }
420
- }
421
- catch (error) {
422
- // Unexpected errors — print and exit cleanly (exit 0 for AFK loop compat)
423
- const msg = error instanceof Error ? error.message : String(error);
424
- const elapsed = formatDuration(Date.now() - startTime);
425
- console.error('');
426
- console.error(red(`❌ Clancy stopped`) + dim(` (${elapsed})`));
427
- console.error(red(` ${msg}`));
428
- console.error(dim(' "I\'d rather let Herman go."'));
429
- // Best-effort: restore the branch the user was on before Clancy started
430
- if (originalBranch) {
431
- try {
432
- checkout(originalBranch);
433
- }
434
- catch {
435
- // Ignore — branch restore is best-effort
436
- }
437
- }
438
- }
439
- finally {
440
- // Clean up lock + verify-attempt in ALL exit paths (only if we created them)
441
- if (lockOwner) {
442
- deleteLock(process.cwd());
443
- deleteVerifyAttempt(process.cwd());
444
- }
445
- }
446
- }
447
- // Main guard — self-execute when run directly (e.g. node .clancy/clancy-once.js)
448
- if (process.argv[1] &&
449
- fileURLToPath(import.meta.url) === resolve(process.argv[1])) {
450
- run(process.argv);
451
- }
452
- //# sourceMappingURL=once.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"once.js","sourceRoot":"","sources":["../../../src/scripts/once/once.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import type { BoardConfig } from '../../../scripts/shared/env-schema/env-schema.js';
2
- import type { PrCreationResult, RemoteInfo } from '../../../types/index.js';
3
- /**
4
- * Attempt to create a PR/MR on the detected remote platform.
5
- */
6
- export declare function attemptPrCreation(config: BoardConfig, remote: RemoteInfo, ticketBranch: string, targetBranch: string, title: string, body: string): Promise<PrCreationResult | undefined>;
7
- /**
8
- * Build a manual PR/MR URL for the user to click.
9
- */
10
- export declare function buildManualPrUrl(remote: RemoteInfo, ticketBranch: string, targetBranch: string): string | undefined;
11
- //# sourceMappingURL=pr-creation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pr-creation.d.ts","sourceRoot":"","sources":["../../../../src/scripts/once/pr-creation/pr-creation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAQ7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAKrE;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAyDvC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,SAAS,CAiBpB"}
@@ -1,50 +0,0 @@
1
- import { createPullRequest as createBitbucketPr, createServerPullRequest as createBitbucketServerPr, } from '../../../scripts/shared/pull-request/bitbucket/bitbucket.js';
2
- import { createPullRequest as createGitHubPr } from '../../../scripts/shared/pull-request/github/github.js';
3
- import { createMergeRequest as createGitLabMr } from '../../../scripts/shared/pull-request/gitlab/gitlab.js';
4
- import { buildApiBaseUrl } from '../../../scripts/shared/remote/remote.js';
5
- import { sharedEnv } from '../board-ops/board-ops.js';
6
- import { resolveGitToken } from '../git-token/git-token.js';
7
- /**
8
- * Attempt to create a PR/MR on the detected remote platform.
9
- */
10
- export async function attemptPrCreation(config, remote, ticketBranch, targetBranch, title, body) {
11
- const creds = resolveGitToken(config, remote);
12
- if (!creds)
13
- return undefined;
14
- const apiBase = buildApiBaseUrl(remote, sharedEnv(config).CLANCY_GIT_API_URL);
15
- if (!apiBase)
16
- return undefined;
17
- switch (remote.host) {
18
- case 'github':
19
- return createGitHubPr(creds.token, `${remote.owner}/${remote.repo}`, ticketBranch, targetBranch, title, body, apiBase);
20
- case 'gitlab':
21
- return createGitLabMr(creds.token, apiBase, remote.projectPath, ticketBranch, targetBranch, title, body);
22
- case 'bitbucket':
23
- return createBitbucketPr(creds.username, creds.token, remote.workspace, remote.repoSlug, ticketBranch, targetBranch, title, body);
24
- case 'bitbucket-server':
25
- return createBitbucketServerPr(creds.token, apiBase, remote.projectKey, remote.repoSlug, ticketBranch, targetBranch, title, body);
26
- default:
27
- return undefined;
28
- }
29
- }
30
- /**
31
- * Build a manual PR/MR URL for the user to click.
32
- */
33
- export function buildManualPrUrl(remote, ticketBranch, targetBranch) {
34
- const encodedTicket = encodeURIComponent(ticketBranch);
35
- const encodedTarget = encodeURIComponent(targetBranch);
36
- if (remote.host === 'github') {
37
- return `https://${remote.hostname}/${remote.owner}/${remote.repo}/compare/${encodedTarget}...${encodedTicket}`;
38
- }
39
- if (remote.host === 'gitlab') {
40
- return `https://${remote.hostname}/${remote.projectPath}/-/merge_requests/new?merge_request[source_branch]=${encodedTicket}&merge_request[target_branch]=${encodedTarget}`;
41
- }
42
- if (remote.host === 'bitbucket') {
43
- return `https://${remote.hostname}/${remote.workspace}/${remote.repoSlug}/pull-requests/new?source=${encodedTicket}&dest=${encodedTarget}`;
44
- }
45
- if (remote.host === 'bitbucket-server') {
46
- return `https://${remote.hostname}/projects/${remote.projectKey}/repos/${remote.repoSlug}/pull-requests?create&sourceBranch=refs/heads/${encodedTicket}&targetBranch=refs/heads/${encodedTarget}`;
47
- }
48
- return undefined;
49
- }
50
- //# sourceMappingURL=pr-creation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pr-creation.js","sourceRoot":"","sources":["../../../../src/scripts/once/pr-creation/pr-creation.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- import type { BoardConfig } from '../../../scripts/shared/env-schema/env-schema.js';
2
- import type { LockData } from '../lock/lock.js';
3
- export type ResumeInfo = {
4
- branch: string;
5
- hasUncommitted: boolean;
6
- hasUnpushed: boolean;
7
- };
8
- /**
9
- * Check if the ticket branch from a stale lock has recoverable work.
10
- *
11
- * @param lock - The stale lock data.
12
- * @returns Resume info if the branch has work to recover, undefined otherwise.
13
- */
14
- export declare function detectResume(lock: LockData): ResumeInfo | undefined;
15
- /**
16
- * Resume a crashed session: commit uncommitted changes, push, and create a PR.
17
- *
18
- * @param config - Board configuration.
19
- * @param lock - The stale lock data.
20
- * @param resumeInfo - The resume detection result.
21
- * @returns `true` if resume succeeded.
22
- */
23
- export declare function executeResume(config: BoardConfig, lock: LockData, resumeInfo: ResumeInfo): Promise<boolean>;
24
- //# sourceMappingURL=resume.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../../../../src/scripts/once/resume/resume.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAa7E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAKhD,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAIF;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAsEnE;AAID;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,QAAQ,EACd,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,OAAO,CAAC,CAuHlB"}