opencastle 0.27.3 → 0.29.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 (130) hide show
  1. package/README.md +12 -3
  2. package/bin/cli.mjs +13 -5
  3. package/dist/cli/convoy/engine.d.ts.map +1 -1
  4. package/dist/cli/convoy/engine.js +2 -11
  5. package/dist/cli/convoy/engine.js.map +1 -1
  6. package/dist/cli/convoy/engine.test.js +2 -1
  7. package/dist/cli/convoy/engine.test.js.map +1 -1
  8. package/dist/cli/convoy/export.d.ts +1 -3
  9. package/dist/cli/convoy/export.d.ts.map +1 -1
  10. package/dist/cli/convoy/export.js +9 -88
  11. package/dist/cli/convoy/export.js.map +1 -1
  12. package/dist/cli/convoy/export.test.js +7 -186
  13. package/dist/cli/convoy/export.test.js.map +1 -1
  14. package/dist/cli/convoy/issues.js +3 -3
  15. package/dist/cli/convoy/issues.js.map +1 -1
  16. package/dist/cli/convoy/issues.test.js +4 -3
  17. package/dist/cli/convoy/issues.test.js.map +1 -1
  18. package/dist/cli/convoy/pipeline.d.ts.map +1 -1
  19. package/dist/cli/convoy/pipeline.js +0 -21
  20. package/dist/cli/convoy/pipeline.js.map +1 -1
  21. package/dist/cli/convoy/pipeline.test.js +0 -21
  22. package/dist/cli/convoy/pipeline.test.js.map +1 -1
  23. package/dist/cli/dashboard.d.ts.map +1 -1
  24. package/dist/cli/dashboard.js +32 -8
  25. package/dist/cli/dashboard.js.map +1 -1
  26. package/dist/cli/destroy.d.ts.map +1 -1
  27. package/dist/cli/destroy.js +13 -0
  28. package/dist/cli/destroy.js.map +1 -1
  29. package/dist/cli/dispute.d.ts +3 -0
  30. package/dist/cli/dispute.d.ts.map +1 -0
  31. package/dist/cli/dispute.js +25 -0
  32. package/dist/cli/dispute.js.map +1 -0
  33. package/dist/cli/doctor.d.ts +1 -1
  34. package/dist/cli/doctor.d.ts.map +1 -1
  35. package/dist/cli/doctor.js +14 -1
  36. package/dist/cli/doctor.js.map +1 -1
  37. package/dist/cli/eject.d.ts.map +1 -1
  38. package/dist/cli/eject.js +14 -0
  39. package/dist/cli/eject.js.map +1 -1
  40. package/dist/cli/init.d.ts.map +1 -1
  41. package/dist/cli/init.js +14 -0
  42. package/dist/cli/init.js.map +1 -1
  43. package/dist/cli/log.d.ts +0 -11
  44. package/dist/cli/log.d.ts.map +1 -1
  45. package/dist/cli/log.js +2 -114
  46. package/dist/cli/log.js.map +1 -1
  47. package/dist/cli/pipeline.d.ts +3 -0
  48. package/dist/cli/pipeline.d.ts.map +1 -0
  49. package/dist/cli/pipeline.js +321 -0
  50. package/dist/cli/pipeline.js.map +1 -0
  51. package/dist/cli/plan.d.ts +37 -0
  52. package/dist/cli/plan.d.ts.map +1 -1
  53. package/dist/cli/plan.js +321 -161
  54. package/dist/cli/plan.js.map +1 -1
  55. package/dist/cli/run.js +2 -2
  56. package/dist/cli/run.js.map +1 -1
  57. package/dist/cli/update.d.ts.map +1 -1
  58. package/dist/cli/update.js +16 -0
  59. package/dist/cli/update.js.map +1 -1
  60. package/dist/cli/validate.d.ts +3 -0
  61. package/dist/cli/validate.d.ts.map +1 -0
  62. package/dist/cli/validate.js +60 -0
  63. package/dist/cli/validate.js.map +1 -0
  64. package/dist/cli/watch.d.ts.map +1 -1
  65. package/dist/cli/watch.js +1 -3
  66. package/dist/cli/watch.js.map +1 -1
  67. package/package.json +5 -4
  68. package/src/cli/convoy/engine.test.ts +2 -1
  69. package/src/cli/convoy/engine.ts +2 -5
  70. package/src/cli/convoy/export.test.ts +7 -224
  71. package/src/cli/convoy/export.ts +10 -106
  72. package/src/cli/convoy/issues.test.ts +3 -2
  73. package/src/cli/convoy/issues.ts +3 -3
  74. package/src/cli/convoy/pipeline.test.ts +0 -25
  75. package/src/cli/convoy/pipeline.ts +0 -19
  76. package/src/cli/dashboard.ts +33 -8
  77. package/src/cli/destroy.ts +15 -0
  78. package/src/cli/dispute.ts +28 -0
  79. package/src/cli/doctor.ts +16 -1
  80. package/src/cli/eject.ts +16 -0
  81. package/src/cli/init.ts +16 -0
  82. package/src/cli/log.ts +2 -120
  83. package/src/cli/pipeline.ts +362 -0
  84. package/src/cli/plan.ts +357 -153
  85. package/src/cli/run.ts +2 -2
  86. package/src/cli/update.ts +18 -0
  87. package/src/cli/validate.ts +65 -0
  88. package/src/cli/watch.ts +1 -3
  89. package/src/dashboard/dist/_astro/index.Je1YjU_y.css +1 -0
  90. package/src/dashboard/dist/data/convoy-list.json +54 -9
  91. package/src/dashboard/dist/data/convoys/demo-api-v2.json +177 -0
  92. package/src/dashboard/dist/data/convoys/demo-auth-revamp.json +239 -0
  93. package/src/dashboard/dist/data/convoys/demo-dashboard-ui.json +328 -0
  94. package/src/dashboard/dist/data/convoys/demo-data-pipeline.json +187 -0
  95. package/src/dashboard/dist/data/convoys/demo-deploy-ci.json +153 -0
  96. package/src/dashboard/dist/data/convoys/demo-docs-update.json +154 -0
  97. package/src/dashboard/dist/data/convoys/demo-perf-opt.json +227 -0
  98. package/src/dashboard/dist/data/events.ndjson +115 -0
  99. package/src/dashboard/dist/data/overall-stats.json +56 -13
  100. package/src/dashboard/dist/data/pipelines.ndjson +5285 -0
  101. package/src/dashboard/dist/index.html +165 -1392
  102. package/src/dashboard/node_modules/.vite/deps/_metadata.json +6 -6
  103. package/src/dashboard/public/data/convoy-list.json +54 -9
  104. package/src/dashboard/public/data/convoys/demo-api-v2.json +177 -0
  105. package/src/dashboard/public/data/convoys/demo-auth-revamp.json +239 -0
  106. package/src/dashboard/public/data/convoys/demo-dashboard-ui.json +328 -0
  107. package/src/dashboard/public/data/convoys/demo-data-pipeline.json +187 -0
  108. package/src/dashboard/public/data/convoys/demo-deploy-ci.json +153 -0
  109. package/src/dashboard/public/data/convoys/demo-docs-update.json +154 -0
  110. package/src/dashboard/public/data/convoys/demo-perf-opt.json +227 -0
  111. package/src/dashboard/public/data/events.ndjson +115 -0
  112. package/src/dashboard/public/data/overall-stats.json +56 -13
  113. package/src/dashboard/public/data/pipelines.ndjson +5285 -0
  114. package/src/dashboard/scripts/etl.test.ts +4 -62
  115. package/src/dashboard/scripts/etl.ts +11 -10
  116. package/src/dashboard/scripts/generate-demo-db.ts +482 -115
  117. package/src/dashboard/src/pages/index.astro +235 -1638
  118. package/src/dashboard/src/styles/dashboard.css +473 -7
  119. package/src/orchestrator/prompts/brainstorm.prompt.md +1 -0
  120. package/src/orchestrator/prompts/fix-convoy.prompt.md +79 -0
  121. package/src/orchestrator/prompts/generate-convoy.prompt.md +60 -58
  122. package/src/orchestrator/prompts/generate-prd.prompt.md +126 -0
  123. package/src/orchestrator/prompts/validate-convoy.prompt.md +89 -0
  124. package/src/orchestrator/prompts/validate-prd.prompt.md +83 -0
  125. package/dist/cli/convoy/log-merge.test.d.ts +0 -2
  126. package/dist/cli/convoy/log-merge.test.d.ts.map +0 -1
  127. package/dist/cli/convoy/log-merge.test.js +0 -147
  128. package/dist/cli/convoy/log-merge.test.js.map +0 -1
  129. package/src/cli/convoy/log-merge.test.ts +0 -179
  130. package/src/dashboard/dist/_astro/index.6L3_HsPT.css +0 -1
