@straiffi/archon 1.7.2 → 1.7.3

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 (164) hide show
  1. package/dist/client/assets/ActivityView-DTEenQas.js +1 -0
  2. package/dist/client/assets/GitHubActionsDialog-BKWHonUS.js +1 -0
  3. package/dist/client/assets/TestsDialog-cBaoffCs.js +4 -0
  4. package/dist/client/assets/{architectureDiagram-3BPJPVTR-Do9nbC8v.js → architectureDiagram-3BPJPVTR-BzzGotac.js} +1 -1
  5. package/dist/client/assets/{blockDiagram-GPEHLZMM-DGGOLHF8.js → blockDiagram-GPEHLZMM-DIcqLHKg.js} +1 -1
  6. package/dist/client/assets/{c4Diagram-AAUBKEIU-Bz7tQybs.js → c4Diagram-AAUBKEIU-Hc1Sqmhs.js} +1 -1
  7. package/dist/client/assets/channel-Cym17waa.js +1 -0
  8. package/dist/client/assets/{chunk-2J33WTMH-CJO-GmWJ.js → chunk-2J33WTMH-CWSwjsgk.js} +1 -1
  9. package/dist/client/assets/{chunk-3OPIFGDE-DPAVagpC.js → chunk-3OPIFGDE-BnX3DljN.js} +1 -1
  10. package/dist/client/assets/{chunk-5ZQYHXKU-Cof75Mu7.js → chunk-5ZQYHXKU-EyyJlI-d.js} +1 -1
  11. package/dist/client/assets/{chunk-727SXJPM-COuPqQ8_.js → chunk-727SXJPM-Ci6CfxWj.js} +1 -1
  12. package/dist/client/assets/{chunk-AQP2D5EJ-CFj5KabW.js → chunk-AQP2D5EJ-RKZNsJTm.js} +1 -1
  13. package/dist/client/assets/{chunk-CSCIHK7Q-C4M6w5cT.js → chunk-CSCIHK7Q-DBf0Euoj.js} +1 -1
  14. package/dist/client/assets/{chunk-KSCS5N6A-ByaiwVue.js → chunk-KSCS5N6A-BmLQI_2S.js} +1 -1
  15. package/dist/client/assets/{chunk-L5ZTLDWV-Cx5jeot9.js → chunk-L5ZTLDWV-DKwVAb8G.js} +1 -1
  16. package/dist/client/assets/{chunk-LZXEDZCA-DmGtztud.js → chunk-LZXEDZCA-axotKkbz.js} +2 -2
  17. package/dist/client/assets/{chunk-ND2GUHAM-i3yuspqL.js → chunk-ND2GUHAM-BBlJ4nXC.js} +1 -1
  18. package/dist/client/assets/{chunk-NZK2D7GU-CQ4E_jP4.js → chunk-NZK2D7GU-BKJGoZZt.js} +1 -1
  19. package/dist/client/assets/{chunk-O5CBEL6O-D2g4VDCd.js → chunk-O5CBEL6O-C-Ghigo1.js} +1 -1
  20. package/dist/client/assets/{chunk-WU5MYG2G-exIu-zQ2.js → chunk-WU5MYG2G-CCzVWYcd.js} +1 -1
  21. package/dist/client/assets/classDiagram-4FO5ZUOK-BcigvvIC.js +1 -0
  22. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-3AdSuE0N.js +1 -0
  23. package/dist/client/assets/{dagre-BM42HDAG-DvF75yLZ.js → dagre-BM42HDAG-rwIdPcjI.js} +1 -1
  24. package/dist/client/assets/{diagram-2AECGRRQ-DFv0HxLL.js → diagram-2AECGRRQ-DJWxOQsg.js} +1 -1
  25. package/dist/client/assets/{diagram-5GNKFQAL-C_LRir0-.js → diagram-5GNKFQAL-C-mQeFtd.js} +1 -1
  26. package/dist/client/assets/{diagram-KO2AKTUF-DGZxRDRy.js → diagram-KO2AKTUF-BAu6u4sR.js} +1 -1
  27. package/dist/client/assets/{diagram-LMA3HP47-UXt0uti4.js → diagram-LMA3HP47-U6CbvBn0.js} +1 -1
  28. package/dist/client/assets/{diagram-OG6HWLK6-CFbZS4n5.js → diagram-OG6HWLK6-DNTwFcs1.js} +1 -1
  29. package/dist/client/assets/{erDiagram-TEJ5UH35-CfAwZDdf.js → erDiagram-TEJ5UH35-DaHX6Xw5.js} +1 -1
  30. package/dist/client/assets/{flowDiagram-I6XJVG4X-Cdgi5z3n.js → flowDiagram-I6XJVG4X-B9hKqL2l.js} +1 -1
  31. package/dist/client/assets/{ganttDiagram-6RSMTGT7-DOrkFkhu.js → ganttDiagram-6RSMTGT7-BQ1HPHVO.js} +1 -1
  32. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-cEox0peD.js → gitGraphDiagram-PVQCEYII-BBRcsmMK.js} +1 -1
  33. package/dist/client/assets/index-CEMaJCPS.js +273 -0
  34. package/dist/client/assets/index-lWftq65U.css +2 -0
  35. package/dist/client/assets/{infoDiagram-5YYISTIA-gm51u2Nn.js → infoDiagram-5YYISTIA-DUoNiSGC.js} +1 -1
  36. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-CjnoOIja.js → ishikawaDiagram-YF4QCWOH-DJN1y2w8.js} +1 -1
  37. package/dist/client/assets/{journeyDiagram-JHISSGLW-Dlg4DsiO.js → journeyDiagram-JHISSGLW-BxLLMT70.js} +1 -1
  38. package/dist/client/assets/{kanban-definition-UN3LZRKU-BU0XZaSd.js → kanban-definition-UN3LZRKU-BdCPistJ.js} +1 -1
  39. package/dist/client/assets/{line-Bert22-_.js → line-4mIgXsZd.js} +1 -1
  40. package/dist/client/assets/{mermaid-parser.core-BvQSGDmL.js → mermaid-parser.core-Pu1QGWJ-.js} +1 -1
  41. package/dist/client/assets/{mermaid.core--qSAHJRj.js → mermaid.core-DnH9DrgZ.js} +3 -3
  42. package/dist/client/assets/{mindmap-definition-RKZ34NQL-BgFIvWWD.js → mindmap-definition-RKZ34NQL-DqE4ba3C.js} +1 -1
  43. package/dist/client/assets/{pieDiagram-4H26LBE5-DGcbXD0M.js → pieDiagram-4H26LBE5-Crjy9ejf.js} +1 -1
  44. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-ClkBUeia.js → quadrantDiagram-W4KKPZXB-BUSZ2VB7.js} +1 -1
  45. package/dist/client/assets/{requirementDiagram-4Y6WPE33-B8CwGToU.js → requirementDiagram-4Y6WPE33-CBhFKEoV.js} +1 -1
  46. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-DTk3jL6B.js → sankeyDiagram-5OEKKPKP-CgdbY41v.js} +1 -1
  47. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-BQVrcnKf.js → sequenceDiagram-3UESZ5HK-hkp_H7AE.js} +1 -1
  48. package/dist/client/assets/{stateDiagram-AJRCARHV-DD4yMZPB.js → stateDiagram-AJRCARHV-C6x45RWp.js} +1 -1
  49. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-DVzPjRPN.js +1 -0
  50. package/dist/client/assets/{timeline-definition-PNZ67QCA-BnCBVqcd.js → timeline-definition-PNZ67QCA-CjnZWttQ.js} +1 -1
  51. package/dist/client/assets/{vennDiagram-CIIHVFJN-BDmLMNXS.js → vennDiagram-CIIHVFJN-DU5ZyYju.js} +1 -1
  52. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-DSLuQiEv.js → wardleyDiagram-YWT4CUSO-CaCEnCB0.js} +1 -1
  53. package/dist/client/assets/{xychartDiagram-2RQKCTM6-DAq_LA4r.js → xychartDiagram-2RQKCTM6-Ce3xa37U.js} +1 -1
  54. package/dist/client/index.html +2 -2
  55. package/dist/server/db.js +471 -39
  56. package/dist/server/db.js.map +1 -1
  57. package/dist/server/index.js +1256 -214
  58. package/dist/server/index.js.map +1 -1
  59. package/dist/server/lib/agent.js +228 -71
  60. package/dist/server/lib/agent.js.map +1 -1
  61. package/dist/server/lib/agentRuns.js +205 -38
  62. package/dist/server/lib/agentRuns.js.map +1 -1
  63. package/dist/server/lib/automationProgression.js +464 -0
  64. package/dist/server/lib/automationProgression.js.map +1 -0
  65. package/dist/server/lib/automationReconciliation.js +498 -0
  66. package/dist/server/lib/automationReconciliation.js.map +1 -0
  67. package/dist/server/lib/automationStageDetails.js +232 -0
  68. package/dist/server/lib/automationStageDetails.js.map +1 -0
  69. package/dist/server/lib/buildOpenQuestionOperations.js +223 -0
  70. package/dist/server/lib/buildOpenQuestionOperations.js.map +1 -0
  71. package/dist/server/lib/buildOpenQuestions.js +44 -0
  72. package/dist/server/lib/buildOpenQuestions.js.map +1 -1
  73. package/dist/server/lib/buildSequences.js +130 -46
  74. package/dist/server/lib/buildSequences.js.map +1 -1
  75. package/dist/server/lib/bundleReviewOperations.js +82 -9
  76. package/dist/server/lib/bundleReviewOperations.js.map +1 -1
  77. package/dist/server/lib/chatOperations.js +31 -0
  78. package/dist/server/lib/chatOperations.js.map +1 -1
  79. package/dist/server/lib/executionReconciliation.js +518 -0
  80. package/dist/server/lib/executionReconciliation.js.map +1 -0
  81. package/dist/server/lib/executionRunRetention.js +141 -0
  82. package/dist/server/lib/executionRunRetention.js.map +1 -0
  83. package/dist/server/lib/executionRuns.js +1264 -0
  84. package/dist/server/lib/executionRuns.js.map +1 -0
  85. package/dist/server/lib/git.js +385 -6
  86. package/dist/server/lib/git.js.map +1 -1
  87. package/dist/server/lib/integrations/github.js +43 -0
  88. package/dist/server/lib/integrations/github.js.map +1 -1
  89. package/dist/server/lib/integrations/githubActions.js +1 -0
  90. package/dist/server/lib/integrations/githubActions.js.map +1 -1
  91. package/dist/server/lib/integrations/githubActionsSessions.js +337 -114
  92. package/dist/server/lib/integrations/githubActionsSessions.js.map +1 -1
  93. package/dist/server/lib/projectMemorySelections.js +7 -3
  94. package/dist/server/lib/projectMemorySelections.js.map +1 -1
  95. package/dist/server/lib/shutdown.js +2 -2
  96. package/dist/server/lib/shutdown.js.map +1 -1
  97. package/dist/server/lib/specArtifact.js +3 -0
  98. package/dist/server/lib/specArtifact.js.map +1 -1
  99. package/dist/server/lib/specFormatting.js +1 -1
  100. package/dist/server/lib/specFormatting.js.map +1 -1
  101. package/dist/server/lib/specOperations.js +31 -0
  102. package/dist/server/lib/specOperations.js.map +1 -1
  103. package/dist/server/lib/specReviewContext.js +44 -14
  104. package/dist/server/lib/specReviewContext.js.map +1 -1
  105. package/dist/server/lib/specReviewDraft.js +3 -2
  106. package/dist/server/lib/specReviewDraft.js.map +1 -1
  107. package/dist/server/lib/specReviewOperations.js +44 -7
  108. package/dist/server/lib/specReviewOperations.js.map +1 -1
  109. package/dist/server/lib/specReviewValidation.js +217 -0
  110. package/dist/server/lib/specReviewValidation.js.map +1 -0
  111. package/dist/server/lib/specReviews.js +30 -2
  112. package/dist/server/lib/specReviews.js.map +1 -1
  113. package/dist/server/lib/specs.js +18 -1
  114. package/dist/server/lib/specs.js.map +1 -1
  115. package/dist/server/lib/stageSnapshots.js +197 -0
  116. package/dist/server/lib/stageSnapshots.js.map +1 -0
  117. package/dist/server/lib/testSessions.js +164 -19
  118. package/dist/server/lib/testSessions.js.map +1 -1
  119. package/dist/server/lib/ticketAutomation.js +80 -4
  120. package/dist/server/lib/ticketAutomation.js.map +1 -1
  121. package/dist/server/lib/ticketAutomationCommit.js +466 -91
  122. package/dist/server/lib/ticketAutomationCommit.js.map +1 -1
  123. package/dist/server/lib/ticketFollowUpOperations.js +214 -20
  124. package/dist/server/lib/ticketFollowUpOperations.js.map +1 -1
  125. package/dist/server/lib/ticketRunOperations.js +51 -6
  126. package/dist/server/lib/ticketRunOperations.js.map +1 -1
  127. package/dist/server/lib/ticketUndo.js +77 -168
  128. package/dist/server/lib/ticketUndo.js.map +1 -1
  129. package/dist/server/lib/ticketWorkflowOperations.js +132 -28
  130. package/dist/server/lib/ticketWorkflowOperations.js.map +1 -1
  131. package/dist/server/lib/tickets.js +41 -27
  132. package/dist/server/lib/tickets.js.map +1 -1
  133. package/dist/server/lib/transcriptRuns.js +3 -3
  134. package/dist/server/lib/transcriptRuns.js.map +1 -1
  135. package/dist/server/lib/turnExecutionErrors.js +12 -0
  136. package/dist/server/lib/turnExecutionErrors.js.map +1 -0
  137. package/dist/server/lib/types.js +57 -1
  138. package/dist/server/lib/types.js.map +1 -1
  139. package/dist/server/workers/build.js +596 -184
  140. package/dist/server/workers/build.js.map +1 -1
  141. package/dist/server/workers/chat.js +261 -130
  142. package/dist/server/workers/chat.js.map +1 -1
  143. package/dist/server/workers/followUp.js +716 -203
  144. package/dist/server/workers/followUp.js.map +1 -1
  145. package/dist/server/workers/plan.js +527 -188
  146. package/dist/server/workers/plan.js.map +1 -1
  147. package/dist/server/workers/planFollowUp.js +231 -69
  148. package/dist/server/workers/planFollowUp.js.map +1 -1
  149. package/dist/server/workers/review.js +790 -297
  150. package/dist/server/workers/review.js.map +1 -1
  151. package/dist/server/workers/specReview.js +211 -45
  152. package/dist/server/workers/specReview.js.map +1 -1
  153. package/dist/server/workers/specSession.js +425 -252
  154. package/dist/server/workers/specSession.js.map +1 -1
  155. package/package.json +1 -1
  156. package/dist/client/assets/GitHubActionsDialog-DAD5REmY.js +0 -1
  157. package/dist/client/assets/TestsDialog-B5NVrroq.js +0 -4
  158. package/dist/client/assets/TicketChangesModal-By-_gTGd.js +0 -1
  159. package/dist/client/assets/channel-Dd5Len0X.js +0 -1
  160. package/dist/client/assets/classDiagram-4FO5ZUOK-B7KUg6r8.js +0 -1
  161. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-CQm-z5c4.js +0 -1
  162. package/dist/client/assets/index-BHq6-Eir.js +0 -270
  163. package/dist/client/assets/index-BxTc5qQT.css +0 -2
  164. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-C8yO6POT.js +0 -1
