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,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, };