dual-brain 0.2.30 → 0.3.1

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 (312) 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/precompact.mjs +3 -3
  240. package/hooks/session-end.mjs +3 -3
  241. package/hooks/task-classifier.mjs +328 -0
  242. package/hooks/vibe-router.mjs +387 -0
  243. package/install.mjs +2 -2
  244. package/package.json +29 -153
  245. package/src/agents/registry.mjs +0 -405
  246. package/src/awareness.mjs +0 -425
  247. package/src/brief.mjs +0 -266
  248. package/src/calibration.mjs +0 -148
  249. package/src/checkpoint.mjs +0 -109
  250. package/src/ci-triage.mjs +0 -191
  251. package/src/cognitive-loop.mjs +0 -562
  252. package/src/collaboration.mjs +0 -545
  253. package/src/context-intel.mjs +0 -158
  254. package/src/context.mjs +0 -389
  255. package/src/continuity.mjs +0 -298
  256. package/src/cost-tracker.mjs +0 -184
  257. package/src/debrief.mjs +0 -228
  258. package/src/decide.mjs +0 -1099
  259. package/src/decompose.mjs +0 -331
  260. package/src/detect.mjs +0 -702
  261. package/src/dispatch.mjs +0 -1447
  262. package/src/doctor.mjs +0 -1607
  263. package/src/envelope.mjs +0 -139
  264. package/src/failure-memory.mjs +0 -178
  265. package/src/fx.mjs +0 -276
  266. package/src/governance.mjs +0 -279
  267. package/src/handoff.mjs +0 -87
  268. package/src/head-protocol.mjs +0 -128
  269. package/src/head.mjs +0 -952
  270. package/src/health.mjs +0 -528
  271. package/src/inbox.mjs +0 -195
  272. package/src/index.mjs +0 -44
  273. package/src/install-hooks.mjs +0 -100
  274. package/src/integrity.mjs +0 -245
  275. package/src/intelligence.mjs +0 -447
  276. package/src/ledger.mjs +0 -196
  277. package/src/living-docs.mjs +0 -210
  278. package/src/memory-tiers.mjs +0 -193
  279. package/src/models.mjs +0 -363
  280. package/src/narrative.mjs +0 -169
  281. package/src/nextstep.mjs +0 -100
  282. package/src/observer.mjs +0 -241
  283. package/src/outcome.mjs +0 -400
  284. package/src/pipeline.mjs +0 -1711
  285. package/src/playbook.mjs +0 -257
  286. package/src/pr-agent.mjs +0 -214
  287. package/src/predictive.mjs +0 -250
  288. package/src/profile.mjs +0 -1411
  289. package/src/prompt-audit.mjs +0 -231
  290. package/src/prompt-intel.mjs +0 -325
  291. package/src/provider-context.mjs +0 -257
  292. package/src/receipt.mjs +0 -344
  293. package/src/recommendations.mjs +0 -296
  294. package/src/redact.mjs +0 -192
  295. package/src/replit.mjs +0 -1210
  296. package/src/repo.mjs +0 -445
  297. package/src/revert.mjs +0 -149
  298. package/src/routing-advisor.mjs +0 -204
  299. package/src/self-correct.mjs +0 -147
  300. package/src/session-lock.mjs +0 -160
  301. package/src/session.mjs +0 -1655
  302. package/src/settings-tui.mjs +0 -373
  303. package/src/setup-flow.mjs +0 -223
  304. package/src/signal.mjs +0 -115
  305. package/src/simmer.mjs +0 -241
  306. package/src/strategy.mjs +0 -235
  307. package/src/subscription.mjs +0 -212
  308. package/src/templates.mjs +0 -260
  309. package/src/think-engine.mjs +0 -428
  310. package/src/tui.mjs +0 -276
  311. package/src/update-check.mjs +0 -35
  312. 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;