dual-brain 0.3.25 → 0.3.26
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 +455 -59
- package/dist/src/auto-handoff.d.ts +2 -0
- package/dist/src/auto-handoff.js +20 -5
- package/dist/src/auto-handoff.js.map +1 -1
- package/dist/src/decide.d.ts +21 -0
- package/dist/src/decide.js +145 -23
- package/dist/src/decide.js.map +1 -1
- package/dist/src/install-hooks.js +1 -0
- package/dist/src/install-hooks.js.map +1 -1
- package/dist/src/provider-enforcement.js +2 -0
- package/dist/src/provider-enforcement.js.map +1 -1
- package/dist/src/setup-flow.d.ts +4 -0
- package/dist/src/setup-flow.js +22 -9
- package/dist/src/setup-flow.js.map +1 -1
- package/hooks/command-risk.mjs +137 -0
- package/hooks/head-guard.mjs +26 -40
- package/install.mjs +1 -0
- package/package.json +1 -1
package/dist/src/setup-flow.js
CHANGED
|
@@ -90,8 +90,8 @@ export function renderConfirmation(config) {
|
|
|
90
90
|
row('Primary model:', config.models.execute),
|
|
91
91
|
row('Think agent:', config.routing.thinkEnabled ? 'enabled' : 'disabled'),
|
|
92
92
|
row('Learning:', config.routing.learningEnabled ? 'on' : 'off'),
|
|
93
|
-
row('
|
|
94
|
-
row('
|
|
93
|
+
row('Automation:', config.behavior.automationLevel === 'smart-auto' ? 'Smart Auto' : 'Manual'),
|
|
94
|
+
row('Safety:', config.behavior.permissionBoundary === 'bypass' ? 'Bypass approvals/sandbox' : 'Sandboxed approvals'),
|
|
95
95
|
row('Shell default:', config.shellDefault ? 'dual-brain' : 'leave current shell menu'),
|
|
96
96
|
'',
|
|
97
97
|
].join('\n');
|
|
@@ -99,6 +99,8 @@ export function renderConfirmation(config) {
|
|
|
99
99
|
// ── Config builder ────────────────────────────────────────────────────────────
|
|
100
100
|
export function buildConfig(answers, detected) {
|
|
101
101
|
const { subscription = 'auto-detected', subscriptionCapacity, workStyle = 'balanced', automode = workStyle === 'auto', bypassPermissions = false, advanced = {}, setupMode = 'quick', shellDefault = true } = answers;
|
|
102
|
+
const automationLevel = answers.automationLevel || (automode ? 'smart-auto' : 'manual');
|
|
103
|
+
const permissionBoundary = answers.permissionBoundary || (bypassPermissions ? 'bypass' : 'sandboxed');
|
|
102
104
|
const dual = subscription.startsWith('dual-');
|
|
103
105
|
const isMax = subscription.includes('max') || subscription === 'chatgpt-pro';
|
|
104
106
|
const topModel = isMax ? 'opus' : 'sonnet';
|
|
@@ -118,7 +120,7 @@ export function buildConfig(answers, detected) {
|
|
|
118
120
|
},
|
|
119
121
|
models: advanced.models || { search: 'haiku', execute: 'sonnet', think: topModel, review: topModel },
|
|
120
122
|
budget: { sessionLimitTokens: advanced.sessionLimitTokens ?? null, warnAtPercent: advanced.warnAtPercent ?? 80 },
|
|
121
|
-
behavior: { automode, bypassPermissions },
|
|
123
|
+
behavior: { automode, bypassPermissions, automationLevel, permissionBoundary },
|
|
122
124
|
configuredAt: new Date().toISOString(),
|
|
123
125
|
setupMode,
|
|
124
126
|
shellDefault,
|
|
@@ -253,15 +255,15 @@ export async function runSetup(cwd, options = {}) {
|
|
|
253
255
|
const subscriptionCapacity = parseCapacity(capacityRaw);
|
|
254
256
|
const subscription = subscriptionCapacity ? 'declared-capacity' : 'auto-detected';
|
|
255
257
|
const workStyle = await ask(rl, 'How should dual-brain route your work?', [
|
|
256
|
-
{ label: 'Balanced', value: 'balanced', description: 'smart defaults, asks before expensive ops' },
|
|
258
|
+
{ label: 'Balanced', value: 'balanced', description: 'smart defaults, asks before expensive/high-risk ops' },
|
|
257
259
|
{ label: 'Conservative', value: 'conservative', description: 'minimize tokens, prefer cheaper models' },
|
|
258
260
|
{ label: 'Aggressive', value: 'aggressive', description: 'best model available, maximize quality' },
|
|
259
|
-
{ label: '
|
|
261
|
+
{ label: 'Smart Auto', value: 'auto', description: 'safe tasks run automatically; risky work gates' },
|
|
260
262
|
]);
|
|
261
|
-
const automode = await askYN(rl, 'Auto
|
|
263
|
+
const automode = await askYN(rl, 'Smart Auto by default? (safe tasks launch without asking; high-risk work still gates)', workStyle === 'auto');
|
|
262
264
|
const permissionMode = await ask(rl, 'Provider permission mode:', [
|
|
263
|
-
{ label: '
|
|
264
|
-
{ label: 'Bypass approvals/sandbox', value: 'bypass', description: 'advanced; trusted workspaces only' },
|
|
265
|
+
{ label: 'Sandboxed approvals', value: 'safe', description: 'recommended; workspace sandbox with smart approvals' },
|
|
266
|
+
{ label: 'Bypass approvals/sandbox', value: 'bypass', description: 'advanced; trusted workspaces only; disables provider safety boundary' },
|
|
265
267
|
]);
|
|
266
268
|
const bypassPermissions = permissionMode === 'bypass'
|
|
267
269
|
? await askYN(rl, 'Confirm bypass mode? This disables provider approval prompts/sandboxing.', false)
|
|
@@ -279,7 +281,18 @@ export async function runSetup(cwd, options = {}) {
|
|
|
279
281
|
]);
|
|
280
282
|
advanced = { thinkEnabled, cascadeEnabled, learningEnabled, explorationRate };
|
|
281
283
|
}
|
|
282
|
-
const config = buildConfig({
|
|
284
|
+
const config = buildConfig({
|
|
285
|
+
subscription,
|
|
286
|
+
subscriptionCapacity,
|
|
287
|
+
workStyle,
|
|
288
|
+
automode,
|
|
289
|
+
bypassPermissions,
|
|
290
|
+
automationLevel: automode ? 'smart-auto' : 'manual',
|
|
291
|
+
permissionBoundary: bypassPermissions ? 'bypass' : 'sandboxed',
|
|
292
|
+
advanced,
|
|
293
|
+
setupMode: mode,
|
|
294
|
+
shellDefault,
|
|
295
|
+
}, detected);
|
|
283
296
|
console.log(renderConfirmation(config));
|
|
284
297
|
if (!await askYN(rl, 'Save and start?', true)) {
|
|
285
298
|
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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"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
// command-risk.mjs — context-aware shell risk evaluation for dual-brain hooks.
|
|
2
|
+
|
|
3
|
+
const GENERATED_PATH_RE = /^(?:\.?\/)?(?:dist|build|coverage|out|tmp|temp|\.cache|\.next(?:\/cache)?|\.nuxt|\.svelte-kit|\.vite|\.turbo|node_modules\/\.cache)(?:\/|$)/;
|
|
4
|
+
const LOW_VALUE_FILE_RE = /(?:^|\/)(?:.*\.log|.*\.tmp|.*\.bak|.*\.map|\.DS_Store)$/;
|
|
5
|
+
const SOURCE_PATH_RE = /^(?:\.?\/)?(?:src|app|pages|components|lib|server|api|routes|db|database|migrations|prisma|auth|security|infra|scripts|hooks|bin|\.github|\.claude|\.dualbrain|\.dual-brain)(?:\/|$)/;
|
|
6
|
+
const CONFIG_PATH_RE = /^(?:\.?\/)?(?:package(?:-lock)?\.json|pnpm-lock\.yaml|yarn\.lock|tsconfig[^/]*\.json|vite\.config\.[cm]?[jt]s|next\.config\.[cm]?[jt]s|\.env(?:\..*)?|.*(?:secret|credential|token|key|oauth|auth).*\.(?:json|ya?ml|toml|ini))(?:$|\/)/i;
|
|
7
|
+
|
|
8
|
+
const HARD_DENY_RULES = [
|
|
9
|
+
{ label: 'disk overwrite', re: /\bdd\b[\s\S]*\bof=\/dev\// },
|
|
10
|
+
{ label: 'filesystem format', re: /\bmkfs(?:\.[a-z0-9]+)?\b/ },
|
|
11
|
+
{ label: 'secure shred', re: /\bshred\b/ },
|
|
12
|
+
{ label: 'world-writable permissions', re: /\bchmod\s+(?:-[^\s]*R[^\s]*\s+)?777\b/ },
|
|
13
|
+
{ label: 'recursive ownership change', re: /\bchown\s+-[^\s]*R\b/ },
|
|
14
|
+
{ label: 'hard git reset', re: /\bgit\s+reset\s+--hard\b/ },
|
|
15
|
+
{ label: 'forced git clean', re: /\bgit\s+clean\s+-[^\s]*f/ },
|
|
16
|
+
{ label: 'discard git checkout', re: /\bgit\s+checkout\s+--\b/ },
|
|
17
|
+
{ label: 'discard git restore', re: /\bgit\s+restore\s+(?:\.|:[/\\]|--source=|--staged\s+\.)/ },
|
|
18
|
+
{ label: 'force push', re: /\bgit\s+push\b[\s\S]*--force(?:-with-lease)?\b/ },
|
|
19
|
+
{ label: 'branch delete', re: /\bgit\s+branch\s+-D\b/ },
|
|
20
|
+
{ label: 'history rewrite', re: /\bgit\s+rebase\b/ },
|
|
21
|
+
{ label: 'production deploy', re: /\b(vercel|netlify|fly|railway|wrangler|firebase|supabase|sst)\s+(?:deploy|release)\b/ },
|
|
22
|
+
{ label: 'database migration', re: /\b(prisma|drizzle|knex|sequelize|typeorm|rails)\b[\s\S]*\b(migrate|db:drop|db:reset|rollback)\b/ },
|
|
23
|
+
{ label: 'package publish', re: /\b(npm|pnpm|yarn)\s+publish\b/ },
|
|
24
|
+
{ label: 'secret or env mutation', re: /(?:^|\s)(?:cat|printf|echo|tee|sed\s+-i|perl\s+-pi)\b[\s\S]*(?:>|>>|\s)\s*(?:\.env|.*(?:secret|credential|token|key|oauth|auth).*\.(?:json|ya?ml|toml|ini))/i },
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
const WRITE_BASH_RE = /\brm\b|\bmv\b|\bcp\b|\bmkdir\b|\btouch\b|\bchmod\b|\bchown\b|\bdd\b|\binstall\b|\btruncate\b|\btee\b|\bsed\s+-i\b|\bawk\s+-i\b|>>|(?<![><])>(?![>=])/;
|
|
28
|
+
|
|
29
|
+
function normalizePathToken(token) {
|
|
30
|
+
return String(token || '')
|
|
31
|
+
.trim()
|
|
32
|
+
.replace(/^['"]|['"]$/g, '')
|
|
33
|
+
.replace(/^\.\//, '');
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function commandTokens(command) {
|
|
37
|
+
const tokens = [];
|
|
38
|
+
const re = /"([^"]*)"|'([^']*)'|(\S+)/g;
|
|
39
|
+
let match;
|
|
40
|
+
while ((match = re.exec(command))) {
|
|
41
|
+
tokens.push(match[1] ?? match[2] ?? match[3]);
|
|
42
|
+
}
|
|
43
|
+
return tokens;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function rmAnalysis(command) {
|
|
47
|
+
const tokens = commandTokens(command);
|
|
48
|
+
const rmIndex = tokens.findIndex(t => t === 'rm');
|
|
49
|
+
if (rmIndex < 0) return null;
|
|
50
|
+
|
|
51
|
+
const args = tokens.slice(rmIndex + 1);
|
|
52
|
+
const flags = args.filter(t => /^-/.test(t)).join('');
|
|
53
|
+
const paths = args.filter(t => !/^-/.test(t)).map(normalizePathToken);
|
|
54
|
+
const recursive = /r|R/.test(flags);
|
|
55
|
+
const force = /f/.test(flags);
|
|
56
|
+
|
|
57
|
+
return { recursive, force, paths };
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function pathCategory(path) {
|
|
61
|
+
const p = normalizePathToken(path);
|
|
62
|
+
if (!p || p === '.' || p === '..' || p === '/' || p === '~' || p.startsWith('../') || p.startsWith('/')) return 'broad';
|
|
63
|
+
if (SOURCE_PATH_RE.test(p) || CONFIG_PATH_RE.test(p)) return 'source';
|
|
64
|
+
if (GENERATED_PATH_RE.test(p) || LOW_VALUE_FILE_RE.test(p)) return 'generated';
|
|
65
|
+
if (/[*?[\]{}]/.test(p)) return 'glob';
|
|
66
|
+
return 'unknown';
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function assessRm(command) {
|
|
70
|
+
const analysis = rmAnalysis(command);
|
|
71
|
+
if (!analysis) return null;
|
|
72
|
+
|
|
73
|
+
if (analysis.paths.length === 0) {
|
|
74
|
+
return { decision: 'ask', severity: 'medium', reason: 'rm without explicit path', category: 'filesystem-delete' };
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const categories = analysis.paths.map(pathCategory);
|
|
78
|
+
if (categories.includes('broad')) {
|
|
79
|
+
return { decision: 'deny', severity: 'critical', reason: 'delete targets broad or absolute path', category: 'filesystem-delete', paths: analysis.paths };
|
|
80
|
+
}
|
|
81
|
+
if (categories.includes('source')) {
|
|
82
|
+
return { decision: 'ask', severity: 'high', reason: 'delete touches source, config, auth, or system files', category: 'filesystem-delete', paths: analysis.paths };
|
|
83
|
+
}
|
|
84
|
+
if (analysis.recursive && categories.every(c => c === 'generated')) {
|
|
85
|
+
return { decision: 'allow', severity: 'low', reason: 'cleanup is scoped to generated/cache output', category: 'generated-cleanup', paths: analysis.paths };
|
|
86
|
+
}
|
|
87
|
+
if (!analysis.recursive && categories.every(c => c === 'generated')) {
|
|
88
|
+
return { decision: 'allow', severity: 'low', reason: 'delete is scoped to low-value generated files', category: 'generated-cleanup', paths: analysis.paths };
|
|
89
|
+
}
|
|
90
|
+
if (analysis.recursive || analysis.force || categories.includes('glob')) {
|
|
91
|
+
return { decision: 'ask', severity: 'medium', reason: 'delete has recursive/force/glob behavior outside known generated paths', category: 'filesystem-delete', paths: analysis.paths };
|
|
92
|
+
}
|
|
93
|
+
return { decision: 'ask', severity: 'medium', reason: 'delete target is not recognized as generated output', category: 'filesystem-delete', paths: analysis.paths };
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export function isBashWriteIntent(command) {
|
|
97
|
+
return WRITE_BASH_RE.test(command);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export function assessCommandRisk(command, context = {}) {
|
|
101
|
+
const raw = String(command || '');
|
|
102
|
+
const trimmed = raw.trim();
|
|
103
|
+
if (!trimmed) {
|
|
104
|
+
return { decision: 'allow', severity: 'low', reason: 'empty command', category: 'none' };
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
for (const rule of HARD_DENY_RULES) {
|
|
108
|
+
if (rule.re.test(trimmed)) {
|
|
109
|
+
return { decision: 'deny', severity: 'critical', reason: rule.label, category: 'hard-stop' };
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (/\bfind\b[\s\S]*\s-delete\b/.test(trimmed)) {
|
|
114
|
+
return { decision: 'ask', severity: 'high', reason: 'find -delete depends on search scope', category: 'filesystem-delete' };
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
const rm = assessRm(trimmed);
|
|
118
|
+
if (rm) return rm;
|
|
119
|
+
|
|
120
|
+
if (/\btruncate\s+-s\s*0\b/.test(trimmed)) {
|
|
121
|
+
return { decision: 'ask', severity: 'high', reason: 'truncate clears file contents', category: 'filesystem-write' };
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
if (/>>|(?<![><])>(?![>=])/.test(trimmed) && CONFIG_PATH_RE.test(trimmed)) {
|
|
125
|
+
return { decision: 'ask', severity: 'high', reason: 'redirect writes to config, auth, secret, or env-like file', category: 'protected-write' };
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
if (context?.head === true && isBashWriteIntent(trimmed)) {
|
|
129
|
+
return { decision: 'deny', severity: 'medium', reason: 'HEAD write-intent command must dispatch work', category: 'head-write' };
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
if (isBashWriteIntent(trimmed)) {
|
|
133
|
+
return { decision: 'allow', severity: 'medium', reason: 'write-intent command allowed for scoped work agent', category: 'agent-write' };
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return { decision: 'allow', severity: 'low', reason: 'read-only or diagnostic command', category: 'read-only' };
|
|
137
|
+
}
|
package/hooks/head-guard.mjs
CHANGED
|
@@ -14,21 +14,26 @@
|
|
|
14
14
|
// subagent (work agent). If absent we are in the HEAD session.
|
|
15
15
|
|
|
16
16
|
import { readFileSync } from 'fs';
|
|
17
|
+
import { assessCommandRisk } from './command-risk.mjs';
|
|
17
18
|
|
|
18
19
|
const BLOCKED_TOOLS = new Set(['Edit', 'Write', 'NotebookEdit']);
|
|
19
20
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
function deny(reason) {
|
|
22
|
+
const output = {
|
|
23
|
+
hookSpecificOutput: {
|
|
24
|
+
hookEventName: 'PreToolUse',
|
|
25
|
+
permissionDecision: 'deny',
|
|
26
|
+
permissionDecisionReason: reason,
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
process.stdout.write(JSON.stringify(output));
|
|
30
|
+
process.exit(2);
|
|
26
31
|
}
|
|
27
32
|
|
|
28
33
|
// Read stdin JSON payload
|
|
29
34
|
let input;
|
|
30
35
|
try {
|
|
31
|
-
const raw = readFileSync(
|
|
36
|
+
const raw = readFileSync(0, 'utf8');
|
|
32
37
|
input = JSON.parse(raw);
|
|
33
38
|
} catch {
|
|
34
39
|
// Can't parse input — fail open. This hook's purpose is to block HEAD from
|
|
@@ -41,24 +46,26 @@ try {
|
|
|
41
46
|
|
|
42
47
|
const toolName = input.tool_name || '';
|
|
43
48
|
|
|
49
|
+
if (toolName === 'Bash') {
|
|
50
|
+
const command = (input.tool_input && input.tool_input.command) || '';
|
|
51
|
+
const risk = assessCommandRisk(command, { head: !input.agent_id });
|
|
52
|
+
if (risk.decision === 'deny') {
|
|
53
|
+
deny(`[dual-brain] Command blocked (${risk.reason}). Full auto cannot run this safely. Use a scoped work task or ask the user for explicit approval.`);
|
|
54
|
+
}
|
|
55
|
+
if (risk.decision === 'ask') {
|
|
56
|
+
deny(`[dual-brain] Approval required (${risk.reason}). Context: ${risk.category}. Ask the user before running this command.`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
44
60
|
// If this hook is firing inside a subagent, ALLOW — subagents are work agents
|
|
45
|
-
// and are permitted to edit/write/bash.
|
|
61
|
+
// and are permitted to edit/write/bash except for dangerous hard stops above.
|
|
46
62
|
if (input.agent_id) {
|
|
47
63
|
process.exit(0);
|
|
48
64
|
}
|
|
49
65
|
|
|
50
66
|
// HEAD session: block direct mutation tools
|
|
51
67
|
if (BLOCKED_TOOLS.has(toolName)) {
|
|
52
|
-
|
|
53
|
-
hookSpecificOutput: {
|
|
54
|
-
hookEventName: 'PreToolUse',
|
|
55
|
-
permissionDecision: 'deny',
|
|
56
|
-
permissionDecisionReason:
|
|
57
|
-
`[dual-brain] HEAD cannot use ${toolName} directly. Dispatch via: dual-brain go "task description"`,
|
|
58
|
-
},
|
|
59
|
-
};
|
|
60
|
-
process.stdout.write(JSON.stringify(output));
|
|
61
|
-
process.exit(2);
|
|
68
|
+
deny(`[dual-brain] HEAD cannot use ${toolName} directly. Dispatch via: dual-brain go "task description"`);
|
|
62
69
|
}
|
|
63
70
|
|
|
64
71
|
// Bash: allow read-only commands; block write-intent ones.
|
|
@@ -68,33 +75,12 @@ if (toolName === 'Bash') {
|
|
|
68
75
|
if (/^node\s+\.?(?:\.claude\/)?hooks\//.test(command.trimStart())) {
|
|
69
76
|
process.exit(0);
|
|
70
77
|
}
|
|
71
|
-
if (isBashWriteIntent(command)) {
|
|
72
|
-
const output = {
|
|
73
|
-
hookSpecificOutput: {
|
|
74
|
-
hookEventName: 'PreToolUse',
|
|
75
|
-
permissionDecision: 'deny',
|
|
76
|
-
permissionDecisionReason:
|
|
77
|
-
'[dual-brain] HEAD cannot run write-intent Bash commands. Dispatch via: dual-brain go "task description"',
|
|
78
|
-
},
|
|
79
|
-
};
|
|
80
|
-
process.stdout.write(JSON.stringify(output));
|
|
81
|
-
process.exit(2);
|
|
82
|
-
}
|
|
83
78
|
process.exit(0);
|
|
84
79
|
}
|
|
85
80
|
|
|
86
81
|
// Block MCP filesystem write tools by name.
|
|
87
82
|
if (toolName.startsWith('mcp__') && /write|create|delete|remove|move|rename|append|patch|truncate|copy|commit|push|stage|merge|update|overwrite/i.test(toolName)) {
|
|
88
|
-
|
|
89
|
-
hookSpecificOutput: {
|
|
90
|
-
hookEventName: 'PreToolUse',
|
|
91
|
-
permissionDecision: 'deny',
|
|
92
|
-
permissionDecisionReason:
|
|
93
|
-
'[dual-brain] HEAD cannot use MCP write tools. Dispatch via: dual-brain go "task description"',
|
|
94
|
-
},
|
|
95
|
-
};
|
|
96
|
-
process.stdout.write(JSON.stringify(output));
|
|
97
|
-
process.exit(2);
|
|
83
|
+
deny('[dual-brain] HEAD cannot use MCP write tools. Dispatch via: dual-brain go "task description"');
|
|
98
84
|
}
|
|
99
85
|
|
|
100
86
|
// Allow everything else (Read, Agent handled by enforce-tier, etc.)
|
package/install.mjs
CHANGED
package/package.json
CHANGED