dual-brain 0.2.30 → 0.3.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 (309) hide show
  1. package/.dual-brain/docs/claude-code-extension-points.md +32 -0
  2. package/.dual-brain/docs/data-tools-capabilities.md +181 -0
  3. package/.dual-brain/docs/ecosystem-tools.md +91 -0
  4. package/.dual-brain/docs/panel-handoff.md +124 -0
  5. package/.dual-brain/docs/ruflo-analysis.md +48 -0
  6. package/bin/dual-brain.mjs +56 -56
  7. package/dist/mcp-server/index.d.ts +27 -0
  8. package/dist/mcp-server/index.js +359 -0
  9. package/dist/mcp-server/index.js.map +1 -0
  10. package/dist/src/agent-protocol.d.ts +163 -0
  11. package/dist/src/agent-protocol.js +368 -0
  12. package/dist/src/agent-protocol.js.map +1 -0
  13. package/dist/src/agents/registry.d.ts +52 -0
  14. package/dist/src/agents/registry.js +393 -0
  15. package/dist/src/agents/registry.js.map +1 -0
  16. package/dist/src/awareness.d.ts +93 -0
  17. package/dist/src/awareness.js +406 -0
  18. package/dist/src/awareness.js.map +1 -0
  19. package/dist/src/brief.d.ts +48 -0
  20. package/dist/src/brief.js +179 -0
  21. package/dist/src/brief.js.map +1 -0
  22. package/dist/src/calibration.d.ts +32 -0
  23. package/dist/src/calibration.js +133 -0
  24. package/dist/src/calibration.js.map +1 -0
  25. package/dist/src/checkpoint.d.ts +33 -0
  26. package/dist/src/checkpoint.js +99 -0
  27. package/dist/src/checkpoint.js.map +1 -0
  28. package/dist/src/ci-triage.d.ts +33 -0
  29. package/dist/src/ci-triage.js +193 -0
  30. package/dist/src/ci-triage.js.map +1 -0
  31. package/dist/src/cognitive-loop.d.ts +56 -0
  32. package/dist/src/cognitive-loop.js +495 -0
  33. package/dist/src/cognitive-loop.js.map +1 -0
  34. package/dist/src/collaboration.d.ts +147 -0
  35. package/dist/src/collaboration.js +438 -0
  36. package/dist/src/collaboration.js.map +1 -0
  37. package/dist/src/context-intel.d.ts +47 -0
  38. package/dist/src/context-intel.js +156 -0
  39. package/dist/src/context-intel.js.map +1 -0
  40. package/dist/src/context.d.ts +53 -0
  41. package/dist/src/context.js +332 -0
  42. package/dist/src/context.js.map +1 -0
  43. package/dist/src/continuity.d.ts +89 -0
  44. package/dist/src/continuity.js +230 -0
  45. package/dist/src/continuity.js.map +1 -0
  46. package/dist/src/cost-tracker.d.ts +47 -0
  47. package/dist/src/cost-tracker.js +170 -0
  48. package/dist/src/cost-tracker.js.map +1 -0
  49. package/dist/src/debrief.d.ts +53 -0
  50. package/dist/src/debrief.js +222 -0
  51. package/dist/src/debrief.js.map +1 -0
  52. package/dist/src/decide.d.ts +96 -0
  53. package/dist/src/decide.js +744 -0
  54. package/dist/src/decide.js.map +1 -0
  55. package/dist/src/decompose.d.ts +39 -0
  56. package/dist/src/decompose.js +218 -0
  57. package/dist/src/decompose.js.map +1 -0
  58. package/dist/src/detect.d.ts +91 -0
  59. package/dist/src/detect.js +544 -0
  60. package/dist/src/detect.js.map +1 -0
  61. package/dist/src/dispatch.d.ts +154 -0
  62. package/dist/src/dispatch.js +1306 -0
  63. package/dist/src/dispatch.js.map +1 -0
  64. package/dist/src/doctor.d.ts +421 -0
  65. package/dist/src/doctor.js +1689 -0
  66. package/dist/src/doctor.js.map +1 -0
  67. package/dist/src/engine.d.ts +70 -0
  68. package/dist/src/engine.js +155 -0
  69. package/dist/src/engine.js.map +1 -0
  70. package/dist/src/envelope.d.ts +36 -0
  71. package/dist/src/envelope.js +80 -0
  72. package/dist/src/envelope.js.map +1 -0
  73. package/dist/src/failure-memory.d.ts +55 -0
  74. package/dist/src/failure-memory.js +175 -0
  75. package/dist/src/failure-memory.js.map +1 -0
  76. package/dist/src/fx.d.ts +87 -0
  77. package/dist/src/fx.js +272 -0
  78. package/dist/src/fx.js.map +1 -0
  79. package/dist/src/governance.d.ts +93 -0
  80. package/dist/src/governance.js +261 -0
  81. package/dist/src/governance.js.map +1 -0
  82. package/dist/src/handoff.d.ts +11 -0
  83. package/dist/src/handoff.js +90 -0
  84. package/dist/src/handoff.js.map +1 -0
  85. package/dist/src/head-protocol.d.ts +76 -0
  86. package/dist/src/head-protocol.js +109 -0
  87. package/dist/src/head-protocol.js.map +1 -0
  88. package/dist/src/head.d.ts +222 -0
  89. package/dist/src/head.js +765 -0
  90. package/dist/src/head.js.map +1 -0
  91. package/dist/src/health.d.ts +132 -0
  92. package/dist/src/health.js +435 -0
  93. package/dist/src/health.js.map +1 -0
  94. package/dist/src/inbox.d.ts +70 -0
  95. package/dist/src/inbox.js +218 -0
  96. package/dist/src/inbox.js.map +1 -0
  97. package/dist/src/index.d.ts +33 -0
  98. package/dist/src/index.js +38 -0
  99. package/dist/src/index.js.map +1 -0
  100. package/dist/src/install-hooks.d.ts +13 -0
  101. package/dist/src/install-hooks.js +88 -0
  102. package/dist/src/install-hooks.js.map +1 -0
  103. package/dist/src/integrity.d.ts +59 -0
  104. package/dist/src/integrity.js +206 -0
  105. package/dist/src/integrity.js.map +1 -0
  106. package/dist/src/intelligence.d.ts +104 -0
  107. package/dist/src/intelligence.js +391 -0
  108. package/dist/src/intelligence.js.map +1 -0
  109. package/dist/src/ledger.d.ts +54 -0
  110. package/dist/src/ledger.js +179 -0
  111. package/dist/src/ledger.js.map +1 -0
  112. package/dist/src/living-docs.d.ts +14 -0
  113. package/dist/src/living-docs.js +197 -0
  114. package/dist/src/living-docs.js.map +1 -0
  115. package/dist/src/memory-tiers.d.ts +37 -0
  116. package/dist/src/memory-tiers.js +160 -0
  117. package/dist/src/memory-tiers.js.map +1 -0
  118. package/dist/src/model-profiles.d.ts +65 -0
  119. package/dist/src/model-profiles.js +568 -0
  120. package/dist/src/model-profiles.js.map +1 -0
  121. package/dist/src/models.d.ts +58 -0
  122. package/dist/src/models.js +327 -0
  123. package/dist/src/models.js.map +1 -0
  124. package/dist/src/narrative.d.ts +54 -0
  125. package/dist/src/narrative.js +163 -0
  126. package/dist/src/narrative.js.map +1 -0
  127. package/dist/src/nextstep.d.ts +16 -0
  128. package/dist/src/nextstep.js +103 -0
  129. package/dist/src/nextstep.js.map +1 -0
  130. package/dist/src/observer.d.ts +18 -0
  131. package/dist/src/observer.js +251 -0
  132. package/dist/src/observer.js.map +1 -0
  133. package/dist/src/outcome.d.ts +110 -0
  134. package/dist/src/outcome.js +377 -0
  135. package/dist/src/outcome.js.map +1 -0
  136. package/dist/src/pipeline.d.ts +167 -0
  137. package/dist/src/pipeline.js +1503 -0
  138. package/dist/src/pipeline.js.map +1 -0
  139. package/dist/src/playbook.d.ts +59 -0
  140. package/dist/src/playbook.js +238 -0
  141. package/dist/src/playbook.js.map +1 -0
  142. package/dist/src/pr-agent.d.ts +97 -0
  143. package/dist/src/pr-agent.js +195 -0
  144. package/dist/src/pr-agent.js.map +1 -0
  145. package/dist/src/predictive.d.ts +57 -0
  146. package/dist/src/predictive.js +230 -0
  147. package/dist/src/predictive.js.map +1 -0
  148. package/dist/src/profile.d.ts +294 -0
  149. package/dist/src/profile.js +1347 -0
  150. package/dist/src/profile.js.map +1 -0
  151. package/dist/src/prompt-audit.d.ts +22 -0
  152. package/dist/src/prompt-audit.js +194 -0
  153. package/dist/src/prompt-audit.js.map +1 -0
  154. package/dist/src/prompt-intel.d.ts +12 -0
  155. package/dist/src/prompt-intel.js +321 -0
  156. package/dist/src/prompt-intel.js.map +1 -0
  157. package/dist/src/provider-context.d.ts +121 -0
  158. package/dist/src/provider-context.js +222 -0
  159. package/dist/src/provider-context.js.map +1 -0
  160. package/dist/src/provider-manager.d.ts +92 -0
  161. package/dist/src/provider-manager.js +428 -0
  162. package/dist/src/provider-manager.js.map +1 -0
  163. package/dist/src/receipt.d.ts +87 -0
  164. package/dist/src/receipt.js +326 -0
  165. package/dist/src/receipt.js.map +1 -0
  166. package/dist/src/recommendations.d.ts +13 -0
  167. package/dist/src/recommendations.js +291 -0
  168. package/dist/src/recommendations.js.map +1 -0
  169. package/dist/src/redact.d.ts +15 -0
  170. package/dist/src/redact.js +129 -0
  171. package/dist/src/redact.js.map +1 -0
  172. package/dist/src/replit.d.ts +397 -0
  173. package/dist/src/replit.js +1160 -0
  174. package/dist/src/replit.js.map +1 -0
  175. package/dist/src/repo.d.ts +149 -0
  176. package/dist/src/repo.js +416 -0
  177. package/dist/src/repo.js.map +1 -0
  178. package/dist/src/revert.d.ts +30 -0
  179. package/dist/src/revert.js +166 -0
  180. package/dist/src/revert.js.map +1 -0
  181. package/dist/src/room.d.ts +102 -0
  182. package/dist/src/room.js +212 -0
  183. package/dist/src/room.js.map +1 -0
  184. package/dist/src/routing-advisor.d.ts +57 -0
  185. package/dist/src/routing-advisor.js +221 -0
  186. package/dist/src/routing-advisor.js.map +1 -0
  187. package/dist/src/self-correct.d.ts +40 -0
  188. package/dist/src/self-correct.js +137 -0
  189. package/dist/src/self-correct.js.map +1 -0
  190. package/dist/src/session-lock.d.ts +35 -0
  191. package/dist/src/session-lock.js +134 -0
  192. package/dist/src/session-lock.js.map +1 -0
  193. package/dist/src/session.d.ts +267 -0
  194. package/dist/src/session.js +1660 -0
  195. package/dist/src/session.js.map +1 -0
  196. package/dist/src/settings-tui.d.ts +5 -0
  197. package/dist/src/settings-tui.js +422 -0
  198. package/dist/src/settings-tui.js.map +1 -0
  199. package/dist/src/setup-flow.d.ts +63 -0
  200. package/dist/src/setup-flow.js +233 -0
  201. package/dist/src/setup-flow.js.map +1 -0
  202. package/dist/src/signal.d.ts +19 -0
  203. package/dist/src/signal.js +122 -0
  204. package/dist/src/signal.js.map +1 -0
  205. package/dist/src/simmer.d.ts +85 -0
  206. package/dist/src/simmer.js +224 -0
  207. package/dist/src/simmer.js.map +1 -0
  208. package/dist/src/state-export.d.ts +129 -0
  209. package/dist/src/state-export.js +233 -0
  210. package/dist/src/state-export.js.map +1 -0
  211. package/dist/src/strategy.d.ts +54 -0
  212. package/dist/src/strategy.js +95 -0
  213. package/dist/src/strategy.js.map +1 -0
  214. package/dist/src/subscription.d.ts +40 -0
  215. package/dist/src/subscription.js +189 -0
  216. package/dist/src/subscription.js.map +1 -0
  217. package/dist/src/templates.d.ts +208 -0
  218. package/dist/src/templates.js +238 -0
  219. package/dist/src/templates.js.map +1 -0
  220. package/dist/src/test.d.ts +9 -0
  221. package/dist/src/test.js +1173 -0
  222. package/dist/src/test.js.map +1 -0
  223. package/dist/src/think-engine.d.ts +67 -0
  224. package/dist/src/think-engine.js +412 -0
  225. package/dist/src/think-engine.js.map +1 -0
  226. package/dist/src/tui.d.ts +71 -0
  227. package/dist/src/tui.js +242 -0
  228. package/dist/src/tui.js.map +1 -0
  229. package/dist/src/types.d.ts +177 -0
  230. package/dist/src/types.js +6 -0
  231. package/dist/src/types.js.map +1 -0
  232. package/dist/src/update-check.d.ts +7 -0
  233. package/dist/src/update-check.js +36 -0
  234. package/dist/src/update-check.js.map +1 -0
  235. package/dist/src/wave-planner.d.ts +30 -0
  236. package/dist/src/wave-planner.js +281 -0
  237. package/dist/src/wave-planner.js.map +1 -0
  238. package/hooks/head-guard.sh +41 -0
  239. package/hooks/task-classifier.mjs +328 -0
  240. package/hooks/vibe-router.mjs +387 -0
  241. package/package.json +29 -153
  242. package/src/agents/registry.mjs +0 -405
  243. package/src/awareness.mjs +0 -425
  244. package/src/brief.mjs +0 -266
  245. package/src/calibration.mjs +0 -148
  246. package/src/checkpoint.mjs +0 -109
  247. package/src/ci-triage.mjs +0 -191
  248. package/src/cognitive-loop.mjs +0 -562
  249. package/src/collaboration.mjs +0 -545
  250. package/src/context-intel.mjs +0 -158
  251. package/src/context.mjs +0 -389
  252. package/src/continuity.mjs +0 -298
  253. package/src/cost-tracker.mjs +0 -184
  254. package/src/debrief.mjs +0 -228
  255. package/src/decide.mjs +0 -1099
  256. package/src/decompose.mjs +0 -331
  257. package/src/detect.mjs +0 -702
  258. package/src/dispatch.mjs +0 -1447
  259. package/src/doctor.mjs +0 -1607
  260. package/src/envelope.mjs +0 -139
  261. package/src/failure-memory.mjs +0 -178
  262. package/src/fx.mjs +0 -276
  263. package/src/governance.mjs +0 -279
  264. package/src/handoff.mjs +0 -87
  265. package/src/head-protocol.mjs +0 -128
  266. package/src/head.mjs +0 -952
  267. package/src/health.mjs +0 -528
  268. package/src/inbox.mjs +0 -195
  269. package/src/index.mjs +0 -44
  270. package/src/install-hooks.mjs +0 -100
  271. package/src/integrity.mjs +0 -245
  272. package/src/intelligence.mjs +0 -447
  273. package/src/ledger.mjs +0 -196
  274. package/src/living-docs.mjs +0 -210
  275. package/src/memory-tiers.mjs +0 -193
  276. package/src/models.mjs +0 -363
  277. package/src/narrative.mjs +0 -169
  278. package/src/nextstep.mjs +0 -100
  279. package/src/observer.mjs +0 -241
  280. package/src/outcome.mjs +0 -400
  281. package/src/pipeline.mjs +0 -1711
  282. package/src/playbook.mjs +0 -257
  283. package/src/pr-agent.mjs +0 -214
  284. package/src/predictive.mjs +0 -250
  285. package/src/profile.mjs +0 -1411
  286. package/src/prompt-audit.mjs +0 -231
  287. package/src/prompt-intel.mjs +0 -325
  288. package/src/provider-context.mjs +0 -257
  289. package/src/receipt.mjs +0 -344
  290. package/src/recommendations.mjs +0 -296
  291. package/src/redact.mjs +0 -192
  292. package/src/replit.mjs +0 -1210
  293. package/src/repo.mjs +0 -445
  294. package/src/revert.mjs +0 -149
  295. package/src/routing-advisor.mjs +0 -204
  296. package/src/self-correct.mjs +0 -147
  297. package/src/session-lock.mjs +0 -160
  298. package/src/session.mjs +0 -1655
  299. package/src/settings-tui.mjs +0 -373
  300. package/src/setup-flow.mjs +0 -223
  301. package/src/signal.mjs +0 -115
  302. package/src/simmer.mjs +0 -241
  303. package/src/strategy.mjs +0 -235
  304. package/src/subscription.mjs +0 -212
  305. package/src/templates.mjs +0 -260
  306. package/src/think-engine.mjs +0 -428
  307. package/src/tui.mjs +0 -276
  308. package/src/update-check.mjs +0 -35
  309. package/src/wave-planner.mjs +0 -294