@@ -1,11 +1,12 @@
1
1
  import { randomUUID } from 'crypto';
2
- import { cpSync, existsSync, lstatSync, mkdirSync, readlinkSync, readdirSync, readFileSync, rmSync, statSync, symlinkSync, writeFileSync } from 'fs';
3
- import { cp as cpAsync, mkdir as mkdirAsync, readdir as readdirAsync, writeFile as writeFileAsync, rm as rmAsync } from 'fs/promises';
4
- import { dirname, join, relative } from 'path';
2
+ import { existsSync, mkdirSync, readdirSync, rmSync } from 'fs';
3
+ import { mkdir as mkdirAsync } from 'fs/promises';
4
+ import { join } from 'path';
5
5
  import db from '../db.js';
6
6
  import { getGitDiffFiles, getGitUnifiedDiff, resolveWorktreePath } from './git.js';
7
7
  import { getEffectiveProject } from './projects.js';
8
8
  import { resolveArchonStageSnapshotDir } from './runtimePaths.js';
9
+ import { captureStageSnapshot, captureStageSnapshotAsync, isStageSnapshotAvailable, isStageSnapshotValid, restoreStageSnapshot } from './stageSnapshots.js';
9
10
  import { assignTicketLaneOrder, getTicket, resolveTicketBranch } from './tickets.js';
