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,294 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * profile.ts — User profile module for the Dual-Brain Orchestrator.
4
+ *
5
+ * Exported API:
6
+ * loadProfile(cwd) → profile (or defaults)
7
+ * saveProfile(profile, opts) → write project or global file
8
+ * ensureProfile(cwd, opts) → load or onboard
9
+ * runOnboarding(opts) → interactive 3-question setup
10
+ * rememberPreference(text, opts) → add/update preference
11
+ * forgetPreference(text, cwd) → remove preference by fuzzy match
12
+ * getActivePreferences(cwd) → enabled global + project preferences
13
+ * getAvailableProviders(profile) → enabled providers
14
+ * isSoloBrain(profile) → true if only one provider enabled
15
+ * getHeadModel(profile) → suggested head model string
16
+ * detectCapabilities(cwd) → what we can actually verify
17
+ * getOnboardingMessage(caps, ws) → honest 2-3 line status message
18
+ * detectCapabilities(cwd) → available providers (subscription-based only)
19
+ *
20
+ * CLI:
21
+ * node src/profile.mjs # show current profile
22
+ * node src/profile.mjs --init # run onboarding
23
+ * node src/profile.mjs --remember "…" # add preference
24
+ * node src/profile.mjs --forget "…" # remove preference
25
+ * node src/profile.mjs --providers # show available providers
26
+ */
27
+ import { Interface as ReadlineInterface } from 'readline';
28
+ export interface Preference {
29
+ text: string;
30
+ enabled: boolean;
31
+ scope: 'one-off' | 'project' | 'global';
32
+ }
33
+ export interface ProviderConfig {
34
+ enabled: boolean;
35
+ plan?: string;
36
+ label?: string;
37
+ expiresAt?: string;
38
+ subs?: unknown;
39
+ }
40
+ export interface Profile {
41
+ schemaVersion: number;
42
+ createdAt: string;
43
+ updatedAt: string;
44
+ workStyle: string;
45
+ providers: Record<string, ProviderConfig>;
46
+ mode: string;
47
+ bias: string;
48
+ preferences: Preference[];
49
+ apiGuardrail: boolean;
50
+ capabilities?: DetectedCapabilities;
51
+ detectedAt?: string;
52
+ forbiddenModels?: string[];
53
+ preferredModels?: string[];
54
+ costBias?: number;
55
+ subscription?: unknown;
56
+ budget?: unknown;
57
+ detectedPlan?: unknown;
58
+ plan?: unknown;
59
+ price?: unknown;
60
+ subscriptions?: Record<string, unknown>;
61
+ }
62
+ export interface DetectedCapabilities {
63
+ claude: {
64
+ available: boolean;
65
+ source: string | null;
66
+ };
67
+ openai: {
68
+ available: boolean;
69
+ source: string | null;
70
+ };
71
+ codex: {
72
+ available: boolean;
73
+ source: string | null;
74
+ };
75
+ replitTools: {
76
+ available: boolean;
77
+ checkpoints: boolean;
78
+ };
79
+ mcpServers: string[];
80
+ claudePlugins: string[];
81
+ codexPlugins: string[];
82
+ shellSnapshots: number;
83
+ configuredHooks: Record<string, number>;
84
+ }
85
+ export interface EnvironmentInfo {
86
+ isReplit: boolean;
87
+ hasReplitTools: boolean;
88
+ isCI: boolean;
89
+ }
90
+ export interface AutoSetupResult {
91
+ confident: boolean;
92
+ profile: Profile | null;
93
+ warnings: string[];
94
+ actions: string[];
95
+ }
96
+ export interface TokenRefreshResult {
97
+ status: string;
98
+ hoursRemaining?: number;
99
+ error?: string;
100
+ delegatedTo?: string;
101
+ }
102
+ export interface AuthEntry {
103
+ found: boolean;
104
+ source: string | null;
105
+ loginType: 'oauth' | 'cli' | null;
106
+ }
107
+ export interface AuthDetectionResult {
108
+ claude: AuthEntry;
109
+ openai: AuthEntry;
110
+ }
111
+ export interface Credential {
112
+ id: string;
113
+ provider: string;
114
+ auth_type: string;
115
+ source: string;
116
+ owner?: string;
117
+ scope?: string;
118
+ plan_hint?: string | null;
119
+ enabled?: boolean;
120
+ health?: string;
121
+ last_checked_at?: string | null;
122
+ secret?: string;
123
+ token?: string;
124
+ api_key?: string;
125
+ password?: string;
126
+ }
127
+ export interface CredentialStore {
128
+ version: number;
129
+ credentials: Credential[];
130
+ }
131
+ export interface CapabilityManifest {
132
+ providers: {
133
+ claude: ProviderManifestEntry;
134
+ openai: ProviderManifestEntry;
135
+ };
136
+ preferences: ManifestPreferences;
137
+ policy: ManifestPolicy;
138
+ learning: Record<string, {
139
+ rate: number;
140
+ total: number;
141
+ }>;
142
+ setup: {
143
+ hasAnyProvider: boolean;
144
+ recommendedAction: string | null;
145
+ zeroProviderMode: boolean;
146
+ };
147
+ environment: {
148
+ mcpServers: string[];
149
+ claudePlugins: string[];
150
+ codexPlugins: string[];
151
+ shellSnapshots: number;
152
+ configuredHooks: Record<string, number>;
153
+ replitTools: {
154
+ available: boolean;
155
+ checkpoints: boolean;
156
+ };
157
+ };
158
+ timestamp: string;
159
+ }
160
+ interface ProviderManifestEntry {
161
+ available: boolean;
162
+ authenticated: boolean;
163
+ plan: string;
164
+ models: string[];
165
+ health: string;
166
+ budget: {
167
+ pressure5h: number;
168
+ pressure7d: number;
169
+ };
170
+ source: string;
171
+ }
172
+ interface ManifestPreferences {
173
+ bias: string;
174
+ forbiddenModels: string[];
175
+ preferredModels: string[];
176
+ costBias: number;
177
+ confirmBeforeExpensive: boolean;
178
+ }
179
+ interface ManifestPolicy {
180
+ highRiskRequiresBestAvailable: boolean;
181
+ failoverMode: string;
182
+ dualBrainThreshold: string;
183
+ }
184
+ export interface EffectivePolicyResult {
185
+ provider: string;
186
+ model: string;
187
+ tier: string;
188
+ reason: string;
189
+ overrides: string[];
190
+ }
191
+ interface OnboardingOptions {
192
+ interactive?: boolean;
193
+ cwd?: string;
194
+ global?: boolean;
195
+ rl?: ReadlineInterface;
196
+ }
197
+ interface SaveProfileOptions {
198
+ cwd?: string;
199
+ global?: boolean;
200
+ }
201
+ interface RememberPreferenceOptions {
202
+ scope?: string;
203
+ cwd?: string;
204
+ global?: boolean;
205
+ }
206
+ /**
207
+ * Write (or update) the dual_brain_preferences.md file in the Claude Code
208
+ * memory directory, and ensure MEMORY.md has an index entry for it.
209
+ * Fails silently if the memory directory is absent or unwritable.
210
+ */
211
+ declare function syncPreferencesToMemory(profile: Profile, cwd?: string): void;
212
+ /**
213
+ * Detect the runtime environment.
214
+ * Returns { isReplit, hasReplitTools, isCI }.
215
+ */
216
+ declare function detectEnvironment(): EnvironmentInfo;
217
+ /**
218
+ * Detect what providers and tools are actually available.
219
+ * Never makes network calls, never claims to know configured plan or price.
220
+ */
221
+ declare function detectCapabilities(cwd?: string): Promise<DetectedCapabilities>;
222
+ /**
223
+ * Generate an honest 2-3 line onboarding/status message based on
224
+ * what we can actually verify.
225
+ */
226
+ declare function getOnboardingMessage(capabilities: DetectedCapabilities | null, workStyle?: string): string;
227
+ declare function defaultProfile(): Profile;
228
+ declare function loadProfile(cwd?: string): Profile;
229
+ declare function saveProfile(profile: Profile, opts?: SaveProfileOptions): string;
230
+ declare function runOnboarding(opts?: OnboardingOptions): Promise<Profile>;
231
+ declare function ensureProfile(cwd?: string, opts?: OnboardingOptions): Promise<Profile>;
232
+ declare function rememberPreference(text: string, opts?: RememberPreferenceOptions): Profile;
233
+ declare function forgetPreference(text: string, cwd?: string): Profile;
234
+ declare function getActivePreferences(cwd?: string): Preference[];
235
+ interface ProviderEntry extends ProviderConfig {
236
+ name: string;
237
+ }
238
+ declare function getAvailableProviders(profile: Profile): ProviderEntry[];
239
+ declare function isSoloBrain(profile: Profile): boolean;
240
+ declare function getHeadModel(profile: Profile): string;
241
+ /**
242
+ * Silently configure a profile from detected capabilities — no user input.
243
+ */
244
+ declare function autoSetup(cwd?: string): Promise<AutoSetupResult>;
245
+ /**
246
+ * Silently refresh the Claude OAuth token before it expires.
247
+ */
248
+ declare function autoRefreshToken(cwd?: string): Promise<TokenRefreshResult>;
249
+ /**
250
+ * Detect CLI login status for Claude and Codex.
251
+ * Checks config files on disk — never makes network calls.
252
+ */
253
+ declare function detectAuth(): Promise<AuthDetectionResult>;
254
+ /** @deprecated Use detectCapabilities() instead. */
255
+ declare function detectExistingAuth(cwd?: string): Promise<Record<string, unknown>>;
256
+ /** @deprecated Price-based plan tiers removed. Returns null for all providers. */
257
+ declare function detectPlans(): Record<string, null>;
258
+ /** @deprecated Plan tracking removed. Use provider enabled flag instead. */
259
+ declare function saveSubscription(provider: string, config: unknown, cwd?: string): Profile;
260
+ /** @deprecated Plan tracking removed. Use getAvailableProviders() instead. */
261
+ declare function listSubscriptions(cwd?: string): Record<string, ProviderConfig>;
262
+ export declare function loadCredentials(cwd?: string): CredentialStore;
263
+ export declare function saveCredentials(data: CredentialStore, cwd?: string): string | undefined;
264
+ export declare function addCredential(cred: Credential, cwd?: string): Credential;
265
+ export declare function removeCredential(id: string, cwd?: string): void;
266
+ export declare function getHealthyCredentials(provider?: string | null, cwd?: string): Credential[];
267
+ export declare function checkCredentialHealth(cred: Credential, cwd?: string): Promise<Credential>;
268
+ export declare function detectCredentials(cwd?: string): Promise<Credential[]>;
269
+ export declare function getCredentialSummary(cwd?: string): {
270
+ total: number;
271
+ byProvider: Record<string, number>;
272
+ healthy: number;
273
+ degraded: number;
274
+ teamCapacity: string;
275
+ };
276
+ /**
277
+ * Build a normalized capability manifest that consolidates provider health,
278
+ * subscription config, user preferences, policy, and learning data.
279
+ */
280
+ export declare function getCapabilityManifest(cwd?: string): Promise<CapabilityManifest>;
281
+ /**
282
+ * Compute the effective routing policy for a specific task, applying rules in order:
283
+ * 1. Safety constraints (high-risk -> best available model)
284
+ * 2. Provider availability
285
+ * 3. Task tier fit (search->haiku, execute->sonnet, think->opus)
286
+ * 4. User preferences (cost bias, forbidden models)
287
+ * 5. Learning (prefer models with >=90% success rate for this task type)
288
+ */
289
+ export declare function getEffectivePolicy(manifest: CapabilityManifest, taskContext?: {
290
+ tier?: string;
291
+ risk?: string;
292
+ taskType?: string;
293
+ }): EffectivePolicyResult;
294
+ export { loadProfile, saveProfile, ensureProfile, runOnboarding, rememberPreference, forgetPreference, getActivePreferences, getAvailableProviders, isSoloBrain, getHeadModel, detectCapabilities, getOnboardingMessage, syncPreferencesToMemory, detectAuth, detectEnvironment, autoSetup, autoRefreshToken, detectExistingAuth, detectPlans, saveSubscription, listSubscriptions, defaultProfile, };