@@ -1,25 +1,25 @@
1
1
  {
2
- "hash": "5561dc89",
2
+ "hash": "0aac54bb",
3
3
  "configHash": "30f8ea04",
4
- "lockfileHash": "e2a32132",
5
- "browserHash": "c5e077c4",
4
+ "lockfileHash": "407e8b0e",
5
+ "browserHash": "3a6bf93e",
6
6
  "optimized": {
7
7
  "astro > cssesc": {
8
8
  "src": "../../../../../node_modules/cssesc/cssesc.js",
9
9
  "file": "astro___cssesc.js",
10
- "fileHash": "a5407c2f",
10
+ "fileHash": "2a163e0c",
11
11
  "needsInterop": true
12
12
  },
13
13
  "astro > aria-query": {
14
14
  "src": "../../../../../node_modules/aria-query/lib/index.js",
15
15
  "file": "astro___aria-query.js",
16
- "fileHash": "3bbe7ca8",
16
+ "fileHash": "34f9775b",
17
17
  "needsInterop": true
18
18
  },
19
19
  "astro > axobject-query": {
20
20
  "src": "../../../../../node_modules/axobject-query/lib/index.js",
21
21
  "file": "astro___axobject-query.js",
22
- "fileHash": "a3c7a104",
22
+ "fileHash": "29370f9f",
23
23
  "needsInterop": true
24
24
  }
25
25
  },
@@ -1,20 +1,65 @@
1
1
  [
2
2
  {
3
- "id": "demo-convoy-2",
4
- "name": "Demo Convoy Beta",
3
+ "id": "demo-deploy-ci",
4
+ "name": "CI/CD Pipeline Setup",
5
5
  "status": "running",
6
- "created_at": "2026-01-15T10:05:00.000Z",
6
+ "created_at": "2026-03-11T08:00:00.000Z",
7
7
  "finished_at": null,
8
8
  "total_tokens": null,
9
9
  "total_cost_usd": null
10
10
  },
11
11
  {
12
- "id": "demo-convoy-1",
13
- "name": "Demo Convoy Alpha",
12
+ "id": "demo-docs-update",
13
+ "name": "Documentation Refresh",
14
14
  "status": "done",
15
- "created_at": "2026-01-15T10:00:00.000Z",
16
- "finished_at": "2026-01-15T10:00:33.000Z",
17
- "total_tokens": 8432,
18
- "total_cost_usd": 0.84
15
+ "created_at": "2026-02-28T15:00:00.000Z",
16
+ "finished_at": "2026-02-28T15:22:00.000Z",
17
+ "total_tokens": 14800,
18
+ "total_cost_usd": 1.48
19
+ },
20
+ {
21
+ "id": "demo-data-pipeline",
22
+ "name": "Analytics ETL Pipeline",
23
+ "status": "done",
24
+ "created_at": "2026-02-22T13:00:00.000Z",
25
+ "finished_at": "2026-02-22T13:38:00.000Z",
26
+ "total_tokens": 28900,
27
+ "total_cost_usd": 2.89
28
+ },
29
+ {
30
+ "id": "demo-perf-opt",
31
+ "name": "Frontend Performance Boost",
32
+ "status": "done",
33
+ "created_at": "2026-02-17T10:00:00.000Z",
34
+ "finished_at": "2026-02-17T11:02:00.000Z",
35
+ "total_tokens": 37200,
36
+ "total_cost_usd": 3.72
37
+ },
38
+ {
39
+ "id": "demo-api-v2",
40
+ "name": "REST API v2 Migration",
41
+ "status": "gate_failed",
42
+ "created_at": "2026-02-12T16:00:00.000Z",
43
+ "finished_at": "2026-02-12T16:28:00.000Z",
44
+ "total_tokens": 24600,
45
+ "total_cost_usd": 2.46
46
+ },
47
+ {
48
+ "id": "demo-dashboard-ui",
49
+ "name": "Observability Dashboard UI",
50
+ "status": "done",
51
+ "created_at": "2026-02-07T14:00:00.000Z",
52
+ "finished_at": "2026-02-07T15:38:00.000Z",
53
+ "total_tokens": 78400,
54
+ "total_cost_usd": 7.84
55
+ },
56
+ {
57
+ "id": "demo-auth-revamp",
58
+ "name": "Auth System Revamp",
59
+ "status": "done",
60
+ "created_at": "2026-02-03T09:00:00.000Z",
61
+ "finished_at": "2026-02-03T09:47:00.000Z",
62
+ "total_tokens": 42850,
63
+ "total_cost_usd": 4.28
19
64
  }
20
65
  ]
@@ -0,0 +1,177 @@
1
+ {
2
+ "convoy": {
3
+ "id": "demo-api-v2",
4
+ "name": "REST API v2 Migration",
5
+ "status": "gate_failed",
6
+ "created_at": "2026-02-12T16:00:00.000Z",
7
+ "finished_at": "2026-02-12T16:28:00.000Z",
8
+ "branch": "feat/api-v2",
9
+ "total_tokens": 24600,
10
+ "total_cost_usd": 2.46
11
+ },
12
+ "taskSummary": {
13
+ "total": 3,
14
+ "done": 2,
15
+ "running": 0,
16
+ "failed": 0,
17
+ "review_blocked": 0,
18
+ "disputed": 0,
19
+ "reviewed": 1,
20
+ "panel_reviewed": 1,
21
+ "tasks_with_drift": 0,
22
+ "max_drift_score": null,
23
+ "drift_retried": 0
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": 0,
33
+ "max_drift_score": null,
34
+ "drift_retried_tasks": 0
35
+ },
36
+ "dlq_count": 1,
37
+ "dlq_entries": [
38
+ {
39
+ "id": "dlq-api-1",
40
+ "task_id": "api-t3",
41
+ "agent": "Security Expert",
42
+ "failure_type": "gate_failed",
43
+ "attempts": 1,
44
+ "resolved": 0
45
+ }
46
+ ],
47
+ "artifact_count": 3,
48
+ "artifacts": [
49
+ {
50
+ "id": "artifact-demo-api-v2-docs-api-v2-contract-json",
51
+ "name": "docs/api-v2-contract.json",
52
+ "type": "json",
53
+ "task_id": "api-t1",
54
+ "created_at": "2026-03-12T22:26:01.388Z"
55
+ },
56
+ {
57
+ "id": "artifact-demo-api-v2-reports-security-gate-failure-md",
58
+ "name": "reports/security-gate-failure.md",
59
+ "type": "summary",
60
+ "task_id": "api-t3",
61
+ "created_at": "2026-03-12T22:26:01.388Z"
62
+ },
63
+ {
64
+ "id": "artifact-demo-api-v2-src-api-rate-limiter-ts",
65
+ "name": "src/api/rate-limiter.ts",
66
+ "type": "file",
67
+ "task_id": "api-t2",
68
+ "created_at": "2026-03-12T22:26:01.388Z"
69
+ }
70
+ ],
71
+ "has_more_events": false,
72
+ "events": [
73
+ {
74
+ "type": "task_gate_failed",
75
+ "task_id": "api-t3",
76
+ "data": {
77
+ "reason": "SQL injection risk"
78
+ },
79
+ "created_at": "2026-02-12T16:27:00.000Z"
80
+ },
81
+ {
82
+ "type": "task_started",
83
+ "task_id": "api-t3",
84
+ "data": null,
85
+ "created_at": "2026-02-12T16:24:00.000Z"
86
+ },
87
+ {
88
+ "type": "task_done",
89
+ "task_id": "api-t2",
90
+ "data": null,
91
+ "created_at": "2026-02-12T16:23:00.000Z"
92
+ },
93
+ {
94
+ "type": "task_started",
95
+ "task_id": "api-t2",
96
+ "data": null,
97
+ "created_at": "2026-02-12T16:12:00.000Z"
98
+ },
99
+ {
100
+ "type": "task_done",
101
+ "task_id": "api-t1",
102
+ "data": null,
103
+ "created_at": "2026-02-12T16:11:00.000Z"
104
+ },
105
+ {
106
+ "type": "task_started",
107
+ "task_id": "api-t1",
108
+ "data": null,
109
+ "created_at": "2026-02-12T16:00:05.000Z"
110
+ }
111
+ ],
112
+ "tasks": [
113
+ {
114
+ "id": "api-t1",
115
+ "phase": 1,
116
+ "agent": "API Designer",
117
+ "model": "claude-sonnet-4-6",
118
+ "status": "done",
119
+ "retries": 0,
120
+ "started_at": "2026-02-12T16:00:05.000Z",
121
+ "finished_at": "2026-02-12T16:11:00.000Z",
122
+ "total_tokens": 7200,
123
+ "cost_usd": 0.72,
124
+ "review_level": null,
125
+ "review_verdict": null,
126
+ "review_tokens": null,
127
+ "review_model": null,
128
+ "panel_attempts": 0,
129
+ "dispute_id": null,
130
+ "drift_score": null,
131
+ "drift_retried": 0,
132
+ "files": null
133
+ },
134
+ {
135
+ "id": "api-t2",
136
+ "phase": 2,
137
+ "agent": "Developer",
138
+ "model": "claude-sonnet-4-6",
139
+ "status": "done",
140
+ "retries": 2,
141
+ "started_at": "2026-02-12T16:12:00.000Z",
142
+ "finished_at": "2026-02-12T16:23:00.000Z",
143
+ "total_tokens": 11400,
144
+ "cost_usd": 1.14,
145
+ "review_level": null,
146
+ "review_verdict": null,
147
+ "review_tokens": null,
148
+ "review_model": null,
149
+ "panel_attempts": 0,
150
+ "dispute_id": null,
151
+ "drift_score": null,
152
+ "drift_retried": 0,
153
+ "files": null
154
+ },
155
+ {
156
+ "id": "api-t3",
157
+ "phase": 3,
158
+ "agent": "Security Expert",
159
+ "model": "claude-sonnet-4-6",
160
+ "status": "gate_failed",
161
+ "retries": 0,
162
+ "started_at": "2026-02-12T16:24:00.000Z",
163
+ "finished_at": "2026-02-12T16:27:00.000Z",
164
+ "total_tokens": 6000,
165
+ "cost_usd": 0.6,
166
+ "review_level": "deep",
167
+ "review_verdict": "block",
168
+ "review_tokens": 2100,
169
+ "review_model": "claude-sonnet-4-6",
170
+ "panel_attempts": 1,
171
+ "dispute_id": null,
172
+ "drift_score": null,
173
+ "drift_retried": 0,
174
+ "files": null
175
+ }
176
+ ]
177
+ }
@@ -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
+ }