@@ -0,0 +1,568 @@
1
+ /**
2
+ * Static capability profiles for AI models used by the dual-brain orchestrator.
3
+ * Used for routing decisions, pairing assessments, and task-model matching.
4
+ *
5
+ * Version bumped when profiles are added/modified — consumers can cache-invalidate on this.
6
+ */
7
+ const PROFILE_VERSION = '1.0.0';
8
+ export const PROFILES = [
9
+ {
10
+ id: 'claude-opus-4-6',
11
+ name: 'Opus 4.6',
12
+ provider: 'claude',
13
+ tier: 3,
14
+ contextWindow: 200000,
15
+ maxOutput: 32000,
16
+ supportedModes: ['standard', 'extended-thinking'],
17
+ toolUse: 'native',
18
+ autonomy: 'agent-loop',
19
+ multimodal: ['text', 'vision'],
20
+ traits: {
21
+ reasoningDepth: 0.95,
22
+ codeGeneration: 0.9,
23
+ codeReview: 0.93,
24
+ editPrecision: 0.88,
25
+ architecture: 0.95,
26
+ instructionFollowing: 0.91,
27
+ structuredOutput: 0.85,
28
+ steerability: 0.89,
29
+ refactoring: 0.91,
30
+ testGeneration: 0.86,
31
+ documentation: 0.89,
32
+ },
33
+ languages: {
34
+ systems: 0.88,
35
+ scripting: 0.92,
36
+ markup: 0.9,
37
+ niche: 0.78,
38
+ },
39
+ ops: {
40
+ latencyTier: 'slow',
41
+ costTier: 'expensive',
42
+ contextDegradation: 160000,
43
+ parameterSensitive: false,
44
+ },
45
+ quirks: [
46
+ 'Excellent at multi-step reasoning chains',
47
+ 'May over-engineer simple tasks',
48
+ 'Strong at spotting security issues',
49
+ 'Best-in-class for architecture planning',
50
+ 'Tends to be thorough rather than concise',
51
+ ],
52
+ },
53
+ {
54
+ id: 'claude-sonnet-4-6',
55
+ name: 'Sonnet 4.6',
56
+ provider: 'claude',
57
+ tier: 2,
58
+ contextWindow: 200000,
59
+ maxOutput: 16000,
60
+ supportedModes: ['standard', 'extended-thinking'],
61
+ toolUse: 'native',
62
+ autonomy: 'agent-loop',
63
+ multimodal: ['text', 'vision'],
64
+ traits: {
65
+ reasoningDepth: 0.82,
66
+ codeGeneration: 0.88,
67
+ codeReview: 0.85,
68
+ editPrecision: 0.86,
69
+ architecture: 0.78,
70
+ instructionFollowing: 0.89,
71
+ structuredOutput: 0.87,
72
+ steerability: 0.9,
73
+ refactoring: 0.85,
74
+ testGeneration: 0.84,
75
+ documentation: 0.85,
76
+ },
77
+ languages: {
78
+ systems: 0.82,
79
+ scripting: 0.9,
80
+ markup: 0.88,
81
+ niche: 0.7,
82
+ },
83
+ ops: {
84
+ latencyTier: 'medium',
85
+ costTier: 'moderate',
86
+ contextDegradation: 150000,
87
+ parameterSensitive: false,
88
+ },
89
+ quirks: [
90
+ 'Best balance of speed and quality for most tasks',
91
+ 'Good at following complex multi-step instructions',
92
+ 'Reliable for production code generation',
93
+ 'Less prone to over-engineering than Opus',
94
+ ],
95
+ },
96
+ {
97
+ id: 'claude-haiku-4-5',
98
+ name: 'Haiku 4.5',
99
+ provider: 'claude',
100
+ tier: 1,
101
+ contextWindow: 200000,
102
+ maxOutput: 8192,
103
+ supportedModes: ['standard'],
104
+ toolUse: 'native',
105
+ autonomy: 'agent-loop',
106
+ multimodal: ['text', 'vision'],
107
+ traits: {
108
+ reasoningDepth: 0.62,
109
+ codeGeneration: 0.75,
110
+ codeReview: 0.68,
111
+ editPrecision: 0.72,
112
+ architecture: 0.55,
113
+ instructionFollowing: 0.82,
114
+ structuredOutput: 0.83,
115
+ steerability: 0.85,
116
+ refactoring: 0.68,
117
+ testGeneration: 0.7,
118
+ documentation: 0.72,
119
+ },
120
+ languages: {
121
+ systems: 0.65,
122
+ scripting: 0.8,
123
+ markup: 0.82,
124
+ niche: 0.5,
125
+ },
126
+ ops: {
127
+ latencyTier: 'fast',
128
+ costTier: 'cheap',
129
+ contextDegradation: 140000,
130
+ parameterSensitive: false,
131
+ },
132
+ quirks: [
133
+ 'Extremely fast for simple tasks',
134
+ 'Good at structured output and formatting',
135
+ 'May miss subtle bugs in code review',
136
+ 'Best for boilerplate, docs, simple edits',
137
+ 'Struggles with complex multi-file reasoning',
138
+ ],
139
+ },
140
+ {
141
+ id: 'gpt-4o',
142
+ name: 'GPT-4o',
143
+ provider: 'openai',
144
+ tier: 2,
145
+ contextWindow: 128000,
146
+ maxOutput: 16384,
147
+ supportedModes: ['standard'],
148
+ toolUse: 'native',
149
+ autonomy: 'agent-loop',
150
+ multimodal: ['text', 'vision'],
151
+ traits: {
152
+ reasoningDepth: 0.8,
153
+ codeGeneration: 0.86,
154
+ codeReview: 0.82,
155
+ editPrecision: 0.8,
156
+ architecture: 0.76,
157
+ instructionFollowing: 0.92,
158
+ structuredOutput: 0.91,
159
+ steerability: 0.87,
160
+ refactoring: 0.82,
161
+ testGeneration: 0.82,
162
+ documentation: 0.84,
163
+ },
164
+ languages: {
165
+ systems: 0.8,
166
+ scripting: 0.88,
167
+ markup: 0.87,
168
+ niche: 0.72,
169
+ },
170
+ ops: {
171
+ latencyTier: 'medium',
172
+ costTier: 'moderate',
173
+ contextDegradation: 100000,
174
+ parameterSensitive: false,
175
+ },
176
+ quirks: [
177
+ 'Excellent at structured output and JSON schemas',
178
+ 'Strong instruction following',
179
+ 'Multimodal breadth including audio',
180
+ 'Can be verbose in explanations',
181
+ 'Good breadth across domains',
182
+ ],
183
+ },
184
+ {
185
+ id: 'gpt-4o-mini',
186
+ name: 'GPT-4o Mini',
187
+ provider: 'openai',
188
+ tier: 1,
189
+ contextWindow: 128000,
190
+ maxOutput: 16384,
191
+ supportedModes: ['standard'],
192
+ toolUse: 'native',
193
+ autonomy: 'agent-loop',
194
+ multimodal: ['text', 'vision'],
195
+ traits: {
196
+ reasoningDepth: 0.6,
197
+ codeGeneration: 0.74,
198
+ codeReview: 0.65,
199
+ editPrecision: 0.7,
200
+ architecture: 0.52,
201
+ instructionFollowing: 0.85,
202
+ structuredOutput: 0.88,
203
+ steerability: 0.83,
204
+ refactoring: 0.65,
205
+ testGeneration: 0.68,
206
+ documentation: 0.72,
207
+ },
208
+ languages: {
209
+ systems: 0.62,
210
+ scripting: 0.78,
211
+ markup: 0.8,
212
+ niche: 0.5,
213
+ },
214
+ ops: {
215
+ latencyTier: 'fast',
216
+ costTier: 'cheap',
217
+ contextDegradation: 90000,
218
+ parameterSensitive: false,
219
+ },
220
+ quirks: [
221
+ 'Surprisingly capable for simple coding tasks',
222
+ 'Very fast and cost-effective',
223
+ 'Good at structured output despite small size',
224
+ 'Struggles with complex reasoning chains',
225
+ 'Best for classification, formatting, simple generation',
226
+ ],
227
+ },
228
+ {
229
+ id: 'o3',
230
+ name: 'o3',
231
+ provider: 'openai',
232
+ tier: 3,
233
+ contextWindow: 200000,
234
+ maxOutput: 100000,
235
+ supportedModes: ['standard', 'extended-thinking'],
236
+ toolUse: 'native',
237
+ autonomy: 'agent-loop',
238
+ multimodal: ['text', 'vision'],
239
+ traits: {
240
+ reasoningDepth: 0.97,
241
+ codeGeneration: 0.88,
242
+ codeReview: 0.9,
243
+ editPrecision: 0.82,
244
+ architecture: 0.92,
245
+ instructionFollowing: 0.83,
246
+ structuredOutput: 0.8,
247
+ steerability: 0.75,
248
+ refactoring: 0.85,
249
+ testGeneration: 0.82,
250
+ documentation: 0.78,
251
+ },
252
+ languages: {
253
+ systems: 0.9,
254
+ scripting: 0.88,
255
+ markup: 0.82,
256
+ niche: 0.8,
257
+ },
258
+ ops: {
259
+ latencyTier: 'slow',
260
+ costTier: 'expensive',
261
+ contextDegradation: 150000,
262
+ parameterSensitive: true,
263
+ },
264
+ quirks: [
265
+ 'Exceptional at hard reasoning and math',
266
+ 'Chain-of-thought is internal and extensive',
267
+ 'Less steerable — may ignore constraints during deep reasoning',
268
+ 'Overkill for simple tasks',
269
+ 'Best for algorithmic problems, proofs, complex debugging',
270
+ 'Structured output less reliable than GPT-4o',
271
+ ],
272
+ },
273
+ {
274
+ id: 'o4-mini',
275
+ name: 'o4-mini',
276
+ provider: 'openai',
277
+ tier: 2,
278
+ contextWindow: 200000,
279
+ maxOutput: 100000,
280
+ supportedModes: ['standard', 'extended-thinking'],
281
+ toolUse: 'native',
282
+ autonomy: 'agent-loop',
283
+ multimodal: ['text', 'vision'],
284
+ traits: {
285
+ reasoningDepth: 0.88,
286
+ codeGeneration: 0.84,
287
+ codeReview: 0.83,
288
+ editPrecision: 0.78,
289
+ architecture: 0.82,
290
+ instructionFollowing: 0.82,
291
+ structuredOutput: 0.79,
292
+ steerability: 0.76,
293
+ refactoring: 0.8,
294
+ testGeneration: 0.78,
295
+ documentation: 0.74,
296
+ },
297
+ languages: {
298
+ systems: 0.84,
299
+ scripting: 0.85,
300
+ markup: 0.8,
301
+ niche: 0.74,
302
+ },
303
+ ops: {
304
+ latencyTier: 'medium',
305
+ costTier: 'moderate',
306
+ contextDegradation: 140000,
307
+ parameterSensitive: true,
308
+ },
309
+ quirks: [
310
+ 'Good reasoning at lower cost than o3',
311
+ 'Better for reasoning-heavy tasks than GPT-4o',
312
+ 'Less reliable at structured output',
313
+ 'Internal chain-of-thought can be unpredictable in length',
314
+ 'Good choice for complex code tasks on a budget',
315
+ ],
316
+ },
317
+ {
318
+ id: 'gpt-4.5',
319
+ name: 'GPT-4.5',
320
+ provider: 'openai',
321
+ tier: 3,
322
+ contextWindow: 128000,
323
+ maxOutput: 16384,
324
+ supportedModes: ['standard'],
325
+ toolUse: 'native',
326
+ autonomy: 'agent-loop',
327
+ multimodal: ['text', 'vision'],
328
+ traits: {
329
+ reasoningDepth: 0.85,
330
+ codeGeneration: 0.87,
331
+ codeReview: 0.86,
332
+ editPrecision: 0.83,
333
+ architecture: 0.84,
334
+ instructionFollowing: 0.9,
335
+ structuredOutput: 0.89,
336
+ steerability: 0.88,
337
+ refactoring: 0.84,
338
+ testGeneration: 0.83,
339
+ documentation: 0.88,
340
+ },
341
+ languages: {
342
+ systems: 0.84,
343
+ scripting: 0.89,
344
+ markup: 0.88,
345
+ niche: 0.76,
346
+ },
347
+ ops: {
348
+ latencyTier: 'slow',
349
+ costTier: 'expensive',
350
+ contextDegradation: 100000,
351
+ parameterSensitive: false,
352
+ },
353
+ quirks: [
354
+ 'Broad world knowledge — good for novel domains',
355
+ 'Strong EQ and nuance in writing tasks',
356
+ 'Reliable structured output',
357
+ 'Less specialized reasoning than o3',
358
+ 'Good general-purpose premium model',
359
+ 'High cost relative to reasoning ability',
360
+ ],
361
+ },
362
+ ];
363
+ // Index for fast lookup
364
+ const profileIndex = new Map(PROFILES.map(p => [p.id, p]));
365
+ /**
366
+ * Look up a model profile by ID. Supports fuzzy matching:
367
+ * 'opus' matches 'claude-opus-4-6', 'sonnet' matches 'claude-sonnet-4-6', etc.
368
+ */
369
+ export function getProfile(modelId) {
370
+ if (!modelId)
371
+ return null;
372
+ // Exact match first
373
+ if (profileIndex.has(modelId))
374
+ return profileIndex.get(modelId);
375
+ // Fuzzy: find profiles whose id or name contains the query (case-insensitive)
376
+ const query = modelId.toLowerCase();
377
+ const matches = PROFILES.filter(p => p.id.toLowerCase().includes(query) || p.name.toLowerCase().includes(query));
378
+ if (matches.length === 1)
379
+ return matches[0];
380
+ if (matches.length > 1) {
381
+ // Prefer exact substring match on id
382
+ const idMatch = matches.find(p => p.id.toLowerCase() === query);
383
+ if (idMatch)
384
+ return idMatch;
385
+ // Return shortest id (most specific match)
386
+ matches.sort((a, b) => a.id.length - b.id.length);
387
+ return matches[0];
388
+ }
389
+ return null;
390
+ }
391
+ /**
392
+ * Compare two models, returning relative strengths across all dimensions.
393
+ */
394
+ export function compareModels(idA, idB) {
395
+ const a = getProfile(idA);
396
+ const b = getProfile(idB);
397
+ if (!a || !b) {
398
+ return { error: `Model not found: ${!a ? idA : idB}` };
399
+ }
400
+ const traitComparison = {};
401
+ for (const [trait, scoreA] of Object.entries(a.traits)) {
402
+ const scoreB = b.traits[trait] ?? 0;
403
+ const diff = scoreA - scoreB;
404
+ traitComparison[trait] = {
405
+ [a.id]: scoreA,
406
+ [b.id]: scoreB,
407
+ delta: Math.round(diff * 100) / 100,
408
+ advantage: diff > 0.02 ? a.id : diff < -0.02 ? b.id : 'tie',
409
+ };
410
+ }
411
+ const languageComparison = {};
412
+ for (const [lang, scoreA] of Object.entries(a.languages)) {
413
+ const scoreB = b.languages[lang] ?? 0;
414
+ const diff = scoreA - scoreB;
415
+ languageComparison[lang] = {
416
+ [a.id]: scoreA,
417
+ [b.id]: scoreB,
418
+ delta: Math.round(diff * 100) / 100,
419
+ advantage: diff > 0.02 ? a.id : diff < -0.02 ? b.id : 'tie',
420
+ };
421
+ }
422
+ // Summarize advantages
423
+ const aAdvantages = Object.entries(traitComparison)
424
+ .filter(([, v]) => v.advantage === a.id)
425
+ .map(([k]) => k);
426
+ const bAdvantages = Object.entries(traitComparison)
427
+ .filter(([, v]) => v.advantage === b.id)
428
+ .map(([k]) => k);
429
+ return {
430
+ models: [a.id, b.id],
431
+ traits: traitComparison,
432
+ languages: languageComparison,
433
+ summary: {
434
+ [a.id]: { advantages: aAdvantages, tier: a.tier, cost: a.ops.costTier, speed: a.ops.latencyTier },
435
+ [b.id]: { advantages: bAdvantages, tier: b.tier, cost: b.ops.costTier, speed: b.ops.latencyTier },
436
+ },
437
+ };
438
+ }
439
+ /**
440
+ * Find the best model for a given trait, with optional constraints.
441
+ */
442
+ export function findBestFor(trait, options = {}) {
443
+ let candidates = [...PROFILES];
444
+ if (options.provider) {
445
+ candidates = candidates.filter(p => p.provider === options.provider);
446
+ }
447
+ if (options.tier !== undefined) {
448
+ candidates = candidates.filter(p => p.tier === options.tier);
449
+ }
450
+ if (options.maxTier !== undefined) {
451
+ candidates = candidates.filter(p => p.tier <= options.maxTier);
452
+ }
453
+ if (options.costTier) {
454
+ candidates = candidates.filter(p => p.ops.costTier === options.costTier);
455
+ }
456
+ if (candidates.length === 0)
457
+ return null;
458
+ // Special pseudo-traits
459
+ if (trait === 'speed') {
460
+ const order = { fast: 3, medium: 2, slow: 1 };
461
+ candidates.sort((a, b) => (order[b.ops.latencyTier] || 0) - (order[a.ops.latencyTier] || 0));
462
+ return candidates[0];
463
+ }
464
+ if (trait === 'cost') {
465
+ const order = { cheap: 3, moderate: 2, expensive: 1 };
466
+ candidates.sort((a, b) => (order[b.ops.costTier] || 0) - (order[a.ops.costTier] || 0));
467
+ return candidates[0];
468
+ }
469
+ if (trait === 'context') {
470
+ candidates.sort((a, b) => b.contextWindow - a.contextWindow);
471
+ return candidates[0];
472
+ }
473
+ // Check traits object
474
+ if (candidates[0].traits[trait] !== undefined) {
475
+ candidates.sort((a, b) => (b.traits[trait] || 0) - (a.traits[trait] || 0));
476
+ return candidates[0];
477
+ }
478
+ // Check languages object
479
+ if (candidates[0].languages[trait] !== undefined) {
480
+ candidates.sort((a, b) => (b.languages[trait] || 0) - (a.languages[trait] || 0));
481
+ return candidates[0];
482
+ }
483
+ return null;
484
+ }
485
+ /**
486
+ * Assess how well two models pair together for dual-brain work.
487
+ */
488
+ export function getPairingAssessment(idA, idB) {
489
+ const a = getProfile(idA);
490
+ const b = getProfile(idB);
491
+ if (!a || !b) {
492
+ return { error: `Model not found: ${!a ? idA : idB}` };
493
+ }
494
+ // Calculate trait overlap
495
+ const traitKeys = Object.keys(a.traits);
496
+ let overlapCount = 0;
497
+ let complementCount = 0;
498
+ const aStrengths = [];
499
+ const bStrengths = [];
500
+ for (const trait of traitKeys) {
501
+ const diff = Math.abs(a.traits[trait] - b.traits[trait]);
502
+ if (diff < 0.05) {
503
+ overlapCount++;
504
+ }
505
+ else {
506
+ complementCount++;
507
+ if (a.traits[trait] > b.traits[trait]) {
508
+ aStrengths.push(trait);
509
+ }
510
+ else {
511
+ bStrengths.push(trait);
512
+ }
513
+ }
514
+ }
515
+ // Determine tier balance
516
+ const tierDiff = Math.abs(a.tier - b.tier);
517
+ // Determine balance type
518
+ let balance;
519
+ if (complementCount > overlapCount && tierDiff >= 1) {
520
+ balance = 'complementary';
521
+ }
522
+ else if (overlapCount > complementCount && tierDiff === 0) {
523
+ balance = 'redundant';
524
+ }
525
+ else {
526
+ balance = 'lopsided';
527
+ }
528
+ // Refine: same tier + same provider is likely redundant
529
+ if (a.tier === b.tier && a.provider === b.provider) {
530
+ balance = 'redundant';
531
+ }
532
+ // Different tiers with complementary traits is ideal
533
+ if (tierDiff >= 1 && complementCount >= 3) {
534
+ balance = 'complementary';
535
+ }
536
+ // Build description
537
+ let description;
538
+ if (balance === 'complementary') {
539
+ description = `${a.name} and ${b.name} complement each other well — ${a.name} excels at ${aStrengths.slice(0, 2).join(', ') || 'depth'} while ${b.name} covers ${bStrengths.slice(0, 2).join(', ') || 'breadth'}.`;
540
+ }
541
+ else if (balance === 'redundant') {
542
+ description = `${a.name} and ${b.name} have significant overlap — using both provides little marginal value.`;
543
+ }
544
+ else {
545
+ const stronger = a.tier > b.tier ? a : b;
546
+ const weaker = a.tier > b.tier ? b : a;
547
+ description = `${stronger.name} dominates ${weaker.name} in most dimensions — the pairing is unbalanced.`;
548
+ }
549
+ // Identify gaps (traits where both score below 0.75)
550
+ const gaps = traitKeys.filter(t => a.traits[t] < 0.75 && b.traits[t] < 0.75);
551
+ // Strengths of the pairing (traits where at least one scores above 0.88)
552
+ const strengths = traitKeys.filter(t => a.traits[t] >= 0.88 || b.traits[t] >= 0.88);
553
+ return {
554
+ models: [a.id, b.id],
555
+ balance,
556
+ description,
557
+ strengths,
558
+ gaps,
559
+ };
560
+ }
561
+ /**
562
+ * Returns the current profile version for cache invalidation.
563
+ */
564
+ export function getProfileVersion() {
565
+ return PROFILE_VERSION;
566
+ }
567
+ export default PROFILES;
568
+ //# sourceMappingURL=model-profiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-profiles.js","sourceRoot":"","sources":["../../src/model-profiles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * models.ts — Static model intelligence registry for the Dual-Brain Orchestrator.
3
+ *
4
+ * Pure in-memory registry of AI model capabilities used by routing modules.
5
+ * No file I/O, no API calls. Updated with each package release.
6
+ */
7
+ export declare const REGISTRY_VERSION = "2026-05-15";
8
+ export declare const REGISTRY_UPDATED = "2026-05-15";
9
+ export interface ModelEntry {
10
+ provider: 'anthropic' | 'openai';
11
+ name: string;
12
+ tier: 'fast' | 'workhorse' | 'reasoning' | 'frontier';
13
+ contextWindow: number;
14
+ maxOutput: number;
15
+ strengths: string[];
16
+ weaknesses: string[];
17
+ costTier: 'low' | 'medium' | 'high' | 'premium';
18
+ bestFor: string[];
19
+ speed: 'fast' | 'medium' | 'slow';
20
+ reasoning: boolean;
21
+ vision: boolean;
22
+ tools: boolean;
23
+ agentCapable: boolean;
24
+ }
25
+ export declare const MODEL_REGISTRY: Readonly<Record<string, ModelEntry>>;
26
+ export interface ModelWithId extends ModelEntry {
27
+ id: string;
28
+ }
29
+ export declare function getModel(modelId: string): ModelEntry | null;
30
+ export declare function getModelsForTask(taskType: string, provider?: string | null): ModelWithId[];
31
+ export interface ModelConstraints {
32
+ provider?: string | null;
33
+ maxCost?: string | null;
34
+ preferSpeed?: boolean;
35
+ requireReasoning?: boolean;
36
+ minContext?: number;
37
+ }
38
+ export declare function getBestModel(taskType: string, constraints?: ModelConstraints): ModelWithId | null;
39
+ export interface ModelComparison {
40
+ contextAdvantage: 'a' | 'b' | 'tie';
41
+ speedAdvantage: 'a' | 'b' | 'tie';
42
+ costAdvantage: 'a' | 'b' | 'tie';
43
+ reasoningAdvantage: 'a' | 'b' | 'tie';
44
+ recommendation: string;
45
+ }
46
+ export declare function compareModels(modelA: string, modelB: string): ModelComparison;
47
+ export declare function getRegistryAge(): number;
48
+ export declare function formatModelTable(provider?: string | null): string;
49
+ export declare function getModelQuirks(modelId: string): string[];
50
+ export interface ModelSuggestion {
51
+ model: string | null;
52
+ reason: string;
53
+ alternatives: Array<{
54
+ id: string;
55
+ name: string;
56
+ }>;
57
+ }
58
+ export declare function suggestModel(intent: string, risk: string, complexity: string, availableProviders?: string[]): ModelSuggestion;