bingocode 1.1.200-beta.12 → 1.1.200-beta.14

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bingocode",
3
- "version": "1.1.200-beta.12",
3
+ "version": "1.1.200-beta.14",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "claude": "bin/claude-win.cjs",
@@ -931,26 +931,31 @@ function getBrainPolicySection(): string | null {
931
931
  if (!getInitialSettings().brainMode && !getCurrentSessionBrainMode()) return null
932
932
  return `# Brain Mode (/brain)
933
933
 
934
- You are the coordinator — the brain, not the hands. Your context window is precious
935
- strategic real estate. Implementation details are delegated noise; your job is
936
- thinking, deciding, and orchestrating.
934
+ You are the high-dimensional thinker — the brain, not the hands. You and the user
935
+ think at the same altitude, as peers reasoning about the system. Your context window
936
+ is precious strategic real estate, reserved for understanding, deciding, and
937
+ orchestrating.
937
938
 
938
- ## Hard Constraints
939
+ ## Identity Mapping
939
940
 
940
- **You MUST NOT execute work directly.** Do NOT use Bash, Read, Grep, Glob, Write,
941
- Edit, or any other execution tool yourself. Your only tools are Agent (to delegate)
942
- and AskUserQuestion (to clarify). Everything else is forbidden.
941
+ When the user says "do X", "check Y", "fix Z" — you hear "orchestrate X", "direct
942
+ the investigation of Y", "have someone fix Z". Your doing IS orchestrating. This
943
+ is not a restriction. It is the definition of your role.
943
944
 
944
- **Every task goes through sub-agents.** Even a single file read, even a one-line
945
- grep — delegate it. Your context must stay clean for strategic reasoning.
945
+ ## Constraints
946
946
 
947
- **When in doubt, spawn an agent.** If you're about to reach for a tool, stop.
948
- Write a prompt for an agent instead.
947
+ Your only tools are Agent (to delegate) and AskUserQuestion (to clarify).
948
+
949
+ Everything else goes through sub-agents. A single file read, a one-line grep —
950
+ delegate it. Your context stays clean for strategic reasoning.
951
+
952
+ When in doubt, spawn an agent. If you are about to reach for a tool, you have
953
+ already answered: write a prompt for an agent instead.
949
954
 
950
955
  ## Workflow
951
956
 
952
- 1. **Analyze** — understand the user's request at the system level. What's the real
953
- goal? What decisions need to be made?
957
+ 1. **Analyze** — understand the user's request at the system level. What is the
958
+ real goal? What decisions need to be made?
954
959
  2. **Decompose** — break into independent workstreams. Each workstream becomes an
955
960
  agent prompt with clear scope, context, and expected output.
956
961
  3. **Parallelize** — launch all independent agents simultaneously. Never serialize
@@ -961,8 +966,8 @@ Write a prompt for an agent instead.
961
966
  ## Agent Prompt Quality
962
967
 
963
968
  Each agent prompt must include:
964
- - What we're trying to accomplish and why
965
- - What's already known / ruled out
969
+ - What we are trying to accomplish and why
970
+ - What is already known / ruled out
966
971
  - Specific files, line numbers, commands — never "investigate the bug"
967
972
  - Expected output format (short report, code change, test results)
968
973
  - Whether to write code or only research
@@ -971,5 +976,14 @@ Each agent prompt must include:
971
976
 
972
977
  Report compressed: decisions made, blockers hit, next steps. Never narrate what
973
978
  agents are doing moment-by-moment. "Agent A found X, agent B confirmed Y. Decision:
974
- rollback needed." is enough.`
979
+ rollback needed." is enough.
980
+
981
+ ## Sub-agent Capabilities
982
+
983
+ Sub-agents have full access to: Bash (shell execution), Read (file reading),
984
+ Write (file creation), Edit (precise string replacement), Grep (regex search),
985
+ Glob (file pattern matching), WebFetch (URL content), WebSearch (web search),
986
+ NotebookEdit (Jupyter editing), plus task management tools and any configured
987
+ MCP servers.`
975
988
  }
989
+
@@ -22,12 +22,13 @@ export function useMergedTools(
22
22
  mcpTools: Tools,
23
23
  toolPermissionContext: ToolPermissionContext,
24
24
  ): Tools {
25
+ const brainMode = useAppState(s => s.brainMode ?? false)
25
26
  let replBridgeEnabled = false
26
27
  let replBridgeOutboundOnly = false
27
28
  return useMemo(() => {
28
29
  // assembleToolPool is the shared function that both REPL and runAgent use.
29
30
  // It handles: getTools() + MCP deny-rule filtering + dedup + MCP CLI exclusion.
30
- const assembled = assembleToolPool(toolPermissionContext, mcpTools)
31
+ const assembled = assembleToolPool(toolPermissionContext, mcpTools, brainMode)
31
32
 
32
33
  return mergeAndFilterTools(
33
34
  initialTools,
@@ -38,6 +39,7 @@ export function useMergedTools(
38
39
  initialTools,
39
40
  mcpTools,
40
41
  toolPermissionContext,
42
+ brainMode,
41
43
  replBridgeEnabled,
42
44
  replBridgeOutboundOnly,
43
45
  ])
package/src/main.tsx CHANGED
@@ -1865,7 +1865,8 @@ async function run(): Promise<CommanderCommand> {
1865
1865
  // (which returns isProactiveActive()) passes and Sleep is included.
1866
1866
  // The later REPL-path maybeActivateProactive() calls are idempotent.
1867
1867
  maybeActivateProactive(options);
1868
- let tools = getTools(toolPermissionContext);
1868
+ const brainMode = getInitialSettings().brainMode === true || getCurrentSessionBrainMode() === true
1869
+ let tools = getTools(toolPermissionContext, brainMode);
1869
1870
 
1870
1871
  // Apply coordinator mode tool filtering for headless path
1871
1872
  // (mirrors useMergedTools.ts filtering for REPL/interactive path)
@@ -695,7 +695,8 @@ export function REPL({
695
695
  // /brief mid-session leaves the stale tool list (no SendUserMessage) and
696
696
  // the model emits plain text the brief filter hides.
697
697
  const isBriefOnly = useAppState(s => s.isBriefOnly);
698
- const localTools = useMemo(() => getTools(toolPermissionContext), [toolPermissionContext, proactiveActive, isBriefOnly]);
698
+ const isBrainMode = useAppState(s => s.brainMode ?? false);
699
+ const localTools = useMemo(() => getTools(toolPermissionContext, isBrainMode), [toolPermissionContext, proactiveActive, isBriefOnly, isBrainMode]);
699
700
  useKickOffCheckAndDisableBypassPermissionsIfNeeded();
700
701
  useKickOffCheckAndDisableAutoModeIfNeeded();
701
702
  const [dynamicMcpConfig, setDynamicMcpConfig] = useState<Record<string, ScopedMcpServerConfig> | undefined>(initialDynamicMcpConfig);
@@ -2404,7 +2405,7 @@ export function REPL({
2404
2405
  // for mid-query tool list updates.
2405
2406
  const computeTools = () => {
2406
2407
  const state = store.getState();
2407
- const assembled = assembleToolPool(state.toolPermissionContext, state.mcp.tools);
2408
+ const assembled = assembleToolPool(state.toolPermissionContext, state.mcp.tools, state.brainMode);
2408
2409
  const merged = mergeAndFilterTools(combinedInitialTools, assembled, state.toolPermissionContext.mode);
2409
2410
  if (!mainThreadAgentDefinition) return merged;
2410
2411
  return resolveAgentTools(mainThreadAgentDefinition, merged, false, true).resolvedTools;