catherd-cli 0.2.1 → 1.1.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 (207) hide show
  1. package/README.md +141 -33
  2. package/THIRD_PARTY_NOTICES.md +37 -0
  3. package/catalog/jev.json +89 -0
  4. package/catalog/models.json +236 -0
  5. package/catalog/scores.json +366 -0
  6. package/package.json +24 -8
  7. package/plugin/.claude-plugin/plugin.json +2 -2
  8. package/plugin/.mcp.json +2 -2
  9. package/plugin/bin/catherd-mcp +30 -0
  10. package/plugin/commands/catherd.md +2 -2
  11. package/plugin/skills/catherd/SKILL.md +160 -97
  12. package/plugin/skills/catherd-setup/SKILL.md +34 -24
  13. package/src/adapters/access.ts +63 -0
  14. package/src/adapters/all.ts +8 -0
  15. package/src/adapters/backend.ts +159 -0
  16. package/src/adapters/claude-code/events.ts +86 -0
  17. package/src/adapters/claude-code/index.ts +317 -0
  18. package/src/adapters/claude-code/models-api.ts +65 -0
  19. package/src/adapters/claude-code/models.ts +26 -0
  20. package/src/adapters/cli.ts +74 -0
  21. package/src/adapters/codex/events.ts +65 -0
  22. package/src/adapters/codex/home.ts +47 -0
  23. package/src/adapters/codex/index.ts +282 -0
  24. package/src/adapters/discovery.ts +87 -0
  25. package/src/adapters/opencode/agents.ts +84 -0
  26. package/src/adapters/opencode/events.ts +109 -0
  27. package/src/adapters/opencode/index.ts +333 -0
  28. package/src/adapters/registry.ts +14 -0
  29. package/src/cli.ts +159 -19
  30. package/src/domain/agents.ts +60 -0
  31. package/src/domain/budget.ts +45 -0
  32. package/src/domain/catalog.ts +262 -0
  33. package/src/domain/changes.ts +52 -0
  34. package/src/domain/cost.ts +89 -0
  35. package/src/domain/errors.ts +60 -0
  36. package/src/domain/failover.ts +119 -0
  37. package/src/domain/hints.ts +22 -0
  38. package/src/domain/ids.ts +97 -0
  39. package/src/domain/jev.ts +283 -0
  40. package/src/domain/lane.ts +92 -0
  41. package/src/domain/notice.ts +95 -0
  42. package/src/domain/profile-rules.ts +239 -0
  43. package/src/domain/profile.ts +389 -0
  44. package/src/domain/record.ts +86 -0
  45. package/src/{profile → domain}/role-prompts.ts +75 -27
  46. package/src/domain/roles.ts +25 -0
  47. package/src/domain/route.ts +126 -0
  48. package/src/domain/runtime.ts +21 -0
  49. package/src/domain/sanitize.ts +29 -0
  50. package/src/domain/secrets.ts +57 -0
  51. package/src/domain/select.ts +136 -0
  52. package/src/domain/state.ts +49 -0
  53. package/src/domain/util.ts +18 -0
  54. package/src/entry/capture-fixtures-command.ts +57 -0
  55. package/src/entry/catalog-command.ts +106 -0
  56. package/src/entry/cli-kit.ts +36 -0
  57. package/src/entry/deps.ts +17 -0
  58. package/src/entry/doctor-command.ts +51 -0
  59. package/src/entry/glyphs.ts +34 -0
  60. package/src/entry/init-command.ts +182 -0
  61. package/src/entry/lock-command.ts +123 -0
  62. package/src/{mcp/commands.ts → entry/mcp/command.ts} +5 -1
  63. package/src/entry/mcp/dispatch-tools.ts +52 -0
  64. package/src/entry/mcp/handshake.ts +58 -0
  65. package/src/entry/mcp/lane-tools.ts +84 -0
  66. package/src/entry/mcp/protocol-tools.ts +57 -0
  67. package/src/entry/mcp/result.ts +51 -0
  68. package/src/entry/mcp/run-tools.ts +145 -0
  69. package/src/entry/mcp/server.ts +88 -0
  70. package/src/entry/mcp/setup-tools.ts +81 -0
  71. package/src/entry/profile-command.ts +318 -0
  72. package/src/entry/prompt.ts +103 -0
  73. package/src/entry/runs-command.ts +260 -0
  74. package/src/entry/supervise-bin.ts +18 -0
  75. package/src/entry/supervise-command.ts +37 -0
  76. package/src/entry/tui/commands.ts +545 -0
  77. package/src/entry/tui/effects.ts +312 -0
  78. package/src/entry/tui/fixtures.ts +585 -0
  79. package/src/entry/tui/profile-edits.ts +138 -0
  80. package/src/entry/tui/profile-tree.ts +420 -0
  81. package/src/entry/tui/providers/app.tsx +162 -0
  82. package/src/entry/tui/providers/boundary.tsx +57 -0
  83. package/src/entry/tui/providers/data.tsx +160 -0
  84. package/src/entry/tui/providers/keymap.tsx +166 -0
  85. package/src/entry/tui/providers/root.tsx +45 -0
  86. package/src/entry/tui/providers/theme.tsx +17 -0
  87. package/src/entry/tui/providers/toast.tsx +77 -0
  88. package/src/entry/tui/run.tsx +98 -0
  89. package/src/entry/tui/state.ts +356 -0
  90. package/src/entry/tui/stories.ts +107 -0
  91. package/src/entry/tui/text.ts +130 -0
  92. package/src/entry/tui/theme.ts +140 -0
  93. package/src/entry/tui/views/app.tsx +208 -0
  94. package/src/entry/tui/views/dialogs.tsx +41 -0
  95. package/src/entry/tui/views/profile-actions.ts +321 -0
  96. package/src/entry/tui/views/profiles.tsx +440 -0
  97. package/src/entry/tui/views/runs.tsx +573 -0
  98. package/src/entry/tui/views/save-dialog.tsx +332 -0
  99. package/src/entry/tui/views/status.tsx +209 -0
  100. package/src/entry/tui/widgets/chrome.tsx +114 -0
  101. package/src/entry/tui/widgets/dialog-confirm.tsx +58 -0
  102. package/src/entry/tui/widgets/dialog-prompt.tsx +52 -0
  103. package/src/entry/tui/widgets/dialog-select.tsx +212 -0
  104. package/src/entry/tui/widgets/dialog.tsx +68 -0
  105. package/src/entry/tui/widgets/line.tsx +92 -0
  106. package/src/entry/tui/widgets/list.tsx +197 -0
  107. package/src/entry/tui/widgets/spinner.tsx +49 -0
  108. package/src/entry/tui/widgets/toast.tsx +62 -0
  109. package/src/infra/assets.ts +4 -0
  110. package/src/infra/claude-session.ts +98 -0
  111. package/src/infra/dispatch-dir.ts +286 -0
  112. package/src/infra/env.ts +67 -0
  113. package/src/infra/filelock.ts +159 -0
  114. package/src/infra/git.ts +91 -0
  115. package/src/infra/heavy-lock.ts +36 -0
  116. package/src/infra/jev-client.ts +162 -0
  117. package/src/infra/launch.ts +25 -0
  118. package/src/infra/log.ts +84 -0
  119. package/src/infra/paths.ts +38 -0
  120. package/src/infra/peer-inbox.ts +92 -0
  121. package/src/infra/proc.ts +110 -0
  122. package/src/infra/store.ts +229 -0
  123. package/src/infra/supervisor.ts +287 -0
  124. package/src/infra/version.ts +6 -0
  125. package/src/services/admission.ts +303 -0
  126. package/src/services/agent-links.ts +139 -0
  127. package/src/services/backends.ts +44 -0
  128. package/src/services/budget.ts +47 -0
  129. package/src/services/capture.ts +233 -0
  130. package/src/services/catalog-service.ts +382 -0
  131. package/src/services/dispatch-service.ts +620 -0
  132. package/src/services/dispatches.ts +174 -0
  133. package/src/services/doctor-access.ts +231 -0
  134. package/src/services/doctor-backends.ts +170 -0
  135. package/src/services/doctor-checks.ts +148 -0
  136. package/src/services/doctor-push.ts +109 -0
  137. package/src/services/doctor.ts +338 -0
  138. package/src/services/finalize.ts +377 -0
  139. package/src/services/gate-service.ts +288 -0
  140. package/src/services/global-install.ts +99 -0
  141. package/src/services/jev-service.ts +183 -0
  142. package/src/services/lane-service.ts +390 -0
  143. package/src/services/milestones.ts +208 -0
  144. package/src/services/notifier.ts +296 -0
  145. package/src/services/peek.ts +103 -0
  146. package/src/services/ports.ts +135 -0
  147. package/src/services/preflight.ts +221 -0
  148. package/src/services/profile-service.ts +292 -0
  149. package/src/services/profile-store.ts +141 -0
  150. package/src/services/protocol.ts +212 -0
  151. package/src/services/questions.ts +102 -0
  152. package/src/services/reconcile.ts +130 -0
  153. package/src/services/reentry.ts +22 -0
  154. package/src/services/routing-service.ts +190 -0
  155. package/src/services/run-debug.ts +79 -0
  156. package/src/services/run-service.ts +194 -0
  157. package/src/services/run-store.ts +334 -0
  158. package/src/services/runs-page.ts +254 -0
  159. package/src/services/session-view.ts +152 -0
  160. package/src/services/sessions.ts +92 -0
  161. package/src/services/setup.ts +87 -0
  162. package/src/services/state.ts +111 -0
  163. package/src/services/summary.ts +241 -0
  164. package/catalog/catalog.json +0 -112
  165. package/catalog/models-dev.json +0 -56453
  166. package/src/core/codex-events.ts +0 -49
  167. package/src/core/codex.ts +0 -166
  168. package/src/core/harness.ts +0 -89
  169. package/src/core/lanes.ts +0 -67
  170. package/src/core/lock.ts +0 -111
  171. package/src/core/opencode.ts +0 -207
  172. package/src/core/reconcile.ts +0 -26
  173. package/src/core/reply.ts +0 -54
  174. package/src/core/runstore.ts +0 -163
  175. package/src/core/spawn.ts +0 -89
  176. package/src/core/status.ts +0 -193
  177. package/src/files.ts +0 -19
  178. package/src/mcp/dispatch.ts +0 -154
  179. package/src/mcp/lane-tools.ts +0 -200
  180. package/src/mcp/out.ts +0 -6
  181. package/src/mcp/preflight.ts +0 -84
  182. package/src/mcp/run-tools.ts +0 -121
  183. package/src/mcp/runs.ts +0 -118
  184. package/src/mcp/server.ts +0 -26
  185. package/src/mcp/setup-tools.ts +0 -175
  186. package/src/paths.ts +0 -20
  187. package/src/profile/agents.ts +0 -130
  188. package/src/profile/profile.ts +0 -228
  189. package/src/routing/catalog.ts +0 -227
  190. package/src/routing/commands.ts +0 -22
  191. package/src/routing/jev.ts +0 -185
  192. package/src/routing/route.ts +0 -155
  193. package/src/routing/select.ts +0 -90
  194. package/src/tui/backends.ts +0 -57
  195. package/src/tui/commands.ts +0 -53
  196. package/src/tui/dashboard.tsx +0 -245
  197. package/src/tui/editor.tsx +0 -214
  198. package/src/tui/init.tsx +0 -208
  199. package/src/tui/matrix-model.ts +0 -279
  200. package/src/tui/matrix.tsx +0 -512
  201. package/src/tui/profiles.ts +0 -38
  202. package/src/tui/theme.ts +0 -177
  203. package/src/tui/ui.tsx +0 -267
  204. package/src/tui/watch-model.ts +0 -83
  205. package/src/tui/watch.tsx +0 -236
  206. package/src/types.ts +0 -184
  207. package/src/version.ts +0 -7
