dual-brain 7.1.17 → 7.1.19

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.
@@ -1133,7 +1133,8 @@ async function mainScreen(rl, ask) {
1133
1133
  const active = sess.isActive ? ' ●' : '';
1134
1134
  const cat = sess.category ? ` [${sess.category}]` : '';
1135
1135
  const tool = (sess.tool === 'codex') ? 'cdx' : 'cld';
1136
- console.log(` [${i + 1}] ${pin}${tool} ${sess.age.padEnd(8)} ${sess.name}${active}${cat}`);
1136
+ const displayName = (sess.name && sess.name.length > 40) ? sess.name.slice(0, 37) + '...' : (sess.name || sess.id.slice(0, 8));
1137
+ console.log(` [${i + 1}] ${pin}${tool} ${sess.age.padEnd(8)} ${displayName}${active}${cat}`);
1137
1138
  });
1138
1139
  console.log('');
1139
1140
  }
@@ -1148,7 +1149,7 @@ async function mainScreen(rl, ask) {
1148
1149
  };
1149
1150
  console.log(brandTop);
1150
1151
  console.log(` │ ${brandPad('Dual Brain Session Manager')}│`);
1151
- console.log(` │ ${brandPad('by Steve Moraco + dual-brain')}│`);
1152
+ console.log(` │ ${brandPad('Built on data-tools by Steve Moraco')}│`);
1152
1153
  console.log(brandBottom);
1153
1154
  console.log('');
1154
1155
 
@@ -1163,6 +1164,7 @@ async function mainScreen(rl, ask) {
1163
1164
 
1164
1165
  console.log(' [c] Continue last session');
1165
1166
  console.log(' [n] New session');
1167
+ console.log('');
1166
1168
  if (recentSessions.length > 0) {
1167
1169
  console.log(' [1-9] Resume numbered above');
1168
1170
  }
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "dual-brain",
3
- "version": "7.1.17",
3
+ "version": "7.1.19",
4
4
  "description": "AI orchestration across Claude + OpenAI subscriptions — smart routing, budget awareness, and dual-brain collaboration",
5
5
  "type": "module",
6
6
  "bin": {
7
- "dual-brain": "./bin/dual-brain.mjs"
7
+ "dual-brain": "bin/dual-brain.mjs"
8
8
  },
9
9
  "main": "./src/index.mjs",
10
10
  "exports": {
@@ -35,7 +35,7 @@
35
35
  "license": "MIT",
36
36
  "repository": {
37
37
  "type": "git",
38
- "url": "https://github.com/1xmint/dual-brain.git"
38
+ "url": "git+https://github.com/1xmint/dual-brain.git"
39
39
  },
40
40
  "scripts": {
41
41
  "test": "node .claude/hooks/test-orchestrator.mjs",
@@ -94,7 +94,6 @@
94
94
  "mcp-server/README.md",
95
95
  "install.mjs",
96
96
  "orchestrator.json",
97
- "hookify.*.local.md",
98
97
  "review-rules.md",
99
98
  "AGENTS.md",
100
99
  "CLAUDE.md",
package/src/detect.mjs CHANGED
@@ -237,7 +237,7 @@ const DEFAULT_SPECIALISTS = {
237
237
  typescript: { triggers: { extensions: ['.ts', '.tsx', '.mts'], keywords: ['typescript', 'tsc', 'generics', 'react', 'next', 'node'] } },
238
238
  html: { triggers: { extensions: ['.html', '.css', '.scss', '.svg'], keywords: ['html', 'css', 'accessibility', 'a11y', 'aria', 'responsive', 'tailwind'] } },
239
239
  linux: { triggers: { extensions: ['.sh', '.bash', '.conf', '.service', '.dockerfile'], keywords: ['linux', 'bash', 'shell', 'systemd', 'nginx', 'docker', 'ssh', 'deploy'] } },
240
- security: { triggers: { extensions: [], keywords: ['auth', 'oauth', 'jwt', 'credential', 'secret', 'encrypt', 'vulnerability', 'owasp', 'xss', 'csrf'] }, tier_bias: 'think' },
240
+ security: { triggers: { extensions: [], keywords: ['auth', 'oauth', 'jwt', 'credential', 'secret', 'encrypt', 'vulnerability', 'vulnerabilities', 'audit', 'owasp', 'xss', 'csrf'] }, tier_bias: 'think' },
241
241
  };
242
242
 
243
243
  function loadSpecialistRegistry() {
@@ -1,16 +0,0 @@
1
- ---
2
- name: orchestrator-cost-check
3
- enabled: true
4
- event: all
5
- tool_matcher: Agent
6
- action: warn
7
- conditions:
8
- - field: tool_name
9
- operator: equals
10
- pattern: Agent
11
- ---
12
-
13
- **[Cost]** Subagent dispatched. Verify you selected the right tier:
14
- - `model: "haiku"` for search/exploration
15
- - `model: "sonnet"` for execution/implementation
16
- - No model param (inherit Opus) only for thinking tasks
@@ -1,19 +0,0 @@
1
- ---
2
- name: orchestrator-quality-gate
3
- enabled: true
4
- event: stop
5
- action: warn
6
- conditions:
7
- - field: transcript
8
- operator: regex_match
9
- pattern: (Edit|Write|MultiEdit).+\.(ts|tsx|js|jsx|py|rs|go|java|rb|swift|kt)
10
- ---
11
-
12
- **[Quality Gate]** Before ending this session:
13
- 1. Run `node .claude/hooks/session-report.mjs` to see the session summary
14
- 2. Run `node .claude/hooks/quality-gate.mjs` and check the output:
15
- - `gate: "pass"` — safe to end
16
- - `gate: "issues_found"` — address flagged issues first
17
- - `gate: "needs_human_review"` — GPT unavailable, review diff manually
18
- - `gate: "disabled"` — gate is off in config
19
- Do NOT skip these steps.
@@ -1,23 +0,0 @@
1
- ---
2
- name: orchestrator-routing
3
- enabled: true
4
- event: prompt
5
- action: warn
6
- conditions:
7
- - field: user_prompt
8
- operator: regex_match
9
- pattern: .+
10
- ---
11
-
12
- **[Tier Router]** Route work across both providers (config: `.claude/orchestrator.json`):
13
-
14
- **Claude lane** (fast, interactive):
15
- - Search (`model: "haiku"`): Read-only lookups, grep, explore. Agent must return: files found, line refs, confidence.
16
- - Execute (`model: "sonnet"`): Edits, tests, git ops. Agent must return: files changed, tests run, edge cases.
17
- - Think (main session): Architecture, review, planning. Agent must return: decision, alternatives, risks.
18
-
19
- **GPT lane** (parallel, isolated work):
20
- - Use `node .claude/hooks/gpt-work-dispatcher.mjs --task "..." --model gpt-5.4` for isolated execution
21
- - Use `node .claude/hooks/dual-brain-think.mjs --question "..."` for dual-perspective decisions
22
-
23
- **Routing:** Tasks <3min → Claude. Isolated tasks >3min → check balance first (`node .claude/hooks/budget-balancer.mjs`). High-risk → dual-brain. Think > execute > search when task spans tiers.