opencastle 0.27.2 → 0.28.0

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 (71) hide show
  1. package/bin/cli.mjs +13 -5
  2. package/dist/cli/convoy/engine.js +2 -2
  3. package/dist/cli/convoy/engine.js.map +1 -1
  4. package/dist/cli/convoy/engine.test.js +1 -1
  5. package/dist/cli/convoy/engine.test.js.map +1 -1
  6. package/dist/cli/convoy/issues.js +3 -3
  7. package/dist/cli/convoy/issues.js.map +1 -1
  8. package/dist/cli/convoy/issues.test.js +4 -3
  9. package/dist/cli/convoy/issues.test.js.map +1 -1
  10. package/dist/cli/pipeline.d.ts +3 -0
  11. package/dist/cli/pipeline.d.ts.map +1 -0
  12. package/dist/cli/pipeline.js +305 -0
  13. package/dist/cli/pipeline.js.map +1 -0
  14. package/dist/cli/plan.d.ts +37 -0
  15. package/dist/cli/plan.d.ts.map +1 -1
  16. package/dist/cli/plan.js +321 -161
  17. package/dist/cli/plan.js.map +1 -1
  18. package/dist/cli/run.d.ts.map +1 -1
  19. package/dist/cli/run.js +37 -1
  20. package/dist/cli/run.js.map +1 -1
  21. package/dist/cli/validate.d.ts +3 -0
  22. package/dist/cli/validate.d.ts.map +1 -0
  23. package/dist/cli/validate.js +60 -0
  24. package/dist/cli/validate.js.map +1 -0
  25. package/package.json +5 -3
  26. package/src/cli/convoy/engine.test.ts +1 -1
  27. package/src/cli/convoy/engine.ts +2 -2
  28. package/src/cli/convoy/issues.test.ts +3 -2
  29. package/src/cli/convoy/issues.ts +3 -3
  30. package/src/cli/pipeline.ts +343 -0
  31. package/src/cli/plan.ts +357 -153
  32. package/src/cli/run.ts +37 -1
  33. package/src/cli/validate.ts +65 -0
  34. package/src/dashboard/dist/data/convoy-list.json +65 -1
  35. package/src/dashboard/dist/data/convoys/demo-api-v2.json +177 -0
  36. package/src/dashboard/dist/data/convoys/demo-auth-revamp.json +239 -0
  37. package/src/dashboard/dist/data/convoys/demo-convoy-1.json +111 -0
  38. package/src/dashboard/dist/data/convoys/demo-convoy-2.json +72 -0
  39. package/src/dashboard/dist/data/convoys/demo-dashboard-ui.json +328 -0
  40. package/src/dashboard/dist/data/convoys/demo-data-pipeline.json +187 -0
  41. package/src/dashboard/dist/data/convoys/demo-deploy-ci.json +153 -0
  42. package/src/dashboard/dist/data/convoys/demo-docs-update.json +154 -0
  43. package/src/dashboard/dist/data/convoys/demo-perf-opt.json +227 -0
  44. package/src/dashboard/dist/data/events.ndjson +115 -0
  45. package/src/dashboard/dist/data/overall-stats.json +67 -12
  46. package/src/dashboard/dist/data/pipelines.ndjson +5285 -0
  47. package/src/dashboard/dist/index.html +39 -16
  48. package/src/dashboard/node_modules/.vite/deps/_metadata.json +6 -6
  49. package/src/dashboard/public/data/convoy-list.json +65 -1
  50. package/src/dashboard/public/data/convoys/demo-api-v2.json +177 -0
  51. package/src/dashboard/public/data/convoys/demo-auth-revamp.json +239 -0
  52. package/src/dashboard/public/data/convoys/demo-convoy-1.json +111 -0
  53. package/src/dashboard/public/data/convoys/demo-convoy-2.json +72 -0
  54. package/src/dashboard/public/data/convoys/demo-dashboard-ui.json +328 -0
  55. package/src/dashboard/public/data/convoys/demo-data-pipeline.json +187 -0
  56. package/src/dashboard/public/data/convoys/demo-deploy-ci.json +153 -0
  57. package/src/dashboard/public/data/convoys/demo-docs-update.json +154 -0
  58. package/src/dashboard/public/data/convoys/demo-perf-opt.json +227 -0
  59. package/src/dashboard/public/data/events.ndjson +115 -0
  60. package/src/dashboard/public/data/overall-stats.json +67 -12
  61. package/src/dashboard/public/data/pipelines.ndjson +5285 -0
  62. package/src/dashboard/scripts/etl.ts +38 -4
  63. package/src/dashboard/scripts/generate-demo-db.test.ts +30 -0
  64. package/src/dashboard/scripts/generate-demo-db.ts +507 -0
  65. package/src/dashboard/scripts/verify-demo-data.sh +51 -0
  66. package/src/dashboard/src/pages/index.astro +46 -23
  67. package/src/orchestrator/prompts/fix-convoy.prompt.md +79 -0
  68. package/src/orchestrator/prompts/generate-convoy.prompt.md +53 -58
  69. package/src/orchestrator/prompts/generate-prd.prompt.md +120 -0
  70. package/src/orchestrator/prompts/validate-convoy.prompt.md +89 -0
  71. package/src/orchestrator/prompts/validate-prd.prompt.md +83 -0