@@ -0,0 +1,366 @@
1
+ {
2
+ "schema": 1,
3
+ "version": "2026-09-25",
4
+ "benchmarks": {
5
+ "repo_code": { "benchmark": "DeepSWE", "version": "1.1" },
6
+ "terminal": { "benchmark": "Terminal-Bench", "version": "4.0" },
7
+ "honesty": {
8
+ "benchmark": "OpenAI Broken Search Tool, 100 minus the failure rate",
9
+ "version": "GPT-6 system card appendix 11.6.4.2"
10
+ }
11
+ },
12
+ "scores": [
13
+ {
14
+ "rung": "gpt-6-sol#low",
15
+ "dim": "repo_code",
16
+ "value": 37.2,
17
+ "benchmark": "DeepSWE",
18
+ "version": "1.1",
19
+ "url": "https://kingy.ai/blog/gpt-6-sol-luna-specs-benchmarks-pricing-comparison/",
20
+ "date": "2026-09-22",
21
+ "confidence": "secondary"
22
+ },
23
+ {
24
+ "rung": "gpt-6-sol#medium",
25
+ "dim": "repo_code",
26
+ "value": 56.6,
27
+ "benchmark": "DeepSWE",
28
+ "version": "1.1",
29
+ "url": "https://kingy.ai/blog/gpt-6-sol-luna-specs-benchmarks-pricing-comparison/",
30
+ "date": "2026-09-22",
31
+ "confidence": "secondary"
32
+ },
33
+ {
34
+ "rung": "gpt-6-sol#high",
35
+ "dim": "repo_code",
36
+ "value": 65.3,
37
+ "benchmark": "DeepSWE",
38
+ "version": "1.1",
39
+ "url": "https://kingy.ai/blog/gpt-6-sol-luna-specs-benchmarks-pricing-comparison/",
40
+ "date": "2026-09-22",
41
+ "confidence": "secondary"
42
+ },
43
+ {
44
+ "rung": "gpt-6-sol#xhigh",
45
+ "dim": "repo_code",
46
+ "value": 66.6,
47
+ "benchmark": "DeepSWE",
48
+ "version": "1.1",
49
+ "url": "https://kingy.ai/blog/gpt-6-sol-luna-specs-benchmarks-pricing-comparison/",
50
+ "date": "2026-09-22",
51
+ "confidence": "secondary"
52
+ },
53
+ {
54
+ "rung": "gpt-6-sol#max",
55
+ "dim": "repo_code",
56
+ "value": 68.8,
57
+ "benchmark": "DeepSWE",
58
+ "version": "1.1",
59
+ "url": "https://x.com/OpenAIDevs/status/2102461464279912495",
60
+ "date": "2026-09-22",
61
+ "confidence": "verified"
62
+ },
63
+ {
64
+ "rung": "gpt-6-sol#max",
65
+ "dim": "terminal",
66
+ "value": 43,
67
+ "benchmark": "Terminal-Bench",
68
+ "version": "4.0",
69
+ "url": "https://artificialanalysis.ai/articles/gpt-6-sol-and-luna-push-the-cost-efficiency-frontier",
70
+ "date": "2026-09-22",
71
+ "confidence": "secondary"
72
+ },
73
+ {
74
+ "rung": "gpt-6-sol#max",
75
+ "dim": "honesty",
76
+ "value": 95.1,
77
+ "benchmark": "OpenAI Broken Search Tool, 100 minus the failure rate",
78
+ "version": "GPT-6 system card appendix 11.6.4.2",
79
+ "url": "https://deploymentsafety.openai.com/gpt-6-astra/sec:appendix-sol-luna",
80
+ "date": "2026-09-22",
81
+ "confidence": "verified"
82
+ },
83
+ {
84
+ "rung": "gpt-6-sol#medium",
85
+ "dim": "honesty",
86
+ "value": 95.1,
87
+ "benchmark": "OpenAI Broken Search Tool, 100 minus the failure rate",
88
+ "version": "GPT-6 system card appendix 11.6.4.2",
89
+ "url": "https://deploymentsafety.openai.com/gpt-6-astra/sec:appendix-sol-luna",
90
+ "date": "2026-09-22",
91
+ "confidence": "inferred",
92
+ "note": "measured at max effort; carried to this effort"
93
+ },
94
+ {
95
+ "rung": "gpt-6-sol#high",
96
+ "dim": "honesty",
97
+ "value": 95.1,
98
+ "benchmark": "OpenAI Broken Search Tool, 100 minus the failure rate",
99
+ "version": "GPT-6 system card appendix 11.6.4.2",
100
+ "url": "https://deploymentsafety.openai.com/gpt-6-astra/sec:appendix-sol-luna",
101
+ "date": "2026-09-22",
102
+ "confidence": "inferred",
103
+ "note": "measured at max effort; carried to this effort"
104
+ },
105
+ {
106
+ "rung": "gpt-6-sol#xhigh",
107
+ "dim": "honesty",
108
+ "value": 95.1,
109
+ "benchmark": "OpenAI Broken Search Tool, 100 minus the failure rate",
110
+ "version": "GPT-6 system card appendix 11.6.4.2",
111
+ "url": "https://deploymentsafety.openai.com/gpt-6-astra/sec:appendix-sol-luna",
112
+ "date": "2026-09-22",
113
+ "confidence": "inferred",
114
+ "note": "measured at max effort; carried to this effort"
115
+ },
116
+ {
117
+ "rung": "gpt-6-luna#high",
118
+ "dim": "repo_code",
119
+ "value": 59.3,
120
+ "benchmark": "DeepSWE",
121
+ "version": "1.1",
122
+ "url": "https://kingy.ai/blog/gpt-6-sol-luna-specs-benchmarks-pricing-comparison/",
123
+ "date": "2026-09-22",
124
+ "confidence": "inferred",
125
+ "note": "the 0.x seed; only Luna max (66.6) is published"
126
+ },
127
+ {
128
+ "rung": "gpt-6-luna#max",
129
+ "dim": "repo_code",
130
+ "value": 66.6,
131
+ "benchmark": "DeepSWE",
132
+ "version": "1.1",
133
+ "url": "https://kingy.ai/blog/gpt-6-sol-luna-specs-benchmarks-pricing-comparison/",
134
+ "date": "2026-09-22",
135
+ "confidence": "secondary"
136
+ },
137
+ {
138
+ "rung": "gpt-6-luna#max",
139
+ "dim": "terminal",
140
+ "value": 13,
141
+ "benchmark": "Terminal-Bench",
142
+ "version": "4.0",
143
+ "url": "https://artificialanalysis.ai/articles/gpt-6-sol-and-luna-push-the-cost-efficiency-frontier",
144
+ "date": "2026-09-22",
145
+ "confidence": "secondary"
146
+ },
147
+ {
148
+ "rung": "gpt-6-luna#max",
149
+ "dim": "honesty",
150
+ "value": 71.3,
151
+ "benchmark": "OpenAI Broken Search Tool, 100 minus the failure rate",
152
+ "version": "GPT-6 system card appendix 11.6.4.2",
153
+ "url": "https://deploymentsafety.openai.com/gpt-6-astra/sec:appendix-sol-luna",
154
+ "date": "2026-09-22",
155
+ "confidence": "verified"
156
+ },
157
+ {
158
+ "rung": "gpt-6-luna#high",
159
+ "dim": "honesty",
160
+ "value": 71.3,
161
+ "benchmark": "OpenAI Broken Search Tool, 100 minus the failure rate",
162
+ "version": "GPT-6 system card appendix 11.6.4.2",
163
+ "url": "https://deploymentsafety.openai.com/gpt-6-astra/sec:appendix-sol-luna",
164
+ "date": "2026-09-22",
165
+ "confidence": "inferred",
166
+ "note": "measured at max effort; carried to this effort"
167
+ },
168
+ {
169
+ "rung": "gpt-6-astra#xhigh",
170
+ "dim": "repo_code",
171
+ "value": 74,
172
+ "benchmark": "DeepSWE",
173
+ "version": "1.1",
174
+ "url": "https://deepswe.datacurve.ai/",
175
+ "date": "2026-09-22",
176
+ "confidence": "verified"
177
+ },
178
+ {
179
+ "rung": "gpt-6-astra#high",
180
+ "dim": "terminal",
181
+ "value": 57.9,
182
+ "benchmark": "Terminal-Bench",
183
+ "version": "4.0",
184
+ "url": "https://www-cdn.anthropic.com/fc1b44717c85dc068bc6ba5024219938094694bd/Claude%20Opus%205.5%20System%20Card.pdf",
185
+ "date": "2026-09-22",
186
+ "confidence": "secondary",
187
+ "note": "OpenAI-reported, as quoted in the Opus 5.5 system card"
188
+ },
189
+ {
190
+ "rung": "gpt-6-astra#max",
191
+ "dim": "honesty",
192
+ "value": 98.5,
193
+ "benchmark": "OpenAI Broken Search Tool, 100 minus the failure rate",
194
+ "version": "GPT-6 system card appendix 11.6.4.2",
195
+ "url": "https://deploymentsafety.openai.com/gpt-6-astra/sec:appendix-sol-luna",
196
+ "date": "2026-09-22",
197
+ "confidence": "verified"
198
+ },
199
+ {
200
+ "rung": "gpt-6-astra#xhigh",
201
+ "dim": "honesty",
202
+ "value": 98.5,
203
+ "benchmark": "OpenAI Broken Search Tool, 100 minus the failure rate",
204
+ "version": "GPT-6 system card appendix 11.6.4.2",
205
+ "url": "https://deploymentsafety.openai.com/gpt-6-astra/sec:appendix-sol-luna",
206
+ "date": "2026-09-22",
207
+ "confidence": "inferred",
208
+ "note": "measured at max effort; carried to this effort"
209
+ },
210
+ {
211
+ "rung": "gpt-5.6-sol#max",
212
+ "dim": "repo_code",
213
+ "value": 73,
214
+ "benchmark": "DeepSWE",
215
+ "version": "1.1",
216
+ "url": "https://deepswe.datacurve.ai/",
217
+ "date": "2026-09-22",
218
+ "confidence": "verified"
219
+ },
220
+ {
221
+ "rung": "gpt-5.6-sol#max",
222
+ "dim": "terminal",
223
+ "value": 37.3,
224
+ "benchmark": "Terminal-Bench",
225
+ "version": "4.0",
226
+ "url": "https://www-cdn.anthropic.com/fc1b44717c85dc068bc6ba5024219938094694bd/Claude%20Opus%205.5%20System%20Card.pdf",
227
+ "date": "2026-09-22",
228
+ "confidence": "secondary"
229
+ },
230
+ {
231
+ "rung": "gpt-5.6-sol#max",
232
+ "dim": "honesty",
233
+ "value": 22.5,
234
+ "benchmark": "OpenAI Broken Search Tool, 100 minus the failure rate",
235
+ "version": "GPT-6 system card appendix 11.6.4.2",
236
+ "url": "https://deploymentsafety.openai.com/gpt-6-astra/sec:appendix-sol-luna",
237
+ "date": "2026-09-22",
238
+ "confidence": "verified"
239
+ },
240
+ {
241
+ "rung": "gpt-5.6-luna#max",
242
+ "dim": "repo_code",
243
+ "value": 67,
244
+ "benchmark": "DeepSWE",
245
+ "version": "1.1",
246
+ "url": "https://deepswe.datacurve.ai/",
247
+ "date": "2026-09-22",
248
+ "confidence": "verified"
249
+ },
250
+ {
251
+ "rung": "gpt-5.6-luna#max",
252
+ "dim": "honesty",
253
+ "value": 21.8,
254
+ "benchmark": "OpenAI Broken Search Tool, 100 minus the failure rate",
255
+ "version": "GPT-6 system card appendix 11.6.4.2",
256
+ "url": "https://deploymentsafety.openai.com/gpt-6-astra/sec:appendix-sol-luna",
257
+ "date": "2026-09-22",
258
+ "confidence": "verified"
259
+ },
260
+ {
261
+ "rung": "claude-opus-5-5#max",
262
+ "dim": "repo_code",
263
+ "value": 74.2,
264
+ "benchmark": "DeepSWE",
265
+ "version": "1.1",
266
+ "url": "https://www-cdn.anthropic.com/fc1b44717c85dc068bc6ba5024219938094694bd/Claude%20Opus%205.5%20System%20Card.pdf",
267
+ "date": "2026-09-22",
268
+ "confidence": "verified",
269
+ "note": "vendor-run, mean of 5 trials (system card 8.3)"
270
+ },
271
+ {
272
+ "rung": "claude-opus-5-5#xhigh",
273
+ "dim": "terminal",
274
+ "value": 66.4,
275
+ "benchmark": "Terminal-Bench",
276
+ "version": "4.0",
277
+ "url": "https://www-cdn.anthropic.com/fc1b44717c85dc068bc6ba5024219938094694bd/Claude%20Opus%205.5%20System%20Card.pdf",
278
+ "date": "2026-09-22",
279
+ "confidence": "verified",
280
+ "note": "Claude Code --bare, 5 trials (system card 8.5)"
281
+ },
282
+ {
283
+ "rung": "claude-opus-5-5#max",
284
+ "dim": "terminal",
285
+ "value": 64.8,
286
+ "benchmark": "Terminal-Bench",
287
+ "version": "4.0",
288
+ "url": "https://www-cdn.anthropic.com/fc1b44717c85dc068bc6ba5024219938094694bd/Claude%20Opus%205.5%20System%20Card.pdf",
289
+ "date": "2026-09-22",
290
+ "confidence": "verified"
291
+ },
292
+ {
293
+ "rung": "claude-fable-5-1#max",
294
+ "dim": "terminal",
295
+ "value": 55.8,
296
+ "benchmark": "Terminal-Bench",
297
+ "version": "4.0",
298
+ "url": "https://www-cdn.anthropic.com/fc1b44717c85dc068bc6ba5024219938094694bd/Claude%20Opus%205.5%20System%20Card.pdf",
299
+ "date": "2026-09-22",
300
+ "confidence": "verified"
301
+ },
302
+ {
303
+ "rung": "claude-fable-5-1#max",
304
+ "dim": "repo_code",
305
+ "value": 67.4,
306
+ "benchmark": "DeepSWE",
307
+ "version": "1.1",
308
+ "url": "https://codingfleet.com/blog/deepswe-v11-leaderboard-2026/",
309
+ "date": "2026-09-25",
310
+ "confidence": "inferred",
311
+ "note": "a 5-trial mean from a secondary source that names no effort"
312
+ },
313
+ {
314
+ "rung": "claude-sonnet-5#max",
315
+ "dim": "repo_code",
316
+ "value": 54,
317
+ "benchmark": "DeepSWE",
318
+ "version": "1.1",
319
+ "url": "https://deepswe.datacurve.ai/",
320
+ "date": "2026-09-22",
321
+ "confidence": "verified"
322
+ }
323
+ ],
324
+ "treatLike": {
325
+ "claude-opus-5-5#low": { "like": "claude-opus-5-5#xhigh", "note": "only xhigh and max are published" },
326
+ "claude-opus-5-5#medium": { "like": "claude-opus-5-5#xhigh", "note": "only xhigh and max are published" },
327
+ "claude-opus-5-5#high": { "like": "claude-opus-5-5#xhigh", "note": "only xhigh and max are published" },
328
+ "opencode-go/kimi-k3#max": {
329
+ "like": "gpt-6-sol#medium",
330
+ "note": "the default profile's OpenCode Go stand-in for Sol; no DeepSWE 1.1, Terminal-Bench 4.0 or honesty score is published for it"
331
+ }
332
+ },
333
+ "bars": {
334
+ "repo_code": {
335
+ "copy": { "repo_code": 55 },
336
+ "build": { "repo_code": 55 },
337
+ "logic": { "repo_code": 55, "honesty": 90 },
338
+ "hard": { "repo_code": 55, "honesty": 90 }
339
+ },
340
+ "terminal": {
341
+ "copy": { "honesty": 90 },
342
+ "build": { "honesty": 90 },
343
+ "logic": { "honesty": 90 },
344
+ "hard": { "honesty": 90 }
345
+ },
346
+ "ui": {
347
+ "copy": { "repo_code": 55 },
348
+ "build": { "repo_code": 55 },
349
+ "logic": { "repo_code": 55, "honesty": 90 },
350
+ "hard": { "repo_code": 55, "honesty": 90 }
351
+ },
352
+ "prose": {
353
+ "copy": { "repo_code": 55 },
354
+ "build": { "repo_code": 55 },
355
+ "logic": { "repo_code": 55, "honesty": 90 },
356
+ "hard": { "repo_code": 55, "honesty": 90 }
357
+ },
358
+ "research": {
359
+ "copy": { "repo_code": 55 },
360
+ "build": { "repo_code": 55 },
361
+ "logic": { "repo_code": 55, "honesty": 90 },
362
+ "hard": { "repo_code": 55, "honesty": 90 }
363
+ }
364
+ },
365
+ "barsWhy": "Track A (copy, build) needs DeepSWE 1.1 >= 55, which Luna high and every Sol rung from medium clear. Track B (logic, hard) also needs honesty >= 90: a worker on logic or hard work must say when a tool fails, which Luna (71.3) does not and Sol (95.1) does. Terminal-Bench 4.0 is published per effort only for Opus 5.5, so terminal lanes gate on honesty alone and use terminal scores to order the speed ladder."
366
+ }
package/package.json CHANGED
@@ -1,8 +1,25 @@
1
1
  {
2
2
  "name": "catherd-cli",
3
- "version": "0.2.1",
3
+ "version": "1.1.0",
4
4
  "description": "Herds coding agents: autopilot builds from your own Claude Code session.",
5
+ "keywords": [
6
+ "autopilot",
7
+ "claude-code",
8
+ "claude-code-plugin",
9
+ "cli",
10
+ "codex",
11
+ "coding-agents",
12
+ "mcp",
13
+ "opencode",
14
+ "orchestration",
15
+ "tui"
16
+ ],
17
+ "homepage": "https://github.com/47vigen/catherd#readme",
18
+ "bugs": {
19
+ "url": "https://github.com/47vigen/catherd/issues"
20
+ },
5
21
  "license": "MIT",
22
+ "author": "47vigen",
6
23
  "repository": {
7
24
  "type": "git",
8
25
  "url": "git+https://github.com/47vigen/catherd.git"
@@ -13,7 +30,8 @@
13
30
  "files": [
14
31
  "src",
15
32
  "catalog",
16
- "plugin"
33
+ "plugin",
34
+ "THIRD_PARTY_NOTICES.md"
17
35
  ],
18
36
  "type": "module",
19
37
  "scripts": {
@@ -21,16 +39,15 @@
21
39
  "lint": "oxlint --deny-warnings src test",
22
40
  "format": "oxfmt",
23
41
  "format:check": "oxfmt --check",
24
- "snapshot:models-dev": "bun scripts/snapshot-models-dev.ts",
42
+ "tui-frames": "CATHERD_WRITE_FRAMES=1 bun test test/entry/tui/frames.test.tsx",
25
43
  "version-packages": "changeset version && bun scripts/stamp-plugin-version.mjs"
26
44
  },
27
45
  "dependencies": {
28
46
  "@modelcontextprotocol/sdk": "^1.30.1",
29
- "@opentui/core": "^0.5.12",
30
- "@opentui/react": "^0.5.12",
47
+ "@opentui/core": "0.5.12",
48
+ "@opentui/keymap": "0.5.12",
49
+ "@opentui/react": "0.5.12",
31
50
  "citty": "^0.2.2",
32
- "microdiff": "^1.6.0",
33
- "ofetch": "^1.5.1",
34
51
  "react": "^19.3.0",
35
52
  "zod": "^4.6.5"
36
53
  },
@@ -43,7 +60,6 @@
43
60
  "lefthook": "^2.1.14",
44
61
  "oxfmt": "^0.70.0",
45
62
  "oxlint": "^1.85.0",
46
- "string-width": "^8.3.0",
47
63
  "typescript": "^7.0.2"
48
64
  },
49
65
  "engines": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "catherd",
3
- "version": "0.2.1",
4
- "description": "Herds coding agents: Claude plans and verifies, Codex and opencode workers write the code, and Jev picks the model and effort for each piece.",
3
+ "version": "1.1.0",
4
+ "description": "Herds coding agents: Claude plans and verifies, Codex, opencode or headless Claude Code workers write the code, and Jev picks the model and effort for each piece.",
5
5
  "author": {
6
6
  "name": "47vigen",
7
7
  "url": "https://github.com/47vigen"
package/plugin/.mcp.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "mcpServers": {
3
3
  "catherd": {
4
- "command": "bunx",
5
- "args": ["catherd-cli@0.2.1", "mcp"]
4
+ "command": "sh",
5
+ "args": ["${CLAUDE_PLUGIN_ROOT}/bin/catherd-mcp"]
6
6
  }
7
7
  }
8
8
  }
@@ -0,0 +1,30 @@
1
+ #!/bin/sh
2
+ # catherd's MCP launcher (spec 1.1 §12): the plugin's .mcp.json runs it. The release stamps VERSION
3
+ # (scripts/stamp-plugin-version.mjs), so the plugin always starts the server it was released with.
4
+ VERSION="1.1.0"
5
+
6
+ # a global catherd at this version (catherd init installs one): start it, no resolve at all
7
+ if command -v catherd >/dev/null 2>&1 && [ "$(catherd --version 2>/dev/null)" = "$VERSION" ]; then
8
+ # CATHERD_USER_TMPDIR is only this launcher's own hand-off to the server below; never pass on a stray one
9
+ unset CATHERD_USER_TMPDIR
10
+ exec catherd mcp
11
+ fi
12
+
13
+ # else bunx, with its cache out of $TMPDIR: macOS cleans old files there and leaves bunx a broken package.
14
+ # The server gets the user's own TMPDIR back from CATHERD_USER_TMPDIR (empty when it was unset).
15
+ if [ -n "${XDG_CACHE_HOME:-}" ]; then
16
+ cache="$XDG_CACHE_HOME"
17
+ elif [ -n "${HOME:-}" ]; then
18
+ cache="$HOME/.cache"
19
+ else
20
+ echo "catherd-mcp: HOME and XDG_CACHE_HOME are both unset, so there is no cache folder for bunx; set HOME, or install catherd globally: bun add -g catherd-cli@$VERSION" >&2
21
+ exit 1
22
+ fi
23
+ CATHERD_USER_TMPDIR="${TMPDIR:-}"
24
+ TMPDIR="$cache/catherd/bunx"
25
+ if ! mkdir -p "$TMPDIR" 2>/dev/null; then
26
+ echo "catherd-mcp: cannot create $TMPDIR for bunx's cache; fix its permissions, or install catherd globally: bun add -g catherd-cli@$VERSION" >&2
27
+ exit 1
28
+ fi
29
+ export CATHERD_USER_TMPDIR TMPDIR
30
+ exec bunx "catherd-cli@$VERSION" mcp
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: Orchestrate a task with catherd — Claude plans and verifies, Codex and opencode workers write the code
2
+ description: Orchestrate a task with catherd — Claude plans and verifies, Codex, opencode or headless Claude Code workers write the code
3
3
  argument-hint: "<task, or nothing to resume the latest run>"
4
4
  ---
5
5
 
@@ -7,4 +7,4 @@ Use the `catherd` skill for this, and follow it exactly.
7
7
 
8
8
  Task: $ARGUMENTS
9
9
 
10
- If the task is empty, resume: call `status()`, tell the user which run it names, and continue that run from its state.md.
10
+ If the task is empty, resume: call `status()`, tell the user which run it names, call `peek(run)` once, and continue that run from its `Protocol next` step.