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.
package/bin/dual-brain.mjs
CHANGED
|
@@ -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
|
-
|
|
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
|
|
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.
|
|
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": "
|
|
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.
|