monkeybot 3.11.0__tar.gz → 3.12.0__tar.gz
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.
- monkeybot-3.12.0/.github/CODEOWNERS +1 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/.gitignore +3 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/CHANGELOG.md +19 -1
- {monkeybot-3.11.0 → monkeybot-3.12.0}/PKG-INFO +1 -1
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/pyproject.toml +1 -1
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_tui.py +91 -19
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_tui_widgets.py +152 -51
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_chat_tui.py +20 -3
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/uv.lock +3 -2
- {monkeybot-3.11.0 → monkeybot-3.12.0}/pyproject.toml +1 -1
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/workspace.py +8 -1
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/build.py +32 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_fixtures.py +21 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenario_loader.py +2 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/sandbox_executor.py +17 -11
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/_bedrock_converse.py +161 -18
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/bedrock.py +2 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_sandbox_executor.py +63 -1
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_bedrock_converse.py +213 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/uv.lock +2 -2
- {monkeybot-3.11.0 → monkeybot-3.12.0}/.cursor/hooks/pre-pr.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/.cursor/hooks/test-failure-notice.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/.cursor/hooks.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/.cursor/rules/test-failures.mdc +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/.cursor/skills/mb-retro/SKILL.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/.dockerignore +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/.github/workflows/ci.yml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/.github/workflows/live-eval-smoke.yml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/.github/workflows/prepare-release.yml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/.github/workflows/publish-release.yml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/.pre-commit-config.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/BACKLOG.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/CONTRIBUTING.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/LICENSE +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/README.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/skills/monkeybot/SKILL.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/skills/monkeybot/references/config-sections.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_file_index.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_local_shell.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_renderer.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_session.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_status_bar.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_theme.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_tool_display.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/chat.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/doctor.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/loop.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/mcp_login.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/new.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/refresh.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/run_cmd.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/talk.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/trace.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/validate.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/compat.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/config_resolve.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/exit_commands.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/extras_catalog.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/gateway_health.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/main.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/opensandbox_lifecycle.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/output.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/overrides.txt +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/process_tree.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/providers.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/audio_io.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/client.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/gateway_manager.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/push_to_talk.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/session.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/session_controller.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/talk_ui.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/wire_encode.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/runtime_python.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/AGENT.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/Dockerfile +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/browser/SKILL.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/command_allowlist.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/dockerignore +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/env.example +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/goal/SKILL.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/image-generator/SKILL.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/image-generator/generate_image.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/loop/SKILL.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/mcp.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/monkeybot.example.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/opensandbox.docker.toml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/otel-collector.example.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/permissions.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/templates/coding/AGENT.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/templates/coding/command_allowlist.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/templates/coding/monkeybot.overrides.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/templates/coding/permissions.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/session_controller.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/terminal_markdown.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_chat_continue.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_chat_e2e.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_chat_errors.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_chat_file_index.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_chat_grounding.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_chat_local_shell.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_chat_renderer_parity.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_chat_session.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_chat_status_bar.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_chat_theme.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_chat_tool_display.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_cli.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_config_resolve.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_doctor.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_extras_catalog.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_gateway_health.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_opensandbox_lifecycle.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_realtime_session_controller.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_run_cmd.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_runtime_python.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_scaffold.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_terminal_markdown.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_trace_cmd.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/conftest.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docker/Dockerfile +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docker/demo-model.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docker/demo.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docker/docker-compose.sandbox.yml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docker/opensandbox.docker.toml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docker/sandbox.Dockerfile +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docker-compose.yml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/agent-layout.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/assets/logo.png +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/browser-mcp-perf-baseline.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/browser-mcp-performance-plan.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/browser-mcp.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/cloud-deployment-design.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/deploy-aws-agentcore.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/deploy-pattern-a-container.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/deploy-pattern-b-serverless.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/deploy-pattern-c-agent-platform.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/deploy-pattern-d-realtime.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/features.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/getting-started.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/live-evals.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/mcp.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/migrations/agent-scope-namespacing.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/migrations/history-row-id.sql +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/migrations/memory-outbox.sql +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/migrations/session-branches.sql +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/observability-runbook.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/ollama-local.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/otel-collector.example.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/progressive-loop-tools.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/progressive-mcp-tools.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/skills.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/spill-dynamic-design.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/sse-gateway-ui.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/testing.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/verifier-agent-design.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/README.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/agentcore/handler.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/agentcore/runtime_app.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/agentengine/handler.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/cloud-functions/main.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/lambda/handler.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/ollama/PrefixStable.Modelfile +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/skills/browser/SKILL.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/skills/browser/playbooks/.gitkeep +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/skills/diagnostics/README.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/skills/diagnostics/SKILL.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/skills/diagnostics/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/skills/diagnostics/diagnostics.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/skills/image-generator/SKILL.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/skills/image-generator/generate_image.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/pyproject.toml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/scripts/agentcore_smoke.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/scripts/dump_tool_surface.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/scripts/perf_bench.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/actions.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/agentcore.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/app.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/assets/NOTICE.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/assets/dom_tree.js +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/assets/pa_driver.js +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/backend.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/chat_context.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/chat_scope.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/dom_indexing.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/in_app_cdp.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/login.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/observe.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/perf.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/playbooks.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/playwright_helpers.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/results.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/screenshots.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/server.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tab_ops.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tabs.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tools/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tools/batch.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tools/capture.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tools/interact.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tools/navigate.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tools/playbook.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tools/read.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tools/tab_control.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/conftest.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/fixtures/api.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/fixtures/article.html +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/fixtures/cards.html +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/fixtures/form.html +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/fixtures/long_list.html +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/fixtures/spa.html +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/fixtures/tool_surface.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/integration/conftest.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/integration/test_act_observe.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/integration/test_driver_persist.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/integration/test_intent_tools.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/integration/test_multi_tab.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/integration/test_observation.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/integration/test_run_playbook.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/integration/test_wait_for.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_act.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_agentcore.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_chat_isolation.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_chat_scope.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_dom_indexing.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_fill_form.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_in_app_cdp.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_indexed_tools.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_observe.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_observe_after.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_perf.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_playbook_flows.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_playbooks.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_playwright_helpers.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_screenshots.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_server_shutdown.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_tabs.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_tool_surface.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_wait_tools.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/uv.lock +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/pytest.ini +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/conftest.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/git.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/hooks.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/host_tools.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/mcp.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/memory.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/policy.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/prompt_context.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/protocol.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/session.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/store.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/subagents.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/verifier.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/gateway.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/loop.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/realtime.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/record.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/replay.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/support/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/support/config.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/support/env.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/support/executor.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/support/paths.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/support/tokens.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/agent.base.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/command_allowlist.default.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/command_allowlist.empty.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/command_allowlist.no_deny_patterns.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/command_allowlist.strict.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/grants.corrupt.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/grants.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/mcp.autoconnect.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/mcp.broken.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/mcp.progressive.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/mcp.two_prefix.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/permissions.ask.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/permissions.default.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/permissions.overlap.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/verifier.block.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/verifier.judge.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/verifier.replan.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/verifier.tracker.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/{workspace}/child.db +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/conftest.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/mcp/fixture_mcp_server.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/scripts/one_turn.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/skills/a/nested/SKILL.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/skills/diagnostics/SKILL.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/skills/plain/SKILL.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/.gitkeep +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/absent_file.ndjson +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/child_error.ndjson +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/echo.ndjson +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/hold.ndjson +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/large_line.ndjson +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/nested_task.ndjson +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/present_file.ndjson +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/roundtrip.ndjson +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/system_prompt.ndjson +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_secret.txt +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/.monkeybot/attachments/loop-scenario/att-link +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/.monkeybot/attachments/loop-scenario/att-link.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/.monkeybot/attachments/loop-scenario/att-pdf +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/.monkeybot/attachments/loop-scenario/att-pdf.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/i1.png +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/i2.png +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/i3.png +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/i4.png +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/i5.png +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/i6.png +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/tiny.png +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/.gitignore +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/AGENTS.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/build/calc/ops.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/calc/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/calc/ops.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/node_modules/left-pad/index.js +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/node_modules/left-pad/package.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/pyproject.toml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/tests/test_ops.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/.gitignore +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/AGENTS.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/build/calc/ops.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/calc/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/calc/ops.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/node_modules/left-pad/index.js +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/node_modules/left-pad/package.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/pyproject.toml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/tests/test_ops.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/drift_ws/DONE.txt +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/drift_ws/db/migrations/001_init.sql +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/drift_ws/src/models.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/grants_ws/granted/.env +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/grants_ws/granted/notes.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/grants_ws/workspace/src/app.txt +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/.gitignore +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/AGENTS.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/node_modules/left.js +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/notes.txt +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/pkg/.gitignore +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/pkg/hidden.txt +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/pkg/visible.txt +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/secret.txt +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/src/app.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/wide.txt +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/overlays/bug_discount/shop/pricing.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/overlays/noisy_tests/shop/taxes.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/overlays/noisy_tests/tests/conftest.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/overlays/offline_gateway/tests/test_gateway.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/.gitignore +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/AGENTS.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/CHANGELOG.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/README.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/build/shop/shipping.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/pyproject.toml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/cart.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/coupons.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/gateway.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/inventory.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/legacy/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/legacy/pricing_v1.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/legacy/shipping_v1.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/models.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/orders.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/pricing.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/reports.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/shipping.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/taxes.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/utils/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/utils/money.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/utils/text.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_cart.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_coupons.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_inventory.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_money.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_orders.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_pricing.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_reports.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_shipping.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_taxes.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/vendor/pricekit/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/AGENT_GUIDE.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/README.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/phases/phase-0a-tier1-reorg.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/phases/phase-0b-foundations.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/phases/phase-1-t2-harness-logic.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/phases/phase-2-contracts-and-gateway.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/phases/phase-3-record-replay.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/phases/phase-4-live.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/phases/phase-5-trials.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/phases/phase-6-cutover.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/01-goals-and-principles.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/03-tiers.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/04-file-structure.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/05.1-doubles.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/05.10-testing-doc.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/05.11-live-provider.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/05.2-scenario-schema.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/05.3-assertions-and-invariants.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/05.4-fixtures.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/05.5-cassettes.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/05.6-pytest-reporting-trials.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/05.9-failure-ledger.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/00-index.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6A-loop.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6B-ctx.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6C-hook.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6D-file.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6E-shell.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6F-pol.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6G-code.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6H-att.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6I-comp.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6J-sub.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6K-ver.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6L-sched.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6M-skill.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6N-mcp.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6O-web.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6P-mem.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6Q-store.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6R-cfg.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6S-todo.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6T-prov.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6U-gw.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6V-rt.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6W-ops.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/07-migration-map.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/09-ci.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/10-policies.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/11-known-issues.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/12-decisions.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/appendices.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/status.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/tasks.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plugin.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/schema/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/schema/assertions.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/schema/events.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/schema/invariants.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/schema/scenario.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/schema/sse_norm.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/schema/steps.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/recorded/t4_run_smoke_sample.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_agent_project.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_assertions.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_bundle_order.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_coding_hard_oracle.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_diff.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_from_transcript.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_gateway_driver.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_invariants.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_judge.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_live_engine.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_live_ledger.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_live_scenarios.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_preflight.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_report.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_runner_sse.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_scenario_schema.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_scorer.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_steps.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_trials_stats.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/gateway/harness.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/gateway/scenarios/gw/reconnect_last_event_id.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/gateway/scenarios/gw/scripted_turn_golden_sse.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/gateway/scenarios/gw/tool_turn_golden_sse.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/gateway/test_cases.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/attachments/attachment_symlink_leaf_rejected.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/attachments/freeze_descriptors_in_history.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/attachments/load_both_args.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/attachments/load_image_preview.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/attachments/load_pdf.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/attachments/load_per_reply_cap.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/attachments/load_text_rejected.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/compaction_forgets_reads.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/fix_failing_test.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_background_verify_not_counted.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_cap_then_accept.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_custom_verify_commands.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_masked_exit.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_non_executing_wrapper.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_open_todos_reject.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_passes_when_verified.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_question_not_gated.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_rejected_answer_not_persisted.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_rejects_unverified.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_write_after_verify.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/git_context_absent.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/git_context_note.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/git_env_isolation.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/read_before_write.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/subagent_has_ledger_no_gate.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/subagent_ledger_child.yml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/computer/clipboard_cap.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/computer/denied_apps_and_schemes.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/computer/denied_dirs_and_globs.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/computer/move_trash_not_always_scoped.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/computer/open_exec_suffix_denied.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/computer/trash_huge_tree_refused.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/computer/x.sh +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/background_summary_applied.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/background_summary_stale_fallback.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/base64_sanitized.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/compact_at_trigger.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/compact_does_not_persist_repairs.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/compact_fallback.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/compact_keep_tail_ratio.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/compact_pins_verdict_attachment_thinking.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/compact_trailer_from_goal_ledger.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/context_usage_current_not_peak.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/epoch_after_compaction.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/epoch_stable_change.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/epoch_volatile_update.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/memory_wake_up_large.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/project_instructions_spoof_heading.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/slash_skill_turn_scoped.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/stable_prefix_byte_stable.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/summarizer_model_override.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/tool_result_shaping_under_pressure.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/glob_cap_incomplete.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/glob_skips_noise.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/grep_gitignore_default.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/grep_incomplete_scan.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/grep_invalid_regex.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/grep_pagination.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/list_dir_truncate.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/overwrite_unread_rejected.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/patch_add_existing.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/patch_fail_closed.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/patch_move_dest_exists.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/patch_rollback.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/patch_update_requires_read.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/read_absolute_needs_grant.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/read_escape_dotdot.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/read_escape_symlink.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/read_huge_single_line.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/read_offset_past_eof.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/read_paging_no_gap.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/replace_error_codes.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/replace_fuzzy_unicode.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/skills_read_only.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/spill_large_tool_output.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/spill_session_id_sanitized.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/stale_read_rejected.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/tool_glob_grep.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/tool_read.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/tool_replace_apply_patch.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/tool_write.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/virtual_mounts.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/write_new_without_read_ok.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/write_outside_scope.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/write_payload_too_large.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/hook/evidence_grep_only_not_accepted.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/hook/evidence_missing_path.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/hook/evidence_thread_isolation.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/hook/evidence_unread_then_read.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/hook/secret_ends_routine_turn.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/hook/secret_in_tool_args.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/hook/secret_redacted_interactive.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/hook/secret_scanner_failure_fails_closed.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/all_parse_error_batch_rejected.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/ask_user_non_interactive.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/ask_user_roundtrip.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/background_check_raises_fails_closed.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/background_nudge_then_release.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/background_nudges_exhausted.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/cancel_after_tool_call_before_execute.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/cancel_mid_stream.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/confirm_always_remembered.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/confirm_approve.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/confirm_deny.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/confirm_timeout.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/doom_disabled.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/doom_exempt_poll.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/doom_identical_read.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/doom_path_reset_on_success.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/doom_path_retry_spelling.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/empty_exhausted.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/empty_then_text.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/grounding_event_passthrough.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/max_turns_cap.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/max_turns_not_on_clean_finish.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/mixed_parse_error_batch_runs_valid.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/parallel_concurrency_cap.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/parallel_results_in_submission_order.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/post_tool_empty_retry.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/promote_follow_up_provenance.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/provider_raises.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/registry_refresh_same_turn.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/repair_missing_tool_result.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/repair_orphan_tool_response.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/resume_thinking_budget_routine.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/steer_mid_turn.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/thinking_block_order.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/thinking_only_is_empty.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/thought_signature_preserved.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/tool_input_delta_passthrough.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/truncated_batch_rejected.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/turn_completion.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/usage_totals.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/autoconnect_failure_is_status.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/catalog_diff_reload.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/disable_removes_tools.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/disabled_server_not_catalogued.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/enable_then_call.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/enable_unknown_server.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/env_interpolation_missing.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/meta_tools_only_when_connected.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/name_prefix_split.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/resources_and_prompts.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/strict_load_rolls_back.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/memory/ephemeral_palace_shared_outbox_rejected.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/memory/memory_off.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/memory/memory_write_inject.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/memory/mempalace_search_real.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/memory/outbox_failure_does_not_fail_turn.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/memory/outbox_ingest_then_inject.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/memory/outbox_thread_isolation.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/memory/subagent_no_ingest.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/command_grant_from_store.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/default_deny_patterns.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/grant_revocation_clears.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/granted_folder_credential_denied.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/path_grant_read.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/permissions_last_match_wins.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/permissions_missing_file_fail_open.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/start_loop_always_confirms.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/symlink_in_grant_does_not_widen.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/unknown_binary_confirm_approve.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/unknown_binary_confirm_deny.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/scheduler/create_goal_requires_slash_goal.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/scheduler/create_goal_with_slash_goal.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/scheduler/enable_loops_progressive.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/scheduler/loop_goal_isolation.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/scheduler/loop_lifecycle_real_store.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/scheduler/one_open_goal_per_session.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/scheduler/start_loop_requires_stop_guard.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/scheduler/tool_loops.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/allowlist_deny.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/argv_forms.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/bg_job_cap.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/bg_kill_command.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/bg_killed_at_turn_end.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/bg_start_await_cursor.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/cwd_escape.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/home_escape.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/large_stdout_spill_keeps_exit.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/mempalace_refused_memory_off.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/mempalace_search_only.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/nonzero_exit.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/run_command.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/shell_wrapper_bypass.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/timeout_partial_output.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/unscreenable_script_fails_closed.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/skills/list_then_read_skill.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/skills/skill_symlink_escape.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/skills/skill_write_denied.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/skills/skills_in_prompt.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/skills/skills_path_hot_reload.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/skills/slash_unknown_skill.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/store/compaction_reset_row_ids.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/store/transcript_convertible.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/store/usage_recorded_on_turn_complete.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/child_errors_record_failed.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/child_memory_read_only.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/expect_files_absent.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/expect_files_escape.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/expect_files_present.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/large_ndjson_line.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/ledger_context_forwarded.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/nested_task_refused.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/parallel_task_cap.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/parent_cancel.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/persona_applied.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/queue_pending_not_success.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/subagent_roundtrip.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/subagent_timeout.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/system_prompt_redacted_on_pipe.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/unknown_subagent_type.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/todo/caps.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/todo/ids_stable.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/todo/mirror_hydrate.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/todo/reminder_once.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/todo/single_in_progress.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/todo/todo_list.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/todo/todo_list_steps.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/block_denies_mutating_tools.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/constraint_touch_negative.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/constraint_touch_positive.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/done_unmet_positive.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/error_streak_negative.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/error_streak_positive.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/free_text_constraint_never_matches.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/judge_malformed_fails_open.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/judge_rate_limits.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/judge_replay_valid.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/judge_spend_ratio.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/mailbox_stale_checkpoint_dropped.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/min_turn_before_verdict.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/no_progress_budget_burn_not_mailboxed.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/preempt_negative.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/repeat_correction_positive.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/replan_one_turn.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/rewrite_churn_positive.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/rewrite_effects_branch_copy.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/severity_cap_nudge.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/sticky_nudge.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/supersession_negative.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/verdict_in_history_stripped_for_provider.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/verifier_off_no_effect.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/write_without_read_negative.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/write_without_read_positive.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/web/backend_none_not_advertised.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/web/browser_mcp.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/web/browser_stop_on_disconnect.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/web/browser_stop_server.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/web/empty_query.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/web/max_results.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/web/web_search.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_drift_confusion_matrix.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_e2e_simple_reply.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_grep_parity.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_hooks_lifecycle.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_jail.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_memory_commit.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_observability_acceptance.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_observability_integration.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_ops_cli.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_ops_observability.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_prompt_caching_integration.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_scheduler_engine.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_sse_stream_pressure.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_subagent_worker_pool.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/realtime/scenarios/ws_blocks_history_rewrite.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/realtime/scenarios/ws_guardrail_budget.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/realtime/scenarios/ws_interrupt.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/realtime/scenarios/ws_slot_limit.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/realtime/scenarios/ws_text_turn.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/realtime/scenarios/ws_tool_confirmation.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/realtime/scenarios/ws_tool_turn.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/mcp/tools_list_call.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/memory/wake_up_snapshot.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/sse/basic_turn.sse +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/sse/cassette_turn.sse +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/sse/tool_turn.sse +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/subagents/child_tape.ndjson +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/test_golden_sse.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/test_replay_mcp.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/test_replay_subagent_tape.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/test_replay_trajectories.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/test_replay_wake_up.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/test_replay_wire.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/tools/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/tools/cassette.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/tools/check_staleness.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/tools/from_transcript.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/tools/record_wire.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/trajectories/ctx/replay_live_compaction.cassette.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/trajectories/ctx/replay_live_compaction.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/trajectories/loop/replay_live_doom_loop.cassette.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/trajectories/loop/replay_live_doom_loop.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/trajectories/loop/replay_live_truncation.cassette.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/trajectories/loop/replay_live_truncation.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/trajectories/shell/replay_live_pytest_run.cassette.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/trajectories/shell/replay_live_pytest_run.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/trajectories/verifier/replay_drift_tape.cassette.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/trajectories/verifier/replay_drift_tape.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/wire/ollama_cloud/glm_tool_turn.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/wire/ollama_cloud/thinking_only_completion.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/__main__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/.gitignore +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/memory/.blob_seq_ids_migrated +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/memory/.collection_type_fixed +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/memory/.embedder_identity +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/memory/.embedding-migrate.lock +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/memory/.palace_id +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/memory/.palace_write.lock +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/memory/2d1891d4-34d0-43bd-8eea-2fb73026046b/data_level0.bin +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/memory/2d1891d4-34d0-43bd-8eea-2fb73026046b/header.bin +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/memory/2d1891d4-34d0-43bd-8eea-2fb73026046b/length.bin +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/memory/2d1891d4-34d0-43bd-8eea-2fb73026046b/link_lists.bin +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/memory/identity.txt +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/memory/mempalace_embedder.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/.t4-gateway-993b836fb2a9.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/AGENT.coding.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/AGENT.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/AGENT.researcher.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/command_allowlist.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/grants.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/mcp.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/mcp.progressive.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/monkeybot.coding.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/monkeybot.verifier-judge.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/monkeybot.verifier-tracker.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/monkeybot.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/permissions.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/pyproject.toml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/skills/browser/SKILL.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/uv.lock +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/assertions.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/baselines/smoke.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/baselines/smoke.md +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/conftest.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/diff.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/eval_config.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/gateway.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/models.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/persistence.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/preflight.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/python/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/python/test_docker_image_health.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/python/test_provider_live_matrix.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/report.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/runner.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/attachments/describe_image_live.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/coding/add_feature_with_tests.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/coding/fix_failing_test.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/coding/navigate_repo.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/coding_hard/add_bulk_discount.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/coding_hard/fix_discount_rounding.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/coding_hard/honest_unfixable_failure.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/coding_hard/multi_feature_long.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/coding_hard/navigate_intl_rate.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/coding_hard/noisy_test_failure.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/coding_hard/rename_calc_tax.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/config/reload_memory_off_live.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/context/post_compaction_continuity.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/context/summarization_trigger.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/drift/declares_done.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/drift/path_constraint.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/drift/preempt.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/drift/repeat_correction.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/drift/supersession.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/file/core_read.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/file/core_read_error.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/file/core_write.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/file/grep_absence_honesty.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/gateway/live_resume.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/hooks/evidence_citation_live.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/mcp/enable_then_echo_live.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/mcp/get_prompt.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/mcp/list_resources.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/mcp/tool_invoke.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/memory/recall_cross_session.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/memory/recall_single_session.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/memory/search_past_session.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/multi_turn/task_tracking.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/scheduler/http_one_tick_live.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/scheduler/model_starts_loop.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/shell/core_run_command.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/shell/core_run_command_sandbox.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/skills/skill_invocation.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/subagents/dispatch_complete.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/subagents/persona_dispatch.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/score.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/suites/coding.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/suites/coding_hard.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/suites/context.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/suites/drift.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/suites/mcp.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/suites/memory.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/suites/nightly.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/suites/scheduler.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/suites/smoke.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/suites/subagents.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/__main__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/baselines/subagents__ollama-cloud__glm-5.3-flash.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/compare.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/parallel.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/python/test_cancel_storm.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/python/test_reconnect_storm.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/runs/coding.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/runs/mcp.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/runs/smoke.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/runs/subagents.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/stats.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/suites/capability.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/suites/drift.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/suites/reliability.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/trials.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/scripts/ci-local.sh +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/scripts/create_schema.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/scripts/precommit-pytest.sh +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/scripts/release.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/scripts/smoke_global_cli.sh +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/cli/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/cli/__main__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/cli/audio_io.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/cli/gateway_manager.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/cli/main.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/cli/push_to_talk.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/cli/realtime_client.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/computer/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/computer/approvals.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/computer/permissions.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/computer/safety.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/computer/tools.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/attachments/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/attachments/catalog.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/attachments/config.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/attachments/freeze.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/attachments/image_preview.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/attachments/resolve.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/attachments/store.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/attachments/text.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/attachments/tools.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/bootstrap.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/coding/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/coding/git_context_hook.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/coding/read_ledger_hook.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/coding/verification_gate.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/config/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/config/realtime_config.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/config/runtime_env.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/config/settings.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/config/snapshot.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/config/validation.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/config/yaml_loader.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/context/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/context/campaign_context.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/context/common.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/context/epoch.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/context/project_context.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/context/secret_egress.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/context/slash_skills.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/context/tool_output_policy.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/context/tool_result_ingress.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/context/tool_shapers.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/goals/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/goals/service.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/hooks/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/hooks/evidence_guard.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/layout.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/llm/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/llm/provider.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/llm/realtime_provider.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/llm/usage.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/lockfile_names.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/logging_utils.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/mcp/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/mcp/mcp_client.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/mcp/oauth_flow.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/mcp/ports_mcp.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/memory/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/memory/config.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/memory/hook.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/memory/ids.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/memory/ingest.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/memory/migrate_embedding.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/memory/migrate_layout.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/memory/observability.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/memory/outbox.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/memory/palace.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/memory/subsystem.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/memory/uri.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/memory/writer.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/messages/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/messages/convert_provider.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/messages/tool_integrity.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/messages/transform_context.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/path_safety.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/backends.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/branches.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/db.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/durable_runs.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/errors.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/firestore.indexes.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/firestore.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/firestore_scheduled_loops.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/goal_ledger.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/history.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/postgres.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/row_ids.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/runs.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/scheduled_loops.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/session_turn_locks.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/sqlite.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/sqlite_backend.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/thread_summary.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/transcript.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/transcript_reader.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/usage.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/usage_buckets.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/prompts/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/prompts/harness_prompt.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/prompts/headings.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/prompts/prompt.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/background_summary.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/chat_title.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/context_budget.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/doom_loop.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/events.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/history_compaction.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/history_rewrite.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/input_admission.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/loop.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/loop_hooks.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/loop_messages.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/loop_ports.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/loop_usage.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/provider_stream_mapper.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/realtime_loop.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/tool_batch.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/tool_dispatch.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/turn_loop.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/utterance_buffer.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/subagents/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/subagents/progress_publish.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/subagents/subagent_proto.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/subagents/subagent_worker.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/subagents/worker_pool.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/subprocess_groups.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/testing/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/testing/mocks_provider.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/testing/mocks_realtime_provider.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/ask_user.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/background_jobs.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/command_executor.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/core_tool_executor.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/fs_isolation.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/gitignore.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/grant_store.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/inspector.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/loop_inspector.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/patch.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/path_grant_inspector.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/permission.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/read_ledger.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/spill_inventory.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/terminal.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/text_normalize.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/tool_hint.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/tool_kind.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/types.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/workspace_service.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/types/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/types/content_blocks.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/types/interfaces.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/types/types_tools.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/actuator.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/binding.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/classify.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/inspector.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/intervention.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/judge.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/ledger.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/mailbox.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/match.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/port.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/rewrite_effects.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/severity.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/tracker.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/workspace/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/workspace/factory.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/workspace/gcs.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/workspace/local.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/workspace/protocol.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/workspace/s3.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/workspace_layout.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/bootstrap.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/main.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/pending_response_bus.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/app.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/deps.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/errors.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/guardrails.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/manager.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/metrics.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/routes.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/session.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/wire.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime_main.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/app.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/goal_routes.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/history_routes.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/loop_port.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/models.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/reload.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/reply_body.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/request_storage.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/routes.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/scheduler_routes.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/scheduler_wiring.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/session_bus.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/sse.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/workspace_layout.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/observability/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/observability/_state.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/observability/instrumentation.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/observability/propagation.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/observability/spans.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/observability/sqlite_exporter.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/_openai_compat.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/_sdk_client.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/_stream_marks.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/_utils.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/claude.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/fireworks.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/gemini.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/gemini_live.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/huggingface.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/model_capabilities.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/nvidia.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/ollama.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/openai.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/openrouter.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/pricing.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/rejected_sampling.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/request_budget.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/sampling.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/vertex_claude.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/scaffold/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/scheduler/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/scheduler/__main__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/scheduler/engine.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/scheduler/http_invoker.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/scheduler/interval.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/scheduler/tick_result.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/scheduler/worker.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/subagents/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/subagents/worker/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/subagents/worker/__main__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/todo_list/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/todo_list/hook.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/todo_list/store.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/todo_list/tool.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/web_search/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/web_search/backends/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/web_search/backends/duckduckgo.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/web_search/backends/firecrawl.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/web_search/backends/tavily.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/web_search/protocol.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/web_search/tool.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/backends.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/clock.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/context.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/conversations.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/data/attachments/tiny.jpg +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/data/attachments/tiny.png +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/data/attachments/with-text.pdf +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/data/attachments/without-text.pdf +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/executors.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/failure_ledger.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/failures/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/failures/__main__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/failures/catalog.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/failures/store.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/gateway.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/gateway_ports.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/history.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/hooks.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/inspectors.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/mcp.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/memory.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/palace.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/pending_bus.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/provider.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/py.typed +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/sandbox.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/scrub.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/sse.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/subagent_worker.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/verifier.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/web_search.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/conftest.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/conftest.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/goldens/prompts/harness_prompt.default.txt +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/goldens/prompts/harness_prompt.emission_terse.txt +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/goldens/prompts/harness_prompt.mcp_catalog.txt +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/goldens/prompts/harness_prompt.memory_off.txt +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/goldens/prompts/harness_prompt.sandbox_on.txt +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/goldens/prompts/harness_prompt.task_terse.txt +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/goldens/prompts/volatile_tail_parts.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/goldens/routes.txt +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/goldens/span_names.txt +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/goldens/sse/schema.json +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/goldens/tool_error_codes.txt +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/tables/config_precedence.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/tables/policy_decisions.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/tables/provider_error_mapping.yaml +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/test_catalog_pairing.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/test_config_matrix.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/test_harness_prompt_golden.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/test_migrations_replay.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/test_policy_decision_table.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/test_provider_conformance.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/test_realtime_divergence.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/test_route_table.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/test_scaffold_reexports.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/test_span_names.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/test_sse_schema.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/test_storage_parity.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/test_tool_error_catalog.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/cli/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/cli/test_gateway_manager.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/cli/test_main.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/cli/test_push_to_talk.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/cli/test_realtime_client.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/computer/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/computer/test_approvals.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/computer/test_computer_tools.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/computer/test_package_init.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/computer/test_path_policy.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/computer/test_permissions.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/computer/test_platform_gate.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/computer/test_subagent_exclusion.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/computer/test_wiring.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/conftest.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/attachments/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/attachments/test_attachment_freeze.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/attachments/test_attachment_store.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/attachments/test_image_preview.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/coding/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/coding/test_verification_gate.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/config/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/config/test_config_extensions.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/config/test_env_map_grep_gates.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/config/test_runtime_config_snapshot.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/config/test_runtime_env.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/context/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/context/test_context.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/context/test_context_epoch.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/context/test_project_context.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/context/test_secret_egress.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/context/test_skill_discovery_rules.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/context/test_slash_skills.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/context/test_tool_result_ingress.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/context/test_tool_shapers.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/fixtures/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/fixtures/bitbucket_dc_style_pr.diff +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/goals/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/goals/test_goal_persistence.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/goals/test_goals.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/hooks/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/hooks/test_evidence_guard.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/hooks/test_hooks.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/hooks/test_settlement.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/llm/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/llm/test_pricing.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/llm/test_provider_contract.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/mcp/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/mcp/test_mcp_client.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/mcp/test_mcp_oauth.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/mcp/test_mcp_oauth_regressions.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/memory/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/memory/test_memory_layout_migrate.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/memory/test_memory_scoping.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/memory/test_mempalace.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/memory/test_migrate_embedding.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/memory/test_review_fixes.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/messages/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/messages/test_gemini_history_replay.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/messages/test_message_pipeline.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/messages/test_tool_integrity.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_branch_store_backends.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_durable_runs.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_firestore_history.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_firestore_scheduled_loops.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_firestore_usage.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_goal_ledger.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_history.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_history_branches.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_history_row_ids.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_runs.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_scheduled_loops.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_session_branches_migration.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_session_turn_locks.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_storage_backends.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_thread_summary_wire.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_transcript.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_transcript_reader.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_usage.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_usage_migration.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/prompts/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/prompts/test_harness_prompt.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/prompts/test_prompt.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_background_summary.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_chat_title.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_context_budget.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_doom_loop.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_durable_events.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_empty_completion.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_events.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_history_compaction_split.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_input_admission.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_loop.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_loop_hooks.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_loop_observability.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_loop_transcript.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_provider_stream_mapper.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_realtime_loop.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_truncated_tool_batch.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_turn_session_id.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_utterance_buffer.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/subagents/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/subagents/test_child_tool_list.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/subagents/test_progress_publish.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/subagents/test_subagent_proto.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/subagents/test_subagent_trace_propagation.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/subagents/test_subagent_transcript.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/subagents/test_subagent_worker_paths.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/subagents/test_worker_pool.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/test_agent_layout.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/test_bootstrap.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/test_layout.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/test_logging_utils.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/test_path_safety.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/test_workspace_layout.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/testing/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/testing/test_mocks_realtime_provider.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_ask_user.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_background_jobs.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_core_tool_executor.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_fs_isolation.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_gitignore.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_grant_store.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_inspector.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_patch.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_path_grant_inspector.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_permission.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_replace_fuzzy.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_run_command_parse.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_spill_dynamic.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_spill_inventory.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_terminal.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_workspace_extra_read_roots.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_workspace_symlinks.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_workspace_write_scope.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/types/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/types/test_content_blocks.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/types/test_tool_def_schema.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/verifier/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/verifier/test_progress_tracker.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/verifier/test_verifier_binding.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/verifier/test_verifier_inspector.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/verifier/test_verifier_judge.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/verifier/test_verifier_mailbox_lifecycle.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/verifier/test_verifier_port.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/verifier/test_verifier_rewrite_effects.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/verifier/test_verifier_sticky_nudge.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/verifier/test_verifier_tracker.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/workspace/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/workspace/test_factory.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/workspace/test_local_storage.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/workspace/test_protocol_contract.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/realtime/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/realtime/test_app.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/realtime/test_deps.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/realtime/test_guardrails.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/realtime/test_manager.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/realtime/test_metrics.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/realtime/test_routes_client_text.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/realtime/test_session.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/realtime/test_wire.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/sse/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_attachments.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_chat_title_route.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_config_reload.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_create_session_model.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_gateway_runtime.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_history_routes.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_routes.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_scheduler_routes.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_session_bus.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_start_turn_setup_failure.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_transcript_wiring.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/test_otel_fastapi.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/test_otel_lifespan.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/test_pending_response_endpoints.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/test_realtime_main.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/test_resolve_provider.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/test_sdk_client_shutdown.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/test_sse_events.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/test_subagent_event_publisher.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/observability/conftest.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/observability/test_init.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/observability/test_instrumentation.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/observability/test_loop_hook_spans.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/observability/test_propagation.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/observability/test_span_contract.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/observability/test_spans.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/observability/test_sqlite_exporter.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/observability/test_truncate.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/observability/test_turn_complete_trace.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/packaging/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/packaging/test_cold_start.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/packaging/test_packaging_config.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/packaging/test_release_script.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/conftest.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_anthropic_cache.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_anthropic_history.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_bedrock_estimate.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_connection_warm.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_fireworks.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_gemini_history.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_gemini_live.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_gemini_usage.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_huggingface.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_model_capabilities.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_nvidia.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_ollama.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_openai_byte_budget.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_openai_compat_usage.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_openai_history.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_pricing.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_request_budget.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_safe_parse_tool_args.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_sampling.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_sdk_client_reuse.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_sonnet5_sampling.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_source_grep_gates.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_tiktoken_encoding.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_vertex_claude_history.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/scheduler/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/scheduler/test_engine.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/scheduler/test_interval.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/skills/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/skills/test_generate_image_script.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/testkit/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/testkit/test_clock.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/testkit/test_failure_ledger.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/testkit/test_failures_cli.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/testkit/test_fake_history.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/testkit/test_scripted_provider.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/testkit/test_scrub.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/testkit/test_sse_reader.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/todo_list/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/todo_list/test_todo_list.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/web_search/__init__.py +0 -0
- {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/web_search/test_web_search.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
* @VibeEffect
|
|
@@ -11,6 +11,9 @@ internal/
|
|
|
11
11
|
# Local scaffolded harness config (defaults ship in monkeybot-cli scaffold_defaults/)
|
|
12
12
|
/monkeybot_config/
|
|
13
13
|
|
|
14
|
+
# Local agent for manual CLI testing. Recreate with `monkeybot new --dest ./cli-agent`.
|
|
15
|
+
/cli-agent/
|
|
16
|
+
|
|
14
17
|
# Live eval run artifacts. Baselines under regression/t4/baselines/ stay versioned.
|
|
15
18
|
/regression/t4/runs/
|
|
16
19
|
# Live-eval agent project local state. Live secrets come from the repo-root .env; a stray key
|
|
@@ -6,7 +6,25 @@ the project adheres to [Semantic Versioning](https://semver.org/).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## [core v3.12.0] - 2026-10-29
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- Bedrock Converse models (Grok, Nova, Llama, and other non-Claude ids) send prompt-cache checkpoints when `model.cache_retention` is not `none`. Checkpoints land on the system prompt, the tool list, and the last two user turns, up to Bedrock's limit of four. `short` and `long` both use Converse's default 5-minute cache. A model that rejects cache points is retried once without them.
|
|
14
|
+
|
|
15
|
+
## [cli v0.12.0] - 2026-10-28
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- Chat shows thoughts, tool calls, and web sources as one collapsed row. The reply no longer carries an assistant label.
|
|
20
|
+
|
|
21
|
+
## [core v3.11.1] - 2026-10-28
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- Sandbox volume names stay valid DNS labels and unique per path. The name used to be cut to 63 characters after dashes were stripped, so a cut could leave a trailing `-` and OpenSandbox rejected it with HTTP 422 on long workspace paths. Names now end in an 8-character hash of the path.
|
|
26
|
+
|
|
27
|
+
## [cli v0.11.1] - 2026-10-28
|
|
10
28
|
|
|
11
29
|
### Fixed
|
|
12
30
|
|
|
@@ -57,6 +57,7 @@ from monkeybot_cli.chat_tui_widgets import (
|
|
|
57
57
|
ToolCallBlock,
|
|
58
58
|
TranscriptPane,
|
|
59
59
|
UserTurn,
|
|
60
|
+
activity_label,
|
|
60
61
|
write_osc52_clipboard,
|
|
61
62
|
)
|
|
62
63
|
from monkeybot_cli.config_resolve import load_config_doc, resolve_config
|
|
@@ -360,6 +361,7 @@ class ChatApp(App[int]):
|
|
|
360
361
|
self._assistant: AssistantTurn | None = None
|
|
361
362
|
self._thinking: ThinkingLine | None = None
|
|
362
363
|
self._thinking_trace: ThinkingTrace | None = None
|
|
364
|
+
self._status_note = ""
|
|
363
365
|
self._hitl_card: HitlCard | None = None
|
|
364
366
|
self._hitl_status_flash: str | None = None
|
|
365
367
|
self._ring_text = "[dim]○ 0%[/]"
|
|
@@ -433,7 +435,10 @@ class ChatApp(App[int]):
|
|
|
433
435
|
if self._hitl_status_flash:
|
|
434
436
|
parts.append(self._hitl_status_flash)
|
|
435
437
|
if self._turn_active and not self._hitl_active:
|
|
436
|
-
|
|
438
|
+
if self._status_note:
|
|
439
|
+
parts.append(f"{self._status_note} · Esc interrupt")
|
|
440
|
+
else:
|
|
441
|
+
parts.append("working · Esc interrupt")
|
|
437
442
|
elif self._hitl_active:
|
|
438
443
|
if self._hitl_kind == "elicit":
|
|
439
444
|
parts.append("Enter submit · Ctrl-C cancel")
|
|
@@ -647,8 +652,24 @@ class ChatApp(App[int]):
|
|
|
647
652
|
transcript.mount(earlier, before=0)
|
|
648
653
|
earlier.absorb(digest)
|
|
649
654
|
|
|
655
|
+
def _mark_activity_lead(self, widget: object) -> None:
|
|
656
|
+
"""First row of a thought/tool/search stack gets the gap above it."""
|
|
657
|
+
if not isinstance(widget, (ThinkingTrace, ToolCallBlock, GroundingBlock)):
|
|
658
|
+
return
|
|
659
|
+
prev = None
|
|
660
|
+
for child in reversed(self._transcript().children):
|
|
661
|
+
if child is widget or getattr(child, "id", None) == "empty-hint":
|
|
662
|
+
continue
|
|
663
|
+
if isinstance(child, ThinkingTrace) and not child._raw.strip():
|
|
664
|
+
continue
|
|
665
|
+
prev = child
|
|
666
|
+
break
|
|
667
|
+
if not isinstance(prev, (ThinkingTrace, ToolCallBlock, GroundingBlock)):
|
|
668
|
+
widget.add_class("-lead")
|
|
669
|
+
|
|
650
670
|
def _mount(self, widget: object) -> None:
|
|
651
671
|
self._hide_empty_hint()
|
|
672
|
+
self._mark_activity_lead(widget)
|
|
652
673
|
if self._is_counted_turn(widget):
|
|
653
674
|
self._trim_old_turns()
|
|
654
675
|
self._turn_count += 1
|
|
@@ -673,10 +694,33 @@ class ChatApp(App[int]):
|
|
|
673
694
|
self._thinking.remove()
|
|
674
695
|
self._thinking = None
|
|
675
696
|
|
|
697
|
+
def _drop_empty_thinking(self) -> None:
|
|
698
|
+
trace = self._thinking_trace
|
|
699
|
+
if trace is None or not trace.is_attached or trace._raw.strip():
|
|
700
|
+
return
|
|
701
|
+
already = bool(getattr(trace, "_trimmed", False))
|
|
702
|
+
trace._trimmed = True # type: ignore[attr-defined]
|
|
703
|
+
trace.remove()
|
|
704
|
+
self._thinking_trace = None
|
|
705
|
+
if not already:
|
|
706
|
+
self._turn_count = max(0, self._turn_count - 1)
|
|
707
|
+
|
|
708
|
+
def _ensure_live_thinking(self) -> None:
|
|
709
|
+
trace = self._thinking_trace
|
|
710
|
+
if trace is not None and trace.is_attached and not trace.has_class("-done"):
|
|
711
|
+
return
|
|
712
|
+
self._clear_thinking()
|
|
713
|
+
block = ThinkingTrace()
|
|
714
|
+
self._thinking_trace = block
|
|
715
|
+
self._mount(block)
|
|
716
|
+
|
|
676
717
|
def _finish_thinking_trace(self, *, clear: bool = False) -> None:
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
718
|
+
trace = self._thinking_trace
|
|
719
|
+
if trace is not None and trace.is_attached:
|
|
720
|
+
if not trace._raw.strip():
|
|
721
|
+
self._drop_empty_thinking()
|
|
722
|
+
elif not trace.has_class("-done"):
|
|
723
|
+
trace.finish()
|
|
680
724
|
if clear:
|
|
681
725
|
self._thinking_trace = None
|
|
682
726
|
|
|
@@ -973,7 +1017,11 @@ class ChatApp(App[int]):
|
|
|
973
1017
|
self._follow_scroll()
|
|
974
1018
|
|
|
975
1019
|
def _ev_thinking(self, p: dict) -> None:
|
|
976
|
-
|
|
1020
|
+
text = str(p.get("text") or "thinking…")
|
|
1021
|
+
if text.strip().lower() in {"thinking…", "thinking...", "thinking"}:
|
|
1022
|
+
self._ensure_live_thinking()
|
|
1023
|
+
return
|
|
1024
|
+
self._show_thinking(text)
|
|
977
1025
|
|
|
978
1026
|
def _ev_thinking_clear(self, _p: dict) -> None:
|
|
979
1027
|
self._clear_thinking()
|
|
@@ -981,13 +1029,16 @@ class ChatApp(App[int]):
|
|
|
981
1029
|
def _ev_turn_started(self, _p: dict) -> None:
|
|
982
1030
|
self._turn_active = True
|
|
983
1031
|
self._assistant = None
|
|
1032
|
+
self._status_note = ""
|
|
984
1033
|
self._seal_thinking_trace()
|
|
985
1034
|
self._clear_open_tools()
|
|
986
|
-
self.
|
|
1035
|
+
self._clear_thinking()
|
|
1036
|
+
self._ensure_live_thinking()
|
|
987
1037
|
self._refresh_status()
|
|
988
1038
|
|
|
989
1039
|
def _ev_assistant_start(self, _p: dict) -> None:
|
|
990
1040
|
self._clear_thinking()
|
|
1041
|
+
self._drop_empty_thinking()
|
|
991
1042
|
|
|
992
1043
|
def _ev_assistant_delta(self, p: dict) -> None:
|
|
993
1044
|
delta = str(p.get("delta", ""))
|
|
@@ -1027,30 +1078,49 @@ class ChatApp(App[int]):
|
|
|
1027
1078
|
|
|
1028
1079
|
def _ev_summarizing(self, p: dict) -> None:
|
|
1029
1080
|
tokens = int(p.get("tokens") or 0)
|
|
1030
|
-
self.
|
|
1081
|
+
self._drop_empty_thinking()
|
|
1082
|
+
self._clear_thinking()
|
|
1083
|
+
self._status_note = f"summarizing context ({tokens:,} tokens)"
|
|
1084
|
+
self._refresh_status()
|
|
1031
1085
|
|
|
1032
1086
|
def _ev_summarized(self, p: dict) -> None:
|
|
1033
1087
|
turns = int(p.get("turns") or 0)
|
|
1034
1088
|
noun = "turn" if turns == 1 else "turns"
|
|
1035
|
-
self.
|
|
1089
|
+
self._status_note = f"summarized {turns} {noun}"
|
|
1090
|
+
self._refresh_status()
|
|
1036
1091
|
|
|
1037
1092
|
def _ev_grounding(self, p: dict) -> None:
|
|
1038
1093
|
self._clear_thinking()
|
|
1094
|
+
self._drop_empty_thinking()
|
|
1039
1095
|
queries = p.get("search_queries") or []
|
|
1040
|
-
|
|
1041
|
-
if
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
continue
|
|
1096
|
+
raw_sources = p.get("sources") or []
|
|
1097
|
+
sources = [source for source in raw_sources if isinstance(source, dict)]
|
|
1098
|
+
lines: list[str] = []
|
|
1099
|
+
shown = 0
|
|
1100
|
+
linked = 0
|
|
1101
|
+
for source in sources:
|
|
1047
1102
|
title = str(source.get("title") or "").strip()
|
|
1048
1103
|
uri = str(source.get("uri") or "").strip()
|
|
1049
1104
|
if not uri:
|
|
1050
1105
|
continue
|
|
1106
|
+
linked += 1
|
|
1107
|
+
if shown >= 5:
|
|
1108
|
+
continue
|
|
1109
|
+
shown += 1
|
|
1051
1110
|
label = title or uri
|
|
1052
1111
|
lines.append(f"- [{label}]({uri})")
|
|
1053
|
-
|
|
1112
|
+
query_text = ", ".join(str(query).strip() for query in queries if str(query).strip())
|
|
1113
|
+
if query_text and linked:
|
|
1114
|
+
noun = "source" if linked == 1 else "sources"
|
|
1115
|
+
hint = f"{query_text} · {linked} {noun}"
|
|
1116
|
+
elif query_text:
|
|
1117
|
+
hint = query_text
|
|
1118
|
+
elif linked:
|
|
1119
|
+
noun = "source" if linked == 1 else "sources"
|
|
1120
|
+
hint = f"{linked} {noun}"
|
|
1121
|
+
else:
|
|
1122
|
+
hint = ""
|
|
1123
|
+
self._mount(GroundingBlock("\n".join(lines), title=activity_label("Web", hint)))
|
|
1054
1124
|
|
|
1055
1125
|
def _ev_turn_error(self, p: dict) -> None:
|
|
1056
1126
|
self._close_assistant()
|
|
@@ -1157,9 +1227,10 @@ class ChatApp(App[int]):
|
|
|
1157
1227
|
def _ev_stream_ended(self, _p: dict) -> None:
|
|
1158
1228
|
self._exit_code = 1 if self._controller.stream_error else self._exit_code
|
|
1159
1229
|
|
|
1160
|
-
def _ev_thinking_trace(self,
|
|
1161
|
-
#
|
|
1162
|
-
|
|
1230
|
+
def _ev_thinking_trace(self, _p: dict) -> None:
|
|
1231
|
+
# thinking_block_* owns the collapsed row. This legacy event would
|
|
1232
|
+
# print the trace inline.
|
|
1233
|
+
return
|
|
1163
1234
|
|
|
1164
1235
|
def _ev_thinking_block_delta(self, p: dict) -> None:
|
|
1165
1236
|
text = str(p.get("text") or "")
|
|
@@ -1230,6 +1301,7 @@ class ChatApp(App[int]):
|
|
|
1230
1301
|
def _finish_turn_ui(self) -> None:
|
|
1231
1302
|
self._turn_active = False
|
|
1232
1303
|
self._assistant = None
|
|
1304
|
+
self._status_note = ""
|
|
1233
1305
|
self._clear_open_tools()
|
|
1234
1306
|
self._refresh_status()
|
|
1235
1307
|
self.query_one("#prompt", Composer).focus()
|
|
@@ -39,6 +39,38 @@ def _plain_title(text: str) -> Content:
|
|
|
39
39
|
return Content.from_text(text, markup=False)
|
|
40
40
|
|
|
41
41
|
|
|
42
|
+
_KIND_WIDTH = 7
|
|
43
|
+
_HINT_MAX = 72
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def activity_label(kind: str, hint: str = "") -> str:
|
|
47
|
+
"""One activity row: kind padded so hints share a column (``Thought …``)."""
|
|
48
|
+
kind = " ".join(kind.split())
|
|
49
|
+
hint = " ".join(hint.split())
|
|
50
|
+
if len(hint) > _HINT_MAX:
|
|
51
|
+
hint = hint[:_HINT_MAX] + "…"
|
|
52
|
+
if not hint:
|
|
53
|
+
return kind
|
|
54
|
+
return f"{kind:<{_KIND_WIDTH}} {hint}"
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def activity_label_from_title(title: str) -> str:
|
|
58
|
+
"""Align a ``Kind hint`` title that ``tool_collapsed_title`` already built."""
|
|
59
|
+
kind, sep, hint = title.partition(" ")
|
|
60
|
+
if not sep:
|
|
61
|
+
return activity_label(kind)
|
|
62
|
+
return activity_label(kind, hint)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def _set_collapsed_mark(widget: Collapsible, mark: str) -> None:
|
|
66
|
+
"""The disclosure symbol is the row's only glyph (spinner, ▸, ✓, ✗)."""
|
|
67
|
+
title = widget._title
|
|
68
|
+
if title.collapsed_symbol == mark:
|
|
69
|
+
return
|
|
70
|
+
title.collapsed_symbol = mark
|
|
71
|
+
title._update_label()
|
|
72
|
+
|
|
73
|
+
|
|
42
74
|
def write_osc52_clipboard(app: App[object], text: str) -> bool:
|
|
43
75
|
"""Best-effort OSC 52 clipboard write via the Textual driver."""
|
|
44
76
|
try:
|
|
@@ -110,59 +142,105 @@ class ThinkingLine(Static):
|
|
|
110
142
|
self.update(Text(f"{self._label} {elapsed}s", style="dim italic"))
|
|
111
143
|
|
|
112
144
|
|
|
113
|
-
class ThinkingTrace(
|
|
114
|
-
"""
|
|
145
|
+
class ThinkingTrace(Collapsible):
|
|
146
|
+
"""Collapsed thinking row. Click it (or focus it and press Enter) to read the trace."""
|
|
115
147
|
|
|
116
148
|
DEFAULT_CSS = """
|
|
117
149
|
ThinkingTrace {
|
|
118
150
|
width: 1fr;
|
|
119
151
|
height: auto;
|
|
120
|
-
|
|
152
|
+
background: transparent;
|
|
153
|
+
border-top: none;
|
|
121
154
|
padding: 0 1;
|
|
122
|
-
|
|
123
|
-
ThinkingTrace > .header {
|
|
124
|
-
height: 1;
|
|
155
|
+
margin-top: 0;
|
|
125
156
|
color: $muted;
|
|
126
|
-
text-style: bold dim;
|
|
127
157
|
}
|
|
128
|
-
ThinkingTrace
|
|
129
|
-
|
|
130
|
-
color: $muted;
|
|
131
|
-
text-style: dim;
|
|
158
|
+
ThinkingTrace.-lead {
|
|
159
|
+
margin-top: 1;
|
|
132
160
|
}
|
|
133
|
-
ThinkingTrace >
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
161
|
+
ThinkingTrace > Contents {
|
|
162
|
+
width: 1fr;
|
|
163
|
+
height: auto;
|
|
164
|
+
padding: 0 1 1 3;
|
|
165
|
+
color: $disabled;
|
|
138
166
|
}
|
|
139
|
-
ThinkingTrace
|
|
140
|
-
|
|
167
|
+
ThinkingTrace .thinking-body {
|
|
168
|
+
width: 1fr;
|
|
169
|
+
height: auto;
|
|
170
|
+
margin: 0;
|
|
171
|
+
padding: 0;
|
|
172
|
+
background: transparent;
|
|
173
|
+
color: $disabled;
|
|
141
174
|
}
|
|
142
175
|
"""
|
|
143
176
|
|
|
144
177
|
def __init__(self, **kwargs: object) -> None:
|
|
145
|
-
super().__init__(**kwargs) # type: ignore[arg-type]
|
|
146
178
|
self._raw = ""
|
|
179
|
+
self._done = False
|
|
180
|
+
self._spin_i = 0
|
|
181
|
+
self._spin_timer: Timer | None = None
|
|
182
|
+
self._body = Static("", classes="thinking-body")
|
|
183
|
+
super().__init__(
|
|
184
|
+
self._body,
|
|
185
|
+
title=_plain_title("Thinking…"), # type: ignore[arg-type]
|
|
186
|
+
collapsed=True,
|
|
187
|
+
collapsed_symbol="▸",
|
|
188
|
+
expanded_symbol="▾",
|
|
189
|
+
**kwargs, # type: ignore[arg-type]
|
|
190
|
+
)
|
|
147
191
|
|
|
148
|
-
def
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
192
|
+
def on_mount(self) -> None:
|
|
193
|
+
self._start_spinner()
|
|
194
|
+
|
|
195
|
+
def on_unmount(self) -> None:
|
|
196
|
+
self._stop_spinner()
|
|
152
197
|
|
|
153
198
|
def append_delta(self, chunk: str) -> None:
|
|
154
199
|
if not chunk:
|
|
155
200
|
return
|
|
156
201
|
self._raw += chunk
|
|
157
|
-
|
|
158
|
-
self.query_one(".body", Static).update(Text(self._raw, style="dim"))
|
|
202
|
+
self._body.update(Text(self._raw, style="dim"))
|
|
159
203
|
|
|
160
204
|
def finish(self) -> None:
|
|
205
|
+
self._done = True
|
|
206
|
+
self._stop_spinner()
|
|
161
207
|
self.add_class("-done")
|
|
208
|
+
_set_collapsed_mark(self, "▸")
|
|
209
|
+
self.title = _plain_title(activity_label("Thought", self._preview())) # type: ignore[assignment]
|
|
162
210
|
|
|
163
211
|
def reopen(self) -> None:
|
|
164
212
|
"""Allow late thinking deltas to continue this block after a premature close."""
|
|
213
|
+
self._done = False
|
|
165
214
|
self.remove_class("-done")
|
|
215
|
+
self.title = _plain_title("Thinking…") # type: ignore[assignment]
|
|
216
|
+
_set_collapsed_mark(self, "▸")
|
|
217
|
+
self._start_spinner()
|
|
218
|
+
|
|
219
|
+
def _preview(self) -> str:
|
|
220
|
+
return " ".join(self._raw.split())
|
|
221
|
+
|
|
222
|
+
def _start_spinner(self) -> None:
|
|
223
|
+
if self._done or not self.is_mounted:
|
|
224
|
+
return
|
|
225
|
+
self.title = _plain_title("Thinking…") # type: ignore[assignment]
|
|
226
|
+
if not bool(getattr(self.app, "animations_enabled", True)):
|
|
227
|
+
_set_collapsed_mark(self, "▸")
|
|
228
|
+
return
|
|
229
|
+
if self._spin_timer is None:
|
|
230
|
+
self._spin_timer = self.set_interval(0.08, self._tick_spinner)
|
|
231
|
+
self._tick_spinner()
|
|
232
|
+
|
|
233
|
+
def _stop_spinner(self) -> None:
|
|
234
|
+
if self._spin_timer is not None:
|
|
235
|
+
self._spin_timer.stop()
|
|
236
|
+
self._spin_timer = None
|
|
237
|
+
|
|
238
|
+
def _tick_spinner(self) -> None:
|
|
239
|
+
if self._done:
|
|
240
|
+
return
|
|
241
|
+
glyph = _SPIN[self._spin_i % len(_SPIN)]
|
|
242
|
+
self._spin_i += 1
|
|
243
|
+
_set_collapsed_mark(self, glyph)
|
|
166
244
|
|
|
167
245
|
|
|
168
246
|
class SystemLine(Static):
|
|
@@ -193,32 +271,50 @@ class SystemLine(Static):
|
|
|
193
271
|
self.update(Text(self.body, style=style))
|
|
194
272
|
|
|
195
273
|
|
|
196
|
-
class GroundingBlock(
|
|
197
|
-
"""
|
|
274
|
+
class GroundingBlock(Collapsible):
|
|
275
|
+
"""Collapsed web-search row. Open it to read the source links."""
|
|
198
276
|
|
|
199
277
|
DEFAULT_CSS = """
|
|
200
278
|
GroundingBlock {
|
|
201
279
|
width: 1fr;
|
|
202
280
|
height: auto;
|
|
203
|
-
|
|
281
|
+
background: transparent;
|
|
282
|
+
border-top: none;
|
|
204
283
|
padding: 0 1;
|
|
284
|
+
margin-top: 0;
|
|
285
|
+
color: $muted;
|
|
286
|
+
}
|
|
287
|
+
GroundingBlock.-lead {
|
|
288
|
+
margin-top: 1;
|
|
205
289
|
}
|
|
206
|
-
GroundingBlock >
|
|
290
|
+
GroundingBlock > Contents {
|
|
291
|
+
width: 1fr;
|
|
292
|
+
height: auto;
|
|
293
|
+
padding: 0 1 1 3;
|
|
294
|
+
color: $disabled;
|
|
295
|
+
}
|
|
296
|
+
GroundingBlock .grounding-body {
|
|
297
|
+
width: 1fr;
|
|
207
298
|
height: auto;
|
|
208
299
|
margin: 0;
|
|
209
300
|
padding: 0;
|
|
210
301
|
background: transparent;
|
|
211
|
-
color: $
|
|
302
|
+
color: $disabled;
|
|
212
303
|
}
|
|
213
304
|
"""
|
|
214
305
|
|
|
215
|
-
def __init__(self, markdown: str, **kwargs: object) -> None:
|
|
216
|
-
super().__init__(**kwargs) # type: ignore[arg-type]
|
|
306
|
+
def __init__(self, markdown: str, *, title: str = "Web", **kwargs: object) -> None:
|
|
217
307
|
self.markdown = markdown
|
|
218
308
|
self.mounted_at = datetime.now()
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
309
|
+
body = Markdown(markdown, open_links=True, classes="grounding-body")
|
|
310
|
+
super().__init__(
|
|
311
|
+
body,
|
|
312
|
+
title=_plain_title(title), # type: ignore[arg-type]
|
|
313
|
+
collapsed=True,
|
|
314
|
+
collapsed_symbol="▸",
|
|
315
|
+
expanded_symbol="▾",
|
|
316
|
+
**kwargs, # type: ignore[arg-type]
|
|
317
|
+
)
|
|
222
318
|
|
|
223
319
|
|
|
224
320
|
class EarlierTurns(Collapsible):
|
|
@@ -289,7 +385,7 @@ class UserTurn(Static):
|
|
|
289
385
|
content = Text()
|
|
290
386
|
if self.show_timestamp:
|
|
291
387
|
content.append(self.mounted_at.strftime("%H:%M:%S "), style="dim")
|
|
292
|
-
content.append("you\n", style="
|
|
388
|
+
content.append("you\n", style="dim")
|
|
293
389
|
content.append(self.body)
|
|
294
390
|
self.update(content)
|
|
295
391
|
|
|
@@ -304,7 +400,7 @@ class AssistantTurn(Vertical):
|
|
|
304
400
|
margin-top: 1;
|
|
305
401
|
padding: 0 1;
|
|
306
402
|
}
|
|
307
|
-
AssistantTurn > .
|
|
403
|
+
AssistantTurn > .stamp {
|
|
308
404
|
height: 1;
|
|
309
405
|
color: $muted;
|
|
310
406
|
text-style: dim;
|
|
@@ -335,22 +431,24 @@ class AssistantTurn(Vertical):
|
|
|
335
431
|
self.show_timestamp = show_timestamp
|
|
336
432
|
|
|
337
433
|
def compose(self) -> ComposeResult:
|
|
338
|
-
yield Static(
|
|
434
|
+
yield Static("", classes="stamp")
|
|
339
435
|
yield Markdown("", open_links=False, classes="body")
|
|
340
436
|
yield Static("▍", classes="cursor")
|
|
341
437
|
|
|
342
|
-
def
|
|
438
|
+
def _stamp_text(self) -> str:
|
|
343
439
|
if self.show_timestamp:
|
|
344
|
-
return
|
|
345
|
-
return "
|
|
440
|
+
return self.mounted_at.strftime("%H:%M:%S")
|
|
441
|
+
return ""
|
|
346
442
|
|
|
347
443
|
def refresh_label(self) -> None:
|
|
348
444
|
with contextlib.suppress(NoMatches):
|
|
349
|
-
self.query_one(".
|
|
445
|
+
stamp = self.query_one(".stamp", Static)
|
|
446
|
+
text = self._stamp_text()
|
|
447
|
+
stamp.update(text)
|
|
448
|
+
stamp.display = bool(text)
|
|
350
449
|
|
|
351
450
|
def on_mount(self) -> None:
|
|
352
|
-
|
|
353
|
-
return
|
|
451
|
+
self.refresh_label()
|
|
354
452
|
|
|
355
453
|
def append_delta(self, chunk: str) -> None:
|
|
356
454
|
if not chunk:
|
|
@@ -403,6 +501,9 @@ class ToolCallBlock(Collapsible):
|
|
|
403
501
|
margin-top: 0;
|
|
404
502
|
color: $muted;
|
|
405
503
|
}
|
|
504
|
+
ToolCallBlock.-lead {
|
|
505
|
+
margin-top: 1;
|
|
506
|
+
}
|
|
406
507
|
ToolCallBlock > Contents {
|
|
407
508
|
width: 1fr;
|
|
408
509
|
height: auto;
|
|
@@ -452,10 +553,10 @@ class ToolCallBlock(Collapsible):
|
|
|
452
553
|
)
|
|
453
554
|
super().__init__(
|
|
454
555
|
self._detail,
|
|
455
|
-
title=_plain_title(
|
|
556
|
+
title=_plain_title(activity_label_from_title(title)), # type: ignore[arg-type]
|
|
456
557
|
collapsed=True,
|
|
457
|
-
collapsed_symbol="
|
|
458
|
-
expanded_symbol="
|
|
558
|
+
collapsed_symbol="▸",
|
|
559
|
+
expanded_symbol="▾",
|
|
459
560
|
classes="running",
|
|
460
561
|
**kwargs, # type: ignore[arg-type]
|
|
461
562
|
)
|
|
@@ -466,14 +567,14 @@ class ToolCallBlock(Collapsible):
|
|
|
466
567
|
self._spin_timer = self.set_interval(0.08, self._tick_spinner)
|
|
467
568
|
self._tick_spinner()
|
|
468
569
|
else:
|
|
469
|
-
self
|
|
570
|
+
_set_collapsed_mark(self, "▸")
|
|
470
571
|
|
|
471
572
|
def _tick_spinner(self) -> None:
|
|
472
573
|
if self.status != "running":
|
|
473
574
|
return
|
|
474
575
|
glyph = _SPIN[self._spin_i % len(_SPIN)]
|
|
475
576
|
self._spin_i += 1
|
|
476
|
-
self
|
|
577
|
+
_set_collapsed_mark(self, glyph)
|
|
477
578
|
|
|
478
579
|
def mark_finished(self, *, error: object = None, result: str = "") -> None:
|
|
479
580
|
self.status = "error" if error else "ok"
|
|
@@ -482,8 +583,8 @@ class ToolCallBlock(Collapsible):
|
|
|
482
583
|
if self._spin_timer is not None:
|
|
483
584
|
self._spin_timer.stop()
|
|
484
585
|
self._spin_timer = None
|
|
485
|
-
|
|
486
|
-
self.title = _plain_title(
|
|
586
|
+
_set_collapsed_mark(self, "✗" if error else "✓")
|
|
587
|
+
self.title = _plain_title(activity_label_from_title(self.display_label)) # type: ignore[assignment]
|
|
487
588
|
self._detail.update(
|
|
488
589
|
format_tool_expand_body(
|
|
489
590
|
self.tool_name,
|
|
@@ -592,6 +592,10 @@ def test_grounding_mounts_markdown_links(tmp_path: Path) -> None:
|
|
|
592
592
|
await pilot.pause()
|
|
593
593
|
blocks = list(app.query(GroundingBlock))
|
|
594
594
|
assert len(blocks) == 1
|
|
595
|
+
assert blocks[0].collapsed is True
|
|
596
|
+
assert "Web" in str(blocks[0].title)
|
|
597
|
+
assert "monkeys" in str(blocks[0].title)
|
|
598
|
+
assert "1 source" in str(blocks[0].title)
|
|
595
599
|
assert "https://example.com" in blocks[0].markdown
|
|
596
600
|
assert "[Docs]" in blocks[0].markdown
|
|
597
601
|
|
|
@@ -1212,24 +1216,36 @@ def test_thinking_trace_streams_and_finishes(tmp_path: Path) -> None:
|
|
|
1212
1216
|
await pilot.pause()
|
|
1213
1217
|
assert app._thinking_trace is not None
|
|
1214
1218
|
assert "The user said hello" in app._thinking_trace._raw
|
|
1215
|
-
|
|
1216
|
-
assert "Thinking" in str(
|
|
1219
|
+
assert app._thinking_trace.collapsed is True
|
|
1220
|
+
assert "Thinking" in str(app._thinking_trace.title)
|
|
1217
1221
|
assert not app._thinking_trace.has_class("-done")
|
|
1218
1222
|
|
|
1219
1223
|
app._ev_thinking_block_delta({"text": " — reply briefly."})
|
|
1220
1224
|
await pilot.pause()
|
|
1221
1225
|
assert "reply briefly" in app._thinking_trace._raw
|
|
1226
|
+
assert app._thinking_trace.collapsed is True
|
|
1222
1227
|
|
|
1223
1228
|
app._ev_thinking_block_complete({})
|
|
1224
1229
|
await pilot.pause()
|
|
1225
|
-
# Finished block stays mounted; pointer kept for late re-entry.
|
|
1230
|
+
# Finished block stays mounted and collapsed; pointer kept for late re-entry.
|
|
1226
1231
|
assert app._thinking_trace is not None
|
|
1227
1232
|
assert app._thinking_trace.has_class("-done")
|
|
1233
|
+
assert app._thinking_trace.collapsed is True
|
|
1234
|
+
assert "Thought" in str(app._thinking_trace.title)
|
|
1235
|
+
assert "hello" in str(app._thinking_trace.title)
|
|
1236
|
+
assert app._thinking_trace._title.collapsed_symbol == "▸"
|
|
1228
1237
|
traces = list(app.query(ThinkingTrace))
|
|
1229
1238
|
assert len(traces) == 1
|
|
1230
1239
|
assert traces[0].has_class("-done")
|
|
1240
|
+
assert traces[0].collapsed is True
|
|
1231
1241
|
assert "The user said hello — reply briefly." in traces[0]._raw
|
|
1232
1242
|
|
|
1243
|
+
await pilot.click(traces[0].children[0])
|
|
1244
|
+
await pilot.pause()
|
|
1245
|
+
assert traces[0].collapsed is False
|
|
1246
|
+
body = traces[0].query_one(".thinking-body")
|
|
1247
|
+
assert "The user said hello — reply briefly." in str(body.render())
|
|
1248
|
+
|
|
1233
1249
|
app._ev_turn_complete({})
|
|
1234
1250
|
await pilot.pause()
|
|
1235
1251
|
assert app._thinking_trace is None
|
|
@@ -1272,6 +1288,7 @@ def test_late_thinking_delta_reopens_same_block(tmp_path: Path) -> None:
|
|
|
1272
1288
|
assert len(traces) == 1
|
|
1273
1289
|
assert "ask what they'd like me to build." in traces[0]._raw
|
|
1274
1290
|
assert traces[0].has_class("-done")
|
|
1291
|
+
assert traces[0].collapsed is True
|
|
1275
1292
|
|
|
1276
1293
|
# Thinking block must still sit above the assistant turn.
|
|
1277
1294
|
children = list(app._transcript().children)
|
|
@@ -633,7 +633,7 @@ wheels = [
|
|
|
633
633
|
|
|
634
634
|
[[package]]
|
|
635
635
|
name = "monkeybot"
|
|
636
|
-
version = "3.
|
|
636
|
+
version = "3.11.0"
|
|
637
637
|
source = { editable = "../" }
|
|
638
638
|
dependencies = [
|
|
639
639
|
{ name = "aiosqlite" },
|
|
@@ -725,6 +725,7 @@ provides-extras = ["memory", "gemini", "vertex", "claude", "vertex-claude", "bed
|
|
|
725
725
|
dev = [
|
|
726
726
|
{ name = "anthropic", extras = ["vertex", "bedrock"], specifier = ">=0.40.0" },
|
|
727
727
|
{ name = "asgi-lifespan", specifier = ">=2.1.0" },
|
|
728
|
+
{ name = "jsonschema", specifier = ">=4.26.0" },
|
|
728
729
|
{ name = "monkeybot", extras = ["memory"] },
|
|
729
730
|
{ name = "monkeybot", extras = ["postgres"] },
|
|
730
731
|
{ name = "monkeybot-cli", editable = "." },
|
|
@@ -773,7 +774,7 @@ dev = [{ name = "pytest", specifier = ">=8.0.0" }]
|
|
|
773
774
|
|
|
774
775
|
[[package]]
|
|
775
776
|
name = "monkeybot-cli"
|
|
776
|
-
version = "0.11.
|
|
777
|
+
version = "0.11.1"
|
|
777
778
|
source = { editable = "." }
|
|
778
779
|
dependencies = [
|
|
779
780
|
{ name = "httpx" },
|