monkeybot 3.12.0__tar.gz → 3.13.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 → monkeybot-3.13.0}/CHANGELOG.md +16 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/CONTRIBUTING.md +1 -1
- {monkeybot-3.12.0 → monkeybot-3.13.0}/PKG-INFO +7 -3
- {monkeybot-3.12.0 → monkeybot-3.13.0}/README.md +6 -2
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/skills/monkeybot/SKILL.md +8 -4
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/chat_session.py +101 -4
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/commands/doctor.py +13 -1
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/scaffold_defaults/image-generator/SKILL.md +1 -1
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/tests/test_chat_session.py +24 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/tests/test_doctor.py +6 -2
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/cloud-deployment-design.md +1 -5
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/deploy-pattern-d-realtime.md +2 -1
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/features.md +22 -27
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/getting-started.md +6 -2
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/observability-runbook.md +4 -1
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/testing.md +15 -8
- {monkeybot-3.12.0 → monkeybot-3.13.0}/examples/skills/image-generator/SKILL.md +1 -1
- {monkeybot-3.12.0 → monkeybot-3.13.0}/pyproject.toml +1 -1
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/drivers/bundles/session.py +13 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/06-coverage/6W-ops.md +1 -1
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/appendices.md +2 -2
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/schema/assertions.py +13 -4
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/gateway/test_cases.py +168 -0
- monkeybot-3.13.0/regression/t2/loop/scenarios/file/file_change_absent_on_error.yaml +35 -0
- monkeybot-3.13.0/regression/t2/loop/scenarios/file/file_change_binary.yaml +32 -0
- monkeybot-3.13.0/regression/t2/loop/scenarios/file/file_change_patch.yaml +84 -0
- monkeybot-3.13.0/regression/t2/loop/scenarios/file/file_change_review.yaml +52 -0
- monkeybot-3.13.0/regression/t2/loop/scenarios/loop/ui_row_between_tool_pair.yaml +58 -0
- monkeybot-3.13.0/regression/t2/loop/scenarios/loop/ui_row_splits_a_batch.yaml +76 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/subagents/queue_pending_not_success.yaml +8 -8
- monkeybot-3.13.0/regression/t2/python/test_change_parent_session.py +43 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/python/test_ops_observability.py +8 -7
- {monkeybot-3.12.0 → monkeybot-3.13.0}/scripts/ci-local.sh +8 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/config/settings.py +20 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/context/__init__.py +78 -7
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/messages/tool_integrity.py +94 -68
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/messages/transform_context.py +10 -5
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/persistence/backends.py +4 -23
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/persistence/durable_runs.py +22 -105
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/persistence/firestore.py +16 -118
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/persistence/goal_ledger.py +1 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/persistence/postgres.py +23 -104
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/prompts/headings.py +2 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/prompts/prompt.py +15 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/runtime/events.py +55 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/runtime/input_admission.py +18 -2
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/runtime/loop.py +2 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/runtime/realtime_loop.py +10 -6
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/runtime/tool_dispatch.py +32 -5
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/runtime/turn_loop.py +32 -9
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/subagents/subagent_proto.py +10 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/subagents/subagent_worker.py +2 -0
- monkeybot-3.13.0/src/monkeybot/core/subagents/supervisor.py +558 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/subprocess_groups.py +100 -0
- monkeybot-3.13.0/src/monkeybot/core/tools/change_recorder.py +821 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/tools/core_tool_executor.py +259 -59
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/tools/permission.py +38 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/tools/tool_kind.py +2 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/tools/types.py +5 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/sse/app.py +77 -22
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/sse/loop_port.py +2 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/sse/models.py +8 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/sse/routes.py +101 -3
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/sse/session_bus.py +16 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/observability/__init__.py +34 -2
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/observability/spans.py +57 -27
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/observability/sqlite_exporter.py +22 -12
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/scaffold/__init__.py +3 -1
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/gateway.py +0 -1
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/gateway_ports.py +2 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/subagent_worker.py +29 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/goldens/prompts/volatile_tail_parts.json +1 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/goldens/routes.txt +3 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/goldens/sse/schema.json +54 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/test_catalog_pairing.py +3 -3
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/test_harness_prompt_golden.py +1 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/test_realtime_divergence.py +2 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/test_sse_schema.py +1 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/test_storage_parity.py +17 -8
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/test_tool_error_catalog.py +1 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/context/test_context.py +3 -1
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/goals/test_goals.py +8 -1
- monkeybot-3.13.0/tests/unit/core/messages/test_message_pipeline.py +337 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/messages/test_tool_integrity.py +74 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/persistence/test_durable_runs.py +5 -22
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/persistence/test_storage_backends.py +24 -342
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/runtime/test_durable_events.py +29 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/runtime/test_input_admission.py +24 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/runtime/test_loop.py +10 -3
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/runtime/test_loop_observability.py +2 -2
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/subagents/test_subagent_proto.py +15 -0
- monkeybot-3.13.0/tests/unit/core/subagents/test_supervisor.py +84 -0
- monkeybot-3.13.0/tests/unit/core/tools/test_change_recorder.py +461 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/tools/test_core_tool_executor.py +180 -98
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/tools/test_path_grant_inspector.py +30 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/sse/test_attachments.py +2 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/sse/test_create_session_model.py +2 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/sse/test_history_routes.py +6 -1
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/sse/test_routes.py +165 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/sse/test_scheduler_routes.py +8 -1
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/observability/test_init.py +52 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/observability/test_spans.py +75 -5
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/observability/test_sqlite_exporter.py +118 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/uv.lock +1 -1
- monkeybot-3.12.0/regression/t2/python/test_subagent_worker_pool.py +0 -155
- monkeybot-3.12.0/src/monkeybot/core/subagents/worker_pool.py +0 -570
- monkeybot-3.12.0/src/monkeybot/subagents/__init__.py +0 -1
- monkeybot-3.12.0/src/monkeybot/subagents/worker/__init__.py +0 -1
- monkeybot-3.12.0/src/monkeybot/subagents/worker/__main__.py +0 -22
- monkeybot-3.12.0/tests/unit/core/messages/test_message_pipeline.py +0 -138
- monkeybot-3.12.0/tests/unit/core/subagents/test_worker_pool.py +0 -794
- {monkeybot-3.12.0 → monkeybot-3.13.0}/.cursor/hooks/pre-pr.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/.cursor/hooks/test-failure-notice.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/.cursor/hooks.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/.cursor/rules/test-failures.mdc +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/.cursor/skills/mb-retro/SKILL.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/.dockerignore +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/.github/CODEOWNERS +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/.github/workflows/ci.yml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/.github/workflows/live-eval-smoke.yml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/.github/workflows/prepare-release.yml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/.github/workflows/publish-release.yml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/.gitignore +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/.pre-commit-config.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/BACKLOG.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/LICENSE +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/pyproject.toml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/skills/monkeybot/references/config-sections.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/chat_file_index.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/chat_local_shell.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/chat_renderer.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/chat_status_bar.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/chat_theme.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/chat_tool_display.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/chat_tui.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/chat_tui_widgets.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/commands/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/commands/chat.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/commands/loop.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/commands/mcp_login.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/commands/new.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/commands/refresh.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/commands/run_cmd.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/commands/talk.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/commands/trace.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/commands/validate.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/compat.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/config_resolve.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/exit_commands.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/extras_catalog.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/gateway_health.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/main.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/opensandbox_lifecycle.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/output.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/overrides.txt +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/process_tree.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/providers.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/realtime/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/realtime/audio_io.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/realtime/client.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/realtime/gateway_manager.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/realtime/push_to_talk.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/realtime/session.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/realtime/session_controller.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/realtime/talk_ui.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/realtime/wire_encode.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/runtime_python.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/scaffold.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/scaffold_defaults/AGENT.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/scaffold_defaults/Dockerfile +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/scaffold_defaults/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/scaffold_defaults/browser/SKILL.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/scaffold_defaults/command_allowlist.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/scaffold_defaults/dockerignore +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/scaffold_defaults/env.example +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/scaffold_defaults/goal/SKILL.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/scaffold_defaults/image-generator/generate_image.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/scaffold_defaults/loop/SKILL.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/scaffold_defaults/mcp.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/scaffold_defaults/monkeybot.example.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/scaffold_defaults/opensandbox.docker.toml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/scaffold_defaults/otel-collector.example.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/scaffold_defaults/permissions.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/scaffold_defaults/templates/coding/AGENT.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/scaffold_defaults/templates/coding/command_allowlist.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/scaffold_defaults/templates/coding/monkeybot.overrides.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/scaffold_defaults/templates/coding/permissions.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/session_controller.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/src/monkeybot_cli/terminal_markdown.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/tests/test_chat_continue.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/tests/test_chat_e2e.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/tests/test_chat_errors.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/tests/test_chat_file_index.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/tests/test_chat_grounding.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/tests/test_chat_local_shell.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/tests/test_chat_renderer_parity.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/tests/test_chat_status_bar.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/tests/test_chat_theme.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/tests/test_chat_tool_display.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/tests/test_chat_tui.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/tests/test_cli.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/tests/test_config_resolve.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/tests/test_extras_catalog.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/tests/test_gateway_health.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/tests/test_opensandbox_lifecycle.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/tests/test_realtime_session_controller.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/tests/test_run_cmd.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/tests/test_runtime_python.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/tests/test_scaffold.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/tests/test_terminal_markdown.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/tests/test_trace_cmd.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/cli/uv.lock +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/conftest.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docker/Dockerfile +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docker/demo-model.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docker/demo.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docker/docker-compose.sandbox.yml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docker/opensandbox.docker.toml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docker/sandbox.Dockerfile +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docker-compose.yml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/agent-layout.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/assets/logo.png +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/browser-mcp-perf-baseline.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/browser-mcp-performance-plan.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/browser-mcp.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/deploy-aws-agentcore.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/deploy-pattern-a-container.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/deploy-pattern-b-serverless.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/deploy-pattern-c-agent-platform.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/live-evals.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/mcp.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/migrations/agent-scope-namespacing.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/migrations/history-row-id.sql +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/migrations/memory-outbox.sql +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/migrations/session-branches.sql +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/ollama-local.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/otel-collector.example.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/progressive-loop-tools.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/progressive-mcp-tools.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/skills.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/spill-dynamic-design.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/sse-gateway-ui.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/docs/verifier-agent-design.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/examples/README.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/examples/agentcore/handler.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/examples/agentcore/runtime_app.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/examples/agentengine/handler.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/examples/cloud-functions/main.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/examples/lambda/handler.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/examples/ollama/PrefixStable.Modelfile +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/examples/skills/browser/SKILL.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/examples/skills/browser/playbooks/.gitkeep +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/examples/skills/diagnostics/README.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/examples/skills/diagnostics/SKILL.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/examples/skills/diagnostics/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/examples/skills/diagnostics/diagnostics.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/examples/skills/image-generator/generate_image.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/pyproject.toml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/scripts/agentcore_smoke.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/scripts/dump_tool_surface.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/scripts/perf_bench.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/actions.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/agentcore.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/app.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/assets/NOTICE.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/assets/dom_tree.js +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/assets/pa_driver.js +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/backend.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/chat_context.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/chat_scope.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/dom_indexing.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/in_app_cdp.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/login.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/observe.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/perf.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/playbooks.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/playwright_helpers.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/results.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/screenshots.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/server.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/tab_ops.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/tabs.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/tools/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/tools/batch.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/tools/capture.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/tools/interact.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/tools/navigate.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/tools/playbook.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/tools/read.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/src/browser_mcp/tools/tab_control.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/conftest.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/fixtures/api.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/fixtures/article.html +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/fixtures/cards.html +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/fixtures/form.html +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/fixtures/long_list.html +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/fixtures/spa.html +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/fixtures/tool_surface.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/integration/conftest.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/integration/test_act_observe.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/integration/test_driver_persist.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/integration/test_intent_tools.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/integration/test_multi_tab.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/integration/test_observation.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/integration/test_run_playbook.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/integration/test_wait_for.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/test_act.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/test_agentcore.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/test_chat_isolation.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/test_chat_scope.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/test_dom_indexing.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/test_fill_form.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/test_in_app_cdp.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/test_indexed_tools.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/test_observe.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/test_observe_after.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/test_perf.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/test_playbook_flows.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/test_playbooks.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/test_playwright_helpers.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/test_screenshots.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/test_server_shutdown.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/test_tabs.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/test_tool_surface.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/tests/test_wait_tools.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/integrations/browser-mcp/uv.lock +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/pytest.ini +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/conftest.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/drivers/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/drivers/bundles/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/drivers/bundles/git.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/drivers/bundles/hooks.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/drivers/bundles/host_tools.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/drivers/bundles/mcp.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/drivers/bundles/memory.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/drivers/bundles/policy.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/drivers/bundles/prompt_context.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/drivers/bundles/protocol.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/drivers/bundles/store.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/drivers/bundles/subagents.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/drivers/bundles/verifier.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/drivers/bundles/workspace.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/drivers/gateway.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/drivers/loop.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/drivers/realtime.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/drivers/record.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/drivers/replay.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/drivers/support/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/drivers/support/config.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/drivers/support/env.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/drivers/support/executor.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/drivers/support/paths.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/drivers/support/tokens.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/build.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/configs/agent.base.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/configs/command_allowlist.default.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/configs/command_allowlist.empty.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/configs/command_allowlist.no_deny_patterns.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/configs/command_allowlist.strict.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/configs/grants.corrupt.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/configs/grants.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/configs/mcp.autoconnect.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/configs/mcp.broken.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/configs/mcp.progressive.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/configs/mcp.two_prefix.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/configs/permissions.ask.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/configs/permissions.default.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/configs/permissions.overlap.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/configs/verifier.block.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/configs/verifier.judge.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/configs/verifier.replan.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/configs/verifier.tracker.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/configs/{workspace}/child.db +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/conftest.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/mcp/fixture_mcp_server.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/scripts/one_turn.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/skills/a/nested/SKILL.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/skills/diagnostics/SKILL.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/skills/plain/SKILL.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/subagent_tapes/.gitkeep +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/subagent_tapes/absent_file.ndjson +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/subagent_tapes/child_error.ndjson +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/subagent_tapes/echo.ndjson +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/subagent_tapes/hold.ndjson +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/subagent_tapes/large_line.ndjson +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/subagent_tapes/nested_task.ndjson +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/subagent_tapes/present_file.ndjson +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/subagent_tapes/roundtrip.ndjson +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/subagent_tapes/system_prompt.ndjson +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/att_secret.txt +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/att_ws/.monkeybot/attachments/loop-scenario/att-link +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/att_ws/.monkeybot/attachments/loop-scenario/att-link.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/att_ws/.monkeybot/attachments/loop-scenario/att-pdf +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/att_ws/.monkeybot/attachments/loop-scenario/att-pdf.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/att_ws/i1.png +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/att_ws/i2.png +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/att_ws/i3.png +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/att_ws/i4.png +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/att_ws/i5.png +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/att_ws/i6.png +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/att_ws/tiny.png +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/calc_repo/.gitignore +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/calc_repo/AGENTS.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/calc_repo/build/calc/ops.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/calc_repo/calc/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/calc_repo/calc/ops.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/calc_repo/node_modules/left-pad/index.js +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/calc_repo/node_modules/left-pad/package.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/calc_repo/pyproject.toml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/calc_repo/tests/test_ops.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/calc_repo_green/.gitignore +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/calc_repo_green/AGENTS.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/calc_repo_green/build/calc/ops.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/calc_repo_green/calc/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/calc_repo_green/calc/ops.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/calc_repo_green/node_modules/left-pad/index.js +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/calc_repo_green/node_modules/left-pad/package.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/calc_repo_green/pyproject.toml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/calc_repo_green/tests/test_ops.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/drift_ws/DONE.txt +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/drift_ws/db/migrations/001_init.sql +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/drift_ws/src/models.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/grants_ws/granted/.env +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/grants_ws/granted/notes.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/grants_ws/workspace/src/app.txt +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/hostile_ws/.gitignore +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/hostile_ws/AGENTS.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/hostile_ws/node_modules/left.js +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/hostile_ws/notes.txt +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/hostile_ws/pkg/.gitignore +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/hostile_ws/pkg/hidden.txt +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/hostile_ws/pkg/visible.txt +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/hostile_ws/secret.txt +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/hostile_ws/src/app.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/hostile_ws/wide.txt +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/overlays/bug_discount/shop/pricing.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/overlays/noisy_tests/shop/taxes.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/overlays/noisy_tests/tests/conftest.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/overlays/offline_gateway/tests/test_gateway.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/.gitignore +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/AGENTS.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/CHANGELOG.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/README.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/build/shop/shipping.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/pyproject.toml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/shop/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/shop/cart.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/shop/coupons.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/shop/gateway.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/shop/inventory.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/shop/legacy/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/shop/legacy/pricing_v1.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/shop/legacy/shipping_v1.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/shop/models.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/shop/orders.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/shop/pricing.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/shop/reports.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/shop/shipping.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/shop/taxes.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/shop/utils/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/shop/utils/money.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/shop/utils/text.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/tests/test_cart.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/tests/test_coupons.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/tests/test_inventory.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/tests/test_money.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/tests/test_orders.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/tests/test_pricing.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/tests/test_reports.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/tests/test_shipping.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/tests/test_taxes.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/fixtures/workspaces/shop_repo/vendor/pricekit/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/AGENT_GUIDE.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/README.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/phases/phase-0a-tier1-reorg.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/phases/phase-0b-foundations.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/phases/phase-1-t2-harness-logic.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/phases/phase-2-contracts-and-gateway.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/phases/phase-3-record-replay.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/phases/phase-4-live.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/phases/phase-5-trials.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/phases/phase-6-cutover.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/01-goals-and-principles.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/03-tiers.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/04-file-structure.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/05.1-doubles.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/05.10-testing-doc.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/05.11-live-provider.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/05.2-scenario-schema.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/05.3-assertions-and-invariants.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/05.4-fixtures.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/05.5-cassettes.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/05.6-pytest-reporting-trials.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/05.9-failure-ledger.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/06-coverage/00-index.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/06-coverage/6A-loop.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/06-coverage/6B-ctx.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/06-coverage/6C-hook.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/06-coverage/6D-file.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/06-coverage/6E-shell.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/06-coverage/6F-pol.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/06-coverage/6G-code.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/06-coverage/6H-att.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/06-coverage/6I-comp.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/06-coverage/6J-sub.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/06-coverage/6K-ver.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/06-coverage/6L-sched.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/06-coverage/6M-skill.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/06-coverage/6N-mcp.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/06-coverage/6O-web.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/06-coverage/6P-mem.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/06-coverage/6Q-store.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/06-coverage/6R-cfg.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/06-coverage/6S-todo.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/06-coverage/6T-prov.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/06-coverage/6U-gw.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/06-coverage/6V-rt.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/07-migration-map.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/09-ci.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/10-policies.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/11-known-issues.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/reference/12-decisions.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/status.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plan/tasks.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/plugin.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/schema/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/schema/events.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/schema/invariants.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/schema/scenario.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/schema/sse_norm.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/schema/steps.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/selftest/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/selftest/recorded/t4_run_smoke_sample.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/selftest/test_agent_project.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/selftest/test_assertions.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/selftest/test_bundle_order.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/selftest/test_coding_hard_oracle.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/selftest/test_diff.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/selftest/test_fixtures.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/selftest/test_from_transcript.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/selftest/test_gateway_driver.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/selftest/test_invariants.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/selftest/test_judge.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/selftest/test_live_engine.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/selftest/test_live_ledger.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/selftest/test_live_scenarios.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/selftest/test_preflight.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/selftest/test_report.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/selftest/test_runner_sse.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/selftest/test_scenario_schema.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/selftest/test_scorer.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/selftest/test_steps.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/selftest/test_trials_stats.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/gateway/harness.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/gateway/scenarios/gw/reconnect_last_event_id.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/gateway/scenarios/gw/scripted_turn_golden_sse.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/gateway/scenarios/gw/tool_turn_golden_sse.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/attachments/attachment_symlink_leaf_rejected.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/attachments/freeze_descriptors_in_history.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/attachments/load_both_args.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/attachments/load_image_preview.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/attachments/load_pdf.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/attachments/load_per_reply_cap.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/attachments/load_text_rejected.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/coding/compaction_forgets_reads.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/coding/fix_failing_test.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/coding/gate_background_verify_not_counted.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/coding/gate_cap_then_accept.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/coding/gate_custom_verify_commands.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/coding/gate_masked_exit.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/coding/gate_non_executing_wrapper.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/coding/gate_open_todos_reject.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/coding/gate_passes_when_verified.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/coding/gate_question_not_gated.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/coding/gate_rejected_answer_not_persisted.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/coding/gate_rejects_unverified.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/coding/gate_write_after_verify.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/coding/git_context_absent.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/coding/git_context_note.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/coding/git_env_isolation.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/coding/read_before_write.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/coding/subagent_has_ledger_no_gate.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/coding/subagent_ledger_child.yml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/computer/clipboard_cap.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/computer/denied_apps_and_schemes.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/computer/denied_dirs_and_globs.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/computer/move_trash_not_always_scoped.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/computer/open_exec_suffix_denied.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/computer/trash_huge_tree_refused.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/computer/x.sh +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/ctx/background_summary_applied.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/ctx/background_summary_stale_fallback.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/ctx/base64_sanitized.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/ctx/compact_at_trigger.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/ctx/compact_does_not_persist_repairs.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/ctx/compact_fallback.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/ctx/compact_keep_tail_ratio.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/ctx/compact_pins_verdict_attachment_thinking.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/ctx/compact_trailer_from_goal_ledger.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/ctx/context_usage_current_not_peak.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/ctx/epoch_after_compaction.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/ctx/epoch_stable_change.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/ctx/epoch_volatile_update.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/ctx/memory_wake_up_large.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/ctx/project_instructions_spoof_heading.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/ctx/slash_skill_turn_scoped.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/ctx/stable_prefix_byte_stable.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/ctx/summarizer_model_override.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/ctx/tool_result_shaping_under_pressure.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/glob_cap_incomplete.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/glob_skips_noise.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/grep_gitignore_default.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/grep_incomplete_scan.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/grep_invalid_regex.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/grep_pagination.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/list_dir_truncate.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/overwrite_unread_rejected.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/patch_add_existing.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/patch_fail_closed.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/patch_move_dest_exists.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/patch_rollback.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/patch_update_requires_read.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/read_absolute_needs_grant.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/read_escape_dotdot.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/read_escape_symlink.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/read_huge_single_line.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/read_offset_past_eof.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/read_paging_no_gap.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/replace_error_codes.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/replace_fuzzy_unicode.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/skills_read_only.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/spill_large_tool_output.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/spill_session_id_sanitized.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/stale_read_rejected.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/tool_glob_grep.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/tool_read.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/tool_replace_apply_patch.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/tool_write.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/virtual_mounts.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/write_new_without_read_ok.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/write_outside_scope.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/file/write_payload_too_large.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/hook/evidence_grep_only_not_accepted.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/hook/evidence_missing_path.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/hook/evidence_thread_isolation.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/hook/evidence_unread_then_read.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/hook/secret_ends_routine_turn.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/hook/secret_in_tool_args.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/hook/secret_redacted_interactive.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/hook/secret_scanner_failure_fails_closed.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/all_parse_error_batch_rejected.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/ask_user_non_interactive.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/ask_user_roundtrip.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/background_check_raises_fails_closed.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/background_nudge_then_release.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/background_nudges_exhausted.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/cancel_after_tool_call_before_execute.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/cancel_mid_stream.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/confirm_always_remembered.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/confirm_approve.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/confirm_deny.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/confirm_timeout.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/doom_disabled.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/doom_exempt_poll.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/doom_identical_read.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/doom_path_reset_on_success.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/doom_path_retry_spelling.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/empty_exhausted.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/empty_then_text.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/grounding_event_passthrough.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/max_turns_cap.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/max_turns_not_on_clean_finish.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/mixed_parse_error_batch_runs_valid.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/parallel_concurrency_cap.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/parallel_results_in_submission_order.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/post_tool_empty_retry.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/promote_follow_up_provenance.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/provider_raises.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/registry_refresh_same_turn.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/repair_missing_tool_result.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/repair_orphan_tool_response.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/resume_thinking_budget_routine.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/steer_mid_turn.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/thinking_block_order.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/thinking_only_is_empty.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/thought_signature_preserved.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/tool_input_delta_passthrough.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/truncated_batch_rejected.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/turn_completion.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/loop/usage_totals.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/mcp/autoconnect_failure_is_status.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/mcp/catalog_diff_reload.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/mcp/disable_removes_tools.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/mcp/disabled_server_not_catalogued.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/mcp/enable_then_call.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/mcp/enable_unknown_server.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/mcp/env_interpolation_missing.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/mcp/meta_tools_only_when_connected.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/mcp/name_prefix_split.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/mcp/resources_and_prompts.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/mcp/strict_load_rolls_back.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/memory/ephemeral_palace_shared_outbox_rejected.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/memory/memory_off.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/memory/memory_write_inject.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/memory/mempalace_search_real.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/memory/outbox_failure_does_not_fail_turn.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/memory/outbox_ingest_then_inject.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/memory/outbox_thread_isolation.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/memory/subagent_no_ingest.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/policy/command_grant_from_store.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/policy/default_deny_patterns.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/policy/grant_revocation_clears.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/policy/granted_folder_credential_denied.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/policy/path_grant_read.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/policy/permissions_last_match_wins.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/policy/permissions_missing_file_fail_open.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/policy/start_loop_always_confirms.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/policy/symlink_in_grant_does_not_widen.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/policy/unknown_binary_confirm_approve.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/policy/unknown_binary_confirm_deny.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/scheduler/create_goal_requires_slash_goal.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/scheduler/create_goal_with_slash_goal.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/scheduler/enable_loops_progressive.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/scheduler/loop_goal_isolation.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/scheduler/loop_lifecycle_real_store.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/scheduler/one_open_goal_per_session.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/scheduler/start_loop_requires_stop_guard.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/scheduler/tool_loops.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/shell/allowlist_deny.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/shell/argv_forms.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/shell/bg_job_cap.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/shell/bg_kill_command.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/shell/bg_killed_at_turn_end.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/shell/bg_start_await_cursor.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/shell/cwd_escape.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/shell/home_escape.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/shell/large_stdout_spill_keeps_exit.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/shell/mempalace_refused_memory_off.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/shell/mempalace_search_only.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/shell/nonzero_exit.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/shell/run_command.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/shell/shell_wrapper_bypass.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/shell/timeout_partial_output.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/shell/unscreenable_script_fails_closed.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/skills/list_then_read_skill.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/skills/skill_symlink_escape.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/skills/skill_write_denied.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/skills/skills_in_prompt.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/skills/skills_path_hot_reload.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/skills/slash_unknown_skill.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/store/compaction_reset_row_ids.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/store/transcript_convertible.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/store/usage_recorded_on_turn_complete.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/subagents/child_errors_record_failed.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/subagents/child_memory_read_only.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/subagents/expect_files_absent.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/subagents/expect_files_escape.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/subagents/expect_files_present.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/subagents/large_ndjson_line.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/subagents/ledger_context_forwarded.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/subagents/nested_task_refused.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/subagents/parallel_task_cap.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/subagents/parent_cancel.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/subagents/persona_applied.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/subagents/subagent_roundtrip.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/subagents/subagent_timeout.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/subagents/system_prompt_redacted_on_pipe.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/subagents/unknown_subagent_type.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/todo/caps.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/todo/ids_stable.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/todo/mirror_hydrate.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/todo/reminder_once.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/todo/single_in_progress.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/todo/todo_list.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/todo/todo_list_steps.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/verifier/block_denies_mutating_tools.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/verifier/constraint_touch_negative.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/verifier/constraint_touch_positive.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/verifier/done_unmet_positive.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/verifier/error_streak_negative.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/verifier/error_streak_positive.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/verifier/free_text_constraint_never_matches.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/verifier/judge_malformed_fails_open.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/verifier/judge_rate_limits.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/verifier/judge_replay_valid.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/verifier/judge_spend_ratio.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/verifier/mailbox_stale_checkpoint_dropped.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/verifier/min_turn_before_verdict.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/verifier/no_progress_budget_burn_not_mailboxed.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/verifier/preempt_negative.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/verifier/repeat_correction_positive.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/verifier/replan_one_turn.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/verifier/rewrite_churn_positive.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/verifier/rewrite_effects_branch_copy.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/verifier/severity_cap_nudge.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/verifier/sticky_nudge.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/verifier/supersession_negative.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/verifier/verdict_in_history_stripped_for_provider.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/verifier/verifier_off_no_effect.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/verifier/write_without_read_negative.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/verifier/write_without_read_positive.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/web/backend_none_not_advertised.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/web/browser_mcp.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/web/browser_stop_on_disconnect.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/web/browser_stop_server.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/web/empty_query.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/web/max_results.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/loop/scenarios/web/web_search.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/python/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/python/test_drift_confusion_matrix.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/python/test_e2e_simple_reply.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/python/test_grep_parity.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/python/test_hooks_lifecycle.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/python/test_jail.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/python/test_memory_commit.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/python/test_observability_acceptance.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/python/test_observability_integration.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/python/test_ops_cli.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/python/test_prompt_caching_integration.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/python/test_scheduler_engine.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/python/test_sse_stream_pressure.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/realtime/scenarios/ws_blocks_history_rewrite.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/realtime/scenarios/ws_guardrail_budget.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/realtime/scenarios/ws_interrupt.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/realtime/scenarios/ws_slot_limit.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/realtime/scenarios/ws_text_turn.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/realtime/scenarios/ws_tool_confirmation.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t2/realtime/scenarios/ws_tool_turn.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/mcp/tools_list_call.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/memory/wake_up_snapshot.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/sse/basic_turn.sse +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/sse/cassette_turn.sse +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/sse/tool_turn.sse +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/subagents/child_tape.ndjson +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/test_golden_sse.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/test_replay_mcp.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/test_replay_subagent_tape.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/test_replay_trajectories.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/test_replay_wake_up.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/test_replay_wire.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/tools/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/tools/cassette.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/tools/check_staleness.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/tools/from_transcript.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/tools/record_wire.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/trajectories/ctx/replay_live_compaction.cassette.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/trajectories/ctx/replay_live_compaction.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/trajectories/loop/replay_live_doom_loop.cassette.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/trajectories/loop/replay_live_doom_loop.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/trajectories/loop/replay_live_truncation.cassette.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/trajectories/loop/replay_live_truncation.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/trajectories/shell/replay_live_pytest_run.cassette.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/trajectories/shell/replay_live_pytest_run.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/trajectories/verifier/replay_drift_tape.cassette.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/trajectories/verifier/replay_drift_tape.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/wire/ollama_cloud/glm_tool_turn.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t3/wire/ollama_cloud/thinking_only_completion.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/__main__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/.gitignore +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/memory/.blob_seq_ids_migrated +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/memory/.collection_type_fixed +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/memory/.embedder_identity +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/memory/.embedding-migrate.lock +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/memory/.palace_id +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/memory/.palace_write.lock +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/memory/2d1891d4-34d0-43bd-8eea-2fb73026046b/data_level0.bin +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/memory/2d1891d4-34d0-43bd-8eea-2fb73026046b/header.bin +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/memory/2d1891d4-34d0-43bd-8eea-2fb73026046b/length.bin +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/memory/2d1891d4-34d0-43bd-8eea-2fb73026046b/link_lists.bin +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/memory/identity.txt +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/memory/mempalace_embedder.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/monkeybot_config/.t4-gateway-993b836fb2a9.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/monkeybot_config/AGENT.coding.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/monkeybot_config/AGENT.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/monkeybot_config/AGENT.researcher.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/monkeybot_config/command_allowlist.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/monkeybot_config/grants.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/monkeybot_config/mcp.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/monkeybot_config/mcp.progressive.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/monkeybot_config/monkeybot.coding.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/monkeybot_config/monkeybot.verifier-judge.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/monkeybot_config/monkeybot.verifier-tracker.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/monkeybot_config/monkeybot.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/monkeybot_config/permissions.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/pyproject.toml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/skills/browser/SKILL.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/agent/uv.lock +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/assertions.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/baselines/smoke.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/baselines/smoke.md +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/conftest.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/diff.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/eval_config.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/gateway.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/models.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/persistence.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/preflight.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/python/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/python/test_docker_image_health.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/python/test_provider_live_matrix.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/report.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/runner.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenario_loader.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/attachments/describe_image_live.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/coding/add_feature_with_tests.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/coding/fix_failing_test.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/coding/navigate_repo.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/coding_hard/add_bulk_discount.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/coding_hard/fix_discount_rounding.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/coding_hard/honest_unfixable_failure.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/coding_hard/multi_feature_long.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/coding_hard/navigate_intl_rate.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/coding_hard/noisy_test_failure.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/coding_hard/rename_calc_tax.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/config/reload_memory_off_live.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/context/post_compaction_continuity.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/context/summarization_trigger.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/drift/declares_done.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/drift/path_constraint.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/drift/preempt.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/drift/repeat_correction.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/drift/supersession.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/file/core_read.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/file/core_read_error.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/file/core_write.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/file/grep_absence_honesty.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/gateway/live_resume.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/hooks/evidence_citation_live.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/mcp/enable_then_echo_live.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/mcp/get_prompt.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/mcp/list_resources.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/mcp/tool_invoke.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/memory/recall_cross_session.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/memory/recall_single_session.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/memory/search_past_session.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/multi_turn/task_tracking.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/scheduler/http_one_tick_live.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/scheduler/model_starts_loop.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/shell/core_run_command.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/shell/core_run_command_sandbox.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/skills/skill_invocation.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/subagents/dispatch_complete.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/scenarios/subagents/persona_dispatch.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/score.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/suites/coding.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/suites/coding_hard.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/suites/context.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/suites/drift.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/suites/mcp.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/suites/memory.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/suites/nightly.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/suites/scheduler.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/suites/smoke.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t4/suites/subagents.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t5/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t5/__main__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t5/baselines/subagents__ollama-cloud__glm-5.3-flash.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t5/compare.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t5/parallel.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t5/python/test_cancel_storm.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t5/python/test_reconnect_storm.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t5/runs/coding.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t5/runs/mcp.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t5/runs/smoke.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t5/runs/subagents.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t5/stats.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t5/suites/capability.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t5/suites/drift.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t5/suites/reliability.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/regression/t5/trials.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/scripts/create_schema.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/scripts/precommit-pytest.sh +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/scripts/release.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/scripts/smoke_global_cli.sh +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/cli/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/cli/__main__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/cli/audio_io.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/cli/gateway_manager.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/cli/main.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/cli/push_to_talk.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/cli/realtime_client.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/computer/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/computer/approvals.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/computer/permissions.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/computer/safety.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/computer/tools.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/attachments/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/attachments/catalog.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/attachments/config.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/attachments/freeze.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/attachments/image_preview.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/attachments/resolve.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/attachments/store.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/attachments/text.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/attachments/tools.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/bootstrap.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/coding/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/coding/git_context_hook.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/coding/read_ledger_hook.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/coding/verification_gate.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/config/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/config/realtime_config.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/config/runtime_env.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/config/snapshot.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/config/validation.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/config/yaml_loader.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/context/campaign_context.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/context/common.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/context/epoch.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/context/project_context.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/context/secret_egress.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/context/slash_skills.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/context/tool_output_policy.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/context/tool_result_ingress.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/context/tool_shapers.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/goals/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/goals/service.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/hooks/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/hooks/evidence_guard.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/layout.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/llm/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/llm/provider.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/llm/realtime_provider.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/llm/usage.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/lockfile_names.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/logging_utils.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/mcp/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/mcp/mcp_client.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/mcp/oauth_flow.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/mcp/ports_mcp.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/memory/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/memory/config.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/memory/hook.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/memory/ids.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/memory/ingest.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/memory/migrate_embedding.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/memory/migrate_layout.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/memory/observability.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/memory/outbox.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/memory/palace.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/memory/subsystem.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/memory/uri.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/memory/writer.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/messages/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/messages/convert_provider.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/path_safety.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/persistence/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/persistence/branches.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/persistence/db.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/persistence/errors.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/persistence/firestore.indexes.json +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/persistence/firestore_scheduled_loops.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/persistence/history.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/persistence/row_ids.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/persistence/runs.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/persistence/scheduled_loops.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/persistence/session_turn_locks.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/persistence/sqlite.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/persistence/sqlite_backend.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/persistence/thread_summary.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/persistence/transcript.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/persistence/transcript_reader.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/persistence/usage.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/persistence/usage_buckets.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/prompts/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/prompts/harness_prompt.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/runtime/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/runtime/background_summary.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/runtime/chat_title.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/runtime/context_budget.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/runtime/doom_loop.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/runtime/history_compaction.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/runtime/history_rewrite.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/runtime/loop_hooks.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/runtime/loop_messages.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/runtime/loop_ports.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/runtime/loop_usage.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/runtime/provider_stream_mapper.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/runtime/tool_batch.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/runtime/utterance_buffer.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/subagents/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/subagents/progress_publish.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/testing/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/testing/mocks_provider.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/testing/mocks_realtime_provider.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/tools/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/tools/ask_user.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/tools/background_jobs.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/tools/command_executor.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/tools/fs_isolation.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/tools/gitignore.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/tools/grant_store.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/tools/inspector.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/tools/loop_inspector.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/tools/patch.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/tools/path_grant_inspector.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/tools/read_ledger.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/tools/sandbox_executor.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/tools/spill_inventory.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/tools/terminal.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/tools/text_normalize.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/tools/tool_hint.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/tools/workspace_service.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/types/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/types/content_blocks.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/types/interfaces.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/types/types_tools.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/verifier/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/verifier/actuator.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/verifier/binding.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/verifier/classify.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/verifier/inspector.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/verifier/intervention.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/verifier/judge.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/verifier/ledger.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/verifier/mailbox.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/verifier/match.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/verifier/port.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/verifier/rewrite_effects.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/verifier/severity.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/verifier/tracker.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/workspace/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/workspace/factory.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/workspace/gcs.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/workspace/local.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/workspace/protocol.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/workspace/s3.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/core/workspace_layout.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/bootstrap.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/main.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/pending_response_bus.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/realtime/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/realtime/app.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/realtime/deps.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/realtime/errors.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/realtime/guardrails.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/realtime/manager.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/realtime/metrics.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/realtime/routes.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/realtime/session.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/realtime/wire.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/realtime_main.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/sse/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/sse/goal_routes.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/sse/history_routes.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/sse/reload.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/sse/reply_body.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/sse/request_storage.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/sse/scheduler_routes.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/sse/scheduler_wiring.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/sse/sse.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/gateway/sse/workspace_layout.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/observability/_state.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/observability/instrumentation.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/observability/propagation.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/providers/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/providers/_bedrock_converse.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/providers/_openai_compat.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/providers/_sdk_client.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/providers/_stream_marks.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/providers/_utils.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/providers/bedrock.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/providers/claude.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/providers/fireworks.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/providers/gemini.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/providers/gemini_live.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/providers/huggingface.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/providers/model_capabilities.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/providers/nvidia.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/providers/ollama.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/providers/openai.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/providers/openrouter.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/providers/pricing.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/providers/rejected_sampling.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/providers/request_budget.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/providers/sampling.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/providers/vertex_claude.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/scheduler/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/scheduler/__main__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/scheduler/engine.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/scheduler/http_invoker.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/scheduler/interval.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/scheduler/tick_result.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/scheduler/worker.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/todo_list/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/todo_list/hook.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/todo_list/store.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/todo_list/tool.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/web_search/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/web_search/backends/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/web_search/backends/duckduckgo.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/web_search/backends/firecrawl.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/web_search/backends/tavily.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/web_search/protocol.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/src/monkeybot/web_search/tool.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/backends.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/clock.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/context.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/conversations.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/data/attachments/tiny.jpg +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/data/attachments/tiny.png +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/data/attachments/with-text.pdf +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/data/attachments/without-text.pdf +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/executors.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/failure_ledger.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/failures/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/failures/__main__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/failures/catalog.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/failures/store.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/history.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/hooks.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/inspectors.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/mcp.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/memory.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/palace.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/pending_bus.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/provider.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/py.typed +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/sandbox.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/scrub.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/sse.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/verifier.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/testkit/web_search.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/conftest.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/conftest.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/goldens/prompts/harness_prompt.default.txt +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/goldens/prompts/harness_prompt.emission_terse.txt +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/goldens/prompts/harness_prompt.mcp_catalog.txt +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/goldens/prompts/harness_prompt.memory_off.txt +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/goldens/prompts/harness_prompt.sandbox_on.txt +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/goldens/prompts/harness_prompt.task_terse.txt +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/goldens/span_names.txt +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/goldens/tool_error_codes.txt +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/tables/config_precedence.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/tables/policy_decisions.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/tables/provider_error_mapping.yaml +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/test_config_matrix.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/test_migrations_replay.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/test_policy_decision_table.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/test_provider_conformance.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/test_route_table.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/test_scaffold_reexports.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/contracts/test_span_names.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/cli/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/cli/test_gateway_manager.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/cli/test_main.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/cli/test_push_to_talk.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/cli/test_realtime_client.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/computer/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/computer/test_approvals.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/computer/test_computer_tools.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/computer/test_package_init.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/computer/test_path_policy.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/computer/test_permissions.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/computer/test_platform_gate.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/computer/test_subagent_exclusion.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/computer/test_wiring.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/conftest.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/attachments/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/attachments/test_attachment_freeze.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/attachments/test_attachment_store.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/attachments/test_image_preview.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/coding/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/coding/test_verification_gate.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/config/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/config/test_config_extensions.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/config/test_env_map_grep_gates.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/config/test_runtime_config_snapshot.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/config/test_runtime_env.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/context/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/context/test_context_epoch.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/context/test_project_context.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/context/test_secret_egress.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/context/test_skill_discovery_rules.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/context/test_slash_skills.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/context/test_tool_result_ingress.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/context/test_tool_shapers.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/fixtures/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/fixtures/bitbucket_dc_style_pr.diff +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/goals/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/goals/test_goal_persistence.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/hooks/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/hooks/test_evidence_guard.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/hooks/test_hooks.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/hooks/test_settlement.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/llm/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/llm/test_pricing.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/llm/test_provider_contract.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/mcp/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/mcp/test_mcp_client.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/mcp/test_mcp_oauth.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/mcp/test_mcp_oauth_regressions.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/memory/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/memory/test_memory_layout_migrate.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/memory/test_memory_scoping.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/memory/test_mempalace.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/memory/test_migrate_embedding.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/memory/test_review_fixes.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/messages/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/messages/test_gemini_history_replay.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/persistence/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/persistence/test_branch_store_backends.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/persistence/test_firestore_history.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/persistence/test_firestore_scheduled_loops.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/persistence/test_firestore_usage.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/persistence/test_goal_ledger.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/persistence/test_history.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/persistence/test_history_branches.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/persistence/test_history_row_ids.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/persistence/test_runs.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/persistence/test_scheduled_loops.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/persistence/test_session_branches_migration.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/persistence/test_session_turn_locks.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/persistence/test_thread_summary_wire.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/persistence/test_transcript.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/persistence/test_transcript_reader.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/persistence/test_usage.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/persistence/test_usage_migration.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/prompts/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/prompts/test_harness_prompt.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/prompts/test_prompt.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/runtime/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/runtime/test_background_summary.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/runtime/test_chat_title.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/runtime/test_context_budget.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/runtime/test_doom_loop.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/runtime/test_empty_completion.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/runtime/test_events.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/runtime/test_history_compaction_split.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/runtime/test_loop_hooks.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/runtime/test_loop_transcript.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/runtime/test_provider_stream_mapper.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/runtime/test_realtime_loop.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/runtime/test_truncated_tool_batch.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/runtime/test_turn_session_id.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/runtime/test_utterance_buffer.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/subagents/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/subagents/test_child_tool_list.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/subagents/test_progress_publish.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/subagents/test_subagent_trace_propagation.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/subagents/test_subagent_transcript.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/subagents/test_subagent_worker_paths.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/test_agent_layout.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/test_bootstrap.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/test_layout.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/test_logging_utils.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/test_path_safety.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/test_workspace_layout.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/testing/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/testing/test_mocks_realtime_provider.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/tools/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/tools/test_ask_user.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/tools/test_background_jobs.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/tools/test_fs_isolation.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/tools/test_gitignore.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/tools/test_grant_store.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/tools/test_inspector.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/tools/test_patch.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/tools/test_permission.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/tools/test_replace_fuzzy.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/tools/test_run_command_parse.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/tools/test_sandbox_executor.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/tools/test_spill_dynamic.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/tools/test_spill_inventory.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/tools/test_terminal.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/tools/test_workspace_extra_read_roots.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/tools/test_workspace_symlinks.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/tools/test_workspace_write_scope.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/types/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/types/test_content_blocks.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/types/test_tool_def_schema.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/verifier/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/verifier/test_progress_tracker.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/verifier/test_verifier_binding.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/verifier/test_verifier_inspector.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/verifier/test_verifier_judge.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/verifier/test_verifier_mailbox_lifecycle.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/verifier/test_verifier_port.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/verifier/test_verifier_rewrite_effects.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/verifier/test_verifier_sticky_nudge.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/verifier/test_verifier_tracker.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/workspace/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/workspace/test_factory.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/workspace/test_local_storage.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/core/workspace/test_protocol_contract.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/realtime/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/realtime/test_app.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/realtime/test_deps.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/realtime/test_guardrails.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/realtime/test_manager.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/realtime/test_metrics.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/realtime/test_routes_client_text.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/realtime/test_session.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/realtime/test_wire.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/sse/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/sse/test_chat_title_route.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/sse/test_config_reload.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/sse/test_gateway_runtime.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/sse/test_session_bus.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/sse/test_start_turn_setup_failure.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/sse/test_transcript_wiring.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/test_otel_fastapi.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/test_otel_lifespan.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/test_pending_response_endpoints.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/test_realtime_main.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/test_resolve_provider.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/test_sdk_client_shutdown.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/test_sse_events.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/gateway/test_subagent_event_publisher.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/observability/conftest.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/observability/test_instrumentation.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/observability/test_loop_hook_spans.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/observability/test_propagation.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/observability/test_span_contract.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/observability/test_truncate.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/observability/test_turn_complete_trace.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/packaging/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/packaging/test_cold_start.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/packaging/test_packaging_config.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/packaging/test_release_script.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/conftest.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/test_anthropic_cache.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/test_anthropic_history.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/test_bedrock_converse.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/test_bedrock_estimate.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/test_connection_warm.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/test_fireworks.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/test_gemini_history.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/test_gemini_live.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/test_gemini_usage.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/test_huggingface.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/test_model_capabilities.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/test_nvidia.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/test_ollama.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/test_openai_byte_budget.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/test_openai_compat_usage.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/test_openai_history.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/test_pricing.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/test_request_budget.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/test_safe_parse_tool_args.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/test_sampling.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/test_sdk_client_reuse.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/test_sonnet5_sampling.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/test_source_grep_gates.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/test_tiktoken_encoding.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/providers/test_vertex_claude_history.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/scheduler/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/scheduler/test_engine.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/scheduler/test_interval.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/skills/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/skills/test_generate_image_script.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/testkit/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/testkit/test_clock.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/testkit/test_failure_ledger.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/testkit/test_failures_cli.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/testkit/test_fake_history.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/testkit/test_scripted_provider.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/testkit/test_scrub.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/testkit/test_sse_reader.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/todo_list/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/todo_list/test_todo_list.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/web_search/__init__.py +0 -0
- {monkeybot-3.12.0 → monkeybot-3.13.0}/tests/unit/web_search/test_web_search.py +0 -0
|
@@ -6,6 +6,22 @@ the project adheres to [Semantic Versioning](https://semver.org/).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [core v3.13.0] - 2026-11-01
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- `task` accepts `background: true`. The child keeps running after the turn ends. `await_task` and `kill_task` read or stop it. A finished child wakes the parent with a `[harness]` follow-up while the session is idle. `MONKEYBOT_TASK_QUEUE` and the subagent worker pool are removed.
|
|
14
|
+
- `write_file`, `replace_in_file`, and `apply_patch` emit a `FileChange` and keep a before/after snapshot under `.monkeybot/changes/{session}` so a client can review the diff and undo. Undo refuses a file that changed since the edit or a snapshot that was too large to keep, and the next turn is told which paths were restored.
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- Tool input and output, tool errors, completions, and turn I/O are no longer clipped at 8 KB in traces or at 4 KB in the SQLite trace DB. Each attribute is capped at 1 MiB instead. The history prompt stays at 8 KB. Full tool I/O now reaches OTLP backends, so redact at the collector. The SQLite DB no longer stores the `langfuse.*` mirror keys. The OTLP and SQLite exporters send 8 spans per request (override OTLP with a positive integer `OTEL_BSP_MAX_EXPORT_BATCH_SIZE`; any other value keeps 8).
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- A UI-only row between a tool call and its result no longer makes the provider see two results for that call. Bedrock rejected the turn when the counts did not match. Stored history is unchanged.
|
|
23
|
+
- `list_skills` advertises the workspace `skills/` mount instead of the host skills directory. `run_command` paths under `skills/` stay inside that root, so opening a skill file no longer asks for approval.
|
|
24
|
+
|
|
9
25
|
## [core v3.12.0] - 2026-10-29
|
|
10
26
|
|
|
11
27
|
### Added
|
|
@@ -4,7 +4,7 @@ Thanks for helping improve monkeybot. Report bugs and doc gaps via [issues](http
|
|
|
4
4
|
|
|
5
5
|
## Developing the harness
|
|
6
6
|
|
|
7
|
-
Clone only if you are changing monkeybot itself (end users should
|
|
7
|
+
Clone only if you are changing monkeybot itself (end users should install with the Pillow override — see the [README](README.md)):
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
10
|
git clone https://github.com/human-plus-machine/monkeybot.git
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: monkeybot
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.13.0
|
|
4
4
|
Summary: monkeybot agent harness — FastAPI SSE gateway, owned loop, SQLite, and MCP.
|
|
5
5
|
License: MIT
|
|
6
6
|
License-File: LICENSE
|
|
@@ -120,7 +120,11 @@ Docs and examples are **GCP-first** (Vertex, GCS, Cloud Run); AWS paths ship in
|
|
|
120
120
|
Install [uv](https://docs.astral.sh/uv/), then:
|
|
121
121
|
|
|
122
122
|
```bash
|
|
123
|
-
|
|
123
|
+
# browser-harness pins Pillow 12. Core 3.12 needs Pillow 13, and
|
|
124
|
+
# `uv tool install` ignores the package override unless this file is passed.
|
|
125
|
+
# Without it the resolver stays on core 3.10.0.
|
|
126
|
+
printf 'pillow>=13\n' > /tmp/monkeybot-overrides.txt
|
|
127
|
+
uv tool install --overrides /tmp/monkeybot-overrides.txt monkeybot-cli
|
|
124
128
|
|
|
125
129
|
monkeybot new --dest ./my-agent --provider openai --yes
|
|
126
130
|
cd my-agent
|
|
@@ -130,7 +134,7 @@ monkeybot doctor
|
|
|
130
134
|
monkeybot chat
|
|
131
135
|
```
|
|
132
136
|
|
|
133
|
-
Upgrade the CLI with `uv tool
|
|
137
|
+
Upgrade the CLI with the same override: `uv tool install --reinstall --overrides /tmp/monkeybot-overrides.txt monkeybot-cli`. Full walkthrough: **[Getting Started](docs/getting-started.md)**.
|
|
134
138
|
|
|
135
139
|
## What you get
|
|
136
140
|
|
|
@@ -23,7 +23,11 @@ Docs and examples are **GCP-first** (Vertex, GCS, Cloud Run); AWS paths ship in
|
|
|
23
23
|
Install [uv](https://docs.astral.sh/uv/), then:
|
|
24
24
|
|
|
25
25
|
```bash
|
|
26
|
-
|
|
26
|
+
# browser-harness pins Pillow 12. Core 3.12 needs Pillow 13, and
|
|
27
|
+
# `uv tool install` ignores the package override unless this file is passed.
|
|
28
|
+
# Without it the resolver stays on core 3.10.0.
|
|
29
|
+
printf 'pillow>=13\n' > /tmp/monkeybot-overrides.txt
|
|
30
|
+
uv tool install --overrides /tmp/monkeybot-overrides.txt monkeybot-cli
|
|
27
31
|
|
|
28
32
|
monkeybot new --dest ./my-agent --provider openai --yes
|
|
29
33
|
cd my-agent
|
|
@@ -33,7 +37,7 @@ monkeybot doctor
|
|
|
33
37
|
monkeybot chat
|
|
34
38
|
```
|
|
35
39
|
|
|
36
|
-
Upgrade the CLI with `uv tool
|
|
40
|
+
Upgrade the CLI with the same override: `uv tool install --reinstall --overrides /tmp/monkeybot-overrides.txt monkeybot-cli`. Full walkthrough: **[Getting Started](docs/getting-started.md)**.
|
|
37
41
|
|
|
38
42
|
## What you get
|
|
39
43
|
|
|
@@ -31,11 +31,15 @@ Tell the user what you're installing and why. On macOS/Linux you can run these y
|
|
|
31
31
|
### 2. Install the global CLI
|
|
32
32
|
|
|
33
33
|
```bash
|
|
34
|
-
|
|
34
|
+
# browser-harness pins Pillow 12. Core 3.12 needs Pillow 13, and
|
|
35
|
+
# `uv tool install` ignores the package override unless this file is passed.
|
|
36
|
+
# Without it the resolver stays on core 3.10.0.
|
|
37
|
+
printf 'pillow>=13\n' > /tmp/monkeybot-overrides.txt
|
|
38
|
+
uv tool install --overrides /tmp/monkeybot-overrides.txt monkeybot-cli
|
|
35
39
|
monkeybot --help
|
|
36
40
|
```
|
|
37
41
|
|
|
38
|
-
Upgrade later with `uv tool
|
|
42
|
+
Upgrade later with `uv tool install --reinstall --overrides /tmp/monkeybot-overrides.txt monkeybot-cli`.
|
|
39
43
|
|
|
40
44
|
**Do not** tell day-1 users to clone `human-plus-machine/monkeybot` unless they are contributing to the harness itself (see Contributing below).
|
|
41
45
|
|
|
@@ -47,7 +51,7 @@ If the user arrived via skills.sh:
|
|
|
47
51
|
npx skills add human-plus-machine/monkeybot --skill monkeybot
|
|
48
52
|
```
|
|
49
53
|
|
|
50
|
-
…they have **this skill only**. Walk them through Tier 0: install `uv` → `uv tool install monkeybot-cli` → verify `monkeybot --help`. Then continue to Tier 1.
|
|
54
|
+
…they have **this skill only**. Walk them through Tier 0: install `uv` → `uv tool install --overrides /tmp/monkeybot-overrides.txt monkeybot-cli` (write `pillow>=13` into that file first) → verify `monkeybot --help`. Then continue to Tier 1.
|
|
51
55
|
|
|
52
56
|
## How config works (tell the user this first)
|
|
53
57
|
|
|
@@ -115,7 +119,7 @@ uv sync
|
|
|
115
119
|
| `ollama-local` | None required — `OLLAMA_BASE_URL` (default `http://localhost:11434`). Requests send `keep_alive` 24h so prefix KV cache survives idle. | `monkeybot[ollama]` |
|
|
116
120
|
| `ollama` | Legacy auto-route (key + blank URL = cloud; explicit URL wins) | `monkeybot[ollama]` |
|
|
117
121
|
|
|
118
|
-
**Agent-first dependencies.** The CLI is thin — it does **not** install provider/storage extras globally. `monkeybot new` scaffolds a `pyproject.toml` with the selected provider (and any `--with` extras). Run plain `uv sync` in the agent directory. `monkeybot run` / `chat` spawn the gateway from that project's interpreter (`.venv/bin/python`, else `uv run python`), and `doctor` checks extras in that same interpreter. For a config-only tree (just `monkeybot_config/`, no `pyproject.toml`) the gateway uses the CLI's interpreter when it already has MonkeyBot 3.x (and MemPalace if memory is on). If memory is enabled and that interpreter cannot import MemPalace, `run` / `chat` provision a cached CLI-managed venv under `~/.cache/monkeybot/runtimes/` holding `monkeybot[memory]` pinned to the running core (never rewrites a `pyproject.toml`). `doctor` reuses that cache when it is already present. Otherwise extras must be installed in the CLI env (`uv tool install --with 'monkeybot[<extra>]' monkeybot-cli`).
|
|
122
|
+
**Agent-first dependencies.** The CLI is thin — it does **not** install provider/storage extras globally. `monkeybot new` scaffolds a `pyproject.toml` with the selected provider (and any `--with` extras). Run plain `uv sync` in the agent directory. `monkeybot run` / `chat` spawn the gateway from that project's interpreter (`.venv/bin/python`, else `uv run python`), and `doctor` checks extras in that same interpreter. For a config-only tree (just `monkeybot_config/`, no `pyproject.toml`) the gateway uses the CLI's interpreter when it already has MonkeyBot 3.x (and MemPalace if memory is on). If memory is enabled and that interpreter cannot import MemPalace, `run` / `chat` provision a cached CLI-managed venv under `~/.cache/monkeybot/runtimes/` holding `monkeybot[memory]` pinned to the running core (never rewrites a `pyproject.toml`). `doctor` reuses that cache when it is already present. Otherwise extras must be installed in the CLI env (`uv tool install --reinstall --overrides /tmp/monkeybot-overrides.txt --with 'monkeybot[<extra>]' monkeybot-cli`, with `pillow>=13` in that file). A bare `uv tool install` resolves core 3.10.0.
|
|
119
123
|
|
|
120
124
|
`doctor` is the source of truth for credentials and extras — when in doubt, run it and read the `remediation` field (add `monkeybot[<extra>]` to agent deps + `uv sync`).
|
|
121
125
|
|
|
@@ -241,6 +241,8 @@ class ChatSessionController:
|
|
|
241
241
|
self._reconnecting = False
|
|
242
242
|
self._last_event_id: int | None = None
|
|
243
243
|
self._abandoned: deque[str] = deque(maxlen=64)
|
|
244
|
+
self._deferred: list[Any] = []
|
|
245
|
+
self._idle_task: asyncio.Task[None] | None = None
|
|
244
246
|
self._turn_abort = asyncio.Event()
|
|
245
247
|
self._active_request_id: str | None = None
|
|
246
248
|
self._hitl_future: asyncio.Future[HitlAnswer] | None = None
|
|
@@ -292,6 +294,7 @@ class ChatSessionController:
|
|
|
292
294
|
self._reconnecting = False
|
|
293
295
|
self._last_event_id = None
|
|
294
296
|
self._stream_task = asyncio.create_task(self._consume_stream())
|
|
297
|
+
self._start_idle_watch()
|
|
295
298
|
self._emit("session_ready", session_id=self.session_id)
|
|
296
299
|
self._emit("connection_state", state="connected")
|
|
297
300
|
await self._emit_transcript_backfill()
|
|
@@ -504,6 +507,14 @@ class ChatSessionController:
|
|
|
504
507
|
return
|
|
505
508
|
|
|
506
509
|
request_id = str(uuid.uuid4())
|
|
510
|
+
if self._active_request_id is not None:
|
|
511
|
+
self._emit("session_busy")
|
|
512
|
+
return
|
|
513
|
+
await self._stop_idle_watch()
|
|
514
|
+
if self._active_request_id is not None:
|
|
515
|
+
self._emit("session_busy")
|
|
516
|
+
self._start_idle_watch()
|
|
517
|
+
return
|
|
507
518
|
self._active_request_id = request_id
|
|
508
519
|
self._last_cancel_ok = None
|
|
509
520
|
self._turn_abort.clear()
|
|
@@ -513,15 +524,23 @@ class ChatSessionController:
|
|
|
513
524
|
json={"request_id": request_id, "message": message},
|
|
514
525
|
)
|
|
515
526
|
if reply.status_code == 409:
|
|
527
|
+
self._active_request_id = None
|
|
516
528
|
self._emit("session_busy")
|
|
529
|
+
self._start_idle_watch()
|
|
517
530
|
return
|
|
518
531
|
reply.raise_for_status()
|
|
519
532
|
except httpx.HTTPError as exc:
|
|
533
|
+
self._active_request_id = None
|
|
520
534
|
self._emit("error", message=format_http_error("Reply", exc))
|
|
535
|
+
self._start_idle_watch()
|
|
521
536
|
return
|
|
522
537
|
|
|
523
538
|
self._emit("turn_started", request_id=request_id)
|
|
524
|
-
|
|
539
|
+
try:
|
|
540
|
+
await self._run_turn(request_id)
|
|
541
|
+
finally:
|
|
542
|
+
if self._active_request_id is None and not self._closed:
|
|
543
|
+
self._start_idle_watch()
|
|
525
544
|
|
|
526
545
|
async def _dequeue_payload(self) -> str | None | Literal[False]:
|
|
527
546
|
"""Return payload, None for stream end, False on poll timeout."""
|
|
@@ -544,9 +563,13 @@ class ChatSessionController:
|
|
|
544
563
|
self._warn(f"skipping unparseable event: {exc}")
|
|
545
564
|
return None
|
|
546
565
|
|
|
547
|
-
async def _run_turn(self, request_id: str) -> None:
|
|
566
|
+
async def _run_turn(self, request_id: str, *, prelude: list[Any] | None = None) -> None:
|
|
548
567
|
assert self._client is not None and self.session_id is not None
|
|
549
568
|
state = _TurnState()
|
|
569
|
+
for evt in prelude or []:
|
|
570
|
+
if state.done or self._turn_abort.is_set():
|
|
571
|
+
break
|
|
572
|
+
await self._dispatch_turn_event(evt, request_id, state)
|
|
550
573
|
while not state.done and not self._turn_abort.is_set():
|
|
551
574
|
payload = await self._dequeue_payload()
|
|
552
575
|
if payload is False:
|
|
@@ -577,6 +600,71 @@ class ChatSessionController:
|
|
|
577
600
|
if not self._stream_alive and not self._reconnecting:
|
|
578
601
|
self._emit("stream_ended")
|
|
579
602
|
|
|
603
|
+
def _start_idle_watch(self) -> None:
|
|
604
|
+
"""Render turns the gateway starts while the prompt is idle."""
|
|
605
|
+
if self._closed or self._active_request_id is not None:
|
|
606
|
+
return
|
|
607
|
+
task = self._idle_task
|
|
608
|
+
if task is not None and not task.done():
|
|
609
|
+
return
|
|
610
|
+
self._idle_task = asyncio.create_task(self._watch_idle(), name="chat-idle-watch")
|
|
611
|
+
|
|
612
|
+
async def _stop_idle_watch(self) -> None:
|
|
613
|
+
task = self._idle_task
|
|
614
|
+
if task is None or task.done():
|
|
615
|
+
self._idle_task = None
|
|
616
|
+
return
|
|
617
|
+
if self._active_request_id is not None:
|
|
618
|
+
return
|
|
619
|
+
task.cancel()
|
|
620
|
+
with contextlib.suppress(asyncio.CancelledError):
|
|
621
|
+
await task
|
|
622
|
+
self._idle_task = None
|
|
623
|
+
|
|
624
|
+
async def _watch_idle(self) -> None:
|
|
625
|
+
"""Show a background-subagent wake (or any other turn) the user did not send."""
|
|
626
|
+
try:
|
|
627
|
+
while not self._closed and self._active_request_id is None:
|
|
628
|
+
await self._play_deferred()
|
|
629
|
+
if self._closed or self._active_request_id is not None:
|
|
630
|
+
return
|
|
631
|
+
payload = await self._dequeue_payload()
|
|
632
|
+
if payload is False:
|
|
633
|
+
continue
|
|
634
|
+
if payload is None:
|
|
635
|
+
return
|
|
636
|
+
if self._active_request_id is not None:
|
|
637
|
+
self._event_queue.put_nowait(payload)
|
|
638
|
+
return
|
|
639
|
+
evt = self._decode_event(payload)
|
|
640
|
+
if evt is None:
|
|
641
|
+
continue
|
|
642
|
+
rid = getattr(evt, "request_id", "") or ""
|
|
643
|
+
if not rid or rid in self._abandoned:
|
|
644
|
+
continue
|
|
645
|
+
self._deferred.append(evt)
|
|
646
|
+
except asyncio.CancelledError:
|
|
647
|
+
raise
|
|
648
|
+
|
|
649
|
+
async def _play_deferred(self) -> None:
|
|
650
|
+
while self._deferred and not self._closed and self._active_request_id is None:
|
|
651
|
+
first = self._deferred.pop(0)
|
|
652
|
+
rid = getattr(first, "request_id", "") or ""
|
|
653
|
+
if not rid or rid in self._abandoned:
|
|
654
|
+
continue
|
|
655
|
+
batch = [first]
|
|
656
|
+
rest: list[Any] = []
|
|
657
|
+
for evt in self._deferred:
|
|
658
|
+
if getattr(evt, "request_id", "") == rid:
|
|
659
|
+
batch.append(evt)
|
|
660
|
+
else:
|
|
661
|
+
rest.append(evt)
|
|
662
|
+
self._deferred = rest
|
|
663
|
+
self._active_request_id = rid
|
|
664
|
+
self._turn_abort.clear()
|
|
665
|
+
self._emit("turn_started", request_id=rid)
|
|
666
|
+
await self._run_turn(rid, prelude=batch)
|
|
667
|
+
|
|
580
668
|
async def _dispatch_turn_event(self, evt: Any, request_id: str, state: _TurnState) -> None:
|
|
581
669
|
evt_rid = getattr(evt, "request_id", "") or ""
|
|
582
670
|
|
|
@@ -589,8 +677,9 @@ class ChatSessionController:
|
|
|
589
677
|
self._emit("thinking", text="thinking…")
|
|
590
678
|
return
|
|
591
679
|
|
|
592
|
-
if evt_rid != request_id:
|
|
593
|
-
self.
|
|
680
|
+
if evt_rid and evt_rid != request_id:
|
|
681
|
+
if evt_rid not in self._abandoned:
|
|
682
|
+
self._deferred.append(evt)
|
|
594
683
|
return
|
|
595
684
|
|
|
596
685
|
if isinstance(evt, GroundingEvent):
|
|
@@ -885,6 +974,7 @@ class ChatSessionController:
|
|
|
885
974
|
if self._active_request_id is not None:
|
|
886
975
|
self._abandoned.append(self._active_request_id)
|
|
887
976
|
self._active_request_id = None
|
|
977
|
+
await self._stop_idle_watch()
|
|
888
978
|
|
|
889
979
|
if self._stream_task is not None:
|
|
890
980
|
self._stream_task.cancel()
|
|
@@ -913,6 +1003,7 @@ class ChatSessionController:
|
|
|
913
1003
|
await self._teardown_stream()
|
|
914
1004
|
await self._create_session()
|
|
915
1005
|
self._stream_task = asyncio.create_task(self._consume_stream())
|
|
1006
|
+
self._start_idle_watch()
|
|
916
1007
|
self._emit("session_ready", session_id=self.session_id)
|
|
917
1008
|
self._emit("connection_state", state="connected")
|
|
918
1009
|
|
|
@@ -926,6 +1017,7 @@ class ChatSessionController:
|
|
|
926
1017
|
await self._teardown_stream()
|
|
927
1018
|
await self._attach_or_create_session(sid)
|
|
928
1019
|
self._stream_task = asyncio.create_task(self._consume_stream())
|
|
1020
|
+
self._start_idle_watch()
|
|
929
1021
|
self._emit("session_ready", session_id=self.session_id)
|
|
930
1022
|
self._emit("connection_state", state="connected")
|
|
931
1023
|
await self._emit_transcript_backfill()
|
|
@@ -942,6 +1034,11 @@ class ChatSessionController:
|
|
|
942
1034
|
if self._closed:
|
|
943
1035
|
return
|
|
944
1036
|
self._closed = True
|
|
1037
|
+
if self._idle_task is not None:
|
|
1038
|
+
self._idle_task.cancel()
|
|
1039
|
+
with contextlib.suppress(asyncio.CancelledError, asyncio.TimeoutError, TimeoutError):
|
|
1040
|
+
await asyncio.wait_for(self._idle_task, timeout=0.5)
|
|
1041
|
+
self._idle_task = None
|
|
945
1042
|
if self._stream_task is not None:
|
|
946
1043
|
self._stream_task.cancel()
|
|
947
1044
|
with contextlib.suppress(asyncio.CancelledError, asyncio.TimeoutError, TimeoutError):
|
|
@@ -70,6 +70,16 @@ def _agent_defines_project_extra(agent_root: Path, extra: str) -> bool:
|
|
|
70
70
|
return isinstance(optional, dict) and extra in optional
|
|
71
71
|
|
|
72
72
|
|
|
73
|
+
def _cli_overrides_file() -> Path:
|
|
74
|
+
"""Pillow floor shipped next to this package.
|
|
75
|
+
|
|
76
|
+
``uv tool install`` does not read ``[tool.uv] override-dependencies``.
|
|
77
|
+
browser-harness pins Pillow 12, so a bare install resolves core 3.10
|
|
78
|
+
instead of a core that requires Pillow 13.
|
|
79
|
+
"""
|
|
80
|
+
return Path(__file__).resolve().parents[1] / "overrides.txt"
|
|
81
|
+
|
|
82
|
+
|
|
73
83
|
def _extra_remediation(extra: str, agent_root: Path, runtime) -> str:
|
|
74
84
|
"""Remediation text pointing at the agent project, not the CLI env."""
|
|
75
85
|
if runtime.source in {"cli", MANAGED_RUNTIME_SOURCE}:
|
|
@@ -78,9 +88,11 @@ def _extra_remediation(extra: str, agent_root: Path, runtime) -> str:
|
|
|
78
88
|
if runtime.source == MANAGED_RUNTIME_SOURCE
|
|
79
89
|
else ""
|
|
80
90
|
)
|
|
91
|
+
overrides = _cli_overrides_file()
|
|
81
92
|
return (
|
|
82
93
|
"Config-only tree: install in the CLI env — "
|
|
83
|
-
f"uv tool install --
|
|
94
|
+
f"uv tool install --reinstall --overrides {overrides} "
|
|
95
|
+
f"--with 'monkeybot[{extra}]' monkeybot-cli"
|
|
84
96
|
f"{refresh}"
|
|
85
97
|
)
|
|
86
98
|
if _agent_defines_project_extra(agent_root, extra):
|
|
@@ -39,7 +39,7 @@ workspace-relative.
|
|
|
39
39
|
}
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
-
Replace `<skills_path>` with the
|
|
42
|
+
Replace `<skills_path>` with the `skills_path` returned by `list_skills` (`skills`).
|
|
43
43
|
|
|
44
44
|
Supported `--aspect-ratio` values: `1:1`, `2:3`, `3:2`, `3:4`, `4:3`, `4:5`, `5:4`, `9:16`, `16:9`, `21:9`.
|
|
45
45
|
|
|
@@ -448,3 +448,27 @@ def test_close_deletes_session_and_captures_report_dir() -> None:
|
|
|
448
448
|
assert client.delete.await_count == 1
|
|
449
449
|
|
|
450
450
|
asyncio.run(_run())
|
|
451
|
+
|
|
452
|
+
|
|
453
|
+
def test_idle_watch_shows_a_turn_the_user_did_not_send() -> None:
|
|
454
|
+
async def _run() -> None:
|
|
455
|
+
events: list[ChatUiEvent] = []
|
|
456
|
+
controller = ChatSessionController(base="http://localhost:8080", emit=events.append)
|
|
457
|
+
controller.session_id = "s"
|
|
458
|
+
controller._client = object() # type: ignore[assignment]
|
|
459
|
+
controller._event_queue.put_nowait(
|
|
460
|
+
'{"type":"AssistantDelta","request_id":"wake-1","delta":"survey"}'
|
|
461
|
+
)
|
|
462
|
+
controller._event_queue.put_nowait('{"type":"TurnComplete","request_id":"wake-1"}')
|
|
463
|
+
controller._start_idle_watch()
|
|
464
|
+
for _ in range(40):
|
|
465
|
+
if any(event.kind == "turn_complete" for event in events):
|
|
466
|
+
break
|
|
467
|
+
await asyncio.sleep(0.05)
|
|
468
|
+
await controller._stop_idle_watch()
|
|
469
|
+
deltas = [event.payload.get("delta") for event in events if event.kind == "assistant_delta"]
|
|
470
|
+
assert deltas == ["survey"]
|
|
471
|
+
assert any(event.kind == "turn_complete" for event in events)
|
|
472
|
+
assert any(event.kind == "turn_started" for event in events)
|
|
473
|
+
|
|
474
|
+
asyncio.run(_run())
|
|
@@ -46,14 +46,18 @@ def test_extra_remediation_keeps_extra_for_project_optionals(tmp_path: Path) ->
|
|
|
46
46
|
def test_extra_remediation_config_only_cli_env(tmp_path: Path) -> None:
|
|
47
47
|
runtime = SimpleNamespace(source="cli")
|
|
48
48
|
text = _extra_remediation("bedrock", tmp_path, runtime)
|
|
49
|
-
assert "
|
|
49
|
+
assert "--overrides " in text
|
|
50
|
+
assert "overrides.txt" in text
|
|
51
|
+
assert "--with 'monkeybot[bedrock]' monkeybot-cli" in text
|
|
50
52
|
assert "refresh the managed runtime" not in text
|
|
51
53
|
|
|
52
54
|
|
|
53
55
|
def test_extra_remediation_config_only_managed_runtime(tmp_path: Path) -> None:
|
|
54
56
|
runtime = SimpleNamespace(source="cli-managed")
|
|
55
57
|
text = _extra_remediation("openai", tmp_path, runtime)
|
|
56
|
-
assert "
|
|
58
|
+
assert "--overrides " in text
|
|
59
|
+
assert "overrides.txt" in text
|
|
60
|
+
assert "--with 'monkeybot[openai]' monkeybot-cli" in text
|
|
57
61
|
assert "refresh the managed runtime" in text
|
|
58
62
|
|
|
59
63
|
|
|
@@ -87,10 +87,6 @@ managed `DB_URL` and `MEMORY_STORAGE_URI` for state that must survive recycling.
|
|
|
87
87
|
|
|
88
88
|
When several gateway or worker processes share one `DB_URL`, conversation isolation is by `thread_id`; subagent run isolation is by `run_id`.
|
|
89
89
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
- **Production:** standalone `python -m monkeybot.subagents.worker` alongside the gateway (separate event loop; share state via `DB_URL`).
|
|
93
|
-
- **Development only:** `MONKEYBOT_WORKER_POOL=1` co-locates a worker in the gateway process — do not use in production.
|
|
94
|
-
- **SQLite:** single-process / local only. **Postgres / Firestore:** multi-process worker pools.
|
|
90
|
+
Background subagents run inside the gateway process that owns the session. There is no separate worker pool and no `MONKEYBOT_TASK_QUEUE`. A `running` row carries this process's owner id and a lease. On startup, rows whose owner is a dead process on this host are marked failed. Another host's rows are left alone, so a session must stay pinned to one gateway. See [Features — durable subagent runs](features.md#13-durable-subagent-runs-runstore-lease).
|
|
95
91
|
|
|
96
92
|
Handle `StorageBackend` open/close in every entry point (gateway lifespan, FaaS cold start, AgentCore handler).
|
|
@@ -99,7 +99,8 @@ Install the unified CLI (`monkeybot-cli` in `cli/`) plus harness extras for talk
|
|
|
99
99
|
# monkeybot[cli-realtime] — audio talk (requires PortAudio)
|
|
100
100
|
|
|
101
101
|
# Global CLI on PATH
|
|
102
|
-
|
|
102
|
+
printf 'pillow>=13\n' > /tmp/monkeybot-overrides.txt
|
|
103
|
+
uv tool install --overrides /tmp/monkeybot-overrides.txt monkeybot-cli
|
|
103
104
|
|
|
104
105
|
# Harness contributors only (editable checkout):
|
|
105
106
|
# uv sync --extra cli # or cli-realtime
|
|
@@ -149,7 +149,7 @@ Each section follows: **Purpose** · **Key files** · **How it works** · **Depe
|
|
|
149
149
|
- Consecutive `task` tools and consecutive `parallel_safe` tools in one batch run **in parallel** (capped; default 10); mutating / unmarked tools run as **serial chunks**.
|
|
150
150
|
- One user `Message` per model tool-call turn — all `ToolResponse` blocks grouped together (required for Gemini replay).
|
|
151
151
|
- Final assistant history write is backgrounded but **awaited at turn tail** before freeze/reset.
|
|
152
|
-
- `transform_context()`
|
|
152
|
+
- `transform_context()` strips UI-only blocks, then repairs tool pairs, on every `history.load()` (in-memory only, never persisted); `convert_to_provider()` resolves attachments / pressure-shapes for the provider view.
|
|
153
153
|
|
|
154
154
|
**Depends on:** Provider, HistoryStore, ToolExecutorPort, inspectors, optional hooks/curator/attachments.
|
|
155
155
|
|
|
@@ -164,7 +164,7 @@ Each section follows: **Purpose** · **Key files** · **How it works** · **Depe
|
|
|
164
164
|
- **Settlement barrier:** `PRE_TOOL` is awaited before execute; fire-and-forget hooks are drained (bounded by `MONKEYBOT_HOOK_SETTLEMENT_TIMEOUT_S`, default 2s) before the next provider call and before `TurnComplete` (`run()` finally). Settlement does **not** wait on SSE client ACKs (avoids deadlock).
|
|
165
165
|
- **Parallel-safe tools:** `ToolDef.parallel_safe=True` for read-only core tools (`read_file`, `glob`, `grep`, `search_memory`, `list_skills`, `loop_status`, `load_file`). Mutating tools (`write_file`, `replace_in_file`, `apply_patch`, …) stay serial. MCP tools default serial. Results always append in `call_id` order.
|
|
166
166
|
- **Context Epoch:** At each safe provider-turn boundary the harness reconciles stable vs volatile system-context sources. The leading system message keeps an immutable epoch baseline (cache prefix). Volatile changes emit a chronological mid-conversation update (user-role, not persisted) and a `SystemContextUpdated` event. Compaction / stable-source change opens a new epoch (`ContextEpochStarted`).
|
|
167
|
-
- **Message pipeline:** `history → transform_context() → convert_to_provider() → Provider.stream`. Transform repairs tool
|
|
167
|
+
- **Message pipeline:** `history → transform_context() → convert_to_provider() → Provider.stream`. Transform strips UI-only blocks, then repairs tool pairs on that provider-shaped list; convert resolves attachments and applies pressure shaping without mutating persisted history.
|
|
168
168
|
- **Streaming grammar (additive):** `AssistantTextStarted` / `AssistantTextEnded`, `ThinkingBlockStarted`, and `ToolInputDelta` supplement existing `AssistantDelta` / `ThinkingBlockDelta` / `ToolCallStarted`. Clients may ignore the new events.
|
|
169
169
|
|
|
170
170
|
---
|
|
@@ -294,6 +294,7 @@ Each section follows: **Purpose** · **Key files** · **How it works** · **Depe
|
|
|
294
294
|
- `skills/...` paths resolve only below the read-only skills root; all other relative paths resolve only below `workspace_root`.
|
|
295
295
|
- Writes, edits, and patches reject `skills/...`; real-path checks reject symlink escapes from either root.
|
|
296
296
|
- `apply_patch` validates all hunks before writing; a mid-apply failure rolls back completed ops in reverse order.
|
|
297
|
+
- `write_file`, `replace_in_file`, and `apply_patch` snapshot the before/after bytes under `.monkeybot/changes/{session}/` and emit `FileChange` (path, action, line stats; bodies stay off the wire). Undo restores the earliest pre-image in the selection. It refuses a file that no longer matches the recorded result, and a snapshot that was too large to keep. A parent session lists and deletes the `subagent:{session}:*` copies with its own.
|
|
297
298
|
- Soft spill: large tool results always write the full payload to `.monkeybot/spill/{session_id}/` (and `.monkeybot/spill/subagent:{session_id}:*/` for task subagents) and keep a window-derived inline body in history when headroom allows; cleaned concurrently on session end. Budgets derive from `model.context_window` (no spill YAML/env knobs). Reported `read_file` line metadata is always truthful (`next_offset` when truncated).
|
|
298
299
|
- `run_command` output over the spill threshold is never inlined as a raw-JSON prefix: the result stays valid JSON with `ok`, `exit_code`, `stdout_head`, `stdout_tail`, `stderr_tail`, `stdout_chars`/`stderr_chars` and `output_path` (full streams under `.monkeybot/spill/`). It is in `_SPILL_SKIP_TOOLS` because it self-spills.
|
|
299
300
|
- `run_command` accepts `./…` and workspace-absolute path arguments (the agent's own tree); `../memory` and symlink escapes stay outside. `bash|sh|zsh -c "…"` scripts are split on shell operators and each command is checked against `deny_patterns` (anchored patterns like `^rm\s+-rf` used to miss them).
|
|
@@ -475,47 +476,41 @@ pricing:
|
|
|
475
476
|
|
|
476
477
|
### 12. Subagents (`task` tool)
|
|
477
478
|
|
|
478
|
-
**Purpose:** Delegate work to isolated subprocess with same workspace
|
|
479
|
+
**Purpose:** Delegate work to an isolated subprocess with the same workspace, memory, and MCP.
|
|
479
480
|
|
|
480
|
-
**Key files:** `core/subagents/subagent_proto.py`, `subagent_worker.py`, `monkeybot.yaml` `subagents.personas`
|
|
481
|
+
**Key files:** `core/subagents/subagent_proto.py`, `subagent_worker.py`, `core/subagents/supervisor.py`, `monkeybot.yaml` `subagents.personas`
|
|
481
482
|
|
|
482
483
|
**How it works:**
|
|
483
484
|
- Parent passes `subagent_type` to select a named persona from `monkeybot.yaml`.
|
|
484
|
-
-
|
|
485
|
-
-
|
|
485
|
+
- Omit `background` to wait for the result in this turn.
|
|
486
|
+
- `background: true` returns immediately with `{status: "running", run_id, child_thread_id}`. The child keeps running after the turn ends. Read it back with `await_task`; stop it with `kill_task`.
|
|
487
|
+
- A session may run `subagents.max_background` background children at once (default 4). Stop on a later turn does not kill them. Deleting the session does.
|
|
488
|
+
- A child starts with the folders and commands this session has already approved. It cannot raise its own access prompt. Durable "Always allow" grants in `grants.json` still apply.
|
|
489
|
+
- When a background child finishes while the session is idle, the harness starts one follow-up turn whose text begins with `[harness]`. That turn is not human intent and is not written to memory.
|
|
486
490
|
|
|
487
491
|
**Invariants:**
|
|
488
492
|
- No nested `task` inside subagents.
|
|
489
|
-
- Max 10 parallel `task` calls per batch.
|
|
490
|
-
- `subagents.max_turns` / `subagents.timeout_sec` YAML limits apply.
|
|
491
|
-
- Parent reads child NDJSON with a raised StreamReader limit (`SUBAGENT_STDOUT_LINE_LIMIT`, 16 MiB)
|
|
492
|
-
- Subagent workers redact `SystemPromptSnapshot.text` on the NDJSON pipe
|
|
493
|
+
- Max 10 parallel blocking `task` calls per batch.
|
|
494
|
+
- `subagents.max_turns` / `subagents.timeout_sec` YAML limits apply (timeout default 3600s).
|
|
495
|
+
- Parent reads child NDJSON with a raised StreamReader limit (`SUBAGENT_STDOUT_LINE_LIMIT`, 16 MiB).
|
|
496
|
+
- Subagent workers redact `SystemPromptSnapshot.text` on the NDJSON pipe.
|
|
493
497
|
|
|
494
498
|
---
|
|
495
499
|
|
|
496
|
-
### 13. Durable subagent runs (
|
|
500
|
+
### 13. Durable subagent runs (RunStore lease)
|
|
497
501
|
|
|
498
|
-
**Purpose:**
|
|
502
|
+
**Purpose:** Remember background runs across turns and gateway restarts.
|
|
499
503
|
|
|
500
|
-
**Key files:** `core/persistence/durable_runs.py`, `core/
|
|
504
|
+
**Key files:** `core/persistence/durable_runs.py`, `core/subagents/supervisor.py`
|
|
501
505
|
|
|
502
506
|
**How it works:**
|
|
503
|
-
- `
|
|
504
|
-
-
|
|
505
|
-
-
|
|
506
|
-
|
|
507
|
-
**Worker tuning:**
|
|
508
|
-
|
|
509
|
-
| Variable | Default | Purpose |
|
|
510
|
-
|---|---|---|
|
|
511
|
-
| `MONKEYBOT_WORKER_STALE_CLAIM_MS` | `600000` (10 min) | Reclaim `running` rows with no heartbeat after this window; another worker may re-execute the run |
|
|
512
|
-
| `MONKEYBOT_WORKER_POLL_INTERVAL_S` | `2` | Poll interval for `pending_runs()` |
|
|
513
|
-
| `MONKEYBOT_WORKER_CONCURRENCY` | `1` | Max concurrent claimed runs per worker |
|
|
514
|
-
| `MONKEYBOT_WORKER_ID` | auto | Worker identity for claim attribution |
|
|
507
|
+
- A background spawn writes a `running` row with `worker_id` (this process) and `claimed_at`. A heartbeat renews the lease (`subagents.lease_ms`, default 60s).
|
|
508
|
+
- `await_task` reads the in-memory run, or the stored payload after a restart.
|
|
509
|
+
- On startup, `running` rows owned by a dead process on this host are marked failed. A row owned by another host is left alone.
|
|
515
510
|
|
|
516
511
|
**Invariants:**
|
|
517
|
-
-
|
|
518
|
-
-
|
|
512
|
+
- There is no worker pool and no `MONKEYBOT_TASK_QUEUE`. A `running` result is not completion.
|
|
513
|
+
- Without a storage backend, background runs live only in the gateway process.
|
|
519
514
|
|
|
520
515
|
---
|
|
521
516
|
|
|
@@ -21,11 +21,15 @@ Session routes are **not** authenticated; do not expose the gateway to the publi
|
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
23
|
curl -LsSf https://astral.sh/uv/install.sh | sh # if needed
|
|
24
|
-
|
|
24
|
+
# browser-harness pins Pillow 12. Core 3.12 needs Pillow 13, and
|
|
25
|
+
# `uv tool install` ignores the package override unless this file is passed.
|
|
26
|
+
# Without it the resolver stays on core 3.10.0.
|
|
27
|
+
printf 'pillow>=13\n' > /tmp/monkeybot-overrides.txt
|
|
28
|
+
uv tool install --overrides /tmp/monkeybot-overrides.txt monkeybot-cli
|
|
25
29
|
monkeybot --help
|
|
26
30
|
```
|
|
27
31
|
|
|
28
|
-
Upgrade later with `uv tool
|
|
32
|
+
Upgrade later with `uv tool install --reinstall --overrides /tmp/monkeybot-overrides.txt monkeybot-cli`.
|
|
29
33
|
|
|
30
34
|
---
|
|
31
35
|
|
|
@@ -38,7 +38,8 @@ export OTEL_TRACES_SAMPLER_ARG=0.1
|
|
|
38
38
|
|
|
39
39
|
## PII and data minimization
|
|
40
40
|
|
|
41
|
-
-
|
|
41
|
+
- Tool input and output, tool errors, user messages, completions, and turn I/O are stored whole, capped at 1 MiB per attribute. The repeated history prompt (`gen_ai.prompt`) and other strings stay at 8 KiB.
|
|
42
|
+
- OTLP exports have no value-level secret scan, so full tool I/O reaches the collector. Redact at the collector. The SQLite exporter scans values when Spaces is running.
|
|
42
43
|
- Denylist blocks attribute keys containing `api_key`, `secret`, `password`, `token`, `authorization`, etc. (`gen_ai.*` usage keys are exempt).
|
|
43
44
|
- Hook span events record **`tool.name` only** — never tool args or results.
|
|
44
45
|
- Use **HTTPS** for `OTEL_EXPORTER_OTLP_ENDPOINT` in production.
|
|
@@ -48,6 +49,8 @@ export OTEL_TRACES_SAMPLER_ARG=0.1
|
|
|
48
49
|
|
|
49
50
|
- Lower production volume with sampling (above).
|
|
50
51
|
- Use an OpenTelemetry Collector for fan-out and optional filtering.
|
|
52
|
+
- The OTLP exporter sends 8 spans per request (the SDK default is 512). A tool span copies each value three times, so input and output both near 1 MiB are about 6 MiB and eight of those stay under the SDK's 64 MiB `max_request_size` (measured before compression). A larger batch is dropped whole and logged. Set `OTEL_BSP_MAX_EXPORT_BATCH_SIZE` to a positive integer to override; any other value keeps 8. Set `OTEL_EXPORTER_OTLP_COMPRESSION=gzip` to help with a collector body limit. The SQLite exporter uses the same batch size.
|
|
53
|
+
- The SQLite trace DB stores each I/O value up to three times per span (`attributes_json` under the tool and `*.value` keys, plus the `input_value` / `output_value` column) and never shrinks on its own. Lower `MONKEYBOT_TRACES_MAX_SPANS` or `MONKEYBOT_TRACES_RETENTION_DAYS` if it grows too large.
|
|
51
54
|
- Tune backend retention (Phoenix / Langfuse) per your compliance budget.
|
|
52
55
|
|
|
53
56
|
## Troubleshooting
|