@straiffi/archon 1.7.1 → 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-CJgwCv5O.js → architectureDiagram-3BPJPVTR-BzzGotac.js} +1 -1
- package/dist/client/assets/{blockDiagram-GPEHLZMM--xjes8FA.js → blockDiagram-GPEHLZMM-DIcqLHKg.js} +1 -1
- package/dist/client/assets/{c4Diagram-AAUBKEIU-DHnp82NG.js → c4Diagram-AAUBKEIU-Hc1Sqmhs.js} +1 -1
- package/dist/client/assets/channel-Cym17waa.js +1 -0
- package/dist/client/assets/{chunk-2J33WTMH-DAOyJCKy.js → chunk-2J33WTMH-CWSwjsgk.js} +1 -1
- package/dist/client/assets/{chunk-3OPIFGDE-C9YI_tk4.js → chunk-3OPIFGDE-BnX3DljN.js} +1 -1
- package/dist/client/assets/{chunk-5ZQYHXKU-BW9khkin.js → chunk-5ZQYHXKU-EyyJlI-d.js} +1 -1
- package/dist/client/assets/{chunk-727SXJPM-DL4t5Hpi.js → chunk-727SXJPM-Ci6CfxWj.js} +1 -1
- package/dist/client/assets/{chunk-AQP2D5EJ-C4VMKa_O.js → chunk-AQP2D5EJ-RKZNsJTm.js} +1 -1
- package/dist/client/assets/{chunk-CSCIHK7Q-DHP7zrZK.js → chunk-CSCIHK7Q-DBf0Euoj.js} +1 -1
- package/dist/client/assets/{chunk-KSCS5N6A-CqZWek3t.js → chunk-KSCS5N6A-BmLQI_2S.js} +1 -1
- package/dist/client/assets/{chunk-L5ZTLDWV-D3q55pCI.js → chunk-L5ZTLDWV-DKwVAb8G.js} +1 -1
- package/dist/client/assets/{chunk-LZXEDZCA-UDY_Lo6v.js → chunk-LZXEDZCA-axotKkbz.js} +2 -2
- package/dist/client/assets/{chunk-ND2GUHAM-ZCiOxkYV.js → chunk-ND2GUHAM-BBlJ4nXC.js} +1 -1
- package/dist/client/assets/{chunk-NZK2D7GU-CuryoBtd.js → chunk-NZK2D7GU-BKJGoZZt.js} +1 -1
- package/dist/client/assets/{chunk-O5CBEL6O-PnPsz2TB.js → chunk-O5CBEL6O-C-Ghigo1.js} +1 -1
- package/dist/client/assets/{chunk-WU5MYG2G-BzOopX-U.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-5LBwQ83I.js → dagre-BM42HDAG-rwIdPcjI.js} +1 -1
- package/dist/client/assets/{diagram-2AECGRRQ-_4pckiGR.js → diagram-2AECGRRQ-DJWxOQsg.js} +1 -1
- package/dist/client/assets/{diagram-5GNKFQAL-CqElv5rJ.js → diagram-5GNKFQAL-C-mQeFtd.js} +1 -1
- package/dist/client/assets/{diagram-KO2AKTUF-DKv4zS4F.js → diagram-KO2AKTUF-BAu6u4sR.js} +1 -1
- package/dist/client/assets/{diagram-LMA3HP47-iLmTH4UP.js → diagram-LMA3HP47-U6CbvBn0.js} +1 -1
- package/dist/client/assets/{diagram-OG6HWLK6-DpFYIa0o.js → diagram-OG6HWLK6-DNTwFcs1.js} +1 -1
- package/dist/client/assets/{erDiagram-TEJ5UH35-DnfbvbKs.js → erDiagram-TEJ5UH35-DaHX6Xw5.js} +1 -1
- package/dist/client/assets/{flowDiagram-I6XJVG4X-C2MN70Qv.js → flowDiagram-I6XJVG4X-B9hKqL2l.js} +1 -1
- package/dist/client/assets/{ganttDiagram-6RSMTGT7-yonpliOJ.js → ganttDiagram-6RSMTGT7-BQ1HPHVO.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PVQCEYII-CaKDWx7y.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-82-8njnx.js → infoDiagram-5YYISTIA-DUoNiSGC.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-BMiyLWwK.js → ishikawaDiagram-YF4QCWOH-DJN1y2w8.js} +1 -1
- package/dist/client/assets/{journeyDiagram-JHISSGLW-C1qBnR37.js → journeyDiagram-JHISSGLW-BxLLMT70.js} +1 -1
- package/dist/client/assets/{kanban-definition-UN3LZRKU-zByEuCzn.js → kanban-definition-UN3LZRKU-BdCPistJ.js} +1 -1
- package/dist/client/assets/{line-EpLqyzw7.js → line-4mIgXsZd.js} +1 -1
- package/dist/client/assets/{mermaid-parser.core-o124REPN.js → mermaid-parser.core-Pu1QGWJ-.js} +1 -1
- package/dist/client/assets/{mermaid.core-DgiAn2-k.js → mermaid.core-DnH9DrgZ.js} +3 -3
- package/dist/client/assets/{mindmap-definition-RKZ34NQL-UK6V0Bxq.js → mindmap-definition-RKZ34NQL-DqE4ba3C.js} +1 -1
- package/dist/client/assets/{pieDiagram-4H26LBE5-B2s9oGFl.js → pieDiagram-4H26LBE5-Crjy9ejf.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-d5H7-zcc.js → quadrantDiagram-W4KKPZXB-BUSZ2VB7.js} +1 -1
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-DlwN9Vcv.js → requirementDiagram-4Y6WPE33-CBhFKEoV.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-5OEKKPKP-9dGyAxu5.js → sankeyDiagram-5OEKKPKP-CgdbY41v.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-3UESZ5HK-DKwRjEym.js → sequenceDiagram-3UESZ5HK-hkp_H7AE.js} +1 -1
- package/dist/client/assets/{stateDiagram-AJRCARHV-D_6cuqsX.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-ChqD4j8I.js → timeline-definition-PNZ67QCA-CjnZWttQ.js} +1 -1
- package/dist/client/assets/{vennDiagram-CIIHVFJN-CSAZk0IW.js → vennDiagram-CIIHVFJN-DU5ZyYju.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-BUE6IF4q.js → wardleyDiagram-YWT4CUSO-CaCEnCB0.js} +1 -1
- package/dist/client/assets/{xychartDiagram-2RQKCTM6-MOkC53m_.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 +1267 -213
- package/dist/server/index.js.map +1 -1
- package/dist/server/lib/agent.js +281 -76
- 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 +52 -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/ticketOpenQuestions.js +30 -14
- package/dist/server/lib/ticketOpenQuestions.js.map +1 -1
- package/dist/server/lib/ticketRunOperations.js +75 -7
- 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 +46 -29
- 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 +720 -195
- 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 +796 -239
- 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-BrUq-zO1.js +0 -1
- package/dist/client/assets/TestsDialog-D9N4GD77.js +0 -4
- package/dist/client/assets/TicketChangesModal-bYHJSO6d.js +0 -1
- package/dist/client/assets/channel-B4kCvLCt.js +0 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-C-eRRNNj.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-B3vxoc73.js +0 -1
- package/dist/client/assets/index-9q1GXkUw.js +0 -270
- package/dist/client/assets/index-BxTc5qQT.css +0 -2
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-BkMKz90T.js +0 -1
|
@@ -1,61 +1,142 @@
|
|
|
1
1
|
import { randomUUID } from 'crypto';
|
|
2
2
|
import db from '../db.js';
|
|
3
|
+
import { truncateUtf8 } from './transcriptRuns.js';
|
|
4
|
+
export const AGENT_RUN_FAILURE_MESSAGE_LIMIT_BYTES = 16 * 1024;
|
|
5
|
+
const agentRunColumns = `
|
|
6
|
+
id, execution_run_id, parent_type, parent_id, run_index, label, role, agent_status,
|
|
7
|
+
agent_log, streaming_response, response_text, failure_message, session_id,
|
|
8
|
+
completed_at, created_at, updated_at
|
|
9
|
+
`;
|
|
3
10
|
const createAgentRunStatement = db.prepare(`
|
|
4
11
|
INSERT INTO agent_runs (
|
|
5
|
-
id,
|
|
6
|
-
parent_type,
|
|
7
|
-
parent_id,
|
|
8
|
-
run_index,
|
|
9
|
-
label,
|
|
10
|
-
role,
|
|
11
|
-
agent_status
|
|
12
|
+
id, execution_run_id, parent_type, parent_id, run_index, label, role, agent_status
|
|
12
13
|
)
|
|
13
|
-
VALUES (?, ?, ?, ?, ?, ?,
|
|
14
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, 'running')
|
|
14
15
|
`);
|
|
15
|
-
const
|
|
16
|
+
const updateRunningAgentRunStatement = db.prepare(`
|
|
16
17
|
UPDATE agent_runs
|
|
17
|
-
SET
|
|
18
|
-
agent_log = ?,
|
|
18
|
+
SET agent_log = ?,
|
|
19
19
|
streaming_response = ?,
|
|
20
20
|
updated_at = CURRENT_TIMESTAMP
|
|
21
|
-
WHERE id = ?
|
|
21
|
+
WHERE id = ? AND agent_status = 'running' AND completed_at IS NULL
|
|
22
22
|
`);
|
|
23
|
-
const
|
|
23
|
+
const terminalizeAgentRunStatement = db.prepare(`
|
|
24
24
|
UPDATE agent_runs
|
|
25
|
-
SET
|
|
25
|
+
SET agent_status = ?,
|
|
26
|
+
agent_log = COALESCE(?, agent_log),
|
|
27
|
+
response_text = COALESCE(?, response_text, streaming_response),
|
|
28
|
+
streaming_response = NULL,
|
|
29
|
+
failure_message = ?,
|
|
30
|
+
completed_at = CURRENT_TIMESTAMP,
|
|
26
31
|
updated_at = CURRENT_TIMESTAMP
|
|
27
|
-
WHERE id = ?
|
|
32
|
+
WHERE id = ? AND agent_status = 'running' AND completed_at IS NULL
|
|
28
33
|
`);
|
|
29
|
-
const
|
|
34
|
+
const updateAgentRunSessionIdStatement = db.prepare(`
|
|
30
35
|
UPDATE agent_runs
|
|
31
|
-
SET
|
|
32
|
-
updated_at = CURRENT_TIMESTAMP
|
|
36
|
+
SET session_id = ?, updated_at = CURRENT_TIMESTAMP
|
|
33
37
|
WHERE id = ?
|
|
34
38
|
`);
|
|
35
|
-
const
|
|
39
|
+
const updateAgentRunLabelStatement = db.prepare(`
|
|
36
40
|
UPDATE agent_runs
|
|
37
|
-
SET
|
|
38
|
-
response_text = ?,
|
|
39
|
-
streaming_response = NULL,
|
|
40
|
-
updated_at = CURRENT_TIMESTAMP
|
|
41
|
+
SET label = ?, updated_at = CURRENT_TIMESTAMP
|
|
41
42
|
WHERE id = ?
|
|
42
43
|
`);
|
|
43
44
|
const clearAgentRunsForParentStatement = db.prepare(`
|
|
44
45
|
DELETE FROM agent_runs
|
|
45
|
-
WHERE parent_type = ? AND parent_id = ?
|
|
46
|
+
WHERE parent_type = ? AND parent_id = ? AND execution_run_id IS NULL
|
|
46
47
|
`);
|
|
47
48
|
const listAgentRunsForParentStatement = db.prepare(`
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
WITH latest_active_execution AS (
|
|
50
|
+
SELECT run.id
|
|
51
|
+
FROM execution_runs run
|
|
52
|
+
WHERE run.status IN ('queued', 'running', 'waiting')
|
|
53
|
+
AND (
|
|
54
|
+
EXISTS (
|
|
55
|
+
SELECT 1
|
|
56
|
+
FROM agent_runs detail
|
|
57
|
+
WHERE detail.execution_run_id = run.id
|
|
58
|
+
AND detail.parent_type = ?
|
|
59
|
+
AND detail.parent_id = ?
|
|
60
|
+
)
|
|
61
|
+
OR EXISTS (
|
|
62
|
+
SELECT 1
|
|
63
|
+
FROM execution_run_links link
|
|
64
|
+
WHERE link.execution_run_id = run.id
|
|
65
|
+
AND link.relationship = 'primary'
|
|
66
|
+
AND link.entity_type = ?
|
|
67
|
+
AND link.entity_id = ?
|
|
68
|
+
)
|
|
69
|
+
)
|
|
70
|
+
ORDER BY run.created_at DESC, run.id DESC
|
|
71
|
+
LIMIT 1
|
|
72
|
+
)
|
|
73
|
+
SELECT ${agentRunColumns}
|
|
51
74
|
FROM agent_runs
|
|
52
75
|
WHERE parent_type = ? AND parent_id = ?
|
|
76
|
+
AND (
|
|
77
|
+
execution_run_id = (SELECT id FROM latest_active_execution)
|
|
78
|
+
OR (
|
|
79
|
+
NOT EXISTS (SELECT 1 FROM latest_active_execution)
|
|
80
|
+
AND execution_run_id IS NULL
|
|
81
|
+
AND agent_status = 'running'
|
|
82
|
+
AND completed_at IS NULL
|
|
83
|
+
)
|
|
84
|
+
)
|
|
53
85
|
ORDER BY run_index ASC, created_at ASC, id ASC
|
|
54
86
|
`);
|
|
55
|
-
const
|
|
87
|
+
const listAgentRunsForExecutionRunStatement = db.prepare(`
|
|
88
|
+
SELECT ${agentRunColumns}
|
|
89
|
+
FROM agent_runs
|
|
90
|
+
WHERE execution_run_id = ?
|
|
91
|
+
ORDER BY run_index ASC, created_at ASC, id ASC
|
|
92
|
+
`);
|
|
93
|
+
const getAgentRunStatement = db.prepare(`
|
|
94
|
+
SELECT ${agentRunColumns}
|
|
95
|
+
FROM agent_runs
|
|
96
|
+
WHERE id = ?
|
|
97
|
+
`);
|
|
98
|
+
const getExecutionRunStatement = db.prepare(`
|
|
99
|
+
SELECT
|
|
100
|
+
run.id,
|
|
101
|
+
run.project_id,
|
|
102
|
+
run.kind,
|
|
103
|
+
primary_link.entity_type AS primary_entity_type,
|
|
104
|
+
primary_link.entity_id AS primary_entity_id
|
|
105
|
+
FROM execution_runs run
|
|
106
|
+
LEFT JOIN execution_run_links primary_link
|
|
107
|
+
ON primary_link.execution_run_id = run.id
|
|
108
|
+
AND primary_link.relationship = 'primary'
|
|
109
|
+
WHERE run.id = ?
|
|
110
|
+
`);
|
|
111
|
+
const getNextExecutionRunIndexStatement = db.prepare(`
|
|
56
112
|
SELECT COALESCE(MAX(run_index), -1) + 1 AS next_index
|
|
57
113
|
FROM agent_runs
|
|
58
|
-
WHERE
|
|
114
|
+
WHERE execution_run_id = ?
|
|
115
|
+
`);
|
|
116
|
+
const getNextLegacyAgentRunIndexStatement = db.prepare(`
|
|
117
|
+
SELECT COALESCE(MAX(run_index), -1) + 1 AS next_index
|
|
118
|
+
FROM agent_runs
|
|
119
|
+
WHERE execution_run_id IS NULL AND parent_type = ? AND parent_id = ?
|
|
120
|
+
`);
|
|
121
|
+
const terminalizeExecutionRunStatement = db.prepare(`
|
|
122
|
+
UPDATE agent_runs
|
|
123
|
+
SET agent_status = ?,
|
|
124
|
+
response_text = COALESCE(response_text, streaming_response),
|
|
125
|
+
streaming_response = NULL,
|
|
126
|
+
failure_message = ?,
|
|
127
|
+
completed_at = CURRENT_TIMESTAMP,
|
|
128
|
+
updated_at = CURRENT_TIMESTAMP
|
|
129
|
+
WHERE execution_run_id = ? AND agent_status = 'running' AND completed_at IS NULL
|
|
130
|
+
`);
|
|
131
|
+
const terminalizeLegacyAgentRunsStatement = db.prepare(`
|
|
132
|
+
UPDATE agent_runs
|
|
133
|
+
SET agent_status = ?,
|
|
134
|
+
response_text = COALESCE(response_text, streaming_response),
|
|
135
|
+
streaming_response = NULL,
|
|
136
|
+
failure_message = ?,
|
|
137
|
+
completed_at = CURRENT_TIMESTAMP,
|
|
138
|
+
updated_at = CURRENT_TIMESTAMP
|
|
139
|
+
WHERE execution_run_id IS NULL AND agent_status = 'running' AND completed_at IS NULL
|
|
59
140
|
`);
|
|
60
141
|
const serializeAgentRun = (row) => {
|
|
61
142
|
if (!row) {
|
|
@@ -63,6 +144,7 @@ const serializeAgentRun = (row) => {
|
|
|
63
144
|
}
|
|
64
145
|
return {
|
|
65
146
|
id: row.id,
|
|
147
|
+
execution_run_id: row.execution_run_id,
|
|
66
148
|
parent_type: row.parent_type,
|
|
67
149
|
parent_id: row.parent_id,
|
|
68
150
|
run_index: row.run_index,
|
|
@@ -72,18 +154,77 @@ const serializeAgentRun = (row) => {
|
|
|
72
154
|
agent_log: row.agent_log,
|
|
73
155
|
streaming_response: row.streaming_response,
|
|
74
156
|
response_text: row.response_text,
|
|
157
|
+
failure_message: row.failure_message,
|
|
75
158
|
session_id: row.session_id,
|
|
159
|
+
completed_at: row.completed_at,
|
|
76
160
|
created_at: row.created_at,
|
|
77
161
|
updated_at: row.updated_at,
|
|
78
162
|
};
|
|
79
163
|
};
|
|
80
|
-
|
|
164
|
+
const getParentProjectId = (parentType, parentId) => {
|
|
165
|
+
if (parentType === 'planning') {
|
|
166
|
+
const row = db.prepare('SELECT id AS project_id FROM projects WHERE id = ?').get(parentId);
|
|
167
|
+
return row?.project_id ?? null;
|
|
168
|
+
}
|
|
169
|
+
const table = parentType === 'ticket'
|
|
170
|
+
? 'tickets'
|
|
171
|
+
: parentType === 'chat'
|
|
172
|
+
? 'chat_sessions'
|
|
173
|
+
: 'spec_sessions';
|
|
174
|
+
const row = db.prepare(`SELECT project_id FROM ${table} WHERE id = ?`).get(parentId);
|
|
175
|
+
return row?.project_id ?? null;
|
|
176
|
+
};
|
|
177
|
+
const getNextIndex = (statement, ...params) => {
|
|
178
|
+
const row = statement.get(...params);
|
|
179
|
+
return Number(row?.next_index ?? 0);
|
|
180
|
+
};
|
|
181
|
+
const createExecutionOwnedAgentRun = db.transaction((input) => {
|
|
182
|
+
const executionRun = getExecutionRunStatement.get(input.executionRunId);
|
|
183
|
+
if (!executionRun) {
|
|
184
|
+
throw new Error(`Execution run ${input.executionRunId} does not exist`);
|
|
185
|
+
}
|
|
186
|
+
const parentProjectId = getParentProjectId(input.parentType, input.parentId);
|
|
187
|
+
if (!parentProjectId) {
|
|
188
|
+
throw new Error(`${input.parentType} ${input.parentId} does not belong to a project`);
|
|
189
|
+
}
|
|
190
|
+
if (parentProjectId !== executionRun.project_id) {
|
|
191
|
+
throw new Error(`${input.parentType} ${input.parentId} does not belong to execution run project ${executionRun.project_id}`);
|
|
192
|
+
}
|
|
193
|
+
const expectedPrimaryEntityType = input.parentType === 'planning'
|
|
194
|
+
? 'project'
|
|
195
|
+
: input.parentType === 'ticket'
|
|
196
|
+
? 'ticket'
|
|
197
|
+
: input.parentType === 'chat'
|
|
198
|
+
? 'chat_session'
|
|
199
|
+
: 'spec_session';
|
|
200
|
+
if (executionRun.primary_entity_type !== expectedPrimaryEntityType
|
|
201
|
+
|| executionRun.primary_entity_id !== input.parentId) {
|
|
202
|
+
throw new Error(`${input.parentType} ${input.parentId} does not match execution run ${input.executionRunId} primary parent`);
|
|
203
|
+
}
|
|
81
204
|
const id = randomUUID();
|
|
82
|
-
|
|
205
|
+
const runIndex = getNextIndex(getNextExecutionRunIndexStatement, input.executionRunId);
|
|
206
|
+
createAgentRunStatement.run(id, input.executionRunId, input.parentType, input.parentId, runIndex, input.label, input.role);
|
|
207
|
+
return id;
|
|
208
|
+
});
|
|
209
|
+
export const createAgentRun = (input) => {
|
|
210
|
+
if (input.executionRunId) {
|
|
211
|
+
return createExecutionOwnedAgentRun({ ...input, executionRunId: input.executionRunId });
|
|
212
|
+
}
|
|
213
|
+
if (input.runIndex === undefined) {
|
|
214
|
+
throw new Error('Legacy agent runs require a run index');
|
|
215
|
+
}
|
|
216
|
+
const id = randomUUID();
|
|
217
|
+
createAgentRunStatement.run(id, null, input.parentType, input.parentId, input.runIndex, input.label, input.role);
|
|
83
218
|
return id;
|
|
84
219
|
};
|
|
85
220
|
export const updateAgentRunStatus = (runId, status, log, streamingResponse) => {
|
|
86
|
-
|
|
221
|
+
const boundedLog = truncateUtf8(log).text;
|
|
222
|
+
const boundedResponse = truncateUtf8(streamingResponse).text;
|
|
223
|
+
if (status === 'running') {
|
|
224
|
+
updateRunningAgentRunStatement.run(boundedLog, boundedResponse, runId);
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
terminalizeAgentRunStatement.run(status, boundedLog, boundedResponse, null, runId);
|
|
87
228
|
};
|
|
88
229
|
export const updateAgentRunSessionId = (runId, sessionId) => {
|
|
89
230
|
updateAgentRunSessionIdStatement.run(sessionId, runId);
|
|
@@ -91,21 +232,47 @@ export const updateAgentRunSessionId = (runId, sessionId) => {
|
|
|
91
232
|
export const updateAgentRunLabel = (runId, label) => {
|
|
92
233
|
updateAgentRunLabelStatement.run(label, runId);
|
|
93
234
|
};
|
|
94
|
-
export const finalizeAgentRun = (runId, status, responseText) => {
|
|
95
|
-
|
|
235
|
+
export const finalizeAgentRun = (runId, status, responseText, failureMessage = null) => {
|
|
236
|
+
if (status === 'running') {
|
|
237
|
+
throw new Error('Final agent run status must be terminal');
|
|
238
|
+
}
|
|
239
|
+
terminalizeAgentRunStatement.run(status, null, truncateUtf8(responseText).text, truncateUtf8(failureMessage, AGENT_RUN_FAILURE_MESSAGE_LIMIT_BYTES).text, runId);
|
|
240
|
+
};
|
|
241
|
+
export const terminalizeAgentRunsForExecutionRun = (executionRunId, status, failureMessage = null) => {
|
|
242
|
+
return terminalizeExecutionRunStatement.run(status, truncateUtf8(failureMessage, AGENT_RUN_FAILURE_MESSAGE_LIMIT_BYTES).text, executionRunId).changes;
|
|
243
|
+
};
|
|
244
|
+
export const terminalizeLegacyAgentRuns = (status = 'error', failureMessage = null) => {
|
|
245
|
+
return terminalizeLegacyAgentRunsStatement.run(status, truncateUtf8(failureMessage, AGENT_RUN_FAILURE_MESSAGE_LIMIT_BYTES).text).changes;
|
|
96
246
|
};
|
|
97
247
|
export const clearAgentRunsForParent = (parentType, parentId) => {
|
|
98
248
|
clearAgentRunsForParentStatement.run(parentType, parentId);
|
|
99
249
|
};
|
|
100
250
|
export const listAgentRunsForParent = (parentType, parentId) => {
|
|
101
|
-
|
|
251
|
+
const primaryEntityType = parentType === 'planning'
|
|
252
|
+
? 'project'
|
|
253
|
+
: parentType === 'ticket'
|
|
254
|
+
? 'ticket'
|
|
255
|
+
: parentType === 'chat'
|
|
256
|
+
? 'chat_session'
|
|
257
|
+
: 'spec_session';
|
|
258
|
+
return listAgentRunsForParentStatement.all(parentType, parentId, primaryEntityType, parentId, parentType, parentId)
|
|
102
259
|
.map(row => serializeAgentRun(row))
|
|
103
260
|
.filter((row) => row !== null);
|
|
104
261
|
};
|
|
105
|
-
export const
|
|
106
|
-
|
|
107
|
-
|
|
262
|
+
export const listAgentRunsForExecutionRun = (executionRunId) => {
|
|
263
|
+
return listAgentRunsForExecutionRunStatement.all(executionRunId)
|
|
264
|
+
.map(row => serializeAgentRun(row))
|
|
265
|
+
.filter((row) => row !== null);
|
|
266
|
+
};
|
|
267
|
+
export const getAgentRun = (runId) => {
|
|
268
|
+
return serializeAgentRun(getAgentRunStatement.get(runId));
|
|
108
269
|
};
|
|
270
|
+
export function getNextAgentRunIndex(executionRunIdOrParentType, parentId) {
|
|
271
|
+
if (parentId === undefined) {
|
|
272
|
+
return getNextIndex(getNextExecutionRunIndexStatement, executionRunIdOrParentType);
|
|
273
|
+
}
|
|
274
|
+
return getNextIndex(getNextLegacyAgentRunIndexStatement, executionRunIdOrParentType, parentId);
|
|
275
|
+
}
|
|
109
276
|
export const emitAgentRunsUpdated = (io, parentType, parentId) => {
|
|
110
277
|
const runs = listAgentRunsForParent(parentType, parentId);
|
|
111
278
|
io.emit('agent-runs:updated', { parentType, parentId, runs });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentRuns.js","sourceRoot":"","sources":["../../../server/lib/agentRuns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"agentRuns.js","sourceRoot":"","sources":["../../../server/lib/agentRuns.ts"],"names":[],"mappings":"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"}
|