10
11
  const STAGE_ROOT = resolveArchonStageSnapshotDir();
11
12
  const listStageChangesByBundleAndStageStatement = db.prepare(`
@@ -80,6 +81,10 @@ const updateStageChangeStatement = db.prepare(`
80
81
  WHERE id = ?
81
82
  `);
82
83
  const deleteStageChangeStatement = db.prepare('DELETE FROM ticket_stage_changes WHERE ticket_id = ? AND stage = ?');
84
+ const listStageSnapshotRowsStatement = db.prepare(`
85
+ SELECT ticket_id, stage, baseline_snapshot_path
86
+ FROM ticket_stage_changes
87
+ `);
83
88
  const parseDiffStats = (value) => {
84
89
  if (!value) {
85
90
  return null;
@@ -114,162 +119,6 @@ const summarizeFiles = (files) => {
114
119
  };
115
120
  };
116
121
  const getStageSnapshotRoot = (ticketId, stage) => join(STAGE_ROOT, ticketId, stage);
117
- const clearDirectory = (path) => {
118
- rmSync(path, { recursive: true, force: true });
119
- mkdirSync(path, { recursive: true });
120
- };
121
- const clearDirectoryContents = (path) => {
122
- mkdirSync(path, { recursive: true });
123
- const entries = readdirSync(path, { withFileTypes: true });
124
- for (const entry of entries) {
125
- if (entry.name === '.git') {
126
- continue;
127
- }
128
- rmSync(join(path, entry.name), { recursive: true, force: true });
129
- }
130
- };
131
- const ensureParentDirectory = (path) => {
132
- mkdirSync(dirname(path), { recursive: true });
133
- };
134
- const copyTree = (sourceRoot, targetRoot) => {
135
- clearDirectory(targetRoot);
136
- if (!existsSync(sourceRoot)) {
137
- return;
138
- }
139
- cpSync(sourceRoot, targetRoot, { recursive: true, force: true });
140
- };
141
- const removeExtraneousEntries = (targetRoot, snapshotRoot) => {
142
- if (!existsSync(targetRoot)) {
143
- return;
144
- }
145
- if (!existsSync(snapshotRoot)) {
146
- clearDirectory(targetRoot);
147
- return;
148
- }
149
- const entries = readdirSync(targetRoot, { withFileTypes: true });
150
- for (const entry of entries) {
151
- const targetPath = join(targetRoot, entry.name);
152
- const snapshotPath = join(snapshotRoot, entry.name);
153
- if (!existsSync(snapshotPath)) {
154
- rmSync(targetPath, { recursive: true, force: true });
155
- continue;
156
- }
157
- if (entry.isDirectory()) {
158
- removeExtraneousEntries(targetPath, snapshotPath);
159
- }
160
- }
161
- };
162
- const createManifestPath = (snapshotRoot) => join(snapshotRoot, '.archon-stage-manifest.json');
163
- const createSnapshotManifest = (snapshotRoot) => {
164
- const files = [];
165
- const walk = (currentRoot) => {
166
- if (!existsSync(currentRoot)) {
167
- return;
168
- }
169
- const entries = readdirSync(currentRoot, { withFileTypes: true });
170
- for (const entry of entries) {
171
- if (entry.name === '.archon-stage-manifest.json') {
172
- continue;
173
- }
174
- const absolutePath = join(currentRoot, entry.name);
175
- const relativePath = relative(snapshotRoot, absolutePath);
176
- files.push(relativePath);
177
- if (entry.isDirectory()) {
178
- walk(absolutePath);
179
- }
180
- }
181
- };
182
- walk(snapshotRoot);
183
- writeFileSync(createManifestPath(snapshotRoot), JSON.stringify({ files }, null, 2), 'utf8');
184
- };
185
- const clearDirectoryAsync = async (path) => {
186
- await rmAsync(path, { recursive: true, force: true });
187
- await mkdirAsync(path, { recursive: true });
188
- };
189
- const copyTreeAsync = async (sourceRoot, targetRoot) => {
190
- await clearDirectoryAsync(targetRoot);
191
- if (!existsSync(sourceRoot)) {
192
- return;
193
- }
194
- await cpAsync(sourceRoot, targetRoot, { recursive: true, force: true });
195
- };
196
- const createSnapshotManifestAsync = async (snapshotRoot) => {
197
- const files = [];
198
- const walk = async (currentRoot) => {
199
- if (!existsSync(currentRoot)) {
200
- return;
201
- }
202
- const entries = await readdirAsync(currentRoot, { withFileTypes: true });
203
- for (const entry of entries) {
204
- if (entry.name === '.archon-stage-manifest.json') {
205
- continue;
206
- }
207
- const absolutePath = join(currentRoot, entry.name);
208
- const relativePath = relative(snapshotRoot, absolutePath);
209
- files.push(relativePath);
210
- if (entry.isDirectory()) {
211
- await walk(absolutePath);
212
- }
213
- }
214
- };
215
- await walk(snapshotRoot);
216
- await writeFileAsync(createManifestPath(snapshotRoot), JSON.stringify({ files }, null, 2), 'utf8');
217
- };
218
- const readSnapshotManifest = (snapshotRoot) => {
219
- const manifestPath = createManifestPath(snapshotRoot);
220
- if (!existsSync(manifestPath)) {
221
- return [];
222
- }
223
- try {
224
- const parsed = JSON.parse(readFileSync(manifestPath, 'utf8'));
225
- return Array.isArray(parsed.files) ? parsed.files : [];
226
- }
227
- catch {
228
- return [];
229
- }
230
- };
231
- const restoreSnapshot = (snapshotRoot, targetRoot) => {
232
- mkdirSync(targetRoot, { recursive: true });
233
- clearDirectoryContents(targetRoot);
234
- const manifestFiles = readSnapshotManifest(snapshotRoot);
235
- if (manifestFiles.length > 0) {
236
- for (const relativePath of manifestFiles) {
237
- const snapshotPath = join(snapshotRoot, relativePath);
238
- const targetPath = join(targetRoot, relativePath);
239
- if (!existsSync(snapshotPath)) {
240
- rmSync(targetPath, { recursive: true, force: true });
241
- continue;
242
- }
243
- ensureParentDirectory(targetPath);
244
- const snapshotStat = lstatSync(snapshotPath);
245
- if (snapshotStat.isDirectory()) {
246
- mkdirSync(targetPath, { recursive: true });
247
- }
248
- else if (snapshotStat.isSymbolicLink()) {
249
- symlinkSync(readlinkSync(snapshotPath), targetPath);
250
- }
251
- else {
252
- cpSync(snapshotPath, targetPath, { force: true });
253
- }
254
- }
255
- removeExtraneousEntries(targetRoot, snapshotRoot);
256
- rmSync(join(targetRoot, '.archon-stage-manifest.json'), { force: true });
257
- return;
258
- }
259
- if (existsSync(snapshotRoot)) {
260
- const entries = readdirSync(snapshotRoot, { withFileTypes: true });
261
- for (const entry of entries) {
262
- if (entry.name === '.archon-stage-manifest.json') {
263
- continue;
264
- }
265
- const snapshotPath = join(snapshotRoot, entry.name);
266
- const targetPath = join(targetRoot, entry.name);
267
- cpSync(snapshotPath, targetPath, { recursive: true, force: true });
268
- }
269
- }
270
- removeExtraneousEntries(targetRoot, snapshotRoot);
271
- rmSync(join(targetRoot, '.archon-stage-manifest.json'), { force: true });
272
- };
273
122
  const serializeFiles = (files) => JSON.stringify(files);
274
123
  const serializeStats = (stats) => JSON.stringify(stats);
275
124
  const toStageChange = (row) => row ?? null;
@@ -293,8 +142,7 @@ const captureBaselineSnapshot = (ticket, stage) => {
293
142
  const baselinePath = getBaselineSnapshotPath(ticket.id, stage);
294
143
  const worktreePath = ticket.bundle?.kind === 'project_root' ? project.repo_path : resolveWorktreePath(branch, project);
295
144
  mkdirSync(snapshotRoot, { recursive: true });
296
- copyTree(worktreePath, baselinePath);
297
- createSnapshotManifest(baselinePath);
145
+ captureStageSnapshot(worktreePath, baselinePath);
298
146
  return baselinePath;
299
147
  };
300
148
  const captureBaselineSnapshotAsync = async (ticket, stage) => {
@@ -307,8 +155,7 @@ const captureBaselineSnapshotAsync = async (ticket, stage) => {
307
155
  const baselinePath = getBaselineSnapshotPath(ticket.id, stage);
308
156
  const worktreePath = ticket.bundle?.kind === 'project_root' ? project.repo_path : resolveWorktreePath(branch, project);
309
157
  await mkdirAsync(snapshotRoot, { recursive: true });
310
- await copyTreeAsync(worktreePath, baselinePath);
311
- await createSnapshotManifestAsync(baselinePath);
158
+ await captureStageSnapshotAsync(worktreePath, baselinePath);
312
159
  return baselinePath;
313
160
  };
314
161
  const writeStageChange = ({ ticket, stage, baselineSnapshotPath, successRevision, }) => {
@@ -351,6 +198,55 @@ export const getActiveBundleStageChangeHead = (ticket, stage) => {
351
198
  const deleteStageSnapshotFiles = (ticketId, stage) => {
352
199
  rmSync(getStageSnapshotRoot(ticketId, stage), { recursive: true, force: true });
353
200
  };
201
+ export const clearTicketStageSnapshots = (ticketId) => {
202
+ deleteStageChangeStatement.run(ticketId, 'build');
203
+ deleteStageChangeStatement.run(ticketId, 'review');
204
+ rmSync(join(STAGE_ROOT, ticketId), { recursive: true, force: true });
205
+ };
206
+ export const reconcileStageSnapshots = () => {
207
+ const rows = listStageSnapshotRowsStatement.all();
208
+ const retainedStages = new Set();
209
+ let removedRecords = 0;
210
+ let removedDirectories = 0;
211
+ for (const row of rows) {
212
+ const stage = row.stage === 'build' || row.stage === 'review' ? row.stage : null;
213
+ if (stage && row.baseline_snapshot_path && isStageSnapshotAvailable(row.baseline_snapshot_path)) {
214
+ retainedStages.add(`${row.ticket_id}:${stage}`);
215
+ continue;
216
+ }
217
+ if (stage) {
218
+ deleteStageChangeStatement.run(row.ticket_id, stage);
219
+ deleteStageSnapshotFiles(row.ticket_id, stage);
220
+ }
221
+ else {
222
+ db.prepare('DELETE FROM ticket_stage_changes WHERE ticket_id = ? AND stage = ?').run(row.ticket_id, row.stage);
223
+ }
224
+ removedRecords += 1;
225
+ }
226
+ if (!existsSync(STAGE_ROOT)) {
227
+ return { removedRecords, removedDirectories };
228
+ }
229
+ for (const ticketEntry of readdirSync(STAGE_ROOT, { withFileTypes: true })) {
230
+ const ticketPath = join(STAGE_ROOT, ticketEntry.name);
231
+ if (!ticketEntry.isDirectory()) {
232
+ continue;
233
+ }
234
+ for (const stageEntry of readdirSync(ticketPath, { withFileTypes: true })) {
235
+ if (stageEntry.name !== 'build' && stageEntry.name !== 'review') {
236
+ continue;
237
+ }
238
+ const stageKey = `${ticketEntry.name}:${stageEntry.name}`;
239
+ if (!retainedStages.has(stageKey)) {
240
+ rmSync(join(ticketPath, stageEntry.name), { recursive: true, force: true });
241
+ removedDirectories += 1;
242
+ }
243
+ }
244
+ if (readdirSync(ticketPath).length === 0) {
245
+ rmSync(ticketPath, { recursive: true, force: true });
246
+ }
247
+ }
248
+ return { removedRecords, removedDirectories };
249
+ };
354
250
  const getSharedWorktreeBuildReason = (ticket) => {
355
251
  const rows = listSiblingTicketsStatement.all(ticket.project_id, ticket.worktree_bundle_id, ticket.id);
356
252
  const hasSiblingWithUnfinishedBuild = rows.some(row => row.state === 'build' && row.agent_status !== 'done');
@@ -370,7 +266,7 @@ const getReviewUndoReason = (ticket, stageChange) => {
370
266
  if (ticket.state !== 'review') {
371
267
  return null;
372
268
  }
373
- if (!stageChange || (stageChange.success_revision ?? 0) < 1 || !stageChange.baseline_snapshot_path) {
269
+ if (!stageChange || (stageChange.success_revision ?? 0) < 1 || !stageChange.baseline_snapshot_path || !isStageSnapshotAvailable(stageChange.baseline_snapshot_path)) {
374
270
  return 'No saved review changes are available to undo';
375
271
  }
376
272
  const latest = getActiveBundleHead(ticket);
@@ -393,7 +289,7 @@ const getBuildUndoReason = (ticket, stageChange) => {
393
289
  if (ticket.state !== 'build') {
394
290
  return null;
395
291
  }
396
- if (!stageChange || (stageChange.success_revision ?? 0) < 1 || !stageChange.baseline_snapshot_path) {
292
+ if (!stageChange || (stageChange.success_revision ?? 0) < 1 || !stageChange.baseline_snapshot_path || !isStageSnapshotAvailable(stageChange.baseline_snapshot_path)) {
397
293
  return 'No saved build changes are available to undo';
398
294
  }
399
295
  const reviewChange = readStageChange(ticket.id, 'review');
@@ -461,7 +357,7 @@ export const captureStageBaseline = async (ticketId, stage) => {
461
357
  return;
462
358
  }
463
359
  const existing = readStageChange(ticket.id, stage);
464
- if (existing?.baseline_snapshot_path && existsSync(existing.baseline_snapshot_path)) {
360
+ if (existing?.baseline_snapshot_path && isStageSnapshotValid(existing.baseline_snapshot_path)) {
465
361
  return;
466
362
  }
467
363
  const baselineSnapshotPath = await captureBaselineSnapshotAsync(ticket, stage);
@@ -481,7 +377,11 @@ export const captureStageSuccess = (ticketId, stage) => {
481
377
  return;
482
378
  }
483
379
  const current = readStageChange(ticket.id, stage);
484
- const baselineSnapshotPath = current?.baseline_snapshot_path ?? captureBaselineSnapshot(ticket, stage);
380
+ let baselineSnapshotPath = current?.baseline_snapshot_path ?? null;
381
+ if (baselineSnapshotPath && !isStageSnapshotValid(baselineSnapshotPath)) {
382
+ baselineSnapshotPath = null;
383
+ }
384
+ baselineSnapshotPath ??= captureBaselineSnapshot(ticket, stage);
485
385
  if (!baselineSnapshotPath) {
486
386
  return;
487
387
  }
@@ -515,7 +415,16 @@ export const undoTicketStage = (ticketId) => {
515
415
  return { ok: false, status: 400, error: 'Worktree not ready yet' };
516
416
  }
517
417
  const targetRoot = ticket.bundle?.kind === 'project_root' ? project.repo_path : resolveWorktreePath(branch, project);
518
- restoreSnapshot(stageChange.baseline_snapshot_path, targetRoot);
418
+ try {
419
+ restoreStageSnapshot(stageChange.baseline_snapshot_path, targetRoot);
420
+ }
421
+ catch (error) {
422
+ return {
423
+ ok: false,
424
+ status: 409,
425
+ error: error instanceof Error ? error.message : 'Saved undo state is missing or invalid for this ticket',
426
+ };
427
+ }
519
428
  if (undo.stage === 'review') {
520
429
  const laneOrder = assignTicketLaneOrder({ ...ticket, state: 'build' });
521
430
  db.prepare('UPDATE tickets SET state = ?, agent_status = ?, agent_log = NULL, agent_message_id = NULL, previous_agent_log = NULL, previous_agent_message_id = NULL, streaming_response = NULL, build_completed_at = ?, lane_order = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?').run('build', 'done', stageChange.baseline_build_completed_at, laneOrder ?? null, ticket.id);
@@ -1 +1 @@
1
- {"version":3,"file":"ticketUndo.js","sourceRoot":"","sources":["../../../server/lib/ticketUndo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ticketUndo.js","sourceRoot":"","sources":["../../../server/lib/ticketUndo.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import db from '../db.js';
2
2
  import config from './config.js';
3
- import { enqueueBundledBuild, hasActiveSequenceForBundle } from './buildSequences.js';
3
+ import { compensateBuildSequenceAcceptance, enqueueBundledBuild, hasActiveSequenceForBundle } from './buildSequences.js';
4
4
  import { prepareTicketForBuild } from './buildFlow.js';
5
5
  import { isBundleBuildBlocked } from './bundleActivity.js';
6
6
  import { getEffectiveProject } from './projects.js';
@@ -11,6 +11,7 @@ import { markExternalIssueTracked } from './trackedExternalIssues.js';
11
11
  import { clearCachedAssignedIssues } from './integrations/assignedIssuesCache.js';
12
12
  import { startBuild } from '../workers/build.js';
13
13
  import { startReview } from '../workers/review.js';
14
+ import { getAutomationProgression, waitAutomationProgression } from './automationProgression.js';
14
15
  const VALID_TICKET_STATES = ['plan', 'build', 'review'];
15
16
  const getBundleBuildBlockerError = (kind) => {
16
17
  if (kind === 'review') {
@@ -53,7 +54,33 @@ export const transitionTicketState = ({ ticketId, requestedState, requestedProje
53
54
  if (existing.project_id && existing.worktree_bundle_id) {
54
55
  const bundleState = getBundleAutomationState(existing.project_id, existing.worktree_bundle_id);
55
56
  if (bundleState && !bundleState.automation_paused_reason && bundleState.fix_loop_active === 1) {
56
- recordAutomationPause(existing.project_id, existing.worktree_bundle_id, 'review', 'manual transition');
57
+ if (bundleState.automation_progression_run_id) {
58
+ try {
59
+ const progression = getAutomationProgression(existing.project_id, existing.worktree_bundle_id);
60
+ if (!progression || progression.id !== bundleState.automation_progression_run_id) {
61
+ return { ok: false, status: 409, error: 'Automation progression ownership is invalid' };
62
+ }
63
+ waitAutomationProgression({
64
+ projectId: existing.project_id,
65
+ bundleId: existing.worktree_bundle_id,
66
+ progressionRunId: progression.id,
67
+ pauseCode: 'review',
68
+ pauseReason: 'manual transition',
69
+ reasonCode: 'manual_transition',
70
+ pausedStageRunId: null,
71
+ broadcaster,
72
+ });
73
+ }
74
+ catch (error) {
75
+ return { ok: false, status: 409, error: error instanceof Error ? error.message : String(error) };
76
+ }
77
+ }
78
+ else {
79
+ recordAutomationPause(existing.project_id, existing.worktree_bundle_id, 'review', 'manual transition', {
80
+ reasonCode: 'manual_transition',
81
+ pausedStageRunId: null,
82
+ });
83
+ }
57
84
  const pausedTicket = getTicket(existing.id);
58
85
  if (pausedTicket) {
59
86
  broadcaster.emit('ticket:updated', pausedTicket);
@@ -68,21 +95,74 @@ export const transitionTicketState = ({ ticketId, requestedState, requestedProje
68
95
  if (buildBlocker) {
69
96
  return { ok: false, status: 409, error: buildBlocker.error, details: { blocker_ticket_id: buildBlocker.blocker_ticket_id } };
70
97
  }
71
- const buildTransition = prepareTicketForBuild(existing.id);
72
- if (!buildTransition.ok) {
98
+ const buildValidation = prepareTicketForBuild(existing.id, { updateState: false });
99
+ if (!buildValidation.ok) {
100
+ return {
101
+ ok: false,
102
+ status: buildValidation.status,
103
+ error: buildValidation.error,
104
+ ...(buildValidation.blockers ? { details: { blockers: buildValidation.blockers } } : {}),
105
+ };
106
+ }
107
+ const shouldStartBuild = shouldStartBundleBuildNow(existing);
108
+ if (!shouldStartBuild && existing.project_id && existing.worktree_bundle_id) {
109
+ const queued = db.transaction(() => {
110
+ const buildTransition = prepareTicketForBuild(existing.id);
111
+ if (!buildTransition.ok) {
112
+ throw new Error(buildTransition.error);
113
+ }
114
+ enqueueBundledBuild({
115
+ ticketId: buildTransition.ticket.id,
116
+ projectId: existing.project_id,
117
+ worktreeBundleId: existing.worktree_bundle_id,
118
+ activate: false,
119
+ });
120
+ return buildTransition.ticket;
121
+ })();
122
+ broadcaster.emit('ticket:updated', queued);
123
+ return { ok: true, status: 200, value: queued };
124
+ }
125
+ const acceptBuild = () => {
126
+ const buildTransition = prepareTicketForBuild(existing.id);
127
+ if (!buildTransition.ok) {
128
+ throw new Error(buildTransition.error);
129
+ }
130
+ let sequenceId = null;
131
+ if (buildTransition.ticket.project_id && buildTransition.ticket.worktree_bundle_id) {
132
+ sequenceId = enqueueBundledBuild({
133
+ ticketId: buildTransition.ticket.id,
134
+ projectId: buildTransition.ticket.project_id,
135
+ worktreeBundleId: buildTransition.ticket.worktree_bundle_id,
136
+ activate: true,
137
+ }).sequenceId;
138
+ }
139
+ return {
140
+ ticket: buildTransition.ticket,
141
+ sequenceId,
142
+ ...(sequenceId ? { compensate: () => compensateBuildSequenceAcceptance(sequenceId, [buildTransition.ticket.id]) } : {}),
143
+ };
144
+ };
145
+ const scheduling = startBuild(existing, broadcaster, { accept: acceptBuild });
146
+ if (scheduling === undefined) {
147
+ acceptBuild();
148
+ }
149
+ if (scheduling && !scheduling.accepted) {
73
150
  return {
74
151
  ok: false,
75
- status: buildTransition.status,
76
- error: buildTransition.error,
77
- ...(buildTransition.blockers ? { details: { blockers: buildTransition.blockers } } : {}),
152
+ status: scheduling.reason === 'queue_failed' ? 503 : 409,
153
+ error: scheduling.error,
78
154
  };
79
155
  }
80
- broadcaster.emit('ticket:updated', buildTransition.ticket);
81
- if (buildTransition.ticket.project_id && buildTransition.ticket.external_source) {
82
- markExternalIssueTracked(buildTransition.ticket.project_id, buildTransition.ticket.external_source);
83
- clearCachedAssignedIssues(buildTransition.ticket.project_id);
156
+ const buildTicket = getTicket(existing.id);
157
+ if (!buildTicket) {
158
+ return { ok: false, status: 404, error: 'Not found' };
84
159
  }
85
- const originSpecSessionId = buildTransition.ticket.origin_spec_session_id ?? null;
160
+ broadcaster.emit('ticket:updated', buildTicket);
161
+ if (buildTicket.project_id && buildTicket.external_source) {
162
+ markExternalIssueTracked(buildTicket.project_id, buildTicket.external_source);
163
+ clearCachedAssignedIssues(buildTicket.project_id);
164
+ }
165
+ const originSpecSessionId = buildTicket.origin_spec_session_id ?? null;
86
166
  if (originSpecSessionId) {
87
167
  const result = db.prepare('UPDATE spec_sessions SET has_completed_work = 1, updated_at = CURRENT_TIMESTAMP WHERE id = ? AND has_completed_work = 0').run(originSpecSessionId);
88
168
  if (result.changes > 0) {
@@ -92,21 +172,10 @@ export const transitionTicketState = ({ ticketId, requestedState, requestedProje
92
172
  }
93
173
  }
94
174
  }
95
- let shouldStartBuild = true;
96
- if (buildTransition.ticket.project_id && buildTransition.ticket.worktree_bundle_id) {
97
- const queuedBuild = enqueueBundledBuild({
98
- ticketId: buildTransition.ticket.id,
99
- projectId: buildTransition.ticket.project_id,
100
- worktreeBundleId: buildTransition.ticket.worktree_bundle_id,
101
- activate: shouldStartBundleBuildNow(buildTransition.ticket),
102
- });
103
- shouldStartBuild = queuedBuild.shouldStartNow;
104
- }
105
175
  return {
106
176
  ok: true,
107
177
  status: 200,
108
- value: buildTransition.ticket,
109
- ...(shouldStartBuild ? { afterResponse: () => startBuild(buildTransition.ticket, broadcaster) } : {}),
178
+ value: buildTicket,
110
179
  };
111
180
  }
112
181
  if (ticketState === 'review' && (existing.state !== 'build' || (existing.agent_status !== 'done' && existing.agent_status !== 'stopped'))) {
@@ -130,12 +199,47 @@ export const transitionTicketState = ({ ticketId, requestedState, requestedProje
130
199
  const nextAgentStatus = ticketState === 'review' ? null : existing.agent_status;
131
200
  const nextAgentLog = existing.agent_log;
132
201
  const nextSessionId = existing.session_id;
133
- db.prepare('UPDATE tickets SET state = ?, tool = ?, agent_status = ?, agent_log = ?, session_id = ?, streaming_response = NULL, lane_order = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?').run(ticketState, resolveTicketTool(existing, config.tool ?? 'opencode'), nextAgentStatus, nextAgentLog, nextSessionId, assignTicketLaneOrder({ ...existing, state: ticketState }) ?? null, ticketId);
134
- const ticket = autoParkTicketIfStale(ticketId);
135
- if (ticketState === 'review' && ticket) {
136
- startReview(ticket, broadcaster);
202
+ if (ticketState === 'review') {
203
+ const snapshot = {
204
+ state: existing.state,
205
+ tool: existing.tool,
206
+ agent_status: existing.agent_status,
207
+ agent_log: existing.agent_log,
208
+ session_id: existing.session_id,
209
+ streaming_response: existing.streaming_response,
210
+ lane_order: existing.lane_order ?? null,
211
+ };
212
+ const scheduling = startReview(existing, broadcaster, {
213
+ accept: () => {
214
+ db.prepare('UPDATE tickets SET state = ?, tool = ?, agent_status = ?, agent_log = ?, session_id = ?, streaming_response = NULL, lane_order = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?').run(ticketState, resolveTicketTool(existing, config.tool ?? 'opencode'), nextAgentStatus, nextAgentLog, nextSessionId, assignTicketLaneOrder({ ...existing, state: ticketState }) ?? null, ticketId);
215
+ const acceptedTicket = autoParkTicketIfStale(ticketId);
216
+ if (!acceptedTicket) {
217
+ throw new Error('Unable to update ticket for Review');
218
+ }
219
+ return {
220
+ ticket: acceptedTicket,
221
+ compensate: () => {
222
+ db.prepare(`
223
+ UPDATE tickets
224
+ SET state = ?, tool = ?, agent_status = ?, agent_log = ?, session_id = ?,
225
+ streaming_response = ?, lane_order = ?, updated_at = CURRENT_TIMESTAMP
226
+ WHERE id = ?
227
+ `).run(snapshot.state, snapshot.tool, snapshot.agent_status, snapshot.agent_log, snapshot.session_id, snapshot.streaming_response, snapshot.lane_order, ticketId);
228
+ },
229
+ };
230
+ },
231
+ });
232
+ if (scheduling && typeof scheduling === 'object' && !scheduling.accepted) {
233
+ return {
234
+ ok: false,
235
+ status: scheduling.reason === 'queue_failed' ? 503 : 409,
236
+ error: scheduling.error,
237
+ };
238
+ }
137
239
  return { ok: true, status: 200, value: getTicket(ticketId) };
138
240
  }
241
+ db.prepare('UPDATE tickets SET state = ?, tool = ?, agent_status = ?, agent_log = ?, session_id = ?, streaming_response = NULL, lane_order = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?').run(ticketState, resolveTicketTool(existing, config.tool ?? 'opencode'), nextAgentStatus, nextAgentLog, nextSessionId, assignTicketLaneOrder({ ...existing, state: ticketState }) ?? null, ticketId);
242
+ const ticket = autoParkTicketIfStale(ticketId);
139
243
  broadcaster.emit('ticket:updated', ticket);
140
244
  return { ok: true, status: 200, value: ticket };
141
245
  };