dual-brain 0.3.11 → 0.3.13

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.
@@ -8,9 +8,15 @@ interface DetectedEnvironment {
8
8
  }
9
9
  interface SetupAnswers {
10
10
  subscription?: string;
11
+ subscriptionCapacity?: SubscriptionCapacity;
11
12
  workStyle?: string;
12
13
  advanced?: AdvancedOptions;
13
14
  setupMode?: string;
15
+ shellDefault?: boolean;
16
+ }
17
+ interface SubscriptionCapacity {
18
+ raw: string;
19
+ counts: Record<string, number>;
14
20
  }
15
21
  interface AdvancedOptions {
16
22
  thinkEnabled?: boolean;
@@ -24,6 +30,7 @@ interface AdvancedOptions {
24
30
  interface SetupConfig {
25
31
  version: number;
26
32
  subscription: string;
33
+ subscriptionCapacity?: SubscriptionCapacity;
27
34
  workStyle: string;
28
35
  providers: {
29
36
  claude: boolean;
@@ -42,6 +49,7 @@ interface SetupConfig {
42
49
  };
43
50
  configuredAt: string;
44
51
  setupMode: string;
52
+ shellDefault: boolean;
45
53
  detectedEnv: {
46
54
  claude: boolean;
47
55
  codex: boolean;
@@ -69,6 +69,15 @@ const SUB_LABELS = {
69
69
  'claude-pro': 'Claude Pro', 'claude-max-5x': 'Claude Max 5x',
70
70
  'claude-max-20x': 'Claude Max 20x', 'chatgpt-plus': 'ChatGPT Plus',
71
71
  'chatgpt-pro': 'ChatGPT Pro', 'dual-pro': 'Both Pro tiers', 'dual-max': 'Max + Pro tiers',
72
+ 'auto-detected': 'Auto-detected providers',
73
+ 'declared-capacity': 'Declared subscription capacity',
74
+ };
75
+ const CAPACITY_LABELS = {
76
+ claudePro: 'Claude Pro $20',
77
+ claudeMax5x: 'Claude Max $100',
78
+ claudeMax20x: 'Claude Max $200',
79
+ chatgptPlus: 'ChatGPT Plus $20',
80
+ chatgptPro: 'ChatGPT Pro $200',
72
81
  };
73
82
  // ── Confirmation display ──────────────────────────────────────────────────────
74
83
  export function renderConfirmation(config) {
@@ -76,23 +85,29 @@ export function renderConfirmation(config) {
76
85
  return [
77
86
  '', c.bold(' Configuration:'), '',
78
87
  row('Subscription:', SUB_LABELS[config.subscription] || config.subscription),
88
+ config.subscriptionCapacity ? row('Capacity:', formatCapacity(config.subscriptionCapacity)) : '',
79
89
  row('Work style:', config.workStyle),
80
90
  row('Primary model:', config.models.execute),
81
91
  row('Think agent:', config.routing.thinkEnabled ? 'enabled' : 'disabled'),
82
92
  row('Learning:', config.routing.learningEnabled ? 'on' : 'off'),
93
+ row('Shell default:', config.shellDefault ? 'dual-brain' : 'leave current shell menu'),
83
94
  '',
84
95
  ].join('\n');
85
96
  }
86
97
  // ── Config builder ────────────────────────────────────────────────────────────
87
98
  export function buildConfig(answers, detected) {
88
- const { subscription = 'claude-pro', workStyle = 'balanced', advanced = {}, setupMode = 'quick' } = answers;
99
+ const { subscription = 'auto-detected', subscriptionCapacity, workStyle = 'balanced', advanced = {}, setupMode = 'quick', shellDefault = true } = answers;
89
100
  const dual = subscription.startsWith('dual-');
90
101
  const isMax = subscription.includes('max') || subscription === 'chatgpt-pro';
91
102
  const topModel = isMax ? 'opus' : 'sonnet';
92
103
  const exploreRate = { aggressive: 0.3, conservative: 0.1, auto: 0.25 }[workStyle] ?? 0.2;
104
+ const capacityProviders = providersFromCapacity(subscriptionCapacity);
93
105
  return {
94
- version: 1, subscription, workStyle,
95
- providers: { claude: subscription.startsWith('claude-') || dual, openai: subscription.startsWith('chatgpt-') || dual },
106
+ version: 1, subscription, subscriptionCapacity, workStyle,
107
+ providers: {
108
+ claude: capacityProviders.claude || subscription.startsWith('claude-') || dual || (subscription === 'auto-detected' && detected.claude),
109
+ openai: capacityProviders.openai || subscription.startsWith('chatgpt-') || dual || (subscription === 'auto-detected' && detected.codex),
110
+ },
96
111
  routing: {
97
112
  thinkEnabled: advanced.thinkEnabled ?? true,
98
113
  cascadeEnabled: advanced.cascadeEnabled ?? true,
@@ -103,6 +118,7 @@ export function buildConfig(answers, detected) {
103
118
  budget: { sessionLimitTokens: advanced.sessionLimitTokens ?? null, warnAtPercent: advanced.warnAtPercent ?? 80 },
104
119
  configuredAt: new Date().toISOString(),
105
120
  setupMode,
121
+ shellDefault,
106
122
  detectedEnv: { claude: detected.claude, codex: detected.codex, language: detected.language },
107
123
  };
108
124
  }
@@ -112,6 +128,11 @@ export function saveConfig(config, cwd) {
112
128
  if (!existsSync(dir))
113
129
  mkdirSync(dir, { recursive: true });
114
130
  writeFileSync(join(dir, 'config.json'), JSON.stringify(config, null, 2), 'utf8');
131
+ writeFileSync(join(dir, 'subscription.json'), JSON.stringify({
132
+ subscription: config.subscription,
133
+ capacity: config.subscriptionCapacity || null,
134
+ configuredAt: config.configuredAt,
135
+ }, null, 2), 'utf8');
115
136
  const orchPath = join(cwd, '.claude', 'orchestrator.json');
116
137
  if (existsSync(orchPath)) {
117
138
  try {
@@ -153,6 +174,45 @@ async function askYN(rl, question, defaultYes = true) {
153
174
  });
154
175
  });
155
176
  }
177
+ async function askLine(rl, question, hint) {
178
+ return new Promise(resolve => {
179
+ rl.question(`\n${c.bold(question)}\n${c.dim(hint)}\n${c.dim('> ')}`, answer => resolve(answer.trim()));
180
+ });
181
+ }
182
+ function parseCapacity(input) {
183
+ const raw = input.trim();
184
+ if (!raw)
185
+ return undefined;
186
+ const counts = {};
187
+ const aliases = {
188
+ 'claude-pro': 'claudePro', 'claude20': 'claudePro', 'c20': 'claudePro', 'cp': 'claudePro',
189
+ 'claude-max': 'claudeMax5x', 'claude-max-5x': 'claudeMax5x', 'claude100': 'claudeMax5x', 'c100': 'claudeMax5x', 'cm5': 'claudeMax5x',
190
+ 'claude-max-20x': 'claudeMax20x', 'claude200': 'claudeMax20x', 'c200': 'claudeMax20x', 'cm20': 'claudeMax20x',
191
+ 'chatgpt-plus': 'chatgptPlus', 'gpt-plus': 'chatgptPlus', 'openai20': 'chatgptPlus', 'gpt20': 'chatgptPlus', 'g20': 'chatgptPlus',
192
+ 'chatgpt-pro': 'chatgptPro', 'gpt-pro': 'chatgptPro', 'openai200': 'chatgptPro', 'gpt200': 'chatgptPro', 'g200': 'chatgptPro',
193
+ };
194
+ for (const match of raw.matchAll(/([a-z0-9$-]+)\s*(?:=|x|\*)\s*(\d+)/gi)) {
195
+ const key = match[1].toLowerCase();
196
+ const count = Math.max(0, parseInt(match[2], 10) || 0);
197
+ const mapped = aliases[key] || (key === '$100' ? 'claudeMax5x' : key === '$200' ? 'chatgptPro' : key === '$20' ? 'chatgptPlus' : '');
198
+ if (mapped && count)
199
+ counts[mapped] = (counts[mapped] || 0) + count;
200
+ }
201
+ return { raw, counts };
202
+ }
203
+ function formatCapacity(capacity) {
204
+ const parts = Object.entries(capacity.counts)
205
+ .filter(([, count]) => count > 0)
206
+ .map(([key, count]) => `${CAPACITY_LABELS[key] || key} x${count}`);
207
+ return parts.length ? parts.join(', ') : capacity.raw;
208
+ }
209
+ function providersFromCapacity(capacity) {
210
+ const counts = capacity?.counts || {};
211
+ return {
212
+ claude: !!(counts.claudePro || counts.claudeMax5x || counts.claudeMax20x),
213
+ openai: !!(counts.chatgptPlus || counts.chatgptPro),
214
+ };
215
+ }
156
216
  // ── Main entry point ──────────────────────────────────────────────────────────
157
217
  export async function runSetup(cwd, options = {}) {
158
218
  const detected = detectEnvironment(cwd);
@@ -186,21 +246,16 @@ export async function runSetup(cwd, options = {}) {
186
246
  { label: 'Quick setup', value: 'quick', description: '3 questions, ~20 seconds' },
187
247
  { label: 'Advanced', value: 'advanced', description: 'full control over routing, budgets, models' },
188
248
  ]);
189
- const subscription = await ask(rl, 'Your AI subscription:', [
190
- { label: 'Claude Pro ($20/mo)', value: 'claude-pro' },
191
- { label: 'Claude Max 5x ($100/mo)', value: 'claude-max-5x' },
192
- { label: 'Claude Max 20x ($200/mo)', value: 'claude-max-20x' },
193
- { label: 'ChatGPT Plus ($20/mo)', value: 'chatgpt-plus' },
194
- { label: 'ChatGPT Pro ($200/mo)', value: 'chatgpt-pro' },
195
- { label: 'Both providers (Pro tiers)', value: 'dual-pro' },
196
- { label: 'Both providers (Max tiers)', value: 'dual-max' },
197
- ]);
249
+ const capacityRaw = await askLine(rl, 'Subscription capacity (optional):', 'Press Enter for auto-detected providers, or enter counts like: claude100x3 gpt20x2 gpt200x1');
250
+ const subscriptionCapacity = parseCapacity(capacityRaw);
251
+ const subscription = subscriptionCapacity ? 'declared-capacity' : 'auto-detected';
198
252
  const workStyle = await ask(rl, 'How should dual-brain route your work?', [
199
253
  { label: 'Balanced', value: 'balanced', description: 'smart defaults, asks before expensive ops' },
200
254
  { label: 'Conservative', value: 'conservative', description: 'minimize tokens, prefer cheaper models' },
201
255
  { label: 'Aggressive', value: 'aggressive', description: 'best model available, maximize quality' },
202
256
  { label: 'Full auto', value: 'auto', description: 'never ask, optimize silently' },
203
257
  ]);
258
+ const shellDefault = await askYN(rl, 'Make dual-brain the default shell menu on new terminals?', true);
204
259
  let advanced = {};
205
260
  if (mode === 'advanced') {
206
261
  const thinkEnabled = await askYN(rl, 'Enable think agent?', true);
@@ -213,7 +268,7 @@ export async function runSetup(cwd, options = {}) {
213
268
  ]);
214
269
  advanced = { thinkEnabled, cascadeEnabled, learningEnabled, explorationRate };
215
270
  }
216
- const config = buildConfig({ subscription, workStyle, advanced, setupMode: mode }, detected);
271
+ const config = buildConfig({ subscription, subscriptionCapacity, workStyle, advanced, setupMode: mode, shellDefault }, detected);
217
272
  console.log(renderConfirmation(config));
218
273
  if (!await askYN(rl, 'Save and start?', true)) {
219
274
  console.log('\n' + c.yellow('Setup cancelled.') + '\n');
@@ -1 +1 @@
1
- {"version":3,"file":"setup-flow.js","sourceRoot":"","sources":["../../src/setup-flow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-flow.js","sourceRoot":"","sources":["../../src/setup-flow.ts"],"names":[],"mappings":"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"}
@@ -649,6 +649,72 @@ async function showToolsMenu(rl) {
649
649
  }
650
650
  }
651
651
 
652
+ // ─── Submenu: Data Tools Status ───────────────────────────────────────────
653
+
654
+ async function showDataToolsStatus(rl, providers) {
655
+ const dtPath = join(CWD, '.replit-tools');
656
+ const configPath = join(dtPath, 'config.json');
657
+ const claudeArchive = join(dtPath, '.session-archive', 'claude', 'history.jsonl');
658
+ const codexArchive = join(dtPath, '.session-archive', 'codex', 'history.jsonl');
659
+ const claudeCreds = join(dtPath, '.claude-persistent', '.credentials.json');
660
+ const codexAuth = join(dtPath, '.codex-persistent', 'auth.json');
661
+ const sessionManager = join(dtPath, 'scripts', 'claude-session-manager.sh');
662
+
663
+ const fileStatus = (p) => existsSync(p) ? green('present') : yellow('missing');
664
+ const countLines = (p) => {
665
+ try {
666
+ return readFileSync(p, 'utf8').split('\n').filter(Boolean).length;
667
+ } catch {
668
+ return 0;
669
+ }
670
+ };
671
+
672
+ console.log('');
673
+ console.log(` ${bold('Data Tools Integration')}`);
674
+ console.log(' ' + '─'.repeat(44));
675
+ if (!existsSync(dtPath)) {
676
+ console.log(` ${yellow('replit-tools is not installed in this workspace.')}`);
677
+ console.log('');
678
+ console.log(` ${bold('[i]')} Install replit-tools`);
679
+ console.log(` ${bold('[q]')} Back to main menu`);
680
+ const choice = (await new Promise(resolve => rl.question(' Choice: ', resolve))).trim().toLowerCase();
681
+ if (choice === 'i') spawnSync('npx', ['-y', 'data-tools'], { stdio: 'inherit', cwd: CWD });
682
+ return;
683
+ }
684
+
685
+ console.log(` Root: ${dim(dtPath)}`);
686
+ console.log(` Config: ${fileStatus(configPath)}`);
687
+ console.log(` Claude auth: ${providers.claude.authed ? green('authenticated') : yellow('not authenticated')} ${dim('(' + fileStatus(claudeCreds) + ')')}`);
688
+ console.log(` Codex auth: ${providers.codex.authed ? green('authenticated') : yellow('not authenticated')} ${dim('(' + fileStatus(codexAuth) + ')')}`);
689
+ console.log(` Claude archive: ${countLines(claudeArchive)} entries`);
690
+ console.log(` Codex archive: ${countLines(codexArchive)} entries`);
691
+ console.log(` Session manager: ${fileStatus(sessionManager)}`);
692
+ console.log('');
693
+ console.log(` ${dim('The original Replit/Data Tools menu is still available with:')} ${cyan('claude-menu')}`);
694
+ console.log('');
695
+ console.log(` ${bold('[r]')} Refresh auth`);
696
+ console.log(` ${bold('[m]')} Open original session manager`);
697
+ console.log(` ${bold('[q]')} Back to main menu`);
698
+ console.log('');
699
+
700
+ const choice = (await new Promise(resolve => rl.question(' Choice: ', resolve))).trim().toLowerCase();
701
+ if (choice === 'r') {
702
+ const refreshScript = join(dtPath, 'scripts', 'claude-auth-refresh.sh');
703
+ if (existsSync(refreshScript)) {
704
+ spawnSync('bash', [refreshScript, '--force'], { stdio: 'inherit', cwd: CWD });
705
+ } else {
706
+ console.log(` ${yellow('Refresh script missing.')}`);
707
+ }
708
+ await new Promise(resolve => rl.question(' Press Enter to continue...', resolve));
709
+ }
710
+ if (choice === 'm') {
711
+ console.log('');
712
+ console.log(` ${dim('Opening the original Data Tools session manager. Use [s] there to return to shell.')}`);
713
+ console.log('');
714
+ spawnSync('bash', ['-lc', `source "${sessionManager}" && claude_prompt`], { stdio: 'inherit', cwd: CWD });
715
+ }
716
+ }
717
+
652
718
  // ─── Submenu: Vibe Workflow ───────────────────────────────────────────────
653
719
 
654
720
  async function showVibeWorkflow(rl) {
@@ -748,9 +814,9 @@ function renderFirstRunMenu(providers) {
748
814
  lines.push('');
749
815
  }
750
816
 
751
- // Data Tools shortcut
817
+ // Data Tools integration status
752
818
  if (IS_REPLIT && existsSync(join(CWD, '.replit-tools'))) {
753
- lines.push(` ${bold('[t]')} Open Data Tools dashboard`);
819
+ lines.push(` ${bold('[t]')} Data Tools status`);
754
820
  } else if (IS_REPLIT) {
755
821
  lines.push(` ${bold('[t]')} Install replit-tools ${dim('(recommended for Replit)')}`);
756
822
  }
@@ -854,7 +920,7 @@ function renderReturningMenu(providers, sessions) {
854
920
  lines.push(` ${bold('[u]')} Update Dual Brain ${dim('(' + formatVersionStatus(updateInfo) + ')')}`);
855
921
 
856
922
  if (IS_REPLIT && existsSync(join(CWD, '.replit-tools'))) {
857
- lines.push(` ${bold('[t]')} Open Data Tools dashboard`);
923
+ lines.push(` ${bold('[t]')} Data Tools status`);
858
924
  } else if (IS_REPLIT) {
859
925
  lines.push(` ${bold('[t]')} Install replit-tools`);
860
926
  }
@@ -1100,18 +1166,7 @@ async function mainLoop() {
1100
1166
  if (choice === 't') {
1101
1167
  const dtPath = join(CWD, '.replit-tools');
1102
1168
  if (existsSync(dtPath)) {
1103
- const scriptPath = join(dtPath, 'scripts', 'setup-claude-code.sh');
1104
- if (existsSync(scriptPath)) {
1105
- console.log('');
1106
- console.log(' Opening Data Tools dashboard...');
1107
- console.log('');
1108
- spawnSync('bash', [scriptPath], { stdio: 'inherit', cwd: CWD });
1109
- } else {
1110
- console.log('');
1111
- console.log(` Data Tools present but dashboard script missing.`);
1112
- console.log(` Try: ${cyan('source .replit-tools/scripts/setup-claude-code.sh')}`);
1113
- console.log('');
1114
- }
1169
+ await showDataToolsStatus(rl, providers);
1115
1170
  } else if (IS_REPLIT) {
1116
1171
  console.log('');
1117
1172
  console.log(' Installing replit-tools (Data Tools)...');
package/install.mjs CHANGED
@@ -1020,6 +1020,54 @@ function printReport(env, mode, actions, isDryRun, { skipBanner = false } = {})
1020
1020
  nl();
1021
1021
  }
1022
1022
 
1023
+ function loadDualBrainConfig(workspace) {
1024
+ try {
1025
+ const p = join(workspace, '.dualbrain', 'config.json');
1026
+ if (!existsSync(p)) return null;
1027
+ return JSON.parse(readFileSync(p, 'utf8'));
1028
+ } catch {
1029
+ return null;
1030
+ }
1031
+ }
1032
+
1033
+ function installDefaultShellLauncher(workspace, actions) {
1034
+ const cfg = loadDualBrainConfig(workspace);
1035
+ if (!cfg?.shellDefault) return;
1036
+
1037
+ const bashrcPath = join(workspace, '.config', 'bashrc');
1038
+ if (!existsSync(bashrcPath)) {
1039
+ actions.push('⊘ default shell launcher (.config/bashrc not found)');
1040
+ return;
1041
+ }
1042
+
1043
+ const start = '# >>> dual-brain default launcher >>>';
1044
+ const end = '# <<< dual-brain default launcher <<<';
1045
+ const block = [
1046
+ start,
1047
+ '# Added by dual-brain install. Set DUAL_BRAIN_SKIP=1 to bypass.',
1048
+ 'export CLAUDE_NO_PROMPT=true',
1049
+ 'if [ -t 1 ] && [ -z "${DUAL_BRAIN_LOADED}" ] && [ -z "${DUAL_BRAIN_SKIP}" ]; then',
1050
+ ' export DUAL_BRAIN_LOADED=1',
1051
+ ' command -v dual-brain >/dev/null 2>&1 && dual-brain',
1052
+ 'fi',
1053
+ end,
1054
+ ].join('\n');
1055
+
1056
+ try {
1057
+ let src = readFileSync(bashrcPath, 'utf8');
1058
+ const esc = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
1059
+ const existing = new RegExp(`${esc(start)}[\\s\\S]*?${esc(end)}\\n?`, 'm');
1060
+ src = src.replace(existing, '');
1061
+ const marker = '# Auto-show menu on shell start';
1062
+ if (src.includes(marker)) src = src.replace(marker, `${block}\n\n${marker}`);
1063
+ else src = `${src.replace(/\s*$/, '\n\n')}${block}\n`;
1064
+ writeFileSync(bashrcPath, src, 'utf8');
1065
+ actions.push('✓ dual-brain default shell launcher (.config/bashrc)');
1066
+ } catch {
1067
+ actions.push('⊘ default shell launcher (could not update .config/bashrc)');
1068
+ }
1069
+ }
1070
+
1023
1071
  // ─── Profile System ────────────────────────────────────────────────────────
1024
1072
 
1025
1073
  const PROFILE_FILE_REL = '.claude/dual-brain.profile.json';
@@ -1626,6 +1674,8 @@ async function main() {
1626
1674
  }
1627
1675
  }
1628
1676
 
1677
+ installDefaultShellLauncher(env.workspace, actions);
1678
+
1629
1679
  nl();
1630
1680
  await celebrate('Setup complete');
1631
1681
  nl();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dual-brain",
3
- "version": "0.3.11",
3
+ "version": "0.3.13",
4
4
  "description": "AI orchestration across Claude + OpenAI subscriptions — smart routing, budget awareness, and dual-brain collaboration",
5
5
  "type": "module",
6
6
  "bin": {