@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.
- package/dist/client/assets/ActivityView-DTEenQas.js +1 -0
- package/dist/client/assets/GitHubActionsDialog-BKWHonUS.js +1 -0
- package/dist/client/assets/TestsDialog-cBaoffCs.js +4 -0
- package/dist/client/assets/{architectureDiagram-3BPJPVTR-Do9nbC8v.js → architectureDiagram-3BPJPVTR-BzzGotac.js} +1 -1
- package/dist/client/assets/{blockDiagram-GPEHLZMM-DGGOLHF8.js → blockDiagram-GPEHLZMM-DIcqLHKg.js} +1 -1
- package/dist/client/assets/{c4Diagram-AAUBKEIU-Bz7tQybs.js → c4Diagram-AAUBKEIU-Hc1Sqmhs.js} +1 -1
- package/dist/client/assets/channel-Cym17waa.js +1 -0
- package/dist/client/assets/{chunk-2J33WTMH-CJO-GmWJ.js → chunk-2J33WTMH-CWSwjsgk.js} +1 -1
- package/dist/client/assets/{chunk-3OPIFGDE-DPAVagpC.js → chunk-3OPIFGDE-BnX3DljN.js} +1 -1
- package/dist/client/assets/{chunk-5ZQYHXKU-Cof75Mu7.js → chunk-5ZQYHXKU-EyyJlI-d.js} +1 -1
- package/dist/client/assets/{chunk-727SXJPM-COuPqQ8_.js → chunk-727SXJPM-Ci6CfxWj.js} +1 -1
- package/dist/client/assets/{chunk-AQP2D5EJ-CFj5KabW.js → chunk-AQP2D5EJ-RKZNsJTm.js} +1 -1
- package/dist/client/assets/{chunk-CSCIHK7Q-C4M6w5cT.js → chunk-CSCIHK7Q-DBf0Euoj.js} +1 -1
- package/dist/client/assets/{chunk-KSCS5N6A-ByaiwVue.js → chunk-KSCS5N6A-BmLQI_2S.js} +1 -1
- package/dist/client/assets/{chunk-L5ZTLDWV-Cx5jeot9.js → chunk-L5ZTLDWV-DKwVAb8G.js} +1 -1
- package/dist/client/assets/{chunk-LZXEDZCA-DmGtztud.js → chunk-LZXEDZCA-axotKkbz.js} +2 -2
- package/dist/client/assets/{chunk-ND2GUHAM-i3yuspqL.js → chunk-ND2GUHAM-BBlJ4nXC.js} +1 -1
- package/dist/client/assets/{chunk-NZK2D7GU-CQ4E_jP4.js → chunk-NZK2D7GU-BKJGoZZt.js} +1 -1
- package/dist/client/assets/{chunk-O5CBEL6O-D2g4VDCd.js → chunk-O5CBEL6O-C-Ghigo1.js} +1 -1
- package/dist/client/assets/{chunk-WU5MYG2G-exIu-zQ2.js → chunk-WU5MYG2G-CCzVWYcd.js} +1 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-BcigvvIC.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-3AdSuE0N.js +1 -0
- package/dist/client/assets/{dagre-BM42HDAG-DvF75yLZ.js → dagre-BM42HDAG-rwIdPcjI.js} +1 -1
- package/dist/client/assets/{diagram-2AECGRRQ-DFv0HxLL.js → diagram-2AECGRRQ-DJWxOQsg.js} +1 -1
- package/dist/client/assets/{diagram-5GNKFQAL-C_LRir0-.js → diagram-5GNKFQAL-C-mQeFtd.js} +1 -1
- package/dist/client/assets/{diagram-KO2AKTUF-DGZxRDRy.js → diagram-KO2AKTUF-BAu6u4sR.js} +1 -1
- package/dist/client/assets/{diagram-LMA3HP47-UXt0uti4.js → diagram-LMA3HP47-U6CbvBn0.js} +1 -1
- package/dist/client/assets/{diagram-OG6HWLK6-CFbZS4n5.js → diagram-OG6HWLK6-DNTwFcs1.js} +1 -1
- package/dist/client/assets/{erDiagram-TEJ5UH35-CfAwZDdf.js → erDiagram-TEJ5UH35-DaHX6Xw5.js} +1 -1
- package/dist/client/assets/{flowDiagram-I6XJVG4X-Cdgi5z3n.js → flowDiagram-I6XJVG4X-B9hKqL2l.js} +1 -1
- package/dist/client/assets/{ganttDiagram-6RSMTGT7-DOrkFkhu.js → ganttDiagram-6RSMTGT7-BQ1HPHVO.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PVQCEYII-cEox0peD.js → gitGraphDiagram-PVQCEYII-BBRcsmMK.js} +1 -1
- package/dist/client/assets/index-CEMaJCPS.js +273 -0
- package/dist/client/assets/index-lWftq65U.css +2 -0
- package/dist/client/assets/{infoDiagram-5YYISTIA-gm51u2Nn.js → infoDiagram-5YYISTIA-DUoNiSGC.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-CjnoOIja.js → ishikawaDiagram-YF4QCWOH-DJN1y2w8.js} +1 -1
- package/dist/client/assets/{journeyDiagram-JHISSGLW-Dlg4DsiO.js → journeyDiagram-JHISSGLW-BxLLMT70.js} +1 -1
- package/dist/client/assets/{kanban-definition-UN3LZRKU-BU0XZaSd.js → kanban-definition-UN3LZRKU-BdCPistJ.js} +1 -1
- package/dist/client/assets/{line-Bert22-_.js → line-4mIgXsZd.js} +1 -1
- package/dist/client/assets/{mermaid-parser.core-BvQSGDmL.js → mermaid-parser.core-Pu1QGWJ-.js} +1 -1
- package/dist/client/assets/{mermaid.core--qSAHJRj.js → mermaid.core-DnH9DrgZ.js} +3 -3
- package/dist/client/assets/{mindmap-definition-RKZ34NQL-BgFIvWWD.js → mindmap-definition-RKZ34NQL-DqE4ba3C.js} +1 -1
- package/dist/client/assets/{pieDiagram-4H26LBE5-DGcbXD0M.js → pieDiagram-4H26LBE5-Crjy9ejf.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-ClkBUeia.js → quadrantDiagram-W4KKPZXB-BUSZ2VB7.js} +1 -1
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-B8CwGToU.js → requirementDiagram-4Y6WPE33-CBhFKEoV.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-5OEKKPKP-DTk3jL6B.js → sankeyDiagram-5OEKKPKP-CgdbY41v.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-3UESZ5HK-BQVrcnKf.js → sequenceDiagram-3UESZ5HK-hkp_H7AE.js} +1 -1
- package/dist/client/assets/{stateDiagram-AJRCARHV-DD4yMZPB.js → stateDiagram-AJRCARHV-C6x45RWp.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-DVzPjRPN.js +1 -0
- package/dist/client/assets/{timeline-definition-PNZ67QCA-BnCBVqcd.js → timeline-definition-PNZ67QCA-CjnZWttQ.js} +1 -1
- package/dist/client/assets/{vennDiagram-CIIHVFJN-BDmLMNXS.js → vennDiagram-CIIHVFJN-DU5ZyYju.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-DSLuQiEv.js → wardleyDiagram-YWT4CUSO-CaCEnCB0.js} +1 -1
- package/dist/client/assets/{xychartDiagram-2RQKCTM6-DAq_LA4r.js → xychartDiagram-2RQKCTM6-Ce3xa37U.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/server/db.js +471 -39
- package/dist/server/db.js.map +1 -1
- package/dist/server/index.js +1256 -214
- package/dist/server/index.js.map +1 -1
- package/dist/server/lib/agent.js +228 -71
- package/dist/server/lib/agent.js.map +1 -1
- package/dist/server/lib/agentRuns.js +205 -38
- package/dist/server/lib/agentRuns.js.map +1 -1
- package/dist/server/lib/automationProgression.js +464 -0
- package/dist/server/lib/automationProgression.js.map +1 -0
- package/dist/server/lib/automationReconciliation.js +498 -0
- package/dist/server/lib/automationReconciliation.js.map +1 -0
- package/dist/server/lib/automationStageDetails.js +232 -0
- package/dist/server/lib/automationStageDetails.js.map +1 -0
- package/dist/server/lib/buildOpenQuestionOperations.js +223 -0
- package/dist/server/lib/buildOpenQuestionOperations.js.map +1 -0
- package/dist/server/lib/buildOpenQuestions.js +44 -0
- package/dist/server/lib/buildOpenQuestions.js.map +1 -1
- package/dist/server/lib/buildSequences.js +130 -46
- package/dist/server/lib/buildSequences.js.map +1 -1
- package/dist/server/lib/bundleReviewOperations.js +82 -9
- package/dist/server/lib/bundleReviewOperations.js.map +1 -1
- package/dist/server/lib/chatOperations.js +31 -0
- package/dist/server/lib/chatOperations.js.map +1 -1
- package/dist/server/lib/executionReconciliation.js +518 -0
- package/dist/server/lib/executionReconciliation.js.map +1 -0
- package/dist/server/lib/executionRunRetention.js +141 -0
- package/dist/server/lib/executionRunRetention.js.map +1 -0
- package/dist/server/lib/executionRuns.js +1264 -0
- package/dist/server/lib/executionRuns.js.map +1 -0
- package/dist/server/lib/git.js +385 -6
- package/dist/server/lib/git.js.map +1 -1
- package/dist/server/lib/integrations/github.js +43 -0
- package/dist/server/lib/integrations/github.js.map +1 -1
- package/dist/server/lib/integrations/githubActions.js +1 -0
- package/dist/server/lib/integrations/githubActions.js.map +1 -1
- package/dist/server/lib/integrations/githubActionsSessions.js +337 -114
- package/dist/server/lib/integrations/githubActionsSessions.js.map +1 -1
- package/dist/server/lib/projectMemorySelections.js +7 -3
- package/dist/server/lib/projectMemorySelections.js.map +1 -1
- package/dist/server/lib/shutdown.js +2 -2
- package/dist/server/lib/shutdown.js.map +1 -1
- package/dist/server/lib/specArtifact.js +3 -0
- package/dist/server/lib/specArtifact.js.map +1 -1
- package/dist/server/lib/specFormatting.js +1 -1
- package/dist/server/lib/specFormatting.js.map +1 -1
- package/dist/server/lib/specOperations.js +31 -0
- package/dist/server/lib/specOperations.js.map +1 -1
- package/dist/server/lib/specReviewContext.js +44 -14
- package/dist/server/lib/specReviewContext.js.map +1 -1
- package/dist/server/lib/specReviewDraft.js +3 -2
- package/dist/server/lib/specReviewDraft.js.map +1 -1
- package/dist/server/lib/specReviewOperations.js +44 -7
- package/dist/server/lib/specReviewOperations.js.map +1 -1
- package/dist/server/lib/specReviewValidation.js +217 -0
- package/dist/server/lib/specReviewValidation.js.map +1 -0
- package/dist/server/lib/specReviews.js +30 -2
- package/dist/server/lib/specReviews.js.map +1 -1
- package/dist/server/lib/specs.js +18 -1
- package/dist/server/lib/specs.js.map +1 -1
- package/dist/server/lib/stageSnapshots.js +197 -0
- package/dist/server/lib/stageSnapshots.js.map +1 -0
- package/dist/server/lib/testSessions.js +164 -19
- package/dist/server/lib/testSessions.js.map +1 -1
- package/dist/server/lib/ticketAutomation.js +80 -4
- package/dist/server/lib/ticketAutomation.js.map +1 -1
- package/dist/server/lib/ticketAutomationCommit.js +466 -91
- package/dist/server/lib/ticketAutomationCommit.js.map +1 -1
- package/dist/server/lib/ticketFollowUpOperations.js +214 -20
- package/dist/server/lib/ticketFollowUpOperations.js.map +1 -1
- package/dist/server/lib/ticketRunOperations.js +51 -6
- package/dist/server/lib/ticketRunOperations.js.map +1 -1
- package/dist/server/lib/ticketUndo.js +77 -168
- package/dist/server/lib/ticketUndo.js.map +1 -1
- package/dist/server/lib/ticketWorkflowOperations.js +132 -28
- package/dist/server/lib/ticketWorkflowOperations.js.map +1 -1
- package/dist/server/lib/tickets.js +41 -27
- package/dist/server/lib/tickets.js.map +1 -1
- package/dist/server/lib/transcriptRuns.js +3 -3
- package/dist/server/lib/transcriptRuns.js.map +1 -1
- package/dist/server/lib/turnExecutionErrors.js +12 -0
- package/dist/server/lib/turnExecutionErrors.js.map +1 -0
- package/dist/server/lib/types.js +57 -1
- package/dist/server/lib/types.js.map +1 -1
- package/dist/server/workers/build.js +596 -184
- package/dist/server/workers/build.js.map +1 -1
- package/dist/server/workers/chat.js +261 -130
- package/dist/server/workers/chat.js.map +1 -1
- package/dist/server/workers/followUp.js +716 -203
- package/dist/server/workers/followUp.js.map +1 -1
- package/dist/server/workers/plan.js +527 -188
- package/dist/server/workers/plan.js.map +1 -1
- package/dist/server/workers/planFollowUp.js +231 -69
- package/dist/server/workers/planFollowUp.js.map +1 -1
- package/dist/server/workers/review.js +790 -297
- package/dist/server/workers/review.js.map +1 -1
- package/dist/server/workers/specReview.js +211 -45
- package/dist/server/workers/specReview.js.map +1 -1
- package/dist/server/workers/specSession.js +425 -252
- package/dist/server/workers/specSession.js.map +1 -1
- package/package.json +1 -1
- package/dist/client/assets/GitHubActionsDialog-DAD5REmY.js +0 -1
- package/dist/client/assets/TestsDialog-B5NVrroq.js +0 -4
- package/dist/client/assets/TicketChangesModal-By-_gTGd.js +0 -1
- package/dist/client/assets/channel-Dd5Len0X.js +0 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-B7KUg6r8.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-CQm-z5c4.js +0 -1
- package/dist/client/assets/index-BHq6-Eir.js +0 -270
- package/dist/client/assets/index-BxTc5qQT.css +0 -2
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-C8yO6POT.js +0 -1
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { randomUUID } from 'crypto';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
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
|
-
|
|
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
|
|
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 &&
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
72
|
-
if (!
|
|
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:
|
|
76
|
-
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
|
-
|
|
81
|
-
if (
|
|
82
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
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
|
};
|