@@ -0,0 +1,111 @@
1
+ {
2
+ "convoy": {
3
+ "id": "demo-convoy-1",
4
+ "name": "Demo Convoy Alpha",
5
+ "status": "done",
6
+ "created_at": "2026-01-15T10:00:00.000Z",
7
+ "finished_at": "2026-01-15T10:00:33.000Z",
8
+ "branch": "main",
9
+ "total_tokens": 8432,
10
+ "total_cost_usd": 0.84
11
+ },
12
+ "taskSummary": {
13
+ "total": 2,
14
+ "done": 2,
15
+ "running": 0,
16
+ "failed": 0,
17
+ "review_blocked": 0,
18
+ "disputed": 0,
19
+ "reviewed": 0,
20
+ "panel_reviewed": 0,
21
+ "tasks_with_drift": 0,
22
+ "max_drift_score": null,
23
+ "drift_retried": 0
24
+ },
25
+ "quality": {
26
+ "reviewed_tasks": 0,
27
+ "review_blocked_tasks": 0,
28
+ "disputed_tasks": 0,
29
+ "panel_reviews": 0
30
+ },
31
+ "drift": {
32
+ "tasks_with_drift": 0,
33
+ "max_drift_score": null,
34
+ "drift_retried_tasks": 0
35
+ },
36
+ "dlq_count": 0,
37
+ "dlq_entries": [],
38
+ "artifact_count": 0,
39
+ "artifacts": [],
40
+ "has_more_events": false,
41
+ "events": [
42
+ {
43
+ "type": "task_done",
44
+ "task_id": "task-1-b",
45
+ "data": null,
46
+ "created_at": "2026-01-15T10:00:32.000Z"
47
+ },
48
+ {
49
+ "type": "task_started",
50
+ "task_id": "task-1-b",
51
+ "data": null,
52
+ "created_at": "2026-01-15T10:00:16.000Z"
53
+ },
54
+ {
55
+ "type": "task_done",
56
+ "task_id": "task-1-a",
57
+ "data": null,
58
+ "created_at": "2026-01-15T10:00:15.000Z"
59
+ },
60
+ {
61
+ "type": "task_started",
62
+ "task_id": "task-1-a",
63
+ "data": null,
64
+ "created_at": "2026-01-15T10:00:01.000Z"
65
+ }
66
+ ],
67
+ "tasks": [
68
+ {
69
+ "id": "task-1-a",
70
+ "phase": 1,
71
+ "agent": "developer",
72
+ "model": "claude-sonnet-4-6",
73
+ "status": "done",
74
+ "retries": 0,
75
+ "started_at": "2026-01-15T10:00:01.000Z",
76
+ "finished_at": "2026-01-15T10:00:15.000Z",
77
+ "total_tokens": 4200,
78
+ "cost_usd": 0.42,
79
+ "review_level": null,
80
+ "review_verdict": null,
81
+ "review_tokens": null,
82
+ "review_model": null,
83
+ "panel_attempts": 0,
84
+ "dispute_id": null,
85
+ "drift_score": null,
86
+ "drift_retried": 0,
87
+ "files": null
88
+ },
89
+ {
90
+ "id": "task-1-b",
91
+ "phase": 2,
92
+ "agent": "developer",
93
+ "model": "claude-sonnet-4-6",
94
+ "status": "done",
95
+ "retries": 1,
96
+ "started_at": "2026-01-15T10:00:16.000Z",
97
+ "finished_at": "2026-01-15T10:00:32.000Z",
98
+ "total_tokens": 4232,
99
+ "cost_usd": 0.42,
100
+ "review_level": null,
101
+ "review_verdict": null,
102
+ "review_tokens": null,
103
+ "review_model": null,
104
+ "panel_attempts": 0,
105
+ "dispute_id": null,
106
+ "drift_score": null,
107
+ "drift_retried": 0,
108
+ "files": null
109
+ }
110
+ ]
111
+ }
@@ -0,0 +1,72 @@
1
+ {
2
+ "convoy": {
3
+ "id": "demo-convoy-2",
4
+ "name": "Demo Convoy Beta",
5
+ "status": "running",
6
+ "created_at": "2026-01-15T10:05:00.000Z",
7
+ "finished_at": null,
8
+ "branch": "feature/x",
9
+ "total_tokens": null,
10
+ "total_cost_usd": null
11
+ },
12
+ "taskSummary": {
13
+ "total": 1,
14
+ "done": 0,
15
+ "running": 1,
16
+ "failed": 0,
17
+ "review_blocked": 0,
18
+ "disputed": 0,
19
+ "reviewed": 0,
20
+ "panel_reviewed": 0,
21
+ "tasks_with_drift": 0,
22
+ "max_drift_score": null,
23
+ "drift_retried": 0
24
+ },
25
+ "quality": {
26
+ "reviewed_tasks": 0,
27
+ "review_blocked_tasks": 0,
28
+ "disputed_tasks": 0,
29
+ "panel_reviews": 0
30
+ },
31
+ "drift": {
32
+ "tasks_with_drift": 0,
33
+ "max_drift_score": null,
34
+ "drift_retried_tasks": 0
35
+ },
36
+ "dlq_count": 0,
37
+ "dlq_entries": [],
38
+ "artifact_count": 0,
39
+ "artifacts": [],
40
+ "has_more_events": false,
41
+ "events": [
42
+ {
43
+ "type": "task_started",
44
+ "task_id": "task-2-a",
45
+ "data": null,
46
+ "created_at": "2026-01-15T10:05:01.000Z"
47
+ }
48
+ ],
49
+ "tasks": [
50
+ {
51
+ "id": "task-2-a",
52
+ "phase": 1,
53
+ "agent": "developer",
54
+ "model": "claude-sonnet-4-6",
55
+ "status": "running",
56
+ "retries": 0,
57
+ "started_at": "2026-01-15T10:05:01.000Z",
58
+ "finished_at": null,
59
+ "total_tokens": null,
60
+ "cost_usd": null,
61
+ "review_level": null,
62
+ "review_verdict": null,
63
+ "review_tokens": null,
64
+ "review_model": null,
65
+ "panel_attempts": 0,
66
+ "dispute_id": null,
67
+ "drift_score": null,
68
+ "drift_retried": 0,
69
+ "files": null
70
+ }
71
+ ]
72
+ }
@@ -0,0 +1,328 @@
1
+ {
2
+ "convoy": {
3
+ "id": "demo-dashboard-ui",
4
+ "name": "Observability Dashboard UI",
5
+ "status": "done",
6
+ "created_at": "2026-02-07T14:00:00.000Z",
7
+ "finished_at": "2026-02-07T15:38:00.000Z",
8
+ "branch": "feat/dashboard-v2",
9
+ "total_tokens": 78400,
10
+ "total_cost_usd": 7.84
11
+ },
12
+ "taskSummary": {
13
+ "total": 7,
14
+ "done": 7,
15
+ "running": 0,
16
+ "failed": 0,
17
+ "review_blocked": 0,
18
+ "disputed": 0,
19
+ "reviewed": 1,
20
+ "panel_reviewed": 1,
21
+ "tasks_with_drift": 1,
22
+ "max_drift_score": 0.28,
23
+ "drift_retried": 1
24
+ },
25
+ "quality": {
26
+ "reviewed_tasks": 1,
27
+ "review_blocked_tasks": 0,
28
+ "disputed_tasks": 0,
29
+ "panel_reviews": 1
30
+ },
31
+ "drift": {
32
+ "tasks_with_drift": 1,
33
+ "max_drift_score": 0.28,
34
+ "drift_retried_tasks": 1
35
+ },
36
+ "dlq_count": 1,
37
+ "dlq_entries": [
38
+ {
39
+ "id": "dlq-ui-1",
40
+ "task_id": "ui-t7",
41
+ "agent": "Reviewer",
42
+ "failure_type": "review_blocked",
43
+ "attempts": 1,
44
+ "resolved": 1
45
+ }
46
+ ],
47
+ "artifact_count": 6,
48
+ "artifacts": [
49
+ {
50
+ "id": "artifact-demo-dashboard-ui-reports-panel-review-dashboard-md",
51
+ "name": "reports/panel-review-dashboard.md",
52
+ "type": "summary",
53
+ "task_id": "ui-t7",
54
+ "created_at": "2026-03-12T22:26:01.388Z"
55
+ },
56
+ {
57
+ "id": "artifact-demo-dashboard-ui-reports-visual-regression-json",
58
+ "name": "reports/visual-regression.json",
59
+ "type": "json",
60
+ "task_id": "ui-t6",
61
+ "created_at": "2026-03-12T22:26:01.388Z"
62
+ },
63
+ {
64
+ "id": "artifact-demo-dashboard-ui-src-components-DonutChart-tsx",
65
+ "name": "src/components/DonutChart.tsx",
66
+ "type": "file",
67
+ "task_id": "ui-t3",
68
+ "created_at": "2026-03-12T22:26:01.388Z"
69
+ },
70
+ {
71
+ "id": "artifact-demo-dashboard-ui-src-components-KpiCard-tsx",
72
+ "name": "src/components/KpiCard.tsx",
73
+ "type": "file",
74
+ "task_id": "ui-t2",
75
+ "created_at": "2026-03-12T22:26:01.388Z"
76
+ },
77
+ {
78
+ "id": "artifact-demo-dashboard-ui-src-components-design-tokens-ts",
79
+ "name": "src/components/design-tokens.ts",
80
+ "type": "file",
81
+ "task_id": "ui-t1",
82
+ "created_at": "2026-03-12T22:26:01.388Z"
83
+ },
84
+ {
85
+ "id": "artifact-demo-dashboard-ui-src-styles-animations-css",
86
+ "name": "src/styles/animations.css",
87
+ "type": "file",
88
+ "task_id": "ui-t4",
89
+ "created_at": "2026-03-12T22:26:01.388Z"
90
+ }
91
+ ],
92
+ "has_more_events": false,
93
+ "events": [
94
+ {
95
+ "type": "task_done",
96
+ "task_id": "ui-t7",
97
+ "data": null,
98
+ "created_at": "2026-02-07T15:37:00.000Z"
99
+ },
100
+ {
101
+ "type": "task_started",
102
+ "task_id": "ui-t7",
103
+ "data": null,
104
+ "created_at": "2026-02-07T15:03:00.000Z"
105
+ },
106
+ {
107
+ "type": "task_done",
108
+ "task_id": "ui-t6",
109
+ "data": null,
110
+ "created_at": "2026-02-07T15:02:00.000Z"
111
+ },
112
+ {
113
+ "type": "task_started",
114
+ "task_id": "ui-t6",
115
+ "data": null,
116
+ "created_at": "2026-02-07T14:45:00.000Z"
117
+ },
118
+ {
119
+ "type": "task_done",
120
+ "task_id": "ui-t5",
121
+ "data": null,
122
+ "created_at": "2026-02-07T14:58:00.000Z"
123
+ },
124
+ {
125
+ "type": "task_started",
126
+ "task_id": "ui-t5",
127
+ "data": null,
128
+ "created_at": "2026-02-07T14:45:00.000Z"
129
+ },
130
+ {
131
+ "type": "task_done",
132
+ "task_id": "ui-t4",
133
+ "data": null,
134
+ "created_at": "2026-02-07T14:38:00.000Z"
135
+ },
136
+ {
137
+ "type": "task_started",
138
+ "task_id": "ui-t4",
139
+ "data": null,
140
+ "created_at": "2026-02-07T14:20:00.000Z"
141
+ },
142
+ {
143
+ "type": "task_done",
144
+ "task_id": "ui-t3",
145
+ "data": null,
146
+ "created_at": "2026-02-07T14:44:00.000Z"
147
+ },
148
+ {
149
+ "type": "task_started",
150
+ "task_id": "ui-t3",
151
+ "data": null,
152
+ "created_at": "2026-02-07T14:20:00.000Z"
153
+ },
154
+ {
155
+ "type": "task_done",
156
+ "task_id": "ui-t2",
157
+ "data": null,
158
+ "created_at": "2026-02-07T14:16:00.000Z"
159
+ },
160
+ {
161
+ "type": "task_started",
162
+ "task_id": "ui-t2",
163
+ "data": null,
164
+ "created_at": "2026-02-07T14:00:05.000Z"
165
+ },
166
+ {
167
+ "type": "task_done",
168
+ "task_id": "ui-t1",
169
+ "data": null,
170
+ "created_at": "2026-02-07T14:19:00.000Z"
171
+ },
172
+ {
173
+ "type": "task_started",
174
+ "task_id": "ui-t1",
175
+ "data": null,
176
+ "created_at": "2026-02-07T14:00:05.000Z"
177
+ }
178
+ ],
179
+ "tasks": [
180
+ {
181
+ "id": "ui-t1",
182
+ "phase": 1,
183
+ "agent": "UI/UX Expert",
184
+ "model": "claude-opus-4-6",
185
+ "status": "done",
186
+ "retries": 0,
187
+ "started_at": "2026-02-07T14:00:05.000Z",
188
+ "finished_at": "2026-02-07T14:19:00.000Z",
189
+ "total_tokens": 14200,
190
+ "cost_usd": 1.42,
191
+ "review_level": null,
192
+ "review_verdict": null,
193
+ "review_tokens": null,
194
+ "review_model": null,
195
+ "panel_attempts": 0,
196
+ "dispute_id": null,
197
+ "drift_score": null,
198
+ "drift_retried": 0,
199
+ "files": null
200
+ },
201
+ {
202
+ "id": "ui-t2",
203
+ "phase": 1,
204
+ "agent": "Developer",
205
+ "model": "claude-sonnet-4-6",
206
+ "status": "done",
207
+ "retries": 0,
208
+ "started_at": "2026-02-07T14:00:05.000Z",
209
+ "finished_at": "2026-02-07T14:16:00.000Z",
210
+ "total_tokens": 11800,
211
+ "cost_usd": 1.18,
212
+ "review_level": null,
213
+ "review_verdict": null,
214
+ "review_tokens": null,
215
+ "review_model": null,
216
+ "panel_attempts": 0,
217
+ "dispute_id": null,
218
+ "drift_score": null,
219
+ "drift_retried": 0,
220
+ "files": null
221
+ },
222
+ {
223
+ "id": "ui-t3",
224
+ "phase": 2,
225
+ "agent": "Developer",
226
+ "model": "claude-sonnet-4-6",
227
+ "status": "done",
228
+ "retries": 1,
229
+ "started_at": "2026-02-07T14:20:00.000Z",
230
+ "finished_at": "2026-02-07T14:44:00.000Z",
231
+ "total_tokens": 13500,
232
+ "cost_usd": 1.35,
233
+ "review_level": null,
234
+ "review_verdict": null,
235
+ "review_tokens": null,
236
+ "review_model": null,
237
+ "panel_attempts": 0,
238
+ "dispute_id": null,
239
+ "drift_score": 0.28,
240
+ "drift_retried": 1,
241
+ "files": null
242
+ },
243
+ {
244
+ "id": "ui-t4",
245
+ "phase": 2,
246
+ "agent": "UI/UX Expert",
247
+ "model": "claude-opus-4-6",
248
+ "status": "done",
249
+ "retries": 0,
250
+ "started_at": "2026-02-07T14:20:00.000Z",
251
+ "finished_at": "2026-02-07T14:38:00.000Z",
252
+ "total_tokens": 9400,
253
+ "cost_usd": 0.94,
254
+ "review_level": null,
255
+ "review_verdict": null,
256
+ "review_tokens": null,
257
+ "review_model": null,
258
+ "panel_attempts": 0,
259
+ "dispute_id": null,
260
+ "drift_score": null,
261
+ "drift_retried": 0,
262
+ "files": null
263
+ },
264
+ {
265
+ "id": "ui-t5",
266
+ "phase": 3,
267
+ "agent": "UI/UX Expert",
268
+ "model": "claude-opus-4-6",
269
+ "status": "done",
270
+ "retries": 0,
271
+ "started_at": "2026-02-07T14:45:00.000Z",
272
+ "finished_at": "2026-02-07T14:58:00.000Z",
273
+ "total_tokens": 8700,
274
+ "cost_usd": 0.87,
275
+ "review_level": null,
276
+ "review_verdict": null,
277
+ "review_tokens": null,
278
+ "review_model": null,
279
+ "panel_attempts": 0,
280
+ "dispute_id": null,
281
+ "drift_score": null,
282
+ "drift_retried": 0,
283
+ "files": null
284
+ },
285
+ {
286
+ "id": "ui-t6",
287
+ "phase": 3,
288
+ "agent": "Testing Expert",
289
+ "model": "claude-sonnet-4-6",
290
+ "status": "done",
291
+ "retries": 0,
292
+ "started_at": "2026-02-07T14:45:00.000Z",
293
+ "finished_at": "2026-02-07T15:02:00.000Z",
294
+ "total_tokens": 11200,
295
+ "cost_usd": 1.12,
296
+ "review_level": null,
297
+ "review_verdict": null,
298
+ "review_tokens": null,
299
+ "review_model": null,
300
+ "panel_attempts": 0,
301
+ "dispute_id": null,
302
+ "drift_score": null,
303
+ "drift_retried": 0,
304
+ "files": null
305
+ },
306
+ {
307
+ "id": "ui-t7",
308
+ "phase": 4,
309
+ "agent": "Reviewer",
310
+ "model": "claude-sonnet-4-6",
311
+ "status": "done",
312
+ "retries": 0,
313
+ "started_at": "2026-02-07T15:03:00.000Z",
314
+ "finished_at": "2026-02-07T15:37:00.000Z",
315
+ "total_tokens": 9600,
316
+ "cost_usd": 0.96,
317
+ "review_level": "panel",
318
+ "review_verdict": "pass",
319
+ "review_tokens": 4800,
320
+ "review_model": "claude-opus-4-6",
321
+ "panel_attempts": 2,
322
+ "dispute_id": null,
323
+ "drift_score": null,
324
+ "drift_retried": 0,
325
+ "files": null
326
+ }
327
+ ]
328
+ }
@@ -0,0 +1,187 @@
1
+ {
2
+ "convoy": {
3
+ "id": "demo-data-pipeline",
4
+ "name": "Analytics ETL Pipeline",
5
+ "status": "done",
6
+ "created_at": "2026-02-22T13:00:00.000Z",
7
+ "finished_at": "2026-02-22T13:38:00.000Z",
8
+ "branch": "feat/etl-v2",
9
+ "total_tokens": 28900,
10
+ "total_cost_usd": 2.89
11
+ },
12
+ "taskSummary": {
13
+ "total": 4,
14
+ "done": 4,
15
+ "running": 0,
16
+ "failed": 0,
17
+ "review_blocked": 0,
18
+ "disputed": 0,
19
+ "reviewed": 1,
20
+ "panel_reviewed": 0,
21
+ "tasks_with_drift": 1,
22
+ "max_drift_score": 0.12,
23
+ "drift_retried": 0
24
+ },
25
+ "quality": {
26
+ "reviewed_tasks": 1,
27
+ "review_blocked_tasks": 0,
28
+ "disputed_tasks": 0,
29
+ "panel_reviews": 0
30
+ },
31
+ "drift": {
32
+ "tasks_with_drift": 1,
33
+ "max_drift_score": 0.12,
34
+ "drift_retried_tasks": 0
35
+ },
36
+ "dlq_count": 0,
37
+ "dlq_entries": [],
38
+ "artifact_count": 3,
39
+ "artifacts": [
40
+ {
41
+ "id": "artifact-demo-data-pipeline-src-etl-pipeline-ts",
42
+ "name": "src/etl/pipeline.ts",
43
+ "type": "file",
44
+ "task_id": "etl-t2",
45
+ "created_at": "2026-03-12T22:26:01.388Z"
46
+ },
47
+ {
48
+ "id": "artifact-demo-data-pipeline-src-etl-schema-ts",
49
+ "name": "src/etl/schema.ts",
50
+ "type": "file",
51
+ "task_id": "etl-t1",
52
+ "created_at": "2026-03-12T22:26:01.388Z"
53
+ },
54
+ {
55
+ "id": "artifact-demo-data-pipeline-tests-etl-pipeline-test-ts",
56
+ "name": "tests/etl/pipeline.test.ts",
57
+ "type": "file",
58
+ "task_id": "etl-t3",
59
+ "created_at": "2026-03-12T22:26:01.388Z"
60
+ }
61
+ ],
62
+ "has_more_events": false,
63
+ "events": [
64
+ {
65
+ "type": "task_done",
66
+ "task_id": "etl-t3",
67
+ "data": null,
68
+ "created_at": "2026-02-22T13:37:00.000Z"
69
+ },
70
+ {
71
+ "type": "task_started",
72
+ "task_id": "etl-t3",
73
+ "data": null,
74
+ "created_at": "2026-02-22T13:31:00.000Z"
75
+ },
76
+ {
77
+ "type": "task_done",
78
+ "task_id": "etl-t2",
79
+ "data": null,
80
+ "created_at": "2026-02-22T13:30:00.000Z"
81
+ },
82
+ {
83
+ "type": "task_started",
84
+ "task_id": "etl-t2",
85
+ "data": null,
86
+ "created_at": "2026-02-22T13:12:00.000Z"
87
+ },
88
+ {
89
+ "type": "task_done",
90
+ "task_id": "etl-t1",
91
+ "data": null,
92
+ "created_at": "2026-02-22T13:11:00.000Z"
93
+ },
94
+ {
95
+ "type": "task_started",
96
+ "task_id": "etl-t1",
97
+ "data": null,
98
+ "created_at": "2026-02-22T13:00:05.000Z"
99
+ }
100
+ ],
101
+ "tasks": [
102
+ {
103
+ "id": "etl-t1",
104
+ "phase": 1,
105
+ "agent": "Data Expert",
106
+ "model": "claude-sonnet-4-6",
107
+ "status": "done",
108
+ "retries": 0,
109
+ "started_at": "2026-02-22T13:00:05.000Z",
110
+ "finished_at": "2026-02-22T13:11:00.000Z",
111
+ "total_tokens": 7800,
112
+ "cost_usd": 0.78,
113
+ "review_level": null,
114
+ "review_verdict": null,
115
+ "review_tokens": null,
116
+ "review_model": null,
117
+ "panel_attempts": 0,
118
+ "dispute_id": null,
119
+ "drift_score": null,
120
+ "drift_retried": 0,
121
+ "files": null
122
+ },
123
+ {
124
+ "id": "etl-t2",
125
+ "phase": 2,
126
+ "agent": "Data Expert",
127
+ "model": "claude-sonnet-4-6",
128
+ "status": "done",
129
+ "retries": 1,
130
+ "started_at": "2026-02-22T13:12:00.000Z",
131
+ "finished_at": "2026-02-22T13:30:00.000Z",
132
+ "total_tokens": 12400,
133
+ "cost_usd": 1.24,
134
+ "review_level": null,
135
+ "review_verdict": null,
136
+ "review_tokens": null,
137
+ "review_model": null,
138
+ "panel_attempts": 0,
139
+ "dispute_id": null,
140
+ "drift_score": 0.12,
141
+ "drift_retried": 0,
142
+ "files": null
143
+ },
144
+ {
145
+ "id": "etl-t3",
146
+ "phase": 3,
147
+ "agent": "Testing Expert",
148
+ "model": "claude-sonnet-4-6",
149
+ "status": "done",
150
+ "retries": 0,
151
+ "started_at": "2026-02-22T13:31:00.000Z",
152
+ "finished_at": "2026-02-22T13:37:00.000Z",
153
+ "total_tokens": 8700,
154
+ "cost_usd": 0.87,
155
+ "review_level": null,
156
+ "review_verdict": null,
157
+ "review_tokens": null,
158
+ "review_model": null,
159
+ "panel_attempts": 0,
160
+ "dispute_id": null,
161
+ "drift_score": null,
162
+ "drift_retried": 0,
163
+ "files": null
164
+ },
165
+ {
166
+ "id": "etl-t4",
167
+ "phase": 4,
168
+ "agent": "Reviewer",
169
+ "model": "claude-haiku-3-5",
170
+ "status": "done",
171
+ "retries": 0,
172
+ "started_at": "2026-02-22T13:32:00.000Z",
173
+ "finished_at": "2026-02-22T13:37:00.000Z",
174
+ "total_tokens": 900,
175
+ "cost_usd": 0.09,
176
+ "review_level": "fast",
177
+ "review_verdict": "pass",
178
+ "review_tokens": 900,
179
+ "review_model": "claude-haiku-3-5",
180
+ "panel_attempts": 0,
181
+ "dispute_id": null,
182
+ "drift_score": null,
183
+ "drift_retried": 0,
184
+ "files": null
185
+ }
186
+ ]
187
+ }