opencastle 0.27.3 → 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 (61) 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/validate.d.ts +3 -0
  19. package/dist/cli/validate.d.ts.map +1 -0
  20. package/dist/cli/validate.js +60 -0
  21. package/dist/cli/validate.js.map +1 -0
  22. package/package.json +5 -4
  23. package/src/cli/convoy/engine.test.ts +1 -1
  24. package/src/cli/convoy/engine.ts +2 -2
  25. package/src/cli/convoy/issues.test.ts +3 -2
  26. package/src/cli/convoy/issues.ts +3 -3
  27. package/src/cli/pipeline.ts +343 -0
  28. package/src/cli/plan.ts +357 -153
  29. package/src/cli/validate.ts +65 -0
  30. package/src/dashboard/dist/data/convoy-list.json +54 -9
  31. package/src/dashboard/dist/data/convoys/demo-api-v2.json +177 -0
  32. package/src/dashboard/dist/data/convoys/demo-auth-revamp.json +239 -0
  33. package/src/dashboard/dist/data/convoys/demo-dashboard-ui.json +328 -0
  34. package/src/dashboard/dist/data/convoys/demo-data-pipeline.json +187 -0
  35. package/src/dashboard/dist/data/convoys/demo-deploy-ci.json +153 -0
  36. package/src/dashboard/dist/data/convoys/demo-docs-update.json +154 -0
  37. package/src/dashboard/dist/data/convoys/demo-perf-opt.json +227 -0
  38. package/src/dashboard/dist/data/events.ndjson +115 -0
  39. package/src/dashboard/dist/data/overall-stats.json +56 -13
  40. package/src/dashboard/dist/data/pipelines.ndjson +5285 -0
  41. package/src/dashboard/dist/index.html +39 -16
  42. package/src/dashboard/node_modules/.vite/deps/_metadata.json +6 -6
  43. package/src/dashboard/public/data/convoy-list.json +54 -9
  44. package/src/dashboard/public/data/convoys/demo-api-v2.json +177 -0
  45. package/src/dashboard/public/data/convoys/demo-auth-revamp.json +239 -0
  46. package/src/dashboard/public/data/convoys/demo-dashboard-ui.json +328 -0
  47. package/src/dashboard/public/data/convoys/demo-data-pipeline.json +187 -0
  48. package/src/dashboard/public/data/convoys/demo-deploy-ci.json +153 -0
  49. package/src/dashboard/public/data/convoys/demo-docs-update.json +154 -0
  50. package/src/dashboard/public/data/convoys/demo-perf-opt.json +227 -0
  51. package/src/dashboard/public/data/events.ndjson +115 -0
  52. package/src/dashboard/public/data/overall-stats.json +56 -13
  53. package/src/dashboard/public/data/pipelines.ndjson +5285 -0
  54. package/src/dashboard/scripts/etl.ts +24 -3
  55. package/src/dashboard/scripts/generate-demo-db.ts +482 -115
  56. package/src/dashboard/src/pages/index.astro +46 -23
  57. package/src/orchestrator/prompts/fix-convoy.prompt.md +79 -0
  58. package/src/orchestrator/prompts/generate-convoy.prompt.md +53 -58
  59. package/src/orchestrator/prompts/generate-prd.prompt.md +120 -0
  60. package/src/orchestrator/prompts/validate-convoy.prompt.md +89 -0
  61. package/src/orchestrator/prompts/validate-prd.prompt.md +83 -0
