BB_ACP_DYNAMIC_TOOLS=[{"name":"update_environment_directory","description":"Move this bb thread to a different working directory for subsequent turns. Use this when the user asks to switch to a new checkout, worktree, or local directory. The path must be an absolute existing directory on the current host. The tool reuses this project's existing bb environment for that host/path, otherwise it creates an unmanaged environment after validating the path. Another project may hold its own environment for the same directory; that is allowed, except for a bb-managed worktree owned by another project, which this tool refuses. After a successful switch, stop the current turn because the running provider cwd will not change until the next turn.","inputSchema":{"type":"object","properties":{"path":{"type":"string","description":"Absolute path to an existing directory on the current host."}},"required":["path"],"additionalProperties":false}},{"name":"bb_workflow_run","description":"Execute a workflow script that orchestrates multiple subagents deterministically. Workflows run in the background — this tool returns immediately with a run ID and a `previewDirective`. After a successful call, emit that directive exactly once on its own line (not in a code fence) so BB renders live progress in chat. A completion notification is sent to the origin thread. Use `bb workflows status ` for a compact summary. For detailed history, redirect a bounded JSONL page from `bb workflows history --cursor --limit <1-100>` into `$BB_THREAD_STORAGE`, then inspect the file with normal filesystem tools.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"script":{"type":"string","minLength":1,"description":"Self-contained workflow script. Must begin with `export const meta = { name, description, phases }` (pure literal, no computed values) followed by the script body using agent()/parallel()/pipeline()/phase()."},"source":{"type":"string","minLength":1,"description":"Alias for `script`. Do not provide both `source` and `script`."},"scriptPath":{"type":"string","minLength":1,"description":"Path to a workflow script file on the origin environment's host. Relative paths start at the workspace root and all paths must remain inside that workspace."},"name":{"type":"string","minLength":1,"description":"Name of a saved workflow from the current workspace's .bb/workflows/ directory. Resolves to a self-contained script."},"args":{"default":null,"description":"Optional input value exposed to the script as the global `args`, verbatim. Pass arrays/objects as actual JSON values, NOT as a JSON-encoded string — a stringified list breaks `args.filter`/`args.map` in the script. Use for parameterized named workflows (e.g. a research question).","$ref":"#/$defs/__schema0"},"resumeRunId":{"default":null,"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"description":"Run ID of a prior BB workflow to resume from. Calls in the causally safe, longest unchanged prefix return cached results; the first edited, new, or concurrent call and everything after it run live. The prior run must be terminal and from the same project and environment."}},"additionalProperties":false,"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"type":"array","items":{"$ref":"#/$defs/__schema0"}},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/$defs/__schema0"}}]}}}}]