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.
- package/.dual-brain/docs/claude-code-extension-points.md +32 -0
- package/.dual-brain/docs/data-tools-capabilities.md +181 -0
- package/.dual-brain/docs/ecosystem-tools.md +91 -0
- package/.dual-brain/docs/panel-handoff.md +124 -0
- package/.dual-brain/docs/ruflo-analysis.md +48 -0
- package/bin/dual-brain.mjs +56 -56
- package/dist/mcp-server/index.d.ts +27 -0
- package/dist/mcp-server/index.js +359 -0
- package/dist/mcp-server/index.js.map +1 -0
- package/dist/src/agent-protocol.d.ts +163 -0
- package/dist/src/agent-protocol.js +368 -0
- package/dist/src/agent-protocol.js.map +1 -0
- package/dist/src/agents/registry.d.ts +52 -0
- package/dist/src/agents/registry.js +393 -0
- package/dist/src/agents/registry.js.map +1 -0
- package/dist/src/awareness.d.ts +93 -0
- package/dist/src/awareness.js +406 -0
- package/dist/src/awareness.js.map +1 -0
- package/dist/src/brief.d.ts +48 -0
- package/dist/src/brief.js +179 -0
- package/dist/src/brief.js.map +1 -0
- package/dist/src/calibration.d.ts +32 -0
- package/dist/src/calibration.js +133 -0
- package/dist/src/calibration.js.map +1 -0
- package/dist/src/checkpoint.d.ts +33 -0
- package/dist/src/checkpoint.js +99 -0
- package/dist/src/checkpoint.js.map +1 -0
- package/dist/src/ci-triage.d.ts +33 -0
- package/dist/src/ci-triage.js +193 -0
- package/dist/src/ci-triage.js.map +1 -0
- package/dist/src/cognitive-loop.d.ts +56 -0
- package/dist/src/cognitive-loop.js +495 -0
- package/dist/src/cognitive-loop.js.map +1 -0
- package/dist/src/collaboration.d.ts +147 -0
- package/dist/src/collaboration.js +438 -0
- package/dist/src/collaboration.js.map +1 -0
- package/dist/src/context-intel.d.ts +47 -0
- package/dist/src/context-intel.js +156 -0
- package/dist/src/context-intel.js.map +1 -0
- package/dist/src/context.d.ts +53 -0
- package/dist/src/context.js +332 -0
- package/dist/src/context.js.map +1 -0
- package/dist/src/continuity.d.ts +89 -0
- package/dist/src/continuity.js +230 -0
- package/dist/src/continuity.js.map +1 -0
- package/dist/src/cost-tracker.d.ts +47 -0
- package/dist/src/cost-tracker.js +170 -0
- package/dist/src/cost-tracker.js.map +1 -0
- package/dist/src/debrief.d.ts +53 -0
- package/dist/src/debrief.js +222 -0
- package/dist/src/debrief.js.map +1 -0
- package/dist/src/decide.d.ts +96 -0
- package/dist/src/decide.js +744 -0
- package/dist/src/decide.js.map +1 -0
- package/dist/src/decompose.d.ts +39 -0
- package/dist/src/decompose.js +218 -0
- package/dist/src/decompose.js.map +1 -0
- package/dist/src/detect.d.ts +91 -0
- package/dist/src/detect.js +544 -0
- package/dist/src/detect.js.map +1 -0
- package/dist/src/dispatch.d.ts +154 -0
- package/dist/src/dispatch.js +1306 -0
- package/dist/src/dispatch.js.map +1 -0
- package/dist/src/doctor.d.ts +421 -0
- package/dist/src/doctor.js +1689 -0
- package/dist/src/doctor.js.map +1 -0
- package/dist/src/engine.d.ts +70 -0
- package/dist/src/engine.js +155 -0
- package/dist/src/engine.js.map +1 -0
- package/dist/src/envelope.d.ts +36 -0
- package/dist/src/envelope.js +80 -0
- package/dist/src/envelope.js.map +1 -0
- package/dist/src/failure-memory.d.ts +55 -0
- package/dist/src/failure-memory.js +175 -0
- package/dist/src/failure-memory.js.map +1 -0
- package/dist/src/fx.d.ts +87 -0
- package/dist/src/fx.js +272 -0
- package/dist/src/fx.js.map +1 -0
- package/dist/src/governance.d.ts +93 -0
- package/dist/src/governance.js +261 -0
- package/dist/src/governance.js.map +1 -0
- package/dist/src/handoff.d.ts +11 -0
- package/dist/src/handoff.js +90 -0
- package/dist/src/handoff.js.map +1 -0
- package/dist/src/head-protocol.d.ts +76 -0
- package/dist/src/head-protocol.js +109 -0
- package/dist/src/head-protocol.js.map +1 -0
- package/dist/src/head.d.ts +222 -0
- package/dist/src/head.js +765 -0
- package/dist/src/head.js.map +1 -0
- package/dist/src/health.d.ts +132 -0
- package/dist/src/health.js +435 -0
- package/dist/src/health.js.map +1 -0
- package/dist/src/inbox.d.ts +70 -0
- package/dist/src/inbox.js +218 -0
- package/dist/src/inbox.js.map +1 -0
- package/dist/src/index.d.ts +33 -0
- package/dist/src/index.js +38 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/install-hooks.d.ts +13 -0
- package/dist/src/install-hooks.js +88 -0
- package/dist/src/install-hooks.js.map +1 -0
- package/dist/src/integrity.d.ts +59 -0
- package/dist/src/integrity.js +206 -0
- package/dist/src/integrity.js.map +1 -0
- package/dist/src/intelligence.d.ts +104 -0
- package/dist/src/intelligence.js +391 -0
- package/dist/src/intelligence.js.map +1 -0
- package/dist/src/ledger.d.ts +54 -0
- package/dist/src/ledger.js +179 -0
- package/dist/src/ledger.js.map +1 -0
- package/dist/src/living-docs.d.ts +14 -0
- package/dist/src/living-docs.js +197 -0
- package/dist/src/living-docs.js.map +1 -0
- package/dist/src/memory-tiers.d.ts +37 -0
- package/dist/src/memory-tiers.js +160 -0
- package/dist/src/memory-tiers.js.map +1 -0
- package/dist/src/model-profiles.d.ts +65 -0
- package/dist/src/model-profiles.js +568 -0
- package/dist/src/model-profiles.js.map +1 -0
- package/dist/src/models.d.ts +58 -0
- package/dist/src/models.js +327 -0
- package/dist/src/models.js.map +1 -0
- package/dist/src/narrative.d.ts +54 -0
- package/dist/src/narrative.js +163 -0
- package/dist/src/narrative.js.map +1 -0
- package/dist/src/nextstep.d.ts +16 -0
- package/dist/src/nextstep.js +103 -0
- package/dist/src/nextstep.js.map +1 -0
- package/dist/src/observer.d.ts +18 -0
- package/dist/src/observer.js +251 -0
- package/dist/src/observer.js.map +1 -0
- package/dist/src/outcome.d.ts +110 -0
- package/dist/src/outcome.js +377 -0
- package/dist/src/outcome.js.map +1 -0
- package/dist/src/pipeline.d.ts +167 -0
- package/dist/src/pipeline.js +1503 -0
- package/dist/src/pipeline.js.map +1 -0
- package/dist/src/playbook.d.ts +59 -0
- package/dist/src/playbook.js +238 -0
- package/dist/src/playbook.js.map +1 -0
- package/dist/src/pr-agent.d.ts +97 -0
- package/dist/src/pr-agent.js +195 -0
- package/dist/src/pr-agent.js.map +1 -0
- package/dist/src/predictive.d.ts +57 -0
- package/dist/src/predictive.js +230 -0
- package/dist/src/predictive.js.map +1 -0
- package/dist/src/profile.d.ts +294 -0
- package/dist/src/profile.js +1347 -0
- package/dist/src/profile.js.map +1 -0
- package/dist/src/prompt-audit.d.ts +22 -0
- package/dist/src/prompt-audit.js +194 -0
- package/dist/src/prompt-audit.js.map +1 -0
- package/dist/src/prompt-intel.d.ts +12 -0
- package/dist/src/prompt-intel.js +321 -0
- package/dist/src/prompt-intel.js.map +1 -0
- package/dist/src/provider-context.d.ts +121 -0
- package/dist/src/provider-context.js +222 -0
- package/dist/src/provider-context.js.map +1 -0
- package/dist/src/provider-manager.d.ts +92 -0
- package/dist/src/provider-manager.js +428 -0
- package/dist/src/provider-manager.js.map +1 -0
- package/dist/src/receipt.d.ts +87 -0
- package/dist/src/receipt.js +326 -0
- package/dist/src/receipt.js.map +1 -0
- package/dist/src/recommendations.d.ts +13 -0
- package/dist/src/recommendations.js +291 -0
- package/dist/src/recommendations.js.map +1 -0
- package/dist/src/redact.d.ts +15 -0
- package/dist/src/redact.js +129 -0
- package/dist/src/redact.js.map +1 -0
- package/dist/src/replit.d.ts +397 -0
- package/dist/src/replit.js +1160 -0
- package/dist/src/replit.js.map +1 -0
- package/dist/src/repo.d.ts +149 -0
- package/dist/src/repo.js +416 -0
- package/dist/src/repo.js.map +1 -0
- package/dist/src/revert.d.ts +30 -0
- package/dist/src/revert.js +166 -0
- package/dist/src/revert.js.map +1 -0
- package/dist/src/room.d.ts +102 -0
- package/dist/src/room.js +212 -0
- package/dist/src/room.js.map +1 -0
- package/dist/src/routing-advisor.d.ts +57 -0
- package/dist/src/routing-advisor.js +221 -0
- package/dist/src/routing-advisor.js.map +1 -0
- package/dist/src/self-correct.d.ts +40 -0
- package/dist/src/self-correct.js +137 -0
- package/dist/src/self-correct.js.map +1 -0
- package/dist/src/session-lock.d.ts +35 -0
- package/dist/src/session-lock.js +134 -0
- package/dist/src/session-lock.js.map +1 -0
- package/dist/src/session.d.ts +267 -0
- package/dist/src/session.js +1660 -0
- package/dist/src/session.js.map +1 -0
- package/dist/src/settings-tui.d.ts +5 -0
- package/dist/src/settings-tui.js +422 -0
- package/dist/src/settings-tui.js.map +1 -0
- package/dist/src/setup-flow.d.ts +63 -0
- package/dist/src/setup-flow.js +233 -0
- package/dist/src/setup-flow.js.map +1 -0
- package/dist/src/signal.d.ts +19 -0
- package/dist/src/signal.js +122 -0
- package/dist/src/signal.js.map +1 -0
- package/dist/src/simmer.d.ts +85 -0
- package/dist/src/simmer.js +224 -0
- package/dist/src/simmer.js.map +1 -0
- package/dist/src/state-export.d.ts +129 -0
- package/dist/src/state-export.js +233 -0
- package/dist/src/state-export.js.map +1 -0
- package/dist/src/strategy.d.ts +54 -0
- package/dist/src/strategy.js +95 -0
- package/dist/src/strategy.js.map +1 -0
- package/dist/src/subscription.d.ts +40 -0
- package/dist/src/subscription.js +189 -0
- package/dist/src/subscription.js.map +1 -0
- package/dist/src/templates.d.ts +208 -0
- package/dist/src/templates.js +238 -0
- package/dist/src/templates.js.map +1 -0
- package/dist/src/test.d.ts +9 -0
- package/dist/src/test.js +1173 -0
- package/dist/src/test.js.map +1 -0
- package/dist/src/think-engine.d.ts +67 -0
- package/dist/src/think-engine.js +412 -0
- package/dist/src/think-engine.js.map +1 -0
- package/dist/src/tui.d.ts +71 -0
- package/dist/src/tui.js +242 -0
- package/dist/src/tui.js.map +1 -0
- package/dist/src/types.d.ts +177 -0
- package/dist/src/types.js +6 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/update-check.d.ts +7 -0
- package/dist/src/update-check.js +36 -0
- package/dist/src/update-check.js.map +1 -0
- package/dist/src/wave-planner.d.ts +30 -0
- package/dist/src/wave-planner.js +281 -0
- package/dist/src/wave-planner.js.map +1 -0
- package/hooks/head-guard.sh +41 -0
- package/hooks/task-classifier.mjs +328 -0
- package/hooks/vibe-router.mjs +387 -0
- package/package.json +29 -153
- package/src/agents/registry.mjs +0 -405
- package/src/awareness.mjs +0 -425
- package/src/brief.mjs +0 -266
- package/src/calibration.mjs +0 -148
- package/src/checkpoint.mjs +0 -109
- package/src/ci-triage.mjs +0 -191
- package/src/cognitive-loop.mjs +0 -562
- package/src/collaboration.mjs +0 -545
- package/src/context-intel.mjs +0 -158
- package/src/context.mjs +0 -389
- package/src/continuity.mjs +0 -298
- package/src/cost-tracker.mjs +0 -184
- package/src/debrief.mjs +0 -228
- package/src/decide.mjs +0 -1099
- package/src/decompose.mjs +0 -331
- package/src/detect.mjs +0 -702
- package/src/dispatch.mjs +0 -1447
- package/src/doctor.mjs +0 -1607
- package/src/envelope.mjs +0 -139
- package/src/failure-memory.mjs +0 -178
- package/src/fx.mjs +0 -276
- package/src/governance.mjs +0 -279
- package/src/handoff.mjs +0 -87
- package/src/head-protocol.mjs +0 -128
- package/src/head.mjs +0 -952
- package/src/health.mjs +0 -528
- package/src/inbox.mjs +0 -195
- package/src/index.mjs +0 -44
- package/src/install-hooks.mjs +0 -100
- package/src/integrity.mjs +0 -245
- package/src/intelligence.mjs +0 -447
- package/src/ledger.mjs +0 -196
- package/src/living-docs.mjs +0 -210
- package/src/memory-tiers.mjs +0 -193
- package/src/models.mjs +0 -363
- package/src/narrative.mjs +0 -169
- package/src/nextstep.mjs +0 -100
- package/src/observer.mjs +0 -241
- package/src/outcome.mjs +0 -400
- package/src/pipeline.mjs +0 -1711
- package/src/playbook.mjs +0 -257
- package/src/pr-agent.mjs +0 -214
- package/src/predictive.mjs +0 -250
- package/src/profile.mjs +0 -1411
- package/src/prompt-audit.mjs +0 -231
- package/src/prompt-intel.mjs +0 -325
- package/src/provider-context.mjs +0 -257
- package/src/receipt.mjs +0 -344
- package/src/recommendations.mjs +0 -296
- package/src/redact.mjs +0 -192
- package/src/replit.mjs +0 -1210
- package/src/repo.mjs +0 -445
- package/src/revert.mjs +0 -149
- package/src/routing-advisor.mjs +0 -204
- package/src/self-correct.mjs +0 -147
- package/src/session-lock.mjs +0 -160
- package/src/session.mjs +0 -1655
- package/src/settings-tui.mjs +0 -373
- package/src/setup-flow.mjs +0 -223
- package/src/signal.mjs +0 -115
- package/src/simmer.mjs +0 -241
- package/src/strategy.mjs +0 -235
- package/src/subscription.mjs +0 -212
- package/src/templates.mjs +0 -260
- package/src/think-engine.mjs +0 -428
- package/src/tui.mjs +0 -276
- package/src/update-check.mjs +0 -35
- 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, };
|