dual-brain 0.3.24 → 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.
@@ -188,7 +188,7 @@ export const MODEL_CAPABILITIES = {
188
188
  modes: {
189
189
  webSearch: true,
190
190
  webSearchFlag: '--search',
191
- sandbox: { search: 'read-only', execute: 'danger-full-access' },
191
+ sandbox: { search: 'read-only', execute: 'workspace-write' },
192
192
  },
193
193
  dispatch: {
194
194
  method: 'codex-exec',
@@ -224,11 +224,11 @@ export const MODEL_CAPABILITIES = {
224
224
  modes: {
225
225
  webSearch: true,
226
226
  webSearchFlag: '--search',
227
- sandbox: { search: 'read-only', execute: 'danger-full-access' },
227
+ sandbox: { search: 'read-only', execute: 'workspace-write' },
228
228
  },
229
229
  dispatch: {
230
230
  method: 'codex-exec',
231
- example: 'codex exec -m gpt-4.1 -s danger-full-access "..."',
231
+ example: 'codex exec -m gpt-4.1 -s workspace-write "..."',
232
232
  },
233
233
  latency: 'fast',
234
234
  quirks: [
@@ -260,11 +260,11 @@ export const MODEL_CAPABILITIES = {
260
260
  modes: {
261
261
  webSearch: true,
262
262
  webSearchFlag: '--search',
263
- sandbox: { search: 'read-only', execute: 'danger-full-access' },
263
+ sandbox: { search: 'read-only', execute: 'workspace-write' },
264
264
  },
265
265
  dispatch: {
266
266
  method: 'codex-exec',
267
- example: 'codex exec -m gpt-5.2 -s danger-full-access "..."',
267
+ example: 'codex exec -m gpt-5.2 -s workspace-write "..."',
268
268
  },
269
269
  latency: 'fast',
270
270
  quirks: [
@@ -298,11 +298,11 @@ export const MODEL_CAPABILITIES = {
298
298
  modes: {
299
299
  webSearch: true,
300
300
  webSearchFlag: '--search',
301
- sandbox: { search: 'read-only', execute: 'danger-full-access' },
301
+ sandbox: { search: 'read-only', execute: 'workspace-write' },
302
302
  },
303
303
  dispatch: {
304
304
  method: 'codex-exec',
305
- example: 'codex exec -m gpt-5.3-codex -s danger-full-access "..."',
305
+ example: 'codex exec -m gpt-5.3-codex -s workspace-write "..."',
306
306
  },
307
307
  latency: 'medium',
308
308
  quirks: [
@@ -334,11 +334,11 @@ export const MODEL_CAPABILITIES = {
334
334
  },
335
335
  modes: {
336
336
  webSearch: false,
337
- sandbox: { search: 'read-only', execute: 'danger-full-access' },
337
+ sandbox: { search: 'read-only', execute: 'workspace-write' },
338
338
  },
339
339
  dispatch: {
340
340
  method: 'codex-exec',
341
- example: 'codex exec -m gpt-5.3-codex-spark -s danger-full-access "..."',
341
+ example: 'codex exec -m gpt-5.3-codex-spark -s workspace-write "..."',
342
342
  },
343
343
  latency: 'fastest',
344
344
  quirks: [
@@ -372,11 +372,11 @@ export const MODEL_CAPABILITIES = {
372
372
  modes: {
373
373
  webSearch: true,
374
374
  webSearchFlag: '--search',
375
- sandbox: { search: 'read-only', execute: 'danger-full-access' },
375
+ sandbox: { search: 'read-only', execute: 'workspace-write' },
376
376
  },
377
377
  dispatch: {
378
378
  method: 'codex-exec',
379
- example: 'codex exec -m gpt-5.4-mini -s danger-full-access "..."',
379
+ example: 'codex exec -m gpt-5.4-mini -s workspace-write "..."',
380
380
  },
381
381
  latency: 'medium',
382
382
  quirks: [
@@ -411,11 +411,11 @@ export const MODEL_CAPABILITIES = {
411
411
  webSearchFlag: '--search',
412
412
  computerUse: true,
413
413
  toolSearch: true,
414
- sandbox: { search: 'read-only', execute: 'danger-full-access' },
414
+ sandbox: { search: 'read-only', execute: 'workspace-write' },
415
415
  },
416
416
  dispatch: {
417
417
  method: 'codex-exec',
418
- example: 'codex exec -m gpt-5.4 -s danger-full-access -c reasoning.effort="high" "..."',
418
+ example: 'codex exec -m gpt-5.4 -s workspace-write -c reasoning.effort="high" "..."',
419
419
  },
420
420
  latency: 'medium',
421
421
  quirks: [
@@ -453,7 +453,7 @@ export const MODEL_CAPABILITIES = {
453
453
  modes: {
454
454
  webSearch: true,
455
455
  webSearchFlag: '--search',
456
- sandbox: { search: 'read-only', execute: 'danger-full-access', think: 'read-only' },
456
+ sandbox: { search: 'read-only', execute: 'workspace-write', think: 'read-only' },
457
457
  },
458
458
  dispatch: {
459
459
  method: 'codex-exec',
@@ -206,7 +206,7 @@ function selectModelEffort(taskProfile, options = {}) {
206
206
  webSearch: openaiCaps?.modes?.webSearch ?? false,
207
207
  sandbox: openaiCaps?.modes?.sandbox?.[
208
208
  thinkIntents.includes(intent) ? 'think' : searchIntents.includes(intent) ? 'search' : 'execute'
209
- ] ?? 'danger-full-access',
209
+ ] ?? 'workspace-write',
210
210
  };
211
211
 
212
212
  // ── Outcome learning override ──
@@ -486,7 +486,7 @@ function inferAgentType(task) {
486
486
  }
487
487
 
488
488
  function inferSandbox(task) {
489
- return task.tier === 'execute' ? 'danger-full-access' : 'read-only';
489
+ return task.tier === 'execute' ? 'workspace-write' : 'read-only';
490
490
  }
491
491
 
492
492
  function estimateDurationMs(task) {
package/install.mjs CHANGED
@@ -914,6 +914,7 @@ function install(workspace, env, mode) {
914
914
  'wave-orchestrator.mjs',
915
915
  'model-registry.mjs',
916
916
  'auto-update-wrapper.mjs',
917
+ 'command-risk.mjs',
917
918
  'head-guard.mjs',
918
919
  ];
919
920
  for (const h of HOOKS) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dual-brain",
3
- "version": "0.3.24",
3
+ "version": "0.3.26",
4
4
  "description": "AI orchestration across Claude + OpenAI subscriptions — smart routing, budget awareness, and dual-brain collaboration",
5
5
  "type": "module",
6
6
  "bin": {