monkeybot 3.11.1__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.1 → monkeybot-3.12.0}/CHANGELOG.md +7 -1
- {monkeybot-3.11.1 → monkeybot-3.12.0}/PKG-INFO +1 -1
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/pyproject.toml +1 -1
- {monkeybot-3.11.1 → monkeybot-3.12.0}/pyproject.toml +1 -1
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/drivers/bundles/workspace.py +8 -1
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/build.py +32 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/selftest/test_fixtures.py +21 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenario_loader.py +2 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/providers/_bedrock_converse.py +161 -18
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/providers/bedrock.py +2 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/test_bedrock_converse.py +213 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/uv.lock +2 -2
- {monkeybot-3.11.1 → monkeybot-3.12.0}/.cursor/hooks/pre-pr.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/.cursor/hooks/test-failure-notice.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/.cursor/hooks.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/.cursor/rules/test-failures.mdc +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/.cursor/skills/mb-retro/SKILL.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/.dockerignore +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/.github/workflows/ci.yml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/.github/workflows/live-eval-smoke.yml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/.github/workflows/prepare-release.yml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/.github/workflows/publish-release.yml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/.gitignore +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/.pre-commit-config.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/BACKLOG.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/CONTRIBUTING.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/LICENSE +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/README.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/skills/monkeybot/SKILL.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/skills/monkeybot/references/config-sections.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_file_index.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_local_shell.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_renderer.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_session.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_status_bar.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_theme.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_tool_display.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_tui.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_tui_widgets.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/chat.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/doctor.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/loop.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/mcp_login.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/new.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/refresh.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/run_cmd.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/talk.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/trace.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/validate.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/compat.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/config_resolve.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/exit_commands.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/extras_catalog.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/gateway_health.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/main.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/opensandbox_lifecycle.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/output.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/overrides.txt +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/process_tree.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/providers.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/audio_io.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/client.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/gateway_manager.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/push_to_talk.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/session.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/session_controller.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/talk_ui.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/wire_encode.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/runtime_python.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/AGENT.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/Dockerfile +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/browser/SKILL.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/command_allowlist.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/dockerignore +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/env.example +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/goal/SKILL.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/image-generator/SKILL.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/image-generator/generate_image.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/loop/SKILL.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/mcp.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/monkeybot.example.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/opensandbox.docker.toml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/otel-collector.example.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/permissions.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/templates/coding/AGENT.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/templates/coding/command_allowlist.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/templates/coding/monkeybot.overrides.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/templates/coding/permissions.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/session_controller.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/src/monkeybot_cli/terminal_markdown.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/tests/test_chat_continue.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/tests/test_chat_e2e.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/tests/test_chat_errors.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/tests/test_chat_file_index.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/tests/test_chat_grounding.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/tests/test_chat_local_shell.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/tests/test_chat_renderer_parity.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/tests/test_chat_session.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/tests/test_chat_status_bar.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/tests/test_chat_theme.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/tests/test_chat_tool_display.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/tests/test_chat_tui.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/tests/test_cli.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/tests/test_config_resolve.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/tests/test_doctor.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/tests/test_extras_catalog.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/tests/test_gateway_health.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/tests/test_opensandbox_lifecycle.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/tests/test_realtime_session_controller.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/tests/test_run_cmd.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/tests/test_runtime_python.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/tests/test_scaffold.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/tests/test_terminal_markdown.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/tests/test_trace_cmd.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/cli/uv.lock +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/conftest.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docker/Dockerfile +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docker/demo-model.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docker/demo.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docker/docker-compose.sandbox.yml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docker/opensandbox.docker.toml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docker/sandbox.Dockerfile +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docker-compose.yml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/agent-layout.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/assets/logo.png +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/browser-mcp-perf-baseline.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/browser-mcp-performance-plan.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/browser-mcp.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/cloud-deployment-design.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/deploy-aws-agentcore.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/deploy-pattern-a-container.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/deploy-pattern-b-serverless.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/deploy-pattern-c-agent-platform.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/deploy-pattern-d-realtime.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/features.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/getting-started.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/live-evals.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/mcp.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/migrations/agent-scope-namespacing.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/migrations/history-row-id.sql +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/migrations/memory-outbox.sql +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/migrations/session-branches.sql +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/observability-runbook.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/ollama-local.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/otel-collector.example.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/progressive-loop-tools.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/progressive-mcp-tools.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/skills.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/spill-dynamic-design.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/sse-gateway-ui.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/testing.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/docs/verifier-agent-design.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/examples/README.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/examples/agentcore/handler.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/examples/agentcore/runtime_app.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/examples/agentengine/handler.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/examples/cloud-functions/main.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/examples/lambda/handler.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/examples/ollama/PrefixStable.Modelfile +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/examples/skills/browser/SKILL.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/examples/skills/browser/playbooks/.gitkeep +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/examples/skills/diagnostics/README.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/examples/skills/diagnostics/SKILL.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/examples/skills/diagnostics/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/examples/skills/diagnostics/diagnostics.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/examples/skills/image-generator/SKILL.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/examples/skills/image-generator/generate_image.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/pyproject.toml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/scripts/agentcore_smoke.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/scripts/dump_tool_surface.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/scripts/perf_bench.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/actions.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/agentcore.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/app.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/assets/NOTICE.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/assets/dom_tree.js +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/assets/pa_driver.js +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/backend.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/chat_context.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/chat_scope.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/dom_indexing.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/in_app_cdp.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/login.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/observe.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/perf.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/playbooks.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/playwright_helpers.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/results.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/screenshots.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/server.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tab_ops.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tabs.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tools/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tools/batch.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tools/capture.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tools/interact.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tools/navigate.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tools/playbook.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tools/read.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tools/tab_control.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/conftest.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/fixtures/api.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/fixtures/article.html +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/fixtures/cards.html +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/fixtures/form.html +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/fixtures/long_list.html +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/fixtures/spa.html +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/fixtures/tool_surface.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/integration/conftest.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/integration/test_act_observe.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/integration/test_driver_persist.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/integration/test_intent_tools.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/integration/test_multi_tab.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/integration/test_observation.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/integration/test_run_playbook.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/integration/test_wait_for.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_act.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_agentcore.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_chat_isolation.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_chat_scope.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_dom_indexing.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_fill_form.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_in_app_cdp.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_indexed_tools.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_observe.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_observe_after.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_perf.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_playbook_flows.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_playbooks.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_playwright_helpers.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_screenshots.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_server_shutdown.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_tabs.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_tool_surface.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_wait_tools.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/integrations/browser-mcp/uv.lock +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/pytest.ini +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/conftest.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/drivers/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/drivers/bundles/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/drivers/bundles/git.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/drivers/bundles/hooks.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/drivers/bundles/host_tools.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/drivers/bundles/mcp.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/drivers/bundles/memory.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/drivers/bundles/policy.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/drivers/bundles/prompt_context.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/drivers/bundles/protocol.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/drivers/bundles/session.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/drivers/bundles/store.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/drivers/bundles/subagents.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/drivers/bundles/verifier.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/drivers/gateway.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/drivers/loop.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/drivers/realtime.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/drivers/record.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/drivers/replay.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/drivers/support/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/drivers/support/config.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/drivers/support/env.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/drivers/support/executor.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/drivers/support/paths.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/drivers/support/tokens.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/configs/agent.base.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/configs/command_allowlist.default.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/configs/command_allowlist.empty.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/configs/command_allowlist.no_deny_patterns.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/configs/command_allowlist.strict.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/configs/grants.corrupt.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/configs/grants.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/configs/mcp.autoconnect.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/configs/mcp.broken.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/configs/mcp.progressive.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/configs/mcp.two_prefix.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/configs/permissions.ask.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/configs/permissions.default.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/configs/permissions.overlap.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/configs/verifier.block.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/configs/verifier.judge.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/configs/verifier.replan.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/configs/verifier.tracker.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/configs/{workspace}/child.db +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/conftest.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/mcp/fixture_mcp_server.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/scripts/one_turn.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/skills/a/nested/SKILL.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/skills/diagnostics/SKILL.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/skills/plain/SKILL.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/.gitkeep +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/absent_file.ndjson +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/child_error.ndjson +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/echo.ndjson +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/hold.ndjson +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/large_line.ndjson +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/nested_task.ndjson +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/present_file.ndjson +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/roundtrip.ndjson +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/system_prompt.ndjson +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_secret.txt +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/.monkeybot/attachments/loop-scenario/att-link +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/.monkeybot/attachments/loop-scenario/att-link.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/.monkeybot/attachments/loop-scenario/att-pdf +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/.monkeybot/attachments/loop-scenario/att-pdf.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/i1.png +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/i2.png +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/i3.png +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/i4.png +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/i5.png +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/i6.png +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/tiny.png +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/.gitignore +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/AGENTS.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/build/calc/ops.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/calc/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/calc/ops.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/node_modules/left-pad/index.js +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/node_modules/left-pad/package.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/pyproject.toml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/tests/test_ops.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/.gitignore +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/AGENTS.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/build/calc/ops.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/calc/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/calc/ops.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/node_modules/left-pad/index.js +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/node_modules/left-pad/package.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/pyproject.toml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/tests/test_ops.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/drift_ws/DONE.txt +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/drift_ws/db/migrations/001_init.sql +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/drift_ws/src/models.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/grants_ws/granted/.env +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/grants_ws/granted/notes.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/grants_ws/workspace/src/app.txt +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/.gitignore +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/AGENTS.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/node_modules/left.js +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/notes.txt +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/pkg/.gitignore +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/pkg/hidden.txt +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/pkg/visible.txt +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/secret.txt +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/src/app.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/wide.txt +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/overlays/bug_discount/shop/pricing.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/overlays/noisy_tests/shop/taxes.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/overlays/noisy_tests/tests/conftest.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/overlays/offline_gateway/tests/test_gateway.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/.gitignore +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/AGENTS.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/CHANGELOG.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/README.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/build/shop/shipping.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/pyproject.toml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/cart.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/coupons.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/gateway.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/inventory.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/legacy/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/legacy/pricing_v1.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/legacy/shipping_v1.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/models.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/orders.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/pricing.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/reports.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/shipping.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/taxes.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/utils/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/utils/money.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/utils/text.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_cart.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_coupons.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_inventory.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_money.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_orders.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_pricing.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_reports.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_shipping.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_taxes.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/vendor/pricekit/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/AGENT_GUIDE.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/README.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/phases/phase-0a-tier1-reorg.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/phases/phase-0b-foundations.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/phases/phase-1-t2-harness-logic.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/phases/phase-2-contracts-and-gateway.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/phases/phase-3-record-replay.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/phases/phase-4-live.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/phases/phase-5-trials.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/phases/phase-6-cutover.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/01-goals-and-principles.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/03-tiers.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/04-file-structure.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/05.1-doubles.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/05.10-testing-doc.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/05.11-live-provider.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/05.2-scenario-schema.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/05.3-assertions-and-invariants.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/05.4-fixtures.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/05.5-cassettes.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/05.6-pytest-reporting-trials.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/05.9-failure-ledger.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/00-index.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6A-loop.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6B-ctx.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6C-hook.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6D-file.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6E-shell.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6F-pol.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6G-code.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6H-att.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6I-comp.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6J-sub.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6K-ver.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6L-sched.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6M-skill.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6N-mcp.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6O-web.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6P-mem.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6Q-store.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6R-cfg.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6S-todo.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6T-prov.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6U-gw.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6V-rt.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6W-ops.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/07-migration-map.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/09-ci.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/10-policies.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/11-known-issues.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/12-decisions.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/reference/appendices.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/status.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plan/tasks.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/plugin.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/schema/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/schema/assertions.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/schema/events.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/schema/invariants.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/schema/scenario.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/schema/sse_norm.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/schema/steps.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/selftest/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/selftest/recorded/t4_run_smoke_sample.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/selftest/test_agent_project.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/selftest/test_assertions.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/selftest/test_bundle_order.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/selftest/test_coding_hard_oracle.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/selftest/test_diff.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/selftest/test_from_transcript.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/selftest/test_gateway_driver.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/selftest/test_invariants.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/selftest/test_judge.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/selftest/test_live_engine.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/selftest/test_live_ledger.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/selftest/test_live_scenarios.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/selftest/test_preflight.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/selftest/test_report.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/selftest/test_runner_sse.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/selftest/test_scenario_schema.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/selftest/test_scorer.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/selftest/test_steps.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/selftest/test_trials_stats.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/gateway/harness.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/gateway/scenarios/gw/reconnect_last_event_id.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/gateway/scenarios/gw/scripted_turn_golden_sse.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/gateway/scenarios/gw/tool_turn_golden_sse.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/gateway/test_cases.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/attachments/attachment_symlink_leaf_rejected.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/attachments/freeze_descriptors_in_history.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/attachments/load_both_args.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/attachments/load_image_preview.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/attachments/load_pdf.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/attachments/load_per_reply_cap.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/attachments/load_text_rejected.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/compaction_forgets_reads.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/fix_failing_test.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_background_verify_not_counted.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_cap_then_accept.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_custom_verify_commands.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_masked_exit.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_non_executing_wrapper.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_open_todos_reject.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_passes_when_verified.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_question_not_gated.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_rejected_answer_not_persisted.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_rejects_unverified.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_write_after_verify.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/git_context_absent.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/git_context_note.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/git_env_isolation.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/read_before_write.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/subagent_has_ledger_no_gate.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/subagent_ledger_child.yml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/computer/clipboard_cap.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/computer/denied_apps_and_schemes.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/computer/denied_dirs_and_globs.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/computer/move_trash_not_always_scoped.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/computer/open_exec_suffix_denied.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/computer/trash_huge_tree_refused.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/computer/x.sh +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/background_summary_applied.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/background_summary_stale_fallback.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/base64_sanitized.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/compact_at_trigger.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/compact_does_not_persist_repairs.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/compact_fallback.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/compact_keep_tail_ratio.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/compact_pins_verdict_attachment_thinking.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/compact_trailer_from_goal_ledger.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/context_usage_current_not_peak.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/epoch_after_compaction.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/epoch_stable_change.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/epoch_volatile_update.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/memory_wake_up_large.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/project_instructions_spoof_heading.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/slash_skill_turn_scoped.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/stable_prefix_byte_stable.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/summarizer_model_override.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/tool_result_shaping_under_pressure.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/glob_cap_incomplete.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/glob_skips_noise.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/grep_gitignore_default.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/grep_incomplete_scan.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/grep_invalid_regex.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/grep_pagination.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/list_dir_truncate.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/overwrite_unread_rejected.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/patch_add_existing.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/patch_fail_closed.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/patch_move_dest_exists.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/patch_rollback.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/patch_update_requires_read.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/read_absolute_needs_grant.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/read_escape_dotdot.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/read_escape_symlink.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/read_huge_single_line.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/read_offset_past_eof.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/read_paging_no_gap.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/replace_error_codes.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/replace_fuzzy_unicode.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/skills_read_only.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/spill_large_tool_output.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/spill_session_id_sanitized.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/stale_read_rejected.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/tool_glob_grep.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/tool_read.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/tool_replace_apply_patch.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/tool_write.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/virtual_mounts.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/write_new_without_read_ok.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/write_outside_scope.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/write_payload_too_large.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/hook/evidence_grep_only_not_accepted.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/hook/evidence_missing_path.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/hook/evidence_thread_isolation.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/hook/evidence_unread_then_read.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/hook/secret_ends_routine_turn.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/hook/secret_in_tool_args.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/hook/secret_redacted_interactive.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/hook/secret_scanner_failure_fails_closed.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/all_parse_error_batch_rejected.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/ask_user_non_interactive.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/ask_user_roundtrip.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/background_check_raises_fails_closed.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/background_nudge_then_release.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/background_nudges_exhausted.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/cancel_after_tool_call_before_execute.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/cancel_mid_stream.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/confirm_always_remembered.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/confirm_approve.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/confirm_deny.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/confirm_timeout.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/doom_disabled.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/doom_exempt_poll.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/doom_identical_read.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/doom_path_reset_on_success.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/doom_path_retry_spelling.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/empty_exhausted.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/empty_then_text.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/grounding_event_passthrough.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/max_turns_cap.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/max_turns_not_on_clean_finish.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/mixed_parse_error_batch_runs_valid.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/parallel_concurrency_cap.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/parallel_results_in_submission_order.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/post_tool_empty_retry.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/promote_follow_up_provenance.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/provider_raises.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/registry_refresh_same_turn.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/repair_missing_tool_result.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/repair_orphan_tool_response.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/resume_thinking_budget_routine.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/steer_mid_turn.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/thinking_block_order.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/thinking_only_is_empty.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/thought_signature_preserved.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/tool_input_delta_passthrough.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/truncated_batch_rejected.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/turn_completion.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/usage_totals.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/autoconnect_failure_is_status.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/catalog_diff_reload.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/disable_removes_tools.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/disabled_server_not_catalogued.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/enable_then_call.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/enable_unknown_server.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/env_interpolation_missing.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/meta_tools_only_when_connected.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/name_prefix_split.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/resources_and_prompts.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/strict_load_rolls_back.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/memory/ephemeral_palace_shared_outbox_rejected.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/memory/memory_off.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/memory/memory_write_inject.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/memory/mempalace_search_real.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/memory/outbox_failure_does_not_fail_turn.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/memory/outbox_ingest_then_inject.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/memory/outbox_thread_isolation.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/memory/subagent_no_ingest.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/command_grant_from_store.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/default_deny_patterns.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/grant_revocation_clears.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/granted_folder_credential_denied.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/path_grant_read.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/permissions_last_match_wins.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/permissions_missing_file_fail_open.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/start_loop_always_confirms.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/symlink_in_grant_does_not_widen.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/unknown_binary_confirm_approve.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/unknown_binary_confirm_deny.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/scheduler/create_goal_requires_slash_goal.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/scheduler/create_goal_with_slash_goal.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/scheduler/enable_loops_progressive.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/scheduler/loop_goal_isolation.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/scheduler/loop_lifecycle_real_store.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/scheduler/one_open_goal_per_session.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/scheduler/start_loop_requires_stop_guard.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/scheduler/tool_loops.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/allowlist_deny.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/argv_forms.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/bg_job_cap.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/bg_kill_command.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/bg_killed_at_turn_end.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/bg_start_await_cursor.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/cwd_escape.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/home_escape.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/large_stdout_spill_keeps_exit.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/mempalace_refused_memory_off.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/mempalace_search_only.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/nonzero_exit.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/run_command.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/shell_wrapper_bypass.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/timeout_partial_output.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/unscreenable_script_fails_closed.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/skills/list_then_read_skill.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/skills/skill_symlink_escape.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/skills/skill_write_denied.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/skills/skills_in_prompt.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/skills/skills_path_hot_reload.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/skills/slash_unknown_skill.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/store/compaction_reset_row_ids.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/store/transcript_convertible.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/store/usage_recorded_on_turn_complete.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/child_errors_record_failed.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/child_memory_read_only.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/expect_files_absent.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/expect_files_escape.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/expect_files_present.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/large_ndjson_line.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/ledger_context_forwarded.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/nested_task_refused.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/parallel_task_cap.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/parent_cancel.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/persona_applied.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/queue_pending_not_success.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/subagent_roundtrip.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/subagent_timeout.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/system_prompt_redacted_on_pipe.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/unknown_subagent_type.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/todo/caps.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/todo/ids_stable.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/todo/mirror_hydrate.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/todo/reminder_once.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/todo/single_in_progress.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/todo/todo_list.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/todo/todo_list_steps.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/block_denies_mutating_tools.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/constraint_touch_negative.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/constraint_touch_positive.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/done_unmet_positive.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/error_streak_negative.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/error_streak_positive.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/free_text_constraint_never_matches.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/judge_malformed_fails_open.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/judge_rate_limits.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/judge_replay_valid.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/judge_spend_ratio.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/mailbox_stale_checkpoint_dropped.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/min_turn_before_verdict.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/no_progress_budget_burn_not_mailboxed.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/preempt_negative.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/repeat_correction_positive.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/replan_one_turn.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/rewrite_churn_positive.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/rewrite_effects_branch_copy.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/severity_cap_nudge.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/sticky_nudge.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/supersession_negative.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/verdict_in_history_stripped_for_provider.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/verifier_off_no_effect.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/write_without_read_negative.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/write_without_read_positive.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/web/backend_none_not_advertised.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/web/browser_mcp.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/web/browser_stop_on_disconnect.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/web/browser_stop_server.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/web/empty_query.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/web/max_results.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/loop/scenarios/web/web_search.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/python/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/python/test_drift_confusion_matrix.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/python/test_e2e_simple_reply.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/python/test_grep_parity.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/python/test_hooks_lifecycle.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/python/test_jail.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/python/test_memory_commit.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/python/test_observability_acceptance.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/python/test_observability_integration.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/python/test_ops_cli.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/python/test_ops_observability.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/python/test_prompt_caching_integration.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/python/test_scheduler_engine.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/python/test_sse_stream_pressure.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/python/test_subagent_worker_pool.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/realtime/scenarios/ws_blocks_history_rewrite.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/realtime/scenarios/ws_guardrail_budget.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/realtime/scenarios/ws_interrupt.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/realtime/scenarios/ws_slot_limit.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/realtime/scenarios/ws_text_turn.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/realtime/scenarios/ws_tool_confirmation.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t2/realtime/scenarios/ws_tool_turn.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/mcp/tools_list_call.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/memory/wake_up_snapshot.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/sse/basic_turn.sse +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/sse/cassette_turn.sse +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/sse/tool_turn.sse +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/subagents/child_tape.ndjson +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/test_golden_sse.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/test_replay_mcp.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/test_replay_subagent_tape.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/test_replay_trajectories.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/test_replay_wake_up.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/test_replay_wire.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/tools/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/tools/cassette.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/tools/check_staleness.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/tools/from_transcript.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/tools/record_wire.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/trajectories/ctx/replay_live_compaction.cassette.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/trajectories/ctx/replay_live_compaction.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/trajectories/loop/replay_live_doom_loop.cassette.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/trajectories/loop/replay_live_doom_loop.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/trajectories/loop/replay_live_truncation.cassette.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/trajectories/loop/replay_live_truncation.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/trajectories/shell/replay_live_pytest_run.cassette.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/trajectories/shell/replay_live_pytest_run.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/trajectories/verifier/replay_drift_tape.cassette.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/trajectories/verifier/replay_drift_tape.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/wire/ollama_cloud/glm_tool_turn.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t3/wire/ollama_cloud/thinking_only_completion.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/__main__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/.gitignore +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/memory/.blob_seq_ids_migrated +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/memory/.collection_type_fixed +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/memory/.embedder_identity +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/memory/.embedding-migrate.lock +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/memory/.palace_id +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/memory/.palace_write.lock +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/memory/2d1891d4-34d0-43bd-8eea-2fb73026046b/data_level0.bin +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/memory/2d1891d4-34d0-43bd-8eea-2fb73026046b/header.bin +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/memory/2d1891d4-34d0-43bd-8eea-2fb73026046b/length.bin +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/memory/2d1891d4-34d0-43bd-8eea-2fb73026046b/link_lists.bin +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/memory/identity.txt +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/memory/mempalace_embedder.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/.t4-gateway-993b836fb2a9.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/AGENT.coding.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/AGENT.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/AGENT.researcher.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/command_allowlist.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/grants.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/mcp.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/mcp.progressive.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/monkeybot.coding.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/monkeybot.verifier-judge.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/monkeybot.verifier-tracker.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/monkeybot.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/permissions.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/pyproject.toml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/skills/browser/SKILL.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/agent/uv.lock +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/assertions.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/baselines/smoke.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/baselines/smoke.md +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/conftest.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/diff.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/eval_config.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/gateway.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/models.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/persistence.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/preflight.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/python/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/python/test_docker_image_health.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/python/test_provider_live_matrix.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/report.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/runner.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/attachments/describe_image_live.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/coding/add_feature_with_tests.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/coding/fix_failing_test.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/coding/navigate_repo.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/coding_hard/add_bulk_discount.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/coding_hard/fix_discount_rounding.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/coding_hard/honest_unfixable_failure.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/coding_hard/multi_feature_long.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/coding_hard/navigate_intl_rate.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/coding_hard/noisy_test_failure.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/coding_hard/rename_calc_tax.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/config/reload_memory_off_live.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/context/post_compaction_continuity.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/context/summarization_trigger.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/drift/declares_done.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/drift/path_constraint.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/drift/preempt.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/drift/repeat_correction.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/drift/supersession.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/file/core_read.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/file/core_read_error.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/file/core_write.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/file/grep_absence_honesty.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/gateway/live_resume.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/hooks/evidence_citation_live.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/mcp/enable_then_echo_live.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/mcp/get_prompt.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/mcp/list_resources.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/mcp/tool_invoke.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/memory/recall_cross_session.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/memory/recall_single_session.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/memory/search_past_session.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/multi_turn/task_tracking.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/scheduler/http_one_tick_live.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/scheduler/model_starts_loop.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/shell/core_run_command.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/shell/core_run_command_sandbox.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/skills/skill_invocation.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/subagents/dispatch_complete.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/scenarios/subagents/persona_dispatch.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/score.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/suites/coding.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/suites/coding_hard.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/suites/context.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/suites/drift.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/suites/mcp.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/suites/memory.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/suites/nightly.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/suites/scheduler.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/suites/smoke.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t4/suites/subagents.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t5/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t5/__main__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t5/baselines/subagents__ollama-cloud__glm-5.3-flash.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t5/compare.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t5/parallel.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t5/python/test_cancel_storm.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t5/python/test_reconnect_storm.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t5/runs/coding.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t5/runs/mcp.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t5/runs/smoke.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t5/runs/subagents.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t5/stats.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t5/suites/capability.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t5/suites/drift.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t5/suites/reliability.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/regression/t5/trials.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/scripts/ci-local.sh +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/scripts/create_schema.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/scripts/precommit-pytest.sh +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/scripts/release.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/scripts/smoke_global_cli.sh +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/cli/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/cli/__main__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/cli/audio_io.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/cli/gateway_manager.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/cli/main.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/cli/push_to_talk.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/cli/realtime_client.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/computer/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/computer/approvals.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/computer/permissions.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/computer/safety.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/computer/tools.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/attachments/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/attachments/catalog.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/attachments/config.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/attachments/freeze.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/attachments/image_preview.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/attachments/resolve.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/attachments/store.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/attachments/text.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/attachments/tools.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/bootstrap.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/coding/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/coding/git_context_hook.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/coding/read_ledger_hook.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/coding/verification_gate.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/config/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/config/realtime_config.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/config/runtime_env.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/config/settings.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/config/snapshot.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/config/validation.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/config/yaml_loader.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/context/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/context/campaign_context.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/context/common.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/context/epoch.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/context/project_context.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/context/secret_egress.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/context/slash_skills.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/context/tool_output_policy.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/context/tool_result_ingress.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/context/tool_shapers.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/goals/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/goals/service.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/hooks/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/hooks/evidence_guard.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/layout.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/llm/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/llm/provider.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/llm/realtime_provider.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/llm/usage.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/lockfile_names.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/logging_utils.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/mcp/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/mcp/mcp_client.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/mcp/oauth_flow.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/mcp/ports_mcp.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/memory/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/memory/config.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/memory/hook.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/memory/ids.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/memory/ingest.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/memory/migrate_embedding.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/memory/migrate_layout.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/memory/observability.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/memory/outbox.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/memory/palace.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/memory/subsystem.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/memory/uri.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/memory/writer.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/messages/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/messages/convert_provider.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/messages/tool_integrity.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/messages/transform_context.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/path_safety.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/persistence/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/persistence/backends.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/persistence/branches.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/persistence/db.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/persistence/durable_runs.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/persistence/errors.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/persistence/firestore.indexes.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/persistence/firestore.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/persistence/firestore_scheduled_loops.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/persistence/goal_ledger.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/persistence/history.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/persistence/postgres.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/persistence/row_ids.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/persistence/runs.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/persistence/scheduled_loops.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/persistence/session_turn_locks.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/persistence/sqlite.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/persistence/sqlite_backend.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/persistence/thread_summary.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/persistence/transcript.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/persistence/transcript_reader.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/persistence/usage.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/persistence/usage_buckets.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/prompts/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/prompts/harness_prompt.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/prompts/headings.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/prompts/prompt.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/runtime/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/runtime/background_summary.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/runtime/chat_title.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/runtime/context_budget.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/runtime/doom_loop.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/runtime/events.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/runtime/history_compaction.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/runtime/history_rewrite.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/runtime/input_admission.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/runtime/loop.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/runtime/loop_hooks.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/runtime/loop_messages.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/runtime/loop_ports.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/runtime/loop_usage.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/runtime/provider_stream_mapper.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/runtime/realtime_loop.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/runtime/tool_batch.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/runtime/tool_dispatch.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/runtime/turn_loop.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/runtime/utterance_buffer.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/subagents/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/subagents/progress_publish.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/subagents/subagent_proto.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/subagents/subagent_worker.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/subagents/worker_pool.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/subprocess_groups.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/testing/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/testing/mocks_provider.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/testing/mocks_realtime_provider.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/tools/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/tools/ask_user.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/tools/background_jobs.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/tools/command_executor.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/tools/core_tool_executor.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/tools/fs_isolation.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/tools/gitignore.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/tools/grant_store.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/tools/inspector.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/tools/loop_inspector.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/tools/patch.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/tools/path_grant_inspector.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/tools/permission.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/tools/read_ledger.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/tools/sandbox_executor.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/tools/spill_inventory.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/tools/terminal.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/tools/text_normalize.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/tools/tool_hint.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/tools/tool_kind.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/tools/types.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/tools/workspace_service.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/types/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/types/content_blocks.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/types/interfaces.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/types/types_tools.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/verifier/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/verifier/actuator.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/verifier/binding.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/verifier/classify.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/verifier/inspector.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/verifier/intervention.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/verifier/judge.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/verifier/ledger.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/verifier/mailbox.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/verifier/match.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/verifier/port.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/verifier/rewrite_effects.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/verifier/severity.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/verifier/tracker.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/workspace/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/workspace/factory.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/workspace/gcs.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/workspace/local.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/workspace/protocol.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/workspace/s3.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/core/workspace_layout.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/bootstrap.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/main.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/pending_response_bus.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/app.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/deps.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/errors.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/guardrails.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/manager.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/metrics.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/routes.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/session.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/wire.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime_main.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/app.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/goal_routes.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/history_routes.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/loop_port.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/models.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/reload.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/reply_body.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/request_storage.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/routes.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/scheduler_routes.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/scheduler_wiring.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/session_bus.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/sse.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/workspace_layout.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/observability/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/observability/_state.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/observability/instrumentation.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/observability/propagation.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/observability/spans.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/observability/sqlite_exporter.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/providers/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/providers/_openai_compat.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/providers/_sdk_client.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/providers/_stream_marks.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/providers/_utils.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/providers/claude.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/providers/fireworks.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/providers/gemini.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/providers/gemini_live.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/providers/huggingface.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/providers/model_capabilities.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/providers/nvidia.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/providers/ollama.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/providers/openai.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/providers/openrouter.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/providers/pricing.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/providers/rejected_sampling.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/providers/request_budget.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/providers/sampling.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/providers/vertex_claude.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/scaffold/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/scheduler/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/scheduler/__main__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/scheduler/engine.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/scheduler/http_invoker.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/scheduler/interval.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/scheduler/tick_result.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/scheduler/worker.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/subagents/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/subagents/worker/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/subagents/worker/__main__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/todo_list/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/todo_list/hook.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/todo_list/store.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/todo_list/tool.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/web_search/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/web_search/backends/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/web_search/backends/duckduckgo.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/web_search/backends/firecrawl.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/web_search/backends/tavily.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/web_search/protocol.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/src/monkeybot/web_search/tool.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/backends.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/clock.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/context.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/conversations.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/data/attachments/tiny.jpg +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/data/attachments/tiny.png +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/data/attachments/with-text.pdf +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/data/attachments/without-text.pdf +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/executors.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/failure_ledger.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/failures/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/failures/__main__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/failures/catalog.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/failures/store.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/gateway.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/gateway_ports.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/history.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/hooks.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/inspectors.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/mcp.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/memory.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/palace.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/pending_bus.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/provider.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/py.typed +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/sandbox.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/scrub.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/sse.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/subagent_worker.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/verifier.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/testkit/web_search.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/conftest.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/conftest.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/goldens/prompts/harness_prompt.default.txt +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/goldens/prompts/harness_prompt.emission_terse.txt +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/goldens/prompts/harness_prompt.mcp_catalog.txt +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/goldens/prompts/harness_prompt.memory_off.txt +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/goldens/prompts/harness_prompt.sandbox_on.txt +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/goldens/prompts/harness_prompt.task_terse.txt +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/goldens/prompts/volatile_tail_parts.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/goldens/routes.txt +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/goldens/span_names.txt +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/goldens/sse/schema.json +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/goldens/tool_error_codes.txt +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/tables/config_precedence.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/tables/policy_decisions.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/tables/provider_error_mapping.yaml +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/test_catalog_pairing.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/test_config_matrix.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/test_harness_prompt_golden.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/test_migrations_replay.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/test_policy_decision_table.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/test_provider_conformance.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/test_realtime_divergence.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/test_route_table.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/test_scaffold_reexports.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/test_span_names.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/test_sse_schema.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/test_storage_parity.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/contracts/test_tool_error_catalog.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/cli/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/cli/test_gateway_manager.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/cli/test_main.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/cli/test_push_to_talk.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/cli/test_realtime_client.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/computer/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/computer/test_approvals.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/computer/test_computer_tools.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/computer/test_package_init.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/computer/test_path_policy.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/computer/test_permissions.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/computer/test_platform_gate.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/computer/test_subagent_exclusion.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/computer/test_wiring.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/conftest.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/attachments/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/attachments/test_attachment_freeze.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/attachments/test_attachment_store.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/attachments/test_image_preview.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/coding/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/coding/test_verification_gate.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/config/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/config/test_config_extensions.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/config/test_env_map_grep_gates.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/config/test_runtime_config_snapshot.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/config/test_runtime_env.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/context/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/context/test_context.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/context/test_context_epoch.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/context/test_project_context.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/context/test_secret_egress.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/context/test_skill_discovery_rules.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/context/test_slash_skills.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/context/test_tool_result_ingress.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/context/test_tool_shapers.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/fixtures/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/fixtures/bitbucket_dc_style_pr.diff +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/goals/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/goals/test_goal_persistence.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/goals/test_goals.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/hooks/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/hooks/test_evidence_guard.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/hooks/test_hooks.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/hooks/test_settlement.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/llm/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/llm/test_pricing.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/llm/test_provider_contract.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/mcp/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/mcp/test_mcp_client.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/mcp/test_mcp_oauth.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/mcp/test_mcp_oauth_regressions.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/memory/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/memory/test_memory_layout_migrate.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/memory/test_memory_scoping.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/memory/test_mempalace.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/memory/test_migrate_embedding.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/memory/test_review_fixes.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/messages/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/messages/test_gemini_history_replay.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/messages/test_message_pipeline.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/messages/test_tool_integrity.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/persistence/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/persistence/test_branch_store_backends.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/persistence/test_durable_runs.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/persistence/test_firestore_history.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/persistence/test_firestore_scheduled_loops.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/persistence/test_firestore_usage.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/persistence/test_goal_ledger.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/persistence/test_history.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/persistence/test_history_branches.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/persistence/test_history_row_ids.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/persistence/test_runs.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/persistence/test_scheduled_loops.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/persistence/test_session_branches_migration.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/persistence/test_session_turn_locks.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/persistence/test_storage_backends.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/persistence/test_thread_summary_wire.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/persistence/test_transcript.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/persistence/test_transcript_reader.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/persistence/test_usage.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/persistence/test_usage_migration.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/prompts/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/prompts/test_harness_prompt.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/prompts/test_prompt.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/runtime/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/runtime/test_background_summary.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/runtime/test_chat_title.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/runtime/test_context_budget.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/runtime/test_doom_loop.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/runtime/test_durable_events.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/runtime/test_empty_completion.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/runtime/test_events.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/runtime/test_history_compaction_split.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/runtime/test_input_admission.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/runtime/test_loop.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/runtime/test_loop_hooks.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/runtime/test_loop_observability.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/runtime/test_loop_transcript.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/runtime/test_provider_stream_mapper.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/runtime/test_realtime_loop.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/runtime/test_truncated_tool_batch.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/runtime/test_turn_session_id.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/runtime/test_utterance_buffer.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/subagents/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/subagents/test_child_tool_list.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/subagents/test_progress_publish.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/subagents/test_subagent_proto.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/subagents/test_subagent_trace_propagation.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/subagents/test_subagent_transcript.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/subagents/test_subagent_worker_paths.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/subagents/test_worker_pool.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/test_agent_layout.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/test_bootstrap.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/test_layout.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/test_logging_utils.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/test_path_safety.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/test_workspace_layout.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/testing/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/testing/test_mocks_realtime_provider.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/tools/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/tools/test_ask_user.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/tools/test_background_jobs.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/tools/test_core_tool_executor.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/tools/test_fs_isolation.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/tools/test_gitignore.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/tools/test_grant_store.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/tools/test_inspector.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/tools/test_patch.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/tools/test_path_grant_inspector.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/tools/test_permission.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/tools/test_replace_fuzzy.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/tools/test_run_command_parse.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/tools/test_sandbox_executor.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/tools/test_spill_dynamic.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/tools/test_spill_inventory.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/tools/test_terminal.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/tools/test_workspace_extra_read_roots.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/tools/test_workspace_symlinks.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/tools/test_workspace_write_scope.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/types/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/types/test_content_blocks.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/types/test_tool_def_schema.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/verifier/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/verifier/test_progress_tracker.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/verifier/test_verifier_binding.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/verifier/test_verifier_inspector.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/verifier/test_verifier_judge.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/verifier/test_verifier_mailbox_lifecycle.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/verifier/test_verifier_port.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/verifier/test_verifier_rewrite_effects.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/verifier/test_verifier_sticky_nudge.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/verifier/test_verifier_tracker.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/workspace/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/workspace/test_factory.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/workspace/test_local_storage.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/core/workspace/test_protocol_contract.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/realtime/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/realtime/test_app.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/realtime/test_deps.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/realtime/test_guardrails.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/realtime/test_manager.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/realtime/test_metrics.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/realtime/test_routes_client_text.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/realtime/test_session.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/realtime/test_wire.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/sse/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_attachments.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_chat_title_route.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_config_reload.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_create_session_model.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_gateway_runtime.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_history_routes.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_routes.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_scheduler_routes.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_session_bus.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_start_turn_setup_failure.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_transcript_wiring.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/test_otel_fastapi.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/test_otel_lifespan.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/test_pending_response_endpoints.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/test_realtime_main.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/test_resolve_provider.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/test_sdk_client_shutdown.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/test_sse_events.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/gateway/test_subagent_event_publisher.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/observability/conftest.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/observability/test_init.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/observability/test_instrumentation.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/observability/test_loop_hook_spans.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/observability/test_propagation.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/observability/test_span_contract.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/observability/test_spans.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/observability/test_sqlite_exporter.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/observability/test_truncate.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/observability/test_turn_complete_trace.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/packaging/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/packaging/test_cold_start.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/packaging/test_packaging_config.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/packaging/test_release_script.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/conftest.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/test_anthropic_cache.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/test_anthropic_history.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/test_bedrock_estimate.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/test_connection_warm.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/test_fireworks.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/test_gemini_history.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/test_gemini_live.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/test_gemini_usage.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/test_huggingface.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/test_model_capabilities.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/test_nvidia.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/test_ollama.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/test_openai_byte_budget.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/test_openai_compat_usage.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/test_openai_history.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/test_pricing.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/test_request_budget.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/test_safe_parse_tool_args.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/test_sampling.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/test_sdk_client_reuse.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/test_sonnet5_sampling.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/test_source_grep_gates.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/test_tiktoken_encoding.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/providers/test_vertex_claude_history.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/scheduler/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/scheduler/test_engine.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/scheduler/test_interval.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/skills/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/skills/test_generate_image_script.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/testkit/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/testkit/test_clock.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/testkit/test_failure_ledger.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/testkit/test_failures_cli.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/testkit/test_fake_history.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/testkit/test_scripted_provider.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/testkit/test_scrub.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/testkit/test_sse_reader.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/todo_list/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/todo_list/test_todo_list.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/web_search/__init__.py +0 -0
- {monkeybot-3.11.1 → monkeybot-3.12.0}/tests/unit/web_search/test_web_search.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
* @VibeEffect
|
|
@@ -6,7 +6,13 @@ 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
|
|
10
16
|
|
|
11
17
|
### Changed
|
|
12
18
|
|
|
@@ -10,7 +10,11 @@ from pathlib import Path
|
|
|
10
10
|
from monkeybot.core.tools.core_tool_executor import CoreToolExecutor
|
|
11
11
|
from regression.drivers.bundles.protocol import Bundle, LoopDriverError, RunCtx
|
|
12
12
|
from regression.drivers.support.paths import _FIXTURE_PREFIXES, _WORKSPACE_ROOTS
|
|
13
|
-
from regression.fixtures.build import
|
|
13
|
+
from regression.fixtures.build import (
|
|
14
|
+
HOSTILE_SOURCE,
|
|
15
|
+
overlay_hostile,
|
|
16
|
+
refresh_seeded_attachment_clocks,
|
|
17
|
+
)
|
|
14
18
|
from regression.schema.scenario import Scenario
|
|
15
19
|
from regression.schema.steps import TouchFileStep
|
|
16
20
|
|
|
@@ -114,6 +118,9 @@ def _materialize_workspace(scenario: Scenario, workdir: Path) -> tuple[Path | No
|
|
|
114
118
|
hostile = hostile or _is_hostile_source(source)
|
|
115
119
|
if hostile:
|
|
116
120
|
_overlay_hostile_workspace(workspace, workdir)
|
|
121
|
+
# Seeded attachments carry a committed created_at_ms. Refresh after the
|
|
122
|
+
# copy so the store's wall-clock TTL does not expire the fixture.
|
|
123
|
+
refresh_seeded_attachment_clocks(workspace)
|
|
117
124
|
if not wants_tree:
|
|
118
125
|
return workspace, None
|
|
119
126
|
pristine = workdir / "pristine"
|
|
@@ -16,8 +16,10 @@ copying the committed tree (for example when ``workspace_fixture`` is
|
|
|
16
16
|
|
|
17
17
|
from __future__ import annotations
|
|
18
18
|
|
|
19
|
+
import json
|
|
19
20
|
import os
|
|
20
21
|
import shutil
|
|
22
|
+
import time
|
|
21
23
|
from dataclasses import dataclass
|
|
22
24
|
from pathlib import Path
|
|
23
25
|
|
|
@@ -131,3 +133,33 @@ def build(dest: Path) -> BuiltFixtures:
|
|
|
131
133
|
link_target=link_target.resolve(),
|
|
132
134
|
skill_target=skill_target.resolve(),
|
|
133
135
|
)
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
def refresh_seeded_attachment_clocks(workspace: Path, *, now_ms: int | None = None) -> None:
|
|
139
|
+
"""Stamp copied attachment sidecars as just stored.
|
|
140
|
+
|
|
141
|
+
TTL is wall-clock (``ATTACHMENT_TTL_HOURS``, default 48). A committed
|
|
142
|
+
``created_at_ms`` expires the fixture even though the bytes are still the
|
|
143
|
+
scenario's input. Symlinked sidecars are left alone so a leaf that points
|
|
144
|
+
outside the workspace is not rewritten.
|
|
145
|
+
"""
|
|
146
|
+
root = workspace / ".monkeybot" / "attachments"
|
|
147
|
+
if not root.is_dir() or root.is_symlink():
|
|
148
|
+
return
|
|
149
|
+
stamped = int(time.time() * 1000) if now_ms is None else now_ms
|
|
150
|
+
root_resolved = root.resolve()
|
|
151
|
+
for meta_path in root.rglob("*.json"):
|
|
152
|
+
if meta_path.is_symlink() or not meta_path.is_file():
|
|
153
|
+
continue
|
|
154
|
+
try:
|
|
155
|
+
meta_path.resolve().relative_to(root_resolved)
|
|
156
|
+
except ValueError:
|
|
157
|
+
continue
|
|
158
|
+
try:
|
|
159
|
+
raw = json.loads(meta_path.read_text(encoding="utf-8"))
|
|
160
|
+
except (OSError, json.JSONDecodeError):
|
|
161
|
+
continue
|
|
162
|
+
if not isinstance(raw, dict) or "created_at_ms" not in raw:
|
|
163
|
+
continue
|
|
164
|
+
raw["created_at_ms"] = stamped
|
|
165
|
+
meta_path.write_text(json.dumps(raw), encoding="utf-8")
|
|
@@ -51,6 +51,7 @@ from regression.fixtures.build import (
|
|
|
51
51
|
SKILLS_SOURCE,
|
|
52
52
|
BuiltFixtures,
|
|
53
53
|
build,
|
|
54
|
+
refresh_seeded_attachment_clocks,
|
|
54
55
|
)
|
|
55
56
|
|
|
56
57
|
REPO = Path(__file__).resolve().parents[2]
|
|
@@ -352,6 +353,26 @@ def test_attachments_match_their_kinds() -> None:
|
|
|
352
353
|
assert _extract_pdf_text_sync(base64.b64encode(without_text).decode(), 1000) is None
|
|
353
354
|
|
|
354
355
|
|
|
356
|
+
def test_seeded_attachment_clocks_are_restamped_on_the_copy(tmp_path: Path) -> None:
|
|
357
|
+
session = tmp_path / ".monkeybot" / "attachments" / "loop-scenario"
|
|
358
|
+
session.mkdir(parents=True)
|
|
359
|
+
meta = session / "att-pdf.json"
|
|
360
|
+
meta.write_text(
|
|
361
|
+
json.dumps({"attachment_id": "att-pdf", "created_at_ms": 1}),
|
|
362
|
+
encoding="utf-8",
|
|
363
|
+
)
|
|
364
|
+
outside = tmp_path / "outside.json"
|
|
365
|
+
outside.write_text(json.dumps({"created_at_ms": 1}), encoding="utf-8")
|
|
366
|
+
(session / "att-link.json").symlink_to(outside)
|
|
367
|
+
(session / "note.json").write_text(json.dumps({"filename": "x"}), encoding="utf-8")
|
|
368
|
+
|
|
369
|
+
refresh_seeded_attachment_clocks(tmp_path, now_ms=1234)
|
|
370
|
+
|
|
371
|
+
assert json.loads(meta.read_text(encoding="utf-8"))["created_at_ms"] == 1234
|
|
372
|
+
assert json.loads(outside.read_text(encoding="utf-8"))["created_at_ms"] == 1
|
|
373
|
+
assert "created_at_ms" not in json.loads((session / "note.json").read_text(encoding="utf-8"))
|
|
374
|
+
|
|
375
|
+
|
|
355
376
|
def test_subagent_tapes_are_present() -> None:
|
|
356
377
|
root = FIXTURES / "subagent_tapes"
|
|
357
378
|
names = sorted(path.name for path in root.glob("*.ndjson"))
|
|
@@ -17,6 +17,7 @@ from typing import Any, Literal
|
|
|
17
17
|
import yaml
|
|
18
18
|
from pydantic import BaseModel, Field
|
|
19
19
|
|
|
20
|
+
from regression.fixtures.build import refresh_seeded_attachment_clocks
|
|
20
21
|
from regression.schema.scenario import Scenario as SchemaScenario
|
|
21
22
|
from regression.schema.scenario import load_scenario
|
|
22
23
|
from regression.t4.models import Scenario
|
|
@@ -217,6 +218,7 @@ def materialize_workspace(
|
|
|
217
218
|
if not overlay_dir.is_dir():
|
|
218
219
|
raise FileNotFoundError(f"workspace_overlay not found: {overlay_dir}")
|
|
219
220
|
shutil.copytree(overlay_dir, dest, dirs_exist_ok=True)
|
|
221
|
+
refresh_seeded_attachment_clocks(dest)
|
|
220
222
|
|
|
221
223
|
def sub(text: str) -> str:
|
|
222
224
|
return text.replace("{workspace_subdir}", subdir)
|
|
@@ -8,7 +8,7 @@ import json
|
|
|
8
8
|
import logging
|
|
9
9
|
import re
|
|
10
10
|
from collections.abc import AsyncIterator, Iterator, Sequence
|
|
11
|
-
from typing import Any
|
|
11
|
+
from typing import Any, Literal
|
|
12
12
|
|
|
13
13
|
from monkeybot.core.llm.provider import (
|
|
14
14
|
Done,
|
|
@@ -45,7 +45,11 @@ _log = logging.getLogger(__name__)
|
|
|
45
45
|
|
|
46
46
|
_EMPTY_TOOL_RESULT = "(no output)"
|
|
47
47
|
_UNSUPPORTED_FIELD_RE = re.compile(r"doesn't support the (\w+) field", re.IGNORECASE)
|
|
48
|
+
_CACHE_BLAME_RE = re.compile(r"cache\s*point|caching", re.IGNORECASE)
|
|
48
49
|
_SENTINEL = object()
|
|
50
|
+
_MAX_CONVERSE_CACHE_POINTS = 4
|
|
51
|
+
_CACHE_POINT_BLOCK: dict[str, Any] = {"cachePoint": {"type": "default"}}
|
|
52
|
+
_CACHEPOINT_UNSUPPORTED: set[str] = set()
|
|
49
53
|
_DOC_FORMATS = {
|
|
50
54
|
"pdf": "pdf",
|
|
51
55
|
"csv": "csv",
|
|
@@ -254,6 +258,118 @@ def messages_to_converse(messages: Sequence[Message]) -> tuple[str, list[dict[st
|
|
|
254
258
|
return system, out
|
|
255
259
|
|
|
256
260
|
|
|
261
|
+
def _copy_content_blocks(blocks: list[Any]) -> list[Any]:
|
|
262
|
+
return [dict(b) if isinstance(b, dict) else b for b in blocks]
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
def _append_cache_point_to_system(system: list[dict[str, Any]]) -> list[dict[str, Any]]:
|
|
266
|
+
return _copy_content_blocks(system) + [dict(_CACHE_POINT_BLOCK)]
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
def _append_cache_point_to_tools(tool_config: dict[str, Any]) -> dict[str, Any]:
|
|
270
|
+
tools = tool_config.get("tools")
|
|
271
|
+
if not isinstance(tools, list) or not tools:
|
|
272
|
+
return dict(tool_config)
|
|
273
|
+
return {
|
|
274
|
+
**tool_config,
|
|
275
|
+
"tools": _copy_content_blocks(tools) + [dict(_CACHE_POINT_BLOCK)],
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
def _append_cache_points_to_last_user_messages(
|
|
280
|
+
messages: list[dict[str, Any]],
|
|
281
|
+
*,
|
|
282
|
+
max_points: int,
|
|
283
|
+
) -> list[dict[str, Any]]:
|
|
284
|
+
if max_points < 1:
|
|
285
|
+
return [
|
|
286
|
+
dict(m, content=_copy_content_blocks(list(m.get("content") or []))) for m in messages
|
|
287
|
+
]
|
|
288
|
+
user_indices = [i for i, m in enumerate(messages) if m.get("role") == "user"]
|
|
289
|
+
targets = set(user_indices[-2:])
|
|
290
|
+
out: list[dict[str, Any]] = []
|
|
291
|
+
budget = max_points
|
|
292
|
+
for i, msg in enumerate(messages):
|
|
293
|
+
content = _copy_content_blocks(list(msg.get("content") or []))
|
|
294
|
+
if i in targets and budget > 0:
|
|
295
|
+
content.append(dict(_CACHE_POINT_BLOCK))
|
|
296
|
+
budget -= 1
|
|
297
|
+
out.append({"role": msg["role"], "content": content})
|
|
298
|
+
return out
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
def _apply_cache_points(kwargs: dict[str, Any]) -> dict[str, Any]:
|
|
302
|
+
"""Insert Converse ``cachePoint`` blocks (max 4). Returns a shallow copy of ``kwargs``."""
|
|
303
|
+
out = dict(kwargs)
|
|
304
|
+
budget = _MAX_CONVERSE_CACHE_POINTS
|
|
305
|
+
|
|
306
|
+
system = out.get("system")
|
|
307
|
+
if isinstance(system, list) and system and budget > 0:
|
|
308
|
+
out["system"] = _append_cache_point_to_system(system)
|
|
309
|
+
budget -= 1
|
|
310
|
+
|
|
311
|
+
tool_config = out.get("toolConfig")
|
|
312
|
+
if isinstance(tool_config, dict) and budget > 0:
|
|
313
|
+
tools = tool_config.get("tools")
|
|
314
|
+
if isinstance(tools, list) and tools:
|
|
315
|
+
out["toolConfig"] = _append_cache_point_to_tools(tool_config)
|
|
316
|
+
budget -= 1
|
|
317
|
+
|
|
318
|
+
messages = out.get("messages")
|
|
319
|
+
if isinstance(messages, list) and budget > 0:
|
|
320
|
+
out["messages"] = _append_cache_points_to_last_user_messages(messages, max_points=budget)
|
|
321
|
+
|
|
322
|
+
return out
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
def _strip_cache_points(kwargs: dict[str, Any]) -> bool:
|
|
326
|
+
"""Remove every ``cachePoint`` block from kwargs. Returns True if any were removed."""
|
|
327
|
+
removed = False
|
|
328
|
+
|
|
329
|
+
system = kwargs.get("system")
|
|
330
|
+
if isinstance(system, list):
|
|
331
|
+
filtered = [b for b in system if not (isinstance(b, dict) and "cachePoint" in b)]
|
|
332
|
+
if len(filtered) != len(system):
|
|
333
|
+
removed = True
|
|
334
|
+
kwargs["system"] = filtered
|
|
335
|
+
|
|
336
|
+
tool_config = kwargs.get("toolConfig")
|
|
337
|
+
if isinstance(tool_config, dict):
|
|
338
|
+
tools = tool_config.get("tools")
|
|
339
|
+
if isinstance(tools, list):
|
|
340
|
+
filtered_tools = [t for t in tools if not (isinstance(t, dict) and "cachePoint" in t)]
|
|
341
|
+
if len(filtered_tools) != len(tools):
|
|
342
|
+
removed = True
|
|
343
|
+
kwargs["toolConfig"] = {**tool_config, "tools": filtered_tools}
|
|
344
|
+
|
|
345
|
+
messages = kwargs.get("messages")
|
|
346
|
+
if isinstance(messages, list):
|
|
347
|
+
new_messages: list[dict[str, Any]] = []
|
|
348
|
+
for msg in messages:
|
|
349
|
+
if not isinstance(msg, dict):
|
|
350
|
+
new_messages.append(msg)
|
|
351
|
+
continue
|
|
352
|
+
content = msg.get("content")
|
|
353
|
+
if isinstance(content, list):
|
|
354
|
+
filtered_content = [
|
|
355
|
+
b for b in content if not (isinstance(b, dict) and "cachePoint" in b)
|
|
356
|
+
]
|
|
357
|
+
if len(filtered_content) != len(content):
|
|
358
|
+
removed = True
|
|
359
|
+
new_messages.append({**msg, "content": filtered_content})
|
|
360
|
+
continue
|
|
361
|
+
new_messages.append(dict(msg))
|
|
362
|
+
kwargs["messages"] = new_messages
|
|
363
|
+
|
|
364
|
+
return removed
|
|
365
|
+
|
|
366
|
+
|
|
367
|
+
def _exc_blames_cache(exc: BaseException) -> bool:
|
|
368
|
+
if "validation" not in type(exc).__name__.lower():
|
|
369
|
+
return False
|
|
370
|
+
return _CACHE_BLAME_RE.search(str(exc)) is not None
|
|
371
|
+
|
|
372
|
+
|
|
257
373
|
def converse_request_kwargs(
|
|
258
374
|
*,
|
|
259
375
|
model: str,
|
|
@@ -261,13 +377,13 @@ def converse_request_kwargs(
|
|
|
261
377
|
tools: Sequence[ToolDef],
|
|
262
378
|
max_tokens: int,
|
|
263
379
|
temperature: float,
|
|
380
|
+
cache_retention: Literal["none", "short", "long"] = "short",
|
|
264
381
|
) -> dict[str, Any]:
|
|
265
382
|
"""Build ``converse_stream`` kwargs. Always sets ``inferenceConfig.maxTokens``.
|
|
266
383
|
|
|
267
|
-
``
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
means caching was never requested, not that the model refused a cache hit.
|
|
384
|
+
When ``cache_retention`` is not ``none``, inserts Converse ``cachePoint`` blocks
|
|
385
|
+
on system, tools, and the last two user turns (Bedrock max 4). ``short`` and
|
|
386
|
+
``long`` both use the default 5-minute Converse cache tier.
|
|
271
387
|
|
|
272
388
|
``thinking_budget`` is not forwarded on this path — Converse reasoning is not
|
|
273
389
|
requested via ``additionalModelRequestFields`` yet; the mapper only round-trips
|
|
@@ -287,6 +403,8 @@ def converse_request_kwargs(
|
|
|
287
403
|
tool_config = converse_tools(tools)
|
|
288
404
|
if tool_config is not None:
|
|
289
405
|
kwargs["toolConfig"] = tool_config
|
|
406
|
+
if cache_retention != "none":
|
|
407
|
+
kwargs = _apply_cache_points(kwargs)
|
|
290
408
|
return kwargs
|
|
291
409
|
|
|
292
410
|
|
|
@@ -549,19 +667,44 @@ async def iter_converse_stream(
|
|
|
549
667
|
) -> AsyncIterator[ProviderEvent]:
|
|
550
668
|
"""Stream ``converse_stream``, retrying once a rejected inference field is stripped."""
|
|
551
669
|
kwargs = _copy_stream_kwargs(stream_kwargs)
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
kwargs
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
670
|
+
model_id = str(kwargs.get("modelId") or "")
|
|
671
|
+
if model_id in _CACHEPOINT_UNSUPPORTED:
|
|
672
|
+
_strip_cache_points(kwargs)
|
|
673
|
+
|
|
674
|
+
async def _run_param_retry() -> AsyncIterator[ProviderEvent]:
|
|
675
|
+
async for event in iter_stream_with_param_retry(
|
|
676
|
+
lambda kw: _stream_converse_once(client, kw, provider=provider),
|
|
677
|
+
kwargs,
|
|
678
|
+
strip_rejected=_strip_unsupported_inference,
|
|
679
|
+
max_attempts=2,
|
|
680
|
+
provider=provider,
|
|
681
|
+
error_message=error_message,
|
|
682
|
+
model=kwargs.get("modelId"),
|
|
683
|
+
n_messages=n_messages,
|
|
684
|
+
n_tools=n_tools,
|
|
685
|
+
retry_message="converse stream rejected params, retrying without them %s",
|
|
686
|
+
):
|
|
687
|
+
yield event
|
|
688
|
+
|
|
689
|
+
started = False
|
|
690
|
+
try:
|
|
691
|
+
async for event in _run_param_retry():
|
|
692
|
+
started = True
|
|
693
|
+
yield event
|
|
694
|
+
except Exception as exc:
|
|
695
|
+
if started or not _exc_blames_cache(exc):
|
|
696
|
+
raise
|
|
697
|
+
if not _strip_cache_points(kwargs):
|
|
698
|
+
raise
|
|
699
|
+
if model_id and model_id not in _CACHEPOINT_UNSUPPORTED:
|
|
700
|
+
_log.warning(
|
|
701
|
+
"converse cachePoint rejected, retrying without caching %s",
|
|
702
|
+
kv(provider=provider, model=model_id),
|
|
703
|
+
)
|
|
704
|
+
if model_id:
|
|
705
|
+
_CACHEPOINT_UNSUPPORTED.add(model_id)
|
|
706
|
+
async for event in _run_param_retry():
|
|
707
|
+
yield event
|
|
565
708
|
|
|
566
709
|
|
|
567
710
|
def _estimate_block(block: ContentBlock) -> dict[str, Any]:
|
|
@@ -179,12 +179,14 @@ class BedrockProvider:
|
|
|
179
179
|
"Bedrock dispatch %s",
|
|
180
180
|
kv(provider="bedrock", model=model, path="converse"),
|
|
181
181
|
)
|
|
182
|
+
retention = hints.cache_retention if hints is not None else "short"
|
|
182
183
|
kwargs = converse_request_kwargs(
|
|
183
184
|
model=model,
|
|
184
185
|
messages=messages,
|
|
185
186
|
tools=tools,
|
|
186
187
|
max_tokens=self._max_tokens,
|
|
187
188
|
temperature=self._temperature,
|
|
189
|
+
cache_retention=retention,
|
|
188
190
|
)
|
|
189
191
|
client = await self._runtime_client()
|
|
190
192
|
async for event in iter_converse_stream(
|
|
@@ -51,6 +51,28 @@ _NOVA = "us.amazon.nova-pro-v1:0"
|
|
|
51
51
|
_CLAUDE = "us.anthropic.claude-sonnet-4-6"
|
|
52
52
|
|
|
53
53
|
|
|
54
|
+
def _count_cache_points(obj: object) -> int:
|
|
55
|
+
n = 0
|
|
56
|
+
if isinstance(obj, dict):
|
|
57
|
+
if "cachePoint" in obj:
|
|
58
|
+
n += 1
|
|
59
|
+
for value in obj.values():
|
|
60
|
+
n += _count_cache_points(value)
|
|
61
|
+
elif isinstance(obj, list):
|
|
62
|
+
for item in obj:
|
|
63
|
+
n += _count_cache_points(item)
|
|
64
|
+
return n
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def _long_user_history(n_user_turns: int) -> list[Message]:
|
|
68
|
+
messages: list[Message] = [Message.text("system", "You are helpful.")]
|
|
69
|
+
for i in range(n_user_turns):
|
|
70
|
+
messages.append(Message.text("user", f"turn-{i}"))
|
|
71
|
+
messages.append(Message.text("assistant", f"reply-{i}"))
|
|
72
|
+
messages.append(Message.text("user", "latest"))
|
|
73
|
+
return messages
|
|
74
|
+
|
|
75
|
+
|
|
54
76
|
@pytest.mark.parametrize(
|
|
55
77
|
("model_id", "vendor"),
|
|
56
78
|
[
|
|
@@ -111,6 +133,72 @@ def test_grok_kwargs_omit_temperature_nova_keeps_it() -> None:
|
|
|
111
133
|
assert supports_param(_NOVA, "temperature") is True
|
|
112
134
|
|
|
113
135
|
|
|
136
|
+
def test_converse_cache_points_default_retention() -> None:
|
|
137
|
+
messages = [
|
|
138
|
+
Message.text("system", "You are helpful."),
|
|
139
|
+
Message.text("user", "first"),
|
|
140
|
+
Message.text("assistant", "ok"),
|
|
141
|
+
Message.text("user", "second"),
|
|
142
|
+
]
|
|
143
|
+
kwargs = converse_request_kwargs(
|
|
144
|
+
model=_NOVA,
|
|
145
|
+
messages=messages,
|
|
146
|
+
tools=[_ECHO],
|
|
147
|
+
max_tokens=256,
|
|
148
|
+
temperature=0.2,
|
|
149
|
+
)
|
|
150
|
+
assert kwargs["system"][-1] == {"cachePoint": {"type": "default"}}
|
|
151
|
+
assert kwargs["toolConfig"]["tools"][-1] == {"cachePoint": {"type": "default"}}
|
|
152
|
+
user_msgs = [m for m in kwargs["messages"] if m["role"] == "user"]
|
|
153
|
+
assert user_msgs[-2]["content"][-1] == {"cachePoint": {"type": "default"}}
|
|
154
|
+
assert user_msgs[-1]["content"][-1] == {"cachePoint": {"type": "default"}}
|
|
155
|
+
assert _count_cache_points(kwargs) == 4
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
def test_converse_cache_points_cap_with_long_history() -> None:
|
|
159
|
+
kwargs = converse_request_kwargs(
|
|
160
|
+
model=_GROK,
|
|
161
|
+
messages=_long_user_history(20),
|
|
162
|
+
tools=[_ECHO],
|
|
163
|
+
max_tokens=256,
|
|
164
|
+
temperature=0.2,
|
|
165
|
+
)
|
|
166
|
+
assert _count_cache_points(kwargs) == 4
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
def test_converse_cache_retention_none() -> None:
|
|
170
|
+
kwargs = converse_request_kwargs(
|
|
171
|
+
model=_NOVA,
|
|
172
|
+
messages=[
|
|
173
|
+
Message.text("system", "sys"),
|
|
174
|
+
Message.text("user", "hi"),
|
|
175
|
+
],
|
|
176
|
+
tools=[_ECHO],
|
|
177
|
+
max_tokens=64,
|
|
178
|
+
temperature=0.2,
|
|
179
|
+
cache_retention="none",
|
|
180
|
+
)
|
|
181
|
+
assert _count_cache_points(kwargs) == 0
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
def test_converse_request_kwargs_does_not_mutate_messages() -> None:
|
|
185
|
+
messages = [
|
|
186
|
+
Message.text("system", "sys"),
|
|
187
|
+
Message.text("user", "one"),
|
|
188
|
+
Message.text("assistant", "two"),
|
|
189
|
+
Message.text("user", "three"),
|
|
190
|
+
]
|
|
191
|
+
before = repr(messages)
|
|
192
|
+
converse_request_kwargs(
|
|
193
|
+
model=_NOVA,
|
|
194
|
+
messages=messages,
|
|
195
|
+
tools=[_ECHO],
|
|
196
|
+
max_tokens=64,
|
|
197
|
+
temperature=0.2,
|
|
198
|
+
)
|
|
199
|
+
assert repr(messages) == before
|
|
200
|
+
|
|
201
|
+
|
|
114
202
|
def test_tool_round_trip_tooluse_and_toolresult() -> None:
|
|
115
203
|
messages = [
|
|
116
204
|
Message.text("user", "hi"),
|
|
@@ -476,6 +564,131 @@ async def test_retry_strips_temperature_after_validation_exception() -> None:
|
|
|
476
564
|
assert any(isinstance(e, TextDelta) and e.text == "ok" for e in events)
|
|
477
565
|
|
|
478
566
|
|
|
567
|
+
class CacheValidationError(Exception):
|
|
568
|
+
"""Stand-in for Bedrock ValidationException naming."""
|
|
569
|
+
|
|
570
|
+
|
|
571
|
+
@pytest.mark.asyncio
|
|
572
|
+
async def test_iter_converse_stream_retries_without_cache_points(
|
|
573
|
+
monkeypatch: pytest.MonkeyPatch,
|
|
574
|
+
) -> None:
|
|
575
|
+
monkeypatch.setattr(
|
|
576
|
+
"monkeybot.providers._bedrock_converse._CACHEPOINT_UNSUPPORTED",
|
|
577
|
+
set(),
|
|
578
|
+
)
|
|
579
|
+
calls: list[dict[str, object]] = []
|
|
580
|
+
|
|
581
|
+
def converse_stream(**kwargs: object) -> dict[str, object]:
|
|
582
|
+
calls.append(dict(kwargs))
|
|
583
|
+
if _count_cache_points(kwargs) > 0:
|
|
584
|
+
raise CacheValidationError("cachePoint is not supported for this model")
|
|
585
|
+
return {"stream": iter(_text_stream())}
|
|
586
|
+
|
|
587
|
+
client = MagicMock()
|
|
588
|
+
client.converse_stream.side_effect = converse_stream
|
|
589
|
+
stream_kwargs = converse_request_kwargs(
|
|
590
|
+
model=_GROK,
|
|
591
|
+
messages=[Message.text("system", "sys"), Message.text("user", "hi")],
|
|
592
|
+
tools=[_ECHO],
|
|
593
|
+
max_tokens=32,
|
|
594
|
+
temperature=0.2,
|
|
595
|
+
)
|
|
596
|
+
assert _count_cache_points(stream_kwargs) > 0
|
|
597
|
+
events = [
|
|
598
|
+
e
|
|
599
|
+
async for e in iter_converse_stream(
|
|
600
|
+
client,
|
|
601
|
+
stream_kwargs,
|
|
602
|
+
provider="bedrock",
|
|
603
|
+
error_message="err %s",
|
|
604
|
+
)
|
|
605
|
+
]
|
|
606
|
+
assert len(calls) == 2
|
|
607
|
+
assert _count_cache_points(calls[0]) > 0
|
|
608
|
+
assert _count_cache_points(calls[1]) == 0
|
|
609
|
+
assert any(isinstance(e, TextDelta) and e.text == "ok" for e in events)
|
|
610
|
+
|
|
611
|
+
calls.clear()
|
|
612
|
+
async for _ in iter_converse_stream(
|
|
613
|
+
client,
|
|
614
|
+
stream_kwargs,
|
|
615
|
+
provider="bedrock",
|
|
616
|
+
error_message="err %s",
|
|
617
|
+
):
|
|
618
|
+
pass
|
|
619
|
+
assert len(calls) == 1
|
|
620
|
+
assert _count_cache_points(calls[0]) == 0
|
|
621
|
+
|
|
622
|
+
|
|
623
|
+
@pytest.mark.asyncio
|
|
624
|
+
async def test_iter_converse_stream_reraises_cache_error_mid_stream() -> None:
|
|
625
|
+
class _Stream:
|
|
626
|
+
def __init__(self) -> None:
|
|
627
|
+
self._events = iter(
|
|
628
|
+
[
|
|
629
|
+
{"contentBlockDelta": {"delta": {"text": "partial"}}},
|
|
630
|
+
]
|
|
631
|
+
)
|
|
632
|
+
|
|
633
|
+
def __iter__(self) -> _Stream:
|
|
634
|
+
return self
|
|
635
|
+
|
|
636
|
+
def __next__(self) -> dict[str, object]:
|
|
637
|
+
try:
|
|
638
|
+
return next(self._events)
|
|
639
|
+
except StopIteration as exc:
|
|
640
|
+
raise CacheValidationError("invalid cachePoint block") from exc
|
|
641
|
+
|
|
642
|
+
client = MagicMock()
|
|
643
|
+
client.converse_stream.return_value = {"stream": _Stream()}
|
|
644
|
+
with pytest.raises(CacheValidationError, match="cachePoint"):
|
|
645
|
+
async for _ in iter_converse_stream(
|
|
646
|
+
client,
|
|
647
|
+
converse_request_kwargs(
|
|
648
|
+
model=_GROK,
|
|
649
|
+
messages=[Message.text("user", "hi")],
|
|
650
|
+
tools=[],
|
|
651
|
+
max_tokens=8,
|
|
652
|
+
temperature=0.2,
|
|
653
|
+
),
|
|
654
|
+
provider="bedrock",
|
|
655
|
+
error_message="err %s",
|
|
656
|
+
):
|
|
657
|
+
pass
|
|
658
|
+
|
|
659
|
+
|
|
660
|
+
@pytest.mark.asyncio
|
|
661
|
+
async def test_converse_usage_maps_cache_token_fields() -> None:
|
|
662
|
+
stream_events: list[dict[str, object]] = [
|
|
663
|
+
{"messageStop": {"stopReason": "end_turn"}},
|
|
664
|
+
{
|
|
665
|
+
"metadata": {
|
|
666
|
+
"usage": {
|
|
667
|
+
"inputTokens": 10,
|
|
668
|
+
"outputTokens": 3,
|
|
669
|
+
"cacheReadInputTokens": 80,
|
|
670
|
+
"cacheWriteInputTokens": 20,
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
},
|
|
674
|
+
]
|
|
675
|
+
client = MagicMock()
|
|
676
|
+
client.converse_stream.return_value = {"stream": iter(stream_events)}
|
|
677
|
+
events = [
|
|
678
|
+
e
|
|
679
|
+
async for e in iter_converse_stream(
|
|
680
|
+
client,
|
|
681
|
+
{"modelId": _GROK, "messages": [], "inferenceConfig": {"maxTokens": 8}},
|
|
682
|
+
provider="bedrock",
|
|
683
|
+
error_message="err %s",
|
|
684
|
+
)
|
|
685
|
+
]
|
|
686
|
+
usage = next(e for e in events if isinstance(e, UsageEvent))
|
|
687
|
+
assert usage.cache_read_tokens == 80
|
|
688
|
+
assert usage.cache_creation_tokens == 20
|
|
689
|
+
assert usage.cached_tokens == 100
|
|
690
|
+
|
|
691
|
+
|
|
479
692
|
@pytest.mark.asyncio
|
|
480
693
|
async def test_unexpected_stream_event_is_logged(caplog: pytest.LogCaptureFixture) -> None:
|
|
481
694
|
client = MagicMock()
|
|
@@ -2453,7 +2453,7 @@ wheels = [
|
|
|
2453
2453
|
|
|
2454
2454
|
[[package]]
|
|
2455
2455
|
name = "monkeybot"
|
|
2456
|
-
version = "3.11.
|
|
2456
|
+
version = "3.11.1"
|
|
2457
2457
|
source = { editable = "." }
|
|
2458
2458
|
dependencies = [
|
|
2459
2459
|
{ name = "aiosqlite" },
|
|
@@ -2717,7 +2717,7 @@ dev = [{ name = "pytest", specifier = ">=8.0.0" }]
|
|
|
2717
2717
|
|
|
2718
2718
|
[[package]]
|
|
2719
2719
|
name = "monkeybot-cli"
|
|
2720
|
-
version = "0.
|
|
2720
|
+
version = "0.12.0"
|
|
2721
2721
|
source = { editable = "cli" }
|
|
2722
2722
|
dependencies = [
|
|
2723
2723
|
{ name = "httpx" },
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|