@@ -0,0 +1,239 @@
1
+ {
2
+ "convoy": {
3
+ "id": "demo-auth-revamp",
4
+ "name": "Auth System Revamp",
5
+ "status": "done",
6
+ "created_at": "2026-02-03T09:00:00.000Z",
7
+ "finished_at": "2026-02-03T09:47:00.000Z",
8
+ "branch": "feat/auth-v2",
9
+ "total_tokens": 42850,
10
+ "total_cost_usd": 4.28
11
+ },
12
+ "taskSummary": {
13
+ "total": 5,
14
+ "done": 5,
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.15,
23
+ "drift_retried": 1
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.15,
34
+ "drift_retried_tasks": 1
35
+ },
36
+ "dlq_count": 0,
37
+ "dlq_entries": [],
38
+ "artifact_count": 4,
39
+ "artifacts": [
40
+ {
41
+ "id": "artifact-demo-auth-revamp-libs-auth-src-jwt-middleware-ts",
42
+ "name": "libs/auth/src/jwt-middleware.ts",
43
+ "type": "file",
44
+ "task_id": "auth-t2",
45
+ "created_at": "2026-03-12T22:26:01.388Z"
46
+ },
47
+ {
48
+ "id": "artifact-demo-auth-revamp-libs-auth-src-rls-policies-sql",
49
+ "name": "libs/auth/src/rls-policies.sql",
50
+ "type": "file",
51
+ "task_id": "auth-t3",
52
+ "created_at": "2026-03-12T22:26:01.388Z"
53
+ },
54
+ {
55
+ "id": "artifact-demo-auth-revamp-reports-auth-review-summary-md",
56
+ "name": "reports/auth-review-summary.md",
57
+ "type": "summary",
58
+ "task_id": "auth-t5",
59
+ "created_at": "2026-03-12T22:26:01.388Z"
60
+ },
61
+ {
62
+ "id": "artifact-demo-auth-revamp-tests-auth-integration-test-ts",
63
+ "name": "tests/auth/integration.test.ts",
64
+ "type": "file",
65
+ "task_id": "auth-t4",
66
+ "created_at": "2026-03-12T22:26:01.388Z"
67
+ }
68
+ ],
69
+ "has_more_events": false,
70
+ "events": [
71
+ {
72
+ "type": "task_done",
73
+ "task_id": "auth-t5",
74
+ "data": null,
75
+ "created_at": "2026-02-03T09:46:00.000Z"
76
+ },
77
+ {
78
+ "type": "task_started",
79
+ "task_id": "auth-t5",
80
+ "data": null,
81
+ "created_at": "2026-02-03T09:38:00.000Z"
82
+ },
83
+ {
84
+ "type": "task_done",
85
+ "task_id": "auth-t4",
86
+ "data": null,
87
+ "created_at": "2026-02-03T09:37:00.000Z"
88
+ },
89
+ {
90
+ "type": "task_started",
91
+ "task_id": "auth-t4",
92
+ "data": null,
93
+ "created_at": "2026-02-03T09:25:00.000Z"
94
+ },
95
+ {
96
+ "type": "task_done",
97
+ "task_id": "auth-t3",
98
+ "data": null,
99
+ "created_at": "2026-02-03T09:20:00.000Z"
100
+ },
101
+ {
102
+ "type": "task_started",
103
+ "task_id": "auth-t3",
104
+ "data": null,
105
+ "created_at": "2026-02-03T09:10:00.000Z"
106
+ },
107
+ {
108
+ "type": "task_done",
109
+ "task_id": "auth-t2",
110
+ "data": null,
111
+ "created_at": "2026-02-03T09:24:00.000Z"
112
+ },
113
+ {
114
+ "type": "task_started",
115
+ "task_id": "auth-t2",
116
+ "data": null,
117
+ "created_at": "2026-02-03T09:10:00.000Z"
118
+ },
119
+ {
120
+ "type": "task_done",
121
+ "task_id": "auth-t1",
122
+ "data": null,
123
+ "created_at": "2026-02-03T09:09:00.000Z"
124
+ },
125
+ {
126
+ "type": "task_started",
127
+ "task_id": "auth-t1",
128
+ "data": null,
129
+ "created_at": "2026-02-03T09:00:05.000Z"
130
+ }
131
+ ],
132
+ "tasks": [
133
+ {
134
+ "id": "auth-t1",
135
+ "phase": 1,
136
+ "agent": "Architect",
137
+ "model": "claude-opus-4-6",
138
+ "status": "done",
139
+ "retries": 0,
140
+ "started_at": "2026-02-03T09:00:05.000Z",
141
+ "finished_at": "2026-02-03T09:09:00.000Z",
142
+ "total_tokens": 8400,
143
+ "cost_usd": 0.84,
144
+ "review_level": null,
145
+ "review_verdict": null,
146
+ "review_tokens": null,
147
+ "review_model": null,
148
+ "panel_attempts": 0,
149
+ "dispute_id": null,
150
+ "drift_score": null,
151
+ "drift_retried": 0,
152
+ "files": null
153
+ },
154
+ {
155
+ "id": "auth-t2",
156
+ "phase": 2,
157
+ "agent": "Developer",
158
+ "model": "claude-sonnet-4-6",
159
+ "status": "done",
160
+ "retries": 1,
161
+ "started_at": "2026-02-03T09:10:00.000Z",
162
+ "finished_at": "2026-02-03T09:24:00.000Z",
163
+ "total_tokens": 12600,
164
+ "cost_usd": 1.26,
165
+ "review_level": null,
166
+ "review_verdict": null,
167
+ "review_tokens": null,
168
+ "review_model": null,
169
+ "panel_attempts": 0,
170
+ "dispute_id": null,
171
+ "drift_score": 0.15,
172
+ "drift_retried": 1,
173
+ "files": null
174
+ },
175
+ {
176
+ "id": "auth-t3",
177
+ "phase": 2,
178
+ "agent": "Security Expert",
179
+ "model": "claude-sonnet-4-6",
180
+ "status": "done",
181
+ "retries": 0,
182
+ "started_at": "2026-02-03T09:10:00.000Z",
183
+ "finished_at": "2026-02-03T09:20:00.000Z",
184
+ "total_tokens": 9200,
185
+ "cost_usd": 0.92,
186
+ "review_level": null,
187
+ "review_verdict": null,
188
+ "review_tokens": null,
189
+ "review_model": null,
190
+ "panel_attempts": 0,
191
+ "dispute_id": null,
192
+ "drift_score": null,
193
+ "drift_retried": 0,
194
+ "files": null
195
+ },
196
+ {
197
+ "id": "auth-t4",
198
+ "phase": 3,
199
+ "agent": "Testing Expert",
200
+ "model": "claude-sonnet-4-6",
201
+ "status": "done",
202
+ "retries": 0,
203
+ "started_at": "2026-02-03T09:25:00.000Z",
204
+ "finished_at": "2026-02-03T09:37:00.000Z",
205
+ "total_tokens": 8900,
206
+ "cost_usd": 0.89,
207
+ "review_level": null,
208
+ "review_verdict": null,
209
+ "review_tokens": null,
210
+ "review_model": null,
211
+ "panel_attempts": 0,
212
+ "dispute_id": null,
213
+ "drift_score": null,
214
+ "drift_retried": 0,
215
+ "files": null
216
+ },
217
+ {
218
+ "id": "auth-t5",
219
+ "phase": 4,
220
+ "agent": "Reviewer",
221
+ "model": "claude-sonnet-4-6",
222
+ "status": "done",
223
+ "retries": 0,
224
+ "started_at": "2026-02-03T09:38:00.000Z",
225
+ "finished_at": "2026-02-03T09:46:00.000Z",
226
+ "total_tokens": 3750,
227
+ "cost_usd": 0.37,
228
+ "review_level": "fast",
229
+ "review_verdict": "pass",
230
+ "review_tokens": 1850,
231
+ "review_model": "claude-haiku-3-5",
232
+ "panel_attempts": 0,
233
+ "dispute_id": null,
234
+ "drift_score": null,
235
+ "drift_retried": 0,
236
+ "files": null
237
+ }
238
+ ]
239
+ }
@@ -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
+ }