monkeybot 3.11.0__tar.gz → 3.12.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1468) hide show
  1. monkeybot-3.12.0/.github/CODEOWNERS +1 -0
  2. {monkeybot-3.11.0 → monkeybot-3.12.0}/.gitignore +3 -0
  3. {monkeybot-3.11.0 → monkeybot-3.12.0}/CHANGELOG.md +19 -1
  4. {monkeybot-3.11.0 → monkeybot-3.12.0}/PKG-INFO +1 -1
  5. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/pyproject.toml +1 -1
  6. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_tui.py +91 -19
  7. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_tui_widgets.py +152 -51
  8. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_chat_tui.py +20 -3
  9. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/uv.lock +3 -2
  10. {monkeybot-3.11.0 → monkeybot-3.12.0}/pyproject.toml +1 -1
  11. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/workspace.py +8 -1
  12. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/build.py +32 -0
  13. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_fixtures.py +21 -0
  14. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenario_loader.py +2 -0
  15. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/sandbox_executor.py +17 -11
  16. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/_bedrock_converse.py +161 -18
  17. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/bedrock.py +2 -0
  18. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_sandbox_executor.py +63 -1
  19. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_bedrock_converse.py +213 -0
  20. {monkeybot-3.11.0 → monkeybot-3.12.0}/uv.lock +2 -2
  21. {monkeybot-3.11.0 → monkeybot-3.12.0}/.cursor/hooks/pre-pr.py +0 -0
  22. {monkeybot-3.11.0 → monkeybot-3.12.0}/.cursor/hooks/test-failure-notice.py +0 -0
  23. {monkeybot-3.11.0 → monkeybot-3.12.0}/.cursor/hooks.json +0 -0
  24. {monkeybot-3.11.0 → monkeybot-3.12.0}/.cursor/rules/test-failures.mdc +0 -0
  25. {monkeybot-3.11.0 → monkeybot-3.12.0}/.cursor/skills/mb-retro/SKILL.md +0 -0
  26. {monkeybot-3.11.0 → monkeybot-3.12.0}/.dockerignore +0 -0
  27. {monkeybot-3.11.0 → monkeybot-3.12.0}/.github/workflows/ci.yml +0 -0
  28. {monkeybot-3.11.0 → monkeybot-3.12.0}/.github/workflows/live-eval-smoke.yml +0 -0
  29. {monkeybot-3.11.0 → monkeybot-3.12.0}/.github/workflows/prepare-release.yml +0 -0
  30. {monkeybot-3.11.0 → monkeybot-3.12.0}/.github/workflows/publish-release.yml +0 -0
  31. {monkeybot-3.11.0 → monkeybot-3.12.0}/.pre-commit-config.yaml +0 -0
  32. {monkeybot-3.11.0 → monkeybot-3.12.0}/BACKLOG.md +0 -0
  33. {monkeybot-3.11.0 → monkeybot-3.12.0}/CONTRIBUTING.md +0 -0
  34. {monkeybot-3.11.0 → monkeybot-3.12.0}/LICENSE +0 -0
  35. {monkeybot-3.11.0 → monkeybot-3.12.0}/README.md +0 -0
  36. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/skills/monkeybot/SKILL.md +0 -0
  37. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/skills/monkeybot/references/config-sections.md +0 -0
  38. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/__init__.py +0 -0
  39. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_file_index.py +0 -0
  40. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_local_shell.py +0 -0
  41. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_renderer.py +0 -0
  42. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_session.py +0 -0
  43. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_status_bar.py +0 -0
  44. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_theme.py +0 -0
  45. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/chat_tool_display.py +0 -0
  46. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/__init__.py +0 -0
  47. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/chat.py +0 -0
  48. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/doctor.py +0 -0
  49. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/loop.py +0 -0
  50. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/mcp_login.py +0 -0
  51. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/new.py +0 -0
  52. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/refresh.py +0 -0
  53. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/run_cmd.py +0 -0
  54. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/talk.py +0 -0
  55. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/trace.py +0 -0
  56. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/commands/validate.py +0 -0
  57. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/compat.py +0 -0
  58. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/config_resolve.py +0 -0
  59. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/exit_commands.py +0 -0
  60. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/extras_catalog.py +0 -0
  61. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/gateway_health.py +0 -0
  62. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/main.py +0 -0
  63. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/opensandbox_lifecycle.py +0 -0
  64. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/output.py +0 -0
  65. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/overrides.txt +0 -0
  66. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/process_tree.py +0 -0
  67. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/providers.py +0 -0
  68. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/__init__.py +0 -0
  69. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/audio_io.py +0 -0
  70. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/client.py +0 -0
  71. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/gateway_manager.py +0 -0
  72. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/push_to_talk.py +0 -0
  73. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/session.py +0 -0
  74. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/session_controller.py +0 -0
  75. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/talk_ui.py +0 -0
  76. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/realtime/wire_encode.py +0 -0
  77. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/runtime_python.py +0 -0
  78. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold.py +0 -0
  79. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/AGENT.md +0 -0
  80. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/Dockerfile +0 -0
  81. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/__init__.py +0 -0
  82. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/browser/SKILL.md +0 -0
  83. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/command_allowlist.yaml +0 -0
  84. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/dockerignore +0 -0
  85. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/env.example +0 -0
  86. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/goal/SKILL.md +0 -0
  87. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/image-generator/SKILL.md +0 -0
  88. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/image-generator/generate_image.py +0 -0
  89. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/loop/SKILL.md +0 -0
  90. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/mcp.json +0 -0
  91. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/monkeybot.example.yaml +0 -0
  92. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/opensandbox.docker.toml +0 -0
  93. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/otel-collector.example.yaml +0 -0
  94. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/permissions.yaml +0 -0
  95. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/templates/coding/AGENT.md +0 -0
  96. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/templates/coding/command_allowlist.yaml +0 -0
  97. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/templates/coding/monkeybot.overrides.yaml +0 -0
  98. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/scaffold_defaults/templates/coding/permissions.yaml +0 -0
  99. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/session_controller.py +0 -0
  100. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/src/monkeybot_cli/terminal_markdown.py +0 -0
  101. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_chat_continue.py +0 -0
  102. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_chat_e2e.py +0 -0
  103. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_chat_errors.py +0 -0
  104. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_chat_file_index.py +0 -0
  105. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_chat_grounding.py +0 -0
  106. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_chat_local_shell.py +0 -0
  107. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_chat_renderer_parity.py +0 -0
  108. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_chat_session.py +0 -0
  109. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_chat_status_bar.py +0 -0
  110. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_chat_theme.py +0 -0
  111. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_chat_tool_display.py +0 -0
  112. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_cli.py +0 -0
  113. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_config_resolve.py +0 -0
  114. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_doctor.py +0 -0
  115. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_extras_catalog.py +0 -0
  116. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_gateway_health.py +0 -0
  117. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_opensandbox_lifecycle.py +0 -0
  118. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_realtime_session_controller.py +0 -0
  119. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_run_cmd.py +0 -0
  120. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_runtime_python.py +0 -0
  121. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_scaffold.py +0 -0
  122. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_terminal_markdown.py +0 -0
  123. {monkeybot-3.11.0 → monkeybot-3.12.0}/cli/tests/test_trace_cmd.py +0 -0
  124. {monkeybot-3.11.0 → monkeybot-3.12.0}/conftest.py +0 -0
  125. {monkeybot-3.11.0 → monkeybot-3.12.0}/docker/Dockerfile +0 -0
  126. {monkeybot-3.11.0 → monkeybot-3.12.0}/docker/demo-model.yaml +0 -0
  127. {monkeybot-3.11.0 → monkeybot-3.12.0}/docker/demo.yaml +0 -0
  128. {monkeybot-3.11.0 → monkeybot-3.12.0}/docker/docker-compose.sandbox.yml +0 -0
  129. {monkeybot-3.11.0 → monkeybot-3.12.0}/docker/opensandbox.docker.toml +0 -0
  130. {monkeybot-3.11.0 → monkeybot-3.12.0}/docker/sandbox.Dockerfile +0 -0
  131. {monkeybot-3.11.0 → monkeybot-3.12.0}/docker-compose.yml +0 -0
  132. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/agent-layout.md +0 -0
  133. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/assets/logo.png +0 -0
  134. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/browser-mcp-perf-baseline.md +0 -0
  135. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/browser-mcp-performance-plan.md +0 -0
  136. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/browser-mcp.md +0 -0
  137. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/cloud-deployment-design.md +0 -0
  138. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/deploy-aws-agentcore.md +0 -0
  139. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/deploy-pattern-a-container.md +0 -0
  140. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/deploy-pattern-b-serverless.md +0 -0
  141. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/deploy-pattern-c-agent-platform.md +0 -0
  142. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/deploy-pattern-d-realtime.md +0 -0
  143. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/features.md +0 -0
  144. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/getting-started.md +0 -0
  145. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/live-evals.md +0 -0
  146. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/mcp.md +0 -0
  147. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/migrations/agent-scope-namespacing.md +0 -0
  148. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/migrations/history-row-id.sql +0 -0
  149. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/migrations/memory-outbox.sql +0 -0
  150. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/migrations/session-branches.sql +0 -0
  151. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/observability-runbook.md +0 -0
  152. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/ollama-local.md +0 -0
  153. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/otel-collector.example.yaml +0 -0
  154. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/progressive-loop-tools.md +0 -0
  155. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/progressive-mcp-tools.md +0 -0
  156. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/skills.md +0 -0
  157. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/spill-dynamic-design.md +0 -0
  158. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/sse-gateway-ui.md +0 -0
  159. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/testing.md +0 -0
  160. {monkeybot-3.11.0 → monkeybot-3.12.0}/docs/verifier-agent-design.md +0 -0
  161. {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/README.md +0 -0
  162. {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/agentcore/handler.py +0 -0
  163. {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/agentcore/runtime_app.py +0 -0
  164. {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/agentengine/handler.py +0 -0
  165. {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/cloud-functions/main.py +0 -0
  166. {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/lambda/handler.py +0 -0
  167. {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/ollama/PrefixStable.Modelfile +0 -0
  168. {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/skills/browser/SKILL.md +0 -0
  169. {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/skills/browser/playbooks/.gitkeep +0 -0
  170. {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/skills/diagnostics/README.md +0 -0
  171. {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/skills/diagnostics/SKILL.md +0 -0
  172. {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/skills/diagnostics/__init__.py +0 -0
  173. {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/skills/diagnostics/diagnostics.py +0 -0
  174. {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/skills/image-generator/SKILL.md +0 -0
  175. {monkeybot-3.11.0 → monkeybot-3.12.0}/examples/skills/image-generator/generate_image.py +0 -0
  176. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/pyproject.toml +0 -0
  177. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/scripts/agentcore_smoke.py +0 -0
  178. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/scripts/dump_tool_surface.py +0 -0
  179. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/scripts/perf_bench.py +0 -0
  180. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/__init__.py +0 -0
  181. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/actions.py +0 -0
  182. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/agentcore.py +0 -0
  183. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/app.py +0 -0
  184. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/assets/NOTICE.md +0 -0
  185. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/assets/dom_tree.js +0 -0
  186. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/assets/pa_driver.js +0 -0
  187. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/backend.py +0 -0
  188. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/chat_context.py +0 -0
  189. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/chat_scope.py +0 -0
  190. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/dom_indexing.py +0 -0
  191. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/in_app_cdp.py +0 -0
  192. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/login.py +0 -0
  193. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/observe.py +0 -0
  194. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/perf.py +0 -0
  195. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/playbooks.py +0 -0
  196. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/playwright_helpers.py +0 -0
  197. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/results.py +0 -0
  198. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/screenshots.py +0 -0
  199. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/server.py +0 -0
  200. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tab_ops.py +0 -0
  201. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tabs.py +0 -0
  202. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tools/__init__.py +0 -0
  203. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tools/batch.py +0 -0
  204. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tools/capture.py +0 -0
  205. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tools/interact.py +0 -0
  206. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tools/navigate.py +0 -0
  207. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tools/playbook.py +0 -0
  208. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tools/read.py +0 -0
  209. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/src/browser_mcp/tools/tab_control.py +0 -0
  210. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/conftest.py +0 -0
  211. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/fixtures/api.json +0 -0
  212. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/fixtures/article.html +0 -0
  213. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/fixtures/cards.html +0 -0
  214. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/fixtures/form.html +0 -0
  215. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/fixtures/long_list.html +0 -0
  216. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/fixtures/spa.html +0 -0
  217. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/fixtures/tool_surface.json +0 -0
  218. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/integration/conftest.py +0 -0
  219. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/integration/test_act_observe.py +0 -0
  220. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/integration/test_driver_persist.py +0 -0
  221. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/integration/test_intent_tools.py +0 -0
  222. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/integration/test_multi_tab.py +0 -0
  223. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/integration/test_observation.py +0 -0
  224. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/integration/test_run_playbook.py +0 -0
  225. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/integration/test_wait_for.py +0 -0
  226. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_act.py +0 -0
  227. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_agentcore.py +0 -0
  228. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_chat_isolation.py +0 -0
  229. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_chat_scope.py +0 -0
  230. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_dom_indexing.py +0 -0
  231. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_fill_form.py +0 -0
  232. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_in_app_cdp.py +0 -0
  233. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_indexed_tools.py +0 -0
  234. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_observe.py +0 -0
  235. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_observe_after.py +0 -0
  236. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_perf.py +0 -0
  237. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_playbook_flows.py +0 -0
  238. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_playbooks.py +0 -0
  239. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_playwright_helpers.py +0 -0
  240. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_screenshots.py +0 -0
  241. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_server_shutdown.py +0 -0
  242. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_tabs.py +0 -0
  243. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_tool_surface.py +0 -0
  244. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/tests/test_wait_tools.py +0 -0
  245. {monkeybot-3.11.0 → monkeybot-3.12.0}/integrations/browser-mcp/uv.lock +0 -0
  246. {monkeybot-3.11.0 → monkeybot-3.12.0}/pytest.ini +0 -0
  247. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/__init__.py +0 -0
  248. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/conftest.py +0 -0
  249. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/__init__.py +0 -0
  250. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/__init__.py +0 -0
  251. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/git.py +0 -0
  252. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/hooks.py +0 -0
  253. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/host_tools.py +0 -0
  254. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/mcp.py +0 -0
  255. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/memory.py +0 -0
  256. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/policy.py +0 -0
  257. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/prompt_context.py +0 -0
  258. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/protocol.py +0 -0
  259. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/session.py +0 -0
  260. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/store.py +0 -0
  261. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/subagents.py +0 -0
  262. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/bundles/verifier.py +0 -0
  263. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/gateway.py +0 -0
  264. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/loop.py +0 -0
  265. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/realtime.py +0 -0
  266. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/record.py +0 -0
  267. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/replay.py +0 -0
  268. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/support/__init__.py +0 -0
  269. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/support/config.py +0 -0
  270. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/support/env.py +0 -0
  271. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/support/executor.py +0 -0
  272. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/support/paths.py +0 -0
  273. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/drivers/support/tokens.py +0 -0
  274. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/__init__.py +0 -0
  275. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/agent.base.yaml +0 -0
  276. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/command_allowlist.default.yaml +0 -0
  277. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/command_allowlist.empty.yaml +0 -0
  278. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/command_allowlist.no_deny_patterns.yaml +0 -0
  279. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/command_allowlist.strict.yaml +0 -0
  280. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/grants.corrupt.json +0 -0
  281. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/grants.json +0 -0
  282. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/mcp.autoconnect.json +0 -0
  283. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/mcp.broken.json +0 -0
  284. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/mcp.progressive.json +0 -0
  285. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/mcp.two_prefix.json +0 -0
  286. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/permissions.ask.yaml +0 -0
  287. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/permissions.default.yaml +0 -0
  288. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/permissions.overlap.yaml +0 -0
  289. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/verifier.block.yaml +0 -0
  290. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/verifier.judge.yaml +0 -0
  291. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/verifier.replan.yaml +0 -0
  292. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/verifier.tracker.yaml +0 -0
  293. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/configs/{workspace}/child.db +0 -0
  294. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/conftest.py +0 -0
  295. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/mcp/fixture_mcp_server.py +0 -0
  296. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/scripts/one_turn.yaml +0 -0
  297. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/skills/a/nested/SKILL.md +0 -0
  298. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/skills/diagnostics/SKILL.md +0 -0
  299. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/skills/plain/SKILL.md +0 -0
  300. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/.gitkeep +0 -0
  301. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/absent_file.ndjson +0 -0
  302. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/child_error.ndjson +0 -0
  303. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/echo.ndjson +0 -0
  304. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/hold.ndjson +0 -0
  305. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/large_line.ndjson +0 -0
  306. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/nested_task.ndjson +0 -0
  307. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/present_file.ndjson +0 -0
  308. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/roundtrip.ndjson +0 -0
  309. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/subagent_tapes/system_prompt.ndjson +0 -0
  310. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_secret.txt +0 -0
  311. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/.monkeybot/attachments/loop-scenario/att-link +0 -0
  312. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/.monkeybot/attachments/loop-scenario/att-link.json +0 -0
  313. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/.monkeybot/attachments/loop-scenario/att-pdf +0 -0
  314. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/.monkeybot/attachments/loop-scenario/att-pdf.json +0 -0
  315. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/i1.png +0 -0
  316. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/i2.png +0 -0
  317. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/i3.png +0 -0
  318. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/i4.png +0 -0
  319. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/i5.png +0 -0
  320. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/i6.png +0 -0
  321. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/att_ws/tiny.png +0 -0
  322. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/.gitignore +0 -0
  323. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/AGENTS.md +0 -0
  324. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/build/calc/ops.py +0 -0
  325. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/calc/__init__.py +0 -0
  326. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/calc/ops.py +0 -0
  327. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/node_modules/left-pad/index.js +0 -0
  328. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/node_modules/left-pad/package.json +0 -0
  329. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/pyproject.toml +0 -0
  330. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo/tests/test_ops.py +0 -0
  331. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/.gitignore +0 -0
  332. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/AGENTS.md +0 -0
  333. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/build/calc/ops.py +0 -0
  334. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/calc/__init__.py +0 -0
  335. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/calc/ops.py +0 -0
  336. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/node_modules/left-pad/index.js +0 -0
  337. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/node_modules/left-pad/package.json +0 -0
  338. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/pyproject.toml +0 -0
  339. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/calc_repo_green/tests/test_ops.py +0 -0
  340. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/drift_ws/DONE.txt +0 -0
  341. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/drift_ws/db/migrations/001_init.sql +0 -0
  342. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/drift_ws/src/models.py +0 -0
  343. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/grants_ws/granted/.env +0 -0
  344. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/grants_ws/granted/notes.md +0 -0
  345. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/grants_ws/workspace/src/app.txt +0 -0
  346. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/.gitignore +0 -0
  347. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/AGENTS.md +0 -0
  348. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/node_modules/left.js +0 -0
  349. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/notes.txt +0 -0
  350. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/pkg/.gitignore +0 -0
  351. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/pkg/hidden.txt +0 -0
  352. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/pkg/visible.txt +0 -0
  353. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/secret.txt +0 -0
  354. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/src/app.py +0 -0
  355. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/hostile_ws/wide.txt +0 -0
  356. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/overlays/bug_discount/shop/pricing.py +0 -0
  357. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/overlays/noisy_tests/shop/taxes.py +0 -0
  358. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/overlays/noisy_tests/tests/conftest.py +0 -0
  359. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/overlays/offline_gateway/tests/test_gateway.py +0 -0
  360. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/.gitignore +0 -0
  361. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/AGENTS.md +0 -0
  362. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/CHANGELOG.md +0 -0
  363. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/README.md +0 -0
  364. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/build/shop/shipping.py +0 -0
  365. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/pyproject.toml +0 -0
  366. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/__init__.py +0 -0
  367. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/cart.py +0 -0
  368. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/coupons.py +0 -0
  369. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/gateway.py +0 -0
  370. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/inventory.py +0 -0
  371. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/legacy/__init__.py +0 -0
  372. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/legacy/pricing_v1.py +0 -0
  373. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/legacy/shipping_v1.py +0 -0
  374. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/models.py +0 -0
  375. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/orders.py +0 -0
  376. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/pricing.py +0 -0
  377. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/reports.py +0 -0
  378. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/shipping.py +0 -0
  379. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/taxes.py +0 -0
  380. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/utils/__init__.py +0 -0
  381. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/utils/money.py +0 -0
  382. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/shop/utils/text.py +0 -0
  383. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_cart.py +0 -0
  384. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_coupons.py +0 -0
  385. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_inventory.py +0 -0
  386. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_money.py +0 -0
  387. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_orders.py +0 -0
  388. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_pricing.py +0 -0
  389. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_reports.py +0 -0
  390. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_shipping.py +0 -0
  391. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/tests/test_taxes.py +0 -0
  392. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/fixtures/workspaces/shop_repo/vendor/pricekit/__init__.py +0 -0
  393. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/AGENT_GUIDE.md +0 -0
  394. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/README.md +0 -0
  395. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/phases/phase-0a-tier1-reorg.md +0 -0
  396. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/phases/phase-0b-foundations.md +0 -0
  397. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/phases/phase-1-t2-harness-logic.md +0 -0
  398. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/phases/phase-2-contracts-and-gateway.md +0 -0
  399. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/phases/phase-3-record-replay.md +0 -0
  400. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/phases/phase-4-live.md +0 -0
  401. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/phases/phase-5-trials.md +0 -0
  402. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/phases/phase-6-cutover.md +0 -0
  403. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/01-goals-and-principles.md +0 -0
  404. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/03-tiers.md +0 -0
  405. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/04-file-structure.md +0 -0
  406. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/05.1-doubles.md +0 -0
  407. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/05.10-testing-doc.md +0 -0
  408. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/05.11-live-provider.md +0 -0
  409. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/05.2-scenario-schema.md +0 -0
  410. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/05.3-assertions-and-invariants.md +0 -0
  411. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/05.4-fixtures.md +0 -0
  412. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/05.5-cassettes.md +0 -0
  413. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/05.6-pytest-reporting-trials.md +0 -0
  414. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/05.9-failure-ledger.md +0 -0
  415. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/00-index.md +0 -0
  416. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6A-loop.md +0 -0
  417. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6B-ctx.md +0 -0
  418. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6C-hook.md +0 -0
  419. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6D-file.md +0 -0
  420. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6E-shell.md +0 -0
  421. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6F-pol.md +0 -0
  422. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6G-code.md +0 -0
  423. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6H-att.md +0 -0
  424. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6I-comp.md +0 -0
  425. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6J-sub.md +0 -0
  426. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6K-ver.md +0 -0
  427. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6L-sched.md +0 -0
  428. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6M-skill.md +0 -0
  429. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6N-mcp.md +0 -0
  430. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6O-web.md +0 -0
  431. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6P-mem.md +0 -0
  432. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6Q-store.md +0 -0
  433. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6R-cfg.md +0 -0
  434. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6S-todo.md +0 -0
  435. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6T-prov.md +0 -0
  436. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6U-gw.md +0 -0
  437. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6V-rt.md +0 -0
  438. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/06-coverage/6W-ops.md +0 -0
  439. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/07-migration-map.md +0 -0
  440. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/09-ci.md +0 -0
  441. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/10-policies.md +0 -0
  442. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/11-known-issues.md +0 -0
  443. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/12-decisions.md +0 -0
  444. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/reference/appendices.md +0 -0
  445. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/status.md +0 -0
  446. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plan/tasks.md +0 -0
  447. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/plugin.py +0 -0
  448. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/schema/__init__.py +0 -0
  449. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/schema/assertions.py +0 -0
  450. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/schema/events.py +0 -0
  451. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/schema/invariants.py +0 -0
  452. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/schema/scenario.py +0 -0
  453. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/schema/sse_norm.py +0 -0
  454. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/schema/steps.py +0 -0
  455. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/__init__.py +0 -0
  456. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/recorded/t4_run_smoke_sample.json +0 -0
  457. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_agent_project.py +0 -0
  458. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_assertions.py +0 -0
  459. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_bundle_order.py +0 -0
  460. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_coding_hard_oracle.py +0 -0
  461. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_diff.py +0 -0
  462. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_from_transcript.py +0 -0
  463. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_gateway_driver.py +0 -0
  464. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_invariants.py +0 -0
  465. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_judge.py +0 -0
  466. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_live_engine.py +0 -0
  467. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_live_ledger.py +0 -0
  468. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_live_scenarios.py +0 -0
  469. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_preflight.py +0 -0
  470. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_report.py +0 -0
  471. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_runner_sse.py +0 -0
  472. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_scenario_schema.py +0 -0
  473. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_scorer.py +0 -0
  474. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_steps.py +0 -0
  475. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/selftest/test_trials_stats.py +0 -0
  476. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/__init__.py +0 -0
  477. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/gateway/harness.py +0 -0
  478. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/gateway/scenarios/gw/reconnect_last_event_id.yaml +0 -0
  479. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/gateway/scenarios/gw/scripted_turn_golden_sse.yaml +0 -0
  480. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/gateway/scenarios/gw/tool_turn_golden_sse.yaml +0 -0
  481. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/gateway/test_cases.py +0 -0
  482. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/attachments/attachment_symlink_leaf_rejected.yaml +0 -0
  483. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/attachments/freeze_descriptors_in_history.yaml +0 -0
  484. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/attachments/load_both_args.yaml +0 -0
  485. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/attachments/load_image_preview.yaml +0 -0
  486. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/attachments/load_pdf.yaml +0 -0
  487. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/attachments/load_per_reply_cap.yaml +0 -0
  488. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/attachments/load_text_rejected.yaml +0 -0
  489. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/compaction_forgets_reads.yaml +0 -0
  490. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/fix_failing_test.yaml +0 -0
  491. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_background_verify_not_counted.yaml +0 -0
  492. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_cap_then_accept.yaml +0 -0
  493. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_custom_verify_commands.yaml +0 -0
  494. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_masked_exit.yaml +0 -0
  495. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_non_executing_wrapper.yaml +0 -0
  496. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_open_todos_reject.yaml +0 -0
  497. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_passes_when_verified.yaml +0 -0
  498. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_question_not_gated.yaml +0 -0
  499. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_rejected_answer_not_persisted.yaml +0 -0
  500. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_rejects_unverified.yaml +0 -0
  501. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/gate_write_after_verify.yaml +0 -0
  502. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/git_context_absent.yaml +0 -0
  503. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/git_context_note.yaml +0 -0
  504. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/git_env_isolation.yaml +0 -0
  505. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/read_before_write.yaml +0 -0
  506. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/subagent_has_ledger_no_gate.yaml +0 -0
  507. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/coding/subagent_ledger_child.yml +0 -0
  508. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/computer/clipboard_cap.yaml +0 -0
  509. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/computer/denied_apps_and_schemes.yaml +0 -0
  510. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/computer/denied_dirs_and_globs.yaml +0 -0
  511. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/computer/move_trash_not_always_scoped.yaml +0 -0
  512. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/computer/open_exec_suffix_denied.yaml +0 -0
  513. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/computer/trash_huge_tree_refused.yaml +0 -0
  514. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/computer/x.sh +0 -0
  515. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/background_summary_applied.yaml +0 -0
  516. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/background_summary_stale_fallback.yaml +0 -0
  517. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/base64_sanitized.yaml +0 -0
  518. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/compact_at_trigger.yaml +0 -0
  519. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/compact_does_not_persist_repairs.yaml +0 -0
  520. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/compact_fallback.yaml +0 -0
  521. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/compact_keep_tail_ratio.yaml +0 -0
  522. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/compact_pins_verdict_attachment_thinking.yaml +0 -0
  523. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/compact_trailer_from_goal_ledger.yaml +0 -0
  524. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/context_usage_current_not_peak.yaml +0 -0
  525. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/epoch_after_compaction.yaml +0 -0
  526. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/epoch_stable_change.yaml +0 -0
  527. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/epoch_volatile_update.yaml +0 -0
  528. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/memory_wake_up_large.yaml +0 -0
  529. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/project_instructions_spoof_heading.yaml +0 -0
  530. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/slash_skill_turn_scoped.yaml +0 -0
  531. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/stable_prefix_byte_stable.yaml +0 -0
  532. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/summarizer_model_override.yaml +0 -0
  533. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/ctx/tool_result_shaping_under_pressure.yaml +0 -0
  534. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/glob_cap_incomplete.yaml +0 -0
  535. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/glob_skips_noise.yaml +0 -0
  536. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/grep_gitignore_default.yaml +0 -0
  537. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/grep_incomplete_scan.yaml +0 -0
  538. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/grep_invalid_regex.yaml +0 -0
  539. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/grep_pagination.yaml +0 -0
  540. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/list_dir_truncate.yaml +0 -0
  541. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/overwrite_unread_rejected.yaml +0 -0
  542. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/patch_add_existing.yaml +0 -0
  543. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/patch_fail_closed.yaml +0 -0
  544. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/patch_move_dest_exists.yaml +0 -0
  545. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/patch_rollback.yaml +0 -0
  546. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/patch_update_requires_read.yaml +0 -0
  547. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/read_absolute_needs_grant.yaml +0 -0
  548. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/read_escape_dotdot.yaml +0 -0
  549. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/read_escape_symlink.yaml +0 -0
  550. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/read_huge_single_line.yaml +0 -0
  551. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/read_offset_past_eof.yaml +0 -0
  552. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/read_paging_no_gap.yaml +0 -0
  553. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/replace_error_codes.yaml +0 -0
  554. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/replace_fuzzy_unicode.yaml +0 -0
  555. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/skills_read_only.yaml +0 -0
  556. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/spill_large_tool_output.yaml +0 -0
  557. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/spill_session_id_sanitized.yaml +0 -0
  558. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/stale_read_rejected.yaml +0 -0
  559. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/tool_glob_grep.yaml +0 -0
  560. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/tool_read.yaml +0 -0
  561. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/tool_replace_apply_patch.yaml +0 -0
  562. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/tool_write.yaml +0 -0
  563. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/virtual_mounts.yaml +0 -0
  564. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/write_new_without_read_ok.yaml +0 -0
  565. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/write_outside_scope.yaml +0 -0
  566. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/file/write_payload_too_large.yaml +0 -0
  567. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/hook/evidence_grep_only_not_accepted.yaml +0 -0
  568. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/hook/evidence_missing_path.yaml +0 -0
  569. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/hook/evidence_thread_isolation.yaml +0 -0
  570. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/hook/evidence_unread_then_read.yaml +0 -0
  571. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/hook/secret_ends_routine_turn.yaml +0 -0
  572. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/hook/secret_in_tool_args.yaml +0 -0
  573. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/hook/secret_redacted_interactive.yaml +0 -0
  574. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/hook/secret_scanner_failure_fails_closed.yaml +0 -0
  575. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/all_parse_error_batch_rejected.yaml +0 -0
  576. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/ask_user_non_interactive.yaml +0 -0
  577. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/ask_user_roundtrip.yaml +0 -0
  578. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/background_check_raises_fails_closed.yaml +0 -0
  579. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/background_nudge_then_release.yaml +0 -0
  580. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/background_nudges_exhausted.yaml +0 -0
  581. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/cancel_after_tool_call_before_execute.yaml +0 -0
  582. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/cancel_mid_stream.yaml +0 -0
  583. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/confirm_always_remembered.yaml +0 -0
  584. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/confirm_approve.yaml +0 -0
  585. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/confirm_deny.yaml +0 -0
  586. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/confirm_timeout.yaml +0 -0
  587. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/doom_disabled.yaml +0 -0
  588. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/doom_exempt_poll.yaml +0 -0
  589. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/doom_identical_read.yaml +0 -0
  590. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/doom_path_reset_on_success.yaml +0 -0
  591. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/doom_path_retry_spelling.yaml +0 -0
  592. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/empty_exhausted.yaml +0 -0
  593. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/empty_then_text.yaml +0 -0
  594. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/grounding_event_passthrough.yaml +0 -0
  595. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/max_turns_cap.yaml +0 -0
  596. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/max_turns_not_on_clean_finish.yaml +0 -0
  597. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/mixed_parse_error_batch_runs_valid.yaml +0 -0
  598. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/parallel_concurrency_cap.yaml +0 -0
  599. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/parallel_results_in_submission_order.yaml +0 -0
  600. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/post_tool_empty_retry.yaml +0 -0
  601. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/promote_follow_up_provenance.yaml +0 -0
  602. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/provider_raises.yaml +0 -0
  603. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/registry_refresh_same_turn.yaml +0 -0
  604. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/repair_missing_tool_result.yaml +0 -0
  605. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/repair_orphan_tool_response.yaml +0 -0
  606. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/resume_thinking_budget_routine.yaml +0 -0
  607. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/steer_mid_turn.yaml +0 -0
  608. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/thinking_block_order.yaml +0 -0
  609. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/thinking_only_is_empty.yaml +0 -0
  610. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/thought_signature_preserved.yaml +0 -0
  611. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/tool_input_delta_passthrough.yaml +0 -0
  612. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/truncated_batch_rejected.yaml +0 -0
  613. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/turn_completion.yaml +0 -0
  614. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/loop/usage_totals.yaml +0 -0
  615. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/autoconnect_failure_is_status.yaml +0 -0
  616. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/catalog_diff_reload.yaml +0 -0
  617. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/disable_removes_tools.yaml +0 -0
  618. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/disabled_server_not_catalogued.yaml +0 -0
  619. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/enable_then_call.yaml +0 -0
  620. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/enable_unknown_server.yaml +0 -0
  621. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/env_interpolation_missing.yaml +0 -0
  622. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/meta_tools_only_when_connected.yaml +0 -0
  623. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/name_prefix_split.yaml +0 -0
  624. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/resources_and_prompts.yaml +0 -0
  625. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/mcp/strict_load_rolls_back.yaml +0 -0
  626. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/memory/ephemeral_palace_shared_outbox_rejected.yaml +0 -0
  627. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/memory/memory_off.yaml +0 -0
  628. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/memory/memory_write_inject.yaml +0 -0
  629. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/memory/mempalace_search_real.yaml +0 -0
  630. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/memory/outbox_failure_does_not_fail_turn.yaml +0 -0
  631. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/memory/outbox_ingest_then_inject.yaml +0 -0
  632. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/memory/outbox_thread_isolation.yaml +0 -0
  633. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/memory/subagent_no_ingest.yaml +0 -0
  634. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/command_grant_from_store.yaml +0 -0
  635. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/default_deny_patterns.yaml +0 -0
  636. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/grant_revocation_clears.yaml +0 -0
  637. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/granted_folder_credential_denied.yaml +0 -0
  638. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/path_grant_read.yaml +0 -0
  639. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/permissions_last_match_wins.yaml +0 -0
  640. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/permissions_missing_file_fail_open.yaml +0 -0
  641. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/start_loop_always_confirms.yaml +0 -0
  642. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/symlink_in_grant_does_not_widen.yaml +0 -0
  643. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/unknown_binary_confirm_approve.yaml +0 -0
  644. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/policy/unknown_binary_confirm_deny.yaml +0 -0
  645. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/scheduler/create_goal_requires_slash_goal.yaml +0 -0
  646. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/scheduler/create_goal_with_slash_goal.yaml +0 -0
  647. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/scheduler/enable_loops_progressive.yaml +0 -0
  648. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/scheduler/loop_goal_isolation.yaml +0 -0
  649. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/scheduler/loop_lifecycle_real_store.yaml +0 -0
  650. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/scheduler/one_open_goal_per_session.yaml +0 -0
  651. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/scheduler/start_loop_requires_stop_guard.yaml +0 -0
  652. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/scheduler/tool_loops.yaml +0 -0
  653. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/allowlist_deny.yaml +0 -0
  654. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/argv_forms.yaml +0 -0
  655. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/bg_job_cap.yaml +0 -0
  656. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/bg_kill_command.yaml +0 -0
  657. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/bg_killed_at_turn_end.yaml +0 -0
  658. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/bg_start_await_cursor.yaml +0 -0
  659. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/cwd_escape.yaml +0 -0
  660. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/home_escape.yaml +0 -0
  661. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/large_stdout_spill_keeps_exit.yaml +0 -0
  662. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/mempalace_refused_memory_off.yaml +0 -0
  663. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/mempalace_search_only.yaml +0 -0
  664. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/nonzero_exit.yaml +0 -0
  665. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/run_command.yaml +0 -0
  666. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/shell_wrapper_bypass.yaml +0 -0
  667. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/timeout_partial_output.yaml +0 -0
  668. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/shell/unscreenable_script_fails_closed.yaml +0 -0
  669. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/skills/list_then_read_skill.yaml +0 -0
  670. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/skills/skill_symlink_escape.yaml +0 -0
  671. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/skills/skill_write_denied.yaml +0 -0
  672. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/skills/skills_in_prompt.yaml +0 -0
  673. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/skills/skills_path_hot_reload.yaml +0 -0
  674. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/skills/slash_unknown_skill.yaml +0 -0
  675. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/store/compaction_reset_row_ids.yaml +0 -0
  676. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/store/transcript_convertible.yaml +0 -0
  677. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/store/usage_recorded_on_turn_complete.yaml +0 -0
  678. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/child_errors_record_failed.yaml +0 -0
  679. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/child_memory_read_only.yaml +0 -0
  680. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/expect_files_absent.yaml +0 -0
  681. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/expect_files_escape.yaml +0 -0
  682. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/expect_files_present.yaml +0 -0
  683. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/large_ndjson_line.yaml +0 -0
  684. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/ledger_context_forwarded.yaml +0 -0
  685. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/nested_task_refused.yaml +0 -0
  686. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/parallel_task_cap.yaml +0 -0
  687. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/parent_cancel.yaml +0 -0
  688. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/persona_applied.yaml +0 -0
  689. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/queue_pending_not_success.yaml +0 -0
  690. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/subagent_roundtrip.yaml +0 -0
  691. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/subagent_timeout.yaml +0 -0
  692. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/system_prompt_redacted_on_pipe.yaml +0 -0
  693. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/subagents/unknown_subagent_type.yaml +0 -0
  694. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/todo/caps.yaml +0 -0
  695. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/todo/ids_stable.yaml +0 -0
  696. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/todo/mirror_hydrate.yaml +0 -0
  697. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/todo/reminder_once.yaml +0 -0
  698. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/todo/single_in_progress.yaml +0 -0
  699. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/todo/todo_list.yaml +0 -0
  700. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/todo/todo_list_steps.yaml +0 -0
  701. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/block_denies_mutating_tools.yaml +0 -0
  702. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/constraint_touch_negative.yaml +0 -0
  703. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/constraint_touch_positive.yaml +0 -0
  704. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/done_unmet_positive.yaml +0 -0
  705. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/error_streak_negative.yaml +0 -0
  706. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/error_streak_positive.yaml +0 -0
  707. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/free_text_constraint_never_matches.yaml +0 -0
  708. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/judge_malformed_fails_open.yaml +0 -0
  709. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/judge_rate_limits.yaml +0 -0
  710. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/judge_replay_valid.yaml +0 -0
  711. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/judge_spend_ratio.yaml +0 -0
  712. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/mailbox_stale_checkpoint_dropped.yaml +0 -0
  713. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/min_turn_before_verdict.yaml +0 -0
  714. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/no_progress_budget_burn_not_mailboxed.yaml +0 -0
  715. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/preempt_negative.yaml +0 -0
  716. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/repeat_correction_positive.yaml +0 -0
  717. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/replan_one_turn.yaml +0 -0
  718. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/rewrite_churn_positive.yaml +0 -0
  719. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/rewrite_effects_branch_copy.yaml +0 -0
  720. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/severity_cap_nudge.yaml +0 -0
  721. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/sticky_nudge.yaml +0 -0
  722. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/supersession_negative.yaml +0 -0
  723. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/verdict_in_history_stripped_for_provider.yaml +0 -0
  724. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/verifier_off_no_effect.yaml +0 -0
  725. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/write_without_read_negative.yaml +0 -0
  726. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/verifier/write_without_read_positive.yaml +0 -0
  727. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/web/backend_none_not_advertised.yaml +0 -0
  728. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/web/browser_mcp.json +0 -0
  729. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/web/browser_stop_on_disconnect.yaml +0 -0
  730. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/web/browser_stop_server.py +0 -0
  731. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/web/empty_query.yaml +0 -0
  732. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/web/max_results.yaml +0 -0
  733. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/loop/scenarios/web/web_search.yaml +0 -0
  734. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/__init__.py +0 -0
  735. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_drift_confusion_matrix.py +0 -0
  736. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_e2e_simple_reply.py +0 -0
  737. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_grep_parity.py +0 -0
  738. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_hooks_lifecycle.py +0 -0
  739. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_jail.py +0 -0
  740. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_memory_commit.py +0 -0
  741. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_observability_acceptance.py +0 -0
  742. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_observability_integration.py +0 -0
  743. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_ops_cli.py +0 -0
  744. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_ops_observability.py +0 -0
  745. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_prompt_caching_integration.py +0 -0
  746. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_scheduler_engine.py +0 -0
  747. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_sse_stream_pressure.py +0 -0
  748. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/python/test_subagent_worker_pool.py +0 -0
  749. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/realtime/scenarios/ws_blocks_history_rewrite.yaml +0 -0
  750. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/realtime/scenarios/ws_guardrail_budget.yaml +0 -0
  751. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/realtime/scenarios/ws_interrupt.yaml +0 -0
  752. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/realtime/scenarios/ws_slot_limit.yaml +0 -0
  753. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/realtime/scenarios/ws_text_turn.yaml +0 -0
  754. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/realtime/scenarios/ws_tool_confirmation.yaml +0 -0
  755. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t2/realtime/scenarios/ws_tool_turn.yaml +0 -0
  756. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/__init__.py +0 -0
  757. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/mcp/tools_list_call.json +0 -0
  758. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/memory/wake_up_snapshot.json +0 -0
  759. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/sse/basic_turn.sse +0 -0
  760. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/sse/cassette_turn.sse +0 -0
  761. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/sse/tool_turn.sse +0 -0
  762. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/subagents/child_tape.ndjson +0 -0
  763. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/test_golden_sse.py +0 -0
  764. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/test_replay_mcp.py +0 -0
  765. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/test_replay_subagent_tape.py +0 -0
  766. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/test_replay_trajectories.py +0 -0
  767. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/test_replay_wake_up.py +0 -0
  768. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/test_replay_wire.py +0 -0
  769. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/tools/__init__.py +0 -0
  770. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/tools/cassette.py +0 -0
  771. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/tools/check_staleness.py +0 -0
  772. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/tools/from_transcript.py +0 -0
  773. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/tools/record_wire.py +0 -0
  774. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/trajectories/ctx/replay_live_compaction.cassette.json +0 -0
  775. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/trajectories/ctx/replay_live_compaction.yaml +0 -0
  776. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/trajectories/loop/replay_live_doom_loop.cassette.json +0 -0
  777. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/trajectories/loop/replay_live_doom_loop.yaml +0 -0
  778. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/trajectories/loop/replay_live_truncation.cassette.json +0 -0
  779. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/trajectories/loop/replay_live_truncation.yaml +0 -0
  780. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/trajectories/shell/replay_live_pytest_run.cassette.json +0 -0
  781. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/trajectories/shell/replay_live_pytest_run.yaml +0 -0
  782. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/trajectories/verifier/replay_drift_tape.cassette.json +0 -0
  783. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/trajectories/verifier/replay_drift_tape.yaml +0 -0
  784. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/wire/ollama_cloud/glm_tool_turn.json +0 -0
  785. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t3/wire/ollama_cloud/thinking_only_completion.json +0 -0
  786. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/__init__.py +0 -0
  787. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/__main__.py +0 -0
  788. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/.gitignore +0 -0
  789. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/memory/.blob_seq_ids_migrated +0 -0
  790. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/memory/.collection_type_fixed +0 -0
  791. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/memory/.embedder_identity +0 -0
  792. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/memory/.embedding-migrate.lock +0 -0
  793. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/memory/.palace_id +0 -0
  794. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/memory/.palace_write.lock +0 -0
  795. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/memory/2d1891d4-34d0-43bd-8eea-2fb73026046b/data_level0.bin +0 -0
  796. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/memory/2d1891d4-34d0-43bd-8eea-2fb73026046b/header.bin +0 -0
  797. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/memory/2d1891d4-34d0-43bd-8eea-2fb73026046b/length.bin +0 -0
  798. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/memory/2d1891d4-34d0-43bd-8eea-2fb73026046b/link_lists.bin +0 -0
  799. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/memory/identity.txt +0 -0
  800. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/memory/mempalace_embedder.json +0 -0
  801. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/.t4-gateway-993b836fb2a9.yaml +0 -0
  802. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/AGENT.coding.md +0 -0
  803. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/AGENT.md +0 -0
  804. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/AGENT.researcher.md +0 -0
  805. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/command_allowlist.yaml +0 -0
  806. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/grants.json +0 -0
  807. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/mcp.json +0 -0
  808. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/mcp.progressive.json +0 -0
  809. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/monkeybot.coding.yaml +0 -0
  810. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/monkeybot.verifier-judge.yaml +0 -0
  811. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/monkeybot.verifier-tracker.yaml +0 -0
  812. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/monkeybot.yaml +0 -0
  813. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/monkeybot_config/permissions.yaml +0 -0
  814. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/pyproject.toml +0 -0
  815. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/skills/browser/SKILL.md +0 -0
  816. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/agent/uv.lock +0 -0
  817. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/assertions.py +0 -0
  818. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/baselines/smoke.json +0 -0
  819. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/baselines/smoke.md +0 -0
  820. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/conftest.py +0 -0
  821. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/diff.py +0 -0
  822. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/eval_config.yaml +0 -0
  823. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/gateway.py +0 -0
  824. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/models.py +0 -0
  825. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/persistence.py +0 -0
  826. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/preflight.py +0 -0
  827. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/python/__init__.py +0 -0
  828. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/python/test_docker_image_health.py +0 -0
  829. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/python/test_provider_live_matrix.py +0 -0
  830. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/report.py +0 -0
  831. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/runner.py +0 -0
  832. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/attachments/describe_image_live.yaml +0 -0
  833. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/coding/add_feature_with_tests.yaml +0 -0
  834. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/coding/fix_failing_test.yaml +0 -0
  835. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/coding/navigate_repo.yaml +0 -0
  836. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/coding_hard/add_bulk_discount.yaml +0 -0
  837. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/coding_hard/fix_discount_rounding.yaml +0 -0
  838. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/coding_hard/honest_unfixable_failure.yaml +0 -0
  839. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/coding_hard/multi_feature_long.yaml +0 -0
  840. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/coding_hard/navigate_intl_rate.yaml +0 -0
  841. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/coding_hard/noisy_test_failure.yaml +0 -0
  842. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/coding_hard/rename_calc_tax.yaml +0 -0
  843. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/config/reload_memory_off_live.yaml +0 -0
  844. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/context/post_compaction_continuity.yaml +0 -0
  845. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/context/summarization_trigger.yaml +0 -0
  846. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/drift/declares_done.yaml +0 -0
  847. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/drift/path_constraint.yaml +0 -0
  848. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/drift/preempt.yaml +0 -0
  849. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/drift/repeat_correction.yaml +0 -0
  850. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/drift/supersession.yaml +0 -0
  851. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/file/core_read.yaml +0 -0
  852. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/file/core_read_error.yaml +0 -0
  853. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/file/core_write.yaml +0 -0
  854. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/file/grep_absence_honesty.yaml +0 -0
  855. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/gateway/live_resume.yaml +0 -0
  856. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/hooks/evidence_citation_live.yaml +0 -0
  857. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/mcp/enable_then_echo_live.yaml +0 -0
  858. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/mcp/get_prompt.yaml +0 -0
  859. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/mcp/list_resources.yaml +0 -0
  860. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/mcp/tool_invoke.yaml +0 -0
  861. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/memory/recall_cross_session.yaml +0 -0
  862. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/memory/recall_single_session.yaml +0 -0
  863. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/memory/search_past_session.yaml +0 -0
  864. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/multi_turn/task_tracking.yaml +0 -0
  865. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/scheduler/http_one_tick_live.yaml +0 -0
  866. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/scheduler/model_starts_loop.yaml +0 -0
  867. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/shell/core_run_command.yaml +0 -0
  868. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/shell/core_run_command_sandbox.yaml +0 -0
  869. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/skills/skill_invocation.yaml +0 -0
  870. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/subagents/dispatch_complete.yaml +0 -0
  871. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/scenarios/subagents/persona_dispatch.yaml +0 -0
  872. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/score.py +0 -0
  873. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/suites/coding.yaml +0 -0
  874. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/suites/coding_hard.yaml +0 -0
  875. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/suites/context.yaml +0 -0
  876. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/suites/drift.yaml +0 -0
  877. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/suites/mcp.yaml +0 -0
  878. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/suites/memory.yaml +0 -0
  879. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/suites/nightly.yaml +0 -0
  880. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/suites/scheduler.yaml +0 -0
  881. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/suites/smoke.yaml +0 -0
  882. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t4/suites/subagents.yaml +0 -0
  883. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/__init__.py +0 -0
  884. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/__main__.py +0 -0
  885. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/baselines/subagents__ollama-cloud__glm-5.3-flash.json +0 -0
  886. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/compare.py +0 -0
  887. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/parallel.py +0 -0
  888. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/python/test_cancel_storm.py +0 -0
  889. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/python/test_reconnect_storm.py +0 -0
  890. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/runs/coding.json +0 -0
  891. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/runs/mcp.json +0 -0
  892. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/runs/smoke.json +0 -0
  893. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/runs/subagents.json +0 -0
  894. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/stats.py +0 -0
  895. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/suites/capability.yaml +0 -0
  896. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/suites/drift.yaml +0 -0
  897. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/suites/reliability.yaml +0 -0
  898. {monkeybot-3.11.0 → monkeybot-3.12.0}/regression/t5/trials.py +0 -0
  899. {monkeybot-3.11.0 → monkeybot-3.12.0}/scripts/ci-local.sh +0 -0
  900. {monkeybot-3.11.0 → monkeybot-3.12.0}/scripts/create_schema.py +0 -0
  901. {monkeybot-3.11.0 → monkeybot-3.12.0}/scripts/precommit-pytest.sh +0 -0
  902. {monkeybot-3.11.0 → monkeybot-3.12.0}/scripts/release.py +0 -0
  903. {monkeybot-3.11.0 → monkeybot-3.12.0}/scripts/smoke_global_cli.sh +0 -0
  904. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/__init__.py +0 -0
  905. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/cli/__init__.py +0 -0
  906. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/cli/__main__.py +0 -0
  907. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/cli/audio_io.py +0 -0
  908. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/cli/gateway_manager.py +0 -0
  909. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/cli/main.py +0 -0
  910. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/cli/push_to_talk.py +0 -0
  911. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/cli/realtime_client.py +0 -0
  912. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/computer/__init__.py +0 -0
  913. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/computer/approvals.py +0 -0
  914. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/computer/permissions.py +0 -0
  915. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/computer/safety.py +0 -0
  916. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/computer/tools.py +0 -0
  917. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/__init__.py +0 -0
  918. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/attachments/__init__.py +0 -0
  919. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/attachments/catalog.py +0 -0
  920. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/attachments/config.py +0 -0
  921. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/attachments/freeze.py +0 -0
  922. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/attachments/image_preview.py +0 -0
  923. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/attachments/resolve.py +0 -0
  924. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/attachments/store.py +0 -0
  925. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/attachments/text.py +0 -0
  926. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/attachments/tools.py +0 -0
  927. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/bootstrap.py +0 -0
  928. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/coding/__init__.py +0 -0
  929. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/coding/git_context_hook.py +0 -0
  930. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/coding/read_ledger_hook.py +0 -0
  931. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/coding/verification_gate.py +0 -0
  932. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/config/__init__.py +0 -0
  933. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/config/realtime_config.py +0 -0
  934. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/config/runtime_env.py +0 -0
  935. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/config/settings.py +0 -0
  936. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/config/snapshot.py +0 -0
  937. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/config/validation.py +0 -0
  938. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/config/yaml_loader.py +0 -0
  939. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/context/__init__.py +0 -0
  940. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/context/campaign_context.py +0 -0
  941. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/context/common.py +0 -0
  942. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/context/epoch.py +0 -0
  943. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/context/project_context.py +0 -0
  944. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/context/secret_egress.py +0 -0
  945. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/context/slash_skills.py +0 -0
  946. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/context/tool_output_policy.py +0 -0
  947. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/context/tool_result_ingress.py +0 -0
  948. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/context/tool_shapers.py +0 -0
  949. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/goals/__init__.py +0 -0
  950. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/goals/service.py +0 -0
  951. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/hooks/__init__.py +0 -0
  952. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/hooks/evidence_guard.py +0 -0
  953. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/layout.py +0 -0
  954. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/llm/__init__.py +0 -0
  955. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/llm/provider.py +0 -0
  956. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/llm/realtime_provider.py +0 -0
  957. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/llm/usage.py +0 -0
  958. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/lockfile_names.py +0 -0
  959. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/logging_utils.py +0 -0
  960. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/mcp/__init__.py +0 -0
  961. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/mcp/mcp_client.py +0 -0
  962. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/mcp/oauth_flow.py +0 -0
  963. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/mcp/ports_mcp.py +0 -0
  964. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/memory/__init__.py +0 -0
  965. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/memory/config.py +0 -0
  966. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/memory/hook.py +0 -0
  967. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/memory/ids.py +0 -0
  968. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/memory/ingest.py +0 -0
  969. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/memory/migrate_embedding.py +0 -0
  970. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/memory/migrate_layout.py +0 -0
  971. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/memory/observability.py +0 -0
  972. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/memory/outbox.py +0 -0
  973. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/memory/palace.py +0 -0
  974. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/memory/subsystem.py +0 -0
  975. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/memory/uri.py +0 -0
  976. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/memory/writer.py +0 -0
  977. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/messages/__init__.py +0 -0
  978. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/messages/convert_provider.py +0 -0
  979. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/messages/tool_integrity.py +0 -0
  980. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/messages/transform_context.py +0 -0
  981. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/path_safety.py +0 -0
  982. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/__init__.py +0 -0
  983. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/backends.py +0 -0
  984. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/branches.py +0 -0
  985. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/db.py +0 -0
  986. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/durable_runs.py +0 -0
  987. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/errors.py +0 -0
  988. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/firestore.indexes.json +0 -0
  989. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/firestore.py +0 -0
  990. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/firestore_scheduled_loops.py +0 -0
  991. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/goal_ledger.py +0 -0
  992. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/history.py +0 -0
  993. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/postgres.py +0 -0
  994. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/row_ids.py +0 -0
  995. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/runs.py +0 -0
  996. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/scheduled_loops.py +0 -0
  997. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/session_turn_locks.py +0 -0
  998. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/sqlite.py +0 -0
  999. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/sqlite_backend.py +0 -0
  1000. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/thread_summary.py +0 -0
  1001. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/transcript.py +0 -0
  1002. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/transcript_reader.py +0 -0
  1003. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/usage.py +0 -0
  1004. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/persistence/usage_buckets.py +0 -0
  1005. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/prompts/__init__.py +0 -0
  1006. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/prompts/harness_prompt.py +0 -0
  1007. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/prompts/headings.py +0 -0
  1008. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/prompts/prompt.py +0 -0
  1009. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/__init__.py +0 -0
  1010. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/background_summary.py +0 -0
  1011. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/chat_title.py +0 -0
  1012. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/context_budget.py +0 -0
  1013. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/doom_loop.py +0 -0
  1014. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/events.py +0 -0
  1015. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/history_compaction.py +0 -0
  1016. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/history_rewrite.py +0 -0
  1017. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/input_admission.py +0 -0
  1018. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/loop.py +0 -0
  1019. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/loop_hooks.py +0 -0
  1020. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/loop_messages.py +0 -0
  1021. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/loop_ports.py +0 -0
  1022. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/loop_usage.py +0 -0
  1023. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/provider_stream_mapper.py +0 -0
  1024. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/realtime_loop.py +0 -0
  1025. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/tool_batch.py +0 -0
  1026. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/tool_dispatch.py +0 -0
  1027. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/turn_loop.py +0 -0
  1028. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/runtime/utterance_buffer.py +0 -0
  1029. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/subagents/__init__.py +0 -0
  1030. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/subagents/progress_publish.py +0 -0
  1031. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/subagents/subagent_proto.py +0 -0
  1032. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/subagents/subagent_worker.py +0 -0
  1033. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/subagents/worker_pool.py +0 -0
  1034. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/subprocess_groups.py +0 -0
  1035. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/testing/__init__.py +0 -0
  1036. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/testing/mocks_provider.py +0 -0
  1037. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/testing/mocks_realtime_provider.py +0 -0
  1038. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/__init__.py +0 -0
  1039. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/ask_user.py +0 -0
  1040. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/background_jobs.py +0 -0
  1041. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/command_executor.py +0 -0
  1042. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/core_tool_executor.py +0 -0
  1043. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/fs_isolation.py +0 -0
  1044. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/gitignore.py +0 -0
  1045. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/grant_store.py +0 -0
  1046. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/inspector.py +0 -0
  1047. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/loop_inspector.py +0 -0
  1048. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/patch.py +0 -0
  1049. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/path_grant_inspector.py +0 -0
  1050. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/permission.py +0 -0
  1051. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/read_ledger.py +0 -0
  1052. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/spill_inventory.py +0 -0
  1053. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/terminal.py +0 -0
  1054. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/text_normalize.py +0 -0
  1055. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/tool_hint.py +0 -0
  1056. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/tool_kind.py +0 -0
  1057. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/types.py +0 -0
  1058. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/tools/workspace_service.py +0 -0
  1059. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/types/__init__.py +0 -0
  1060. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/types/content_blocks.py +0 -0
  1061. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/types/interfaces.py +0 -0
  1062. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/types/types_tools.py +0 -0
  1063. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/__init__.py +0 -0
  1064. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/actuator.py +0 -0
  1065. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/binding.py +0 -0
  1066. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/classify.py +0 -0
  1067. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/inspector.py +0 -0
  1068. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/intervention.py +0 -0
  1069. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/judge.py +0 -0
  1070. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/ledger.py +0 -0
  1071. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/mailbox.py +0 -0
  1072. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/match.py +0 -0
  1073. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/port.py +0 -0
  1074. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/rewrite_effects.py +0 -0
  1075. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/severity.py +0 -0
  1076. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/verifier/tracker.py +0 -0
  1077. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/workspace/__init__.py +0 -0
  1078. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/workspace/factory.py +0 -0
  1079. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/workspace/gcs.py +0 -0
  1080. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/workspace/local.py +0 -0
  1081. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/workspace/protocol.py +0 -0
  1082. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/workspace/s3.py +0 -0
  1083. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/core/workspace_layout.py +0 -0
  1084. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/__init__.py +0 -0
  1085. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/bootstrap.py +0 -0
  1086. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/main.py +0 -0
  1087. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/pending_response_bus.py +0 -0
  1088. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/__init__.py +0 -0
  1089. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/app.py +0 -0
  1090. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/deps.py +0 -0
  1091. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/errors.py +0 -0
  1092. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/guardrails.py +0 -0
  1093. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/manager.py +0 -0
  1094. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/metrics.py +0 -0
  1095. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/routes.py +0 -0
  1096. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/session.py +0 -0
  1097. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime/wire.py +0 -0
  1098. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/realtime_main.py +0 -0
  1099. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/__init__.py +0 -0
  1100. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/app.py +0 -0
  1101. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/goal_routes.py +0 -0
  1102. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/history_routes.py +0 -0
  1103. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/loop_port.py +0 -0
  1104. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/models.py +0 -0
  1105. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/reload.py +0 -0
  1106. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/reply_body.py +0 -0
  1107. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/request_storage.py +0 -0
  1108. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/routes.py +0 -0
  1109. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/scheduler_routes.py +0 -0
  1110. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/scheduler_wiring.py +0 -0
  1111. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/session_bus.py +0 -0
  1112. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/sse.py +0 -0
  1113. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/gateway/sse/workspace_layout.py +0 -0
  1114. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/observability/__init__.py +0 -0
  1115. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/observability/_state.py +0 -0
  1116. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/observability/instrumentation.py +0 -0
  1117. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/observability/propagation.py +0 -0
  1118. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/observability/spans.py +0 -0
  1119. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/observability/sqlite_exporter.py +0 -0
  1120. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/__init__.py +0 -0
  1121. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/_openai_compat.py +0 -0
  1122. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/_sdk_client.py +0 -0
  1123. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/_stream_marks.py +0 -0
  1124. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/_utils.py +0 -0
  1125. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/claude.py +0 -0
  1126. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/fireworks.py +0 -0
  1127. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/gemini.py +0 -0
  1128. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/gemini_live.py +0 -0
  1129. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/huggingface.py +0 -0
  1130. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/model_capabilities.py +0 -0
  1131. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/nvidia.py +0 -0
  1132. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/ollama.py +0 -0
  1133. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/openai.py +0 -0
  1134. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/openrouter.py +0 -0
  1135. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/pricing.py +0 -0
  1136. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/rejected_sampling.py +0 -0
  1137. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/request_budget.py +0 -0
  1138. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/sampling.py +0 -0
  1139. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/providers/vertex_claude.py +0 -0
  1140. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/scaffold/__init__.py +0 -0
  1141. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/scheduler/__init__.py +0 -0
  1142. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/scheduler/__main__.py +0 -0
  1143. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/scheduler/engine.py +0 -0
  1144. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/scheduler/http_invoker.py +0 -0
  1145. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/scheduler/interval.py +0 -0
  1146. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/scheduler/tick_result.py +0 -0
  1147. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/scheduler/worker.py +0 -0
  1148. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/subagents/__init__.py +0 -0
  1149. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/subagents/worker/__init__.py +0 -0
  1150. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/subagents/worker/__main__.py +0 -0
  1151. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/todo_list/__init__.py +0 -0
  1152. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/todo_list/hook.py +0 -0
  1153. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/todo_list/store.py +0 -0
  1154. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/todo_list/tool.py +0 -0
  1155. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/web_search/__init__.py +0 -0
  1156. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/web_search/backends/__init__.py +0 -0
  1157. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/web_search/backends/duckduckgo.py +0 -0
  1158. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/web_search/backends/firecrawl.py +0 -0
  1159. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/web_search/backends/tavily.py +0 -0
  1160. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/web_search/protocol.py +0 -0
  1161. {monkeybot-3.11.0 → monkeybot-3.12.0}/src/monkeybot/web_search/tool.py +0 -0
  1162. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/__init__.py +0 -0
  1163. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/backends.py +0 -0
  1164. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/clock.py +0 -0
  1165. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/context.py +0 -0
  1166. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/conversations.py +0 -0
  1167. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/data/attachments/tiny.jpg +0 -0
  1168. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/data/attachments/tiny.png +0 -0
  1169. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/data/attachments/with-text.pdf +0 -0
  1170. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/data/attachments/without-text.pdf +0 -0
  1171. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/executors.py +0 -0
  1172. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/failure_ledger.py +0 -0
  1173. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/failures/__init__.py +0 -0
  1174. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/failures/__main__.py +0 -0
  1175. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/failures/catalog.py +0 -0
  1176. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/failures/store.py +0 -0
  1177. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/gateway.py +0 -0
  1178. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/gateway_ports.py +0 -0
  1179. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/history.py +0 -0
  1180. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/hooks.py +0 -0
  1181. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/inspectors.py +0 -0
  1182. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/mcp.py +0 -0
  1183. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/memory.py +0 -0
  1184. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/palace.py +0 -0
  1185. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/pending_bus.py +0 -0
  1186. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/provider.py +0 -0
  1187. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/py.typed +0 -0
  1188. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/sandbox.py +0 -0
  1189. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/scrub.py +0 -0
  1190. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/sse.py +0 -0
  1191. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/subagent_worker.py +0 -0
  1192. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/verifier.py +0 -0
  1193. {monkeybot-3.11.0 → monkeybot-3.12.0}/testkit/web_search.py +0 -0
  1194. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/__init__.py +0 -0
  1195. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/conftest.py +0 -0
  1196. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/__init__.py +0 -0
  1197. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/conftest.py +0 -0
  1198. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/goldens/prompts/harness_prompt.default.txt +0 -0
  1199. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/goldens/prompts/harness_prompt.emission_terse.txt +0 -0
  1200. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/goldens/prompts/harness_prompt.mcp_catalog.txt +0 -0
  1201. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/goldens/prompts/harness_prompt.memory_off.txt +0 -0
  1202. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/goldens/prompts/harness_prompt.sandbox_on.txt +0 -0
  1203. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/goldens/prompts/harness_prompt.task_terse.txt +0 -0
  1204. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/goldens/prompts/volatile_tail_parts.json +0 -0
  1205. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/goldens/routes.txt +0 -0
  1206. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/goldens/span_names.txt +0 -0
  1207. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/goldens/sse/schema.json +0 -0
  1208. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/goldens/tool_error_codes.txt +0 -0
  1209. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/tables/config_precedence.yaml +0 -0
  1210. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/tables/policy_decisions.yaml +0 -0
  1211. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/tables/provider_error_mapping.yaml +0 -0
  1212. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/test_catalog_pairing.py +0 -0
  1213. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/test_config_matrix.py +0 -0
  1214. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/test_harness_prompt_golden.py +0 -0
  1215. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/test_migrations_replay.py +0 -0
  1216. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/test_policy_decision_table.py +0 -0
  1217. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/test_provider_conformance.py +0 -0
  1218. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/test_realtime_divergence.py +0 -0
  1219. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/test_route_table.py +0 -0
  1220. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/test_scaffold_reexports.py +0 -0
  1221. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/test_span_names.py +0 -0
  1222. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/test_sse_schema.py +0 -0
  1223. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/test_storage_parity.py +0 -0
  1224. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/contracts/test_tool_error_catalog.py +0 -0
  1225. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/__init__.py +0 -0
  1226. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/cli/__init__.py +0 -0
  1227. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/cli/test_gateway_manager.py +0 -0
  1228. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/cli/test_main.py +0 -0
  1229. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/cli/test_push_to_talk.py +0 -0
  1230. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/cli/test_realtime_client.py +0 -0
  1231. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/computer/__init__.py +0 -0
  1232. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/computer/test_approvals.py +0 -0
  1233. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/computer/test_computer_tools.py +0 -0
  1234. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/computer/test_package_init.py +0 -0
  1235. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/computer/test_path_policy.py +0 -0
  1236. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/computer/test_permissions.py +0 -0
  1237. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/computer/test_platform_gate.py +0 -0
  1238. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/computer/test_subagent_exclusion.py +0 -0
  1239. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/computer/test_wiring.py +0 -0
  1240. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/conftest.py +0 -0
  1241. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/__init__.py +0 -0
  1242. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/attachments/__init__.py +0 -0
  1243. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/attachments/test_attachment_freeze.py +0 -0
  1244. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/attachments/test_attachment_store.py +0 -0
  1245. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/attachments/test_image_preview.py +0 -0
  1246. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/coding/__init__.py +0 -0
  1247. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/coding/test_verification_gate.py +0 -0
  1248. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/config/__init__.py +0 -0
  1249. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/config/test_config_extensions.py +0 -0
  1250. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/config/test_env_map_grep_gates.py +0 -0
  1251. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/config/test_runtime_config_snapshot.py +0 -0
  1252. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/config/test_runtime_env.py +0 -0
  1253. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/context/__init__.py +0 -0
  1254. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/context/test_context.py +0 -0
  1255. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/context/test_context_epoch.py +0 -0
  1256. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/context/test_project_context.py +0 -0
  1257. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/context/test_secret_egress.py +0 -0
  1258. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/context/test_skill_discovery_rules.py +0 -0
  1259. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/context/test_slash_skills.py +0 -0
  1260. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/context/test_tool_result_ingress.py +0 -0
  1261. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/context/test_tool_shapers.py +0 -0
  1262. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/fixtures/__init__.py +0 -0
  1263. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/fixtures/bitbucket_dc_style_pr.diff +0 -0
  1264. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/goals/__init__.py +0 -0
  1265. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/goals/test_goal_persistence.py +0 -0
  1266. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/goals/test_goals.py +0 -0
  1267. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/hooks/__init__.py +0 -0
  1268. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/hooks/test_evidence_guard.py +0 -0
  1269. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/hooks/test_hooks.py +0 -0
  1270. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/hooks/test_settlement.py +0 -0
  1271. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/llm/__init__.py +0 -0
  1272. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/llm/test_pricing.py +0 -0
  1273. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/llm/test_provider_contract.py +0 -0
  1274. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/mcp/__init__.py +0 -0
  1275. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/mcp/test_mcp_client.py +0 -0
  1276. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/mcp/test_mcp_oauth.py +0 -0
  1277. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/mcp/test_mcp_oauth_regressions.py +0 -0
  1278. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/memory/__init__.py +0 -0
  1279. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/memory/test_memory_layout_migrate.py +0 -0
  1280. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/memory/test_memory_scoping.py +0 -0
  1281. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/memory/test_mempalace.py +0 -0
  1282. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/memory/test_migrate_embedding.py +0 -0
  1283. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/memory/test_review_fixes.py +0 -0
  1284. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/messages/__init__.py +0 -0
  1285. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/messages/test_gemini_history_replay.py +0 -0
  1286. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/messages/test_message_pipeline.py +0 -0
  1287. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/messages/test_tool_integrity.py +0 -0
  1288. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/__init__.py +0 -0
  1289. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_branch_store_backends.py +0 -0
  1290. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_durable_runs.py +0 -0
  1291. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_firestore_history.py +0 -0
  1292. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_firestore_scheduled_loops.py +0 -0
  1293. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_firestore_usage.py +0 -0
  1294. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_goal_ledger.py +0 -0
  1295. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_history.py +0 -0
  1296. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_history_branches.py +0 -0
  1297. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_history_row_ids.py +0 -0
  1298. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_runs.py +0 -0
  1299. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_scheduled_loops.py +0 -0
  1300. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_session_branches_migration.py +0 -0
  1301. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_session_turn_locks.py +0 -0
  1302. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_storage_backends.py +0 -0
  1303. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_thread_summary_wire.py +0 -0
  1304. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_transcript.py +0 -0
  1305. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_transcript_reader.py +0 -0
  1306. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_usage.py +0 -0
  1307. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/persistence/test_usage_migration.py +0 -0
  1308. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/prompts/__init__.py +0 -0
  1309. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/prompts/test_harness_prompt.py +0 -0
  1310. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/prompts/test_prompt.py +0 -0
  1311. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/__init__.py +0 -0
  1312. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_background_summary.py +0 -0
  1313. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_chat_title.py +0 -0
  1314. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_context_budget.py +0 -0
  1315. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_doom_loop.py +0 -0
  1316. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_durable_events.py +0 -0
  1317. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_empty_completion.py +0 -0
  1318. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_events.py +0 -0
  1319. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_history_compaction_split.py +0 -0
  1320. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_input_admission.py +0 -0
  1321. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_loop.py +0 -0
  1322. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_loop_hooks.py +0 -0
  1323. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_loop_observability.py +0 -0
  1324. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_loop_transcript.py +0 -0
  1325. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_provider_stream_mapper.py +0 -0
  1326. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_realtime_loop.py +0 -0
  1327. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_truncated_tool_batch.py +0 -0
  1328. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_turn_session_id.py +0 -0
  1329. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/runtime/test_utterance_buffer.py +0 -0
  1330. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/subagents/__init__.py +0 -0
  1331. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/subagents/test_child_tool_list.py +0 -0
  1332. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/subagents/test_progress_publish.py +0 -0
  1333. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/subagents/test_subagent_proto.py +0 -0
  1334. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/subagents/test_subagent_trace_propagation.py +0 -0
  1335. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/subagents/test_subagent_transcript.py +0 -0
  1336. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/subagents/test_subagent_worker_paths.py +0 -0
  1337. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/subagents/test_worker_pool.py +0 -0
  1338. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/test_agent_layout.py +0 -0
  1339. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/test_bootstrap.py +0 -0
  1340. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/test_layout.py +0 -0
  1341. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/test_logging_utils.py +0 -0
  1342. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/test_path_safety.py +0 -0
  1343. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/test_workspace_layout.py +0 -0
  1344. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/testing/__init__.py +0 -0
  1345. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/testing/test_mocks_realtime_provider.py +0 -0
  1346. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/__init__.py +0 -0
  1347. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_ask_user.py +0 -0
  1348. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_background_jobs.py +0 -0
  1349. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_core_tool_executor.py +0 -0
  1350. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_fs_isolation.py +0 -0
  1351. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_gitignore.py +0 -0
  1352. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_grant_store.py +0 -0
  1353. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_inspector.py +0 -0
  1354. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_patch.py +0 -0
  1355. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_path_grant_inspector.py +0 -0
  1356. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_permission.py +0 -0
  1357. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_replace_fuzzy.py +0 -0
  1358. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_run_command_parse.py +0 -0
  1359. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_spill_dynamic.py +0 -0
  1360. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_spill_inventory.py +0 -0
  1361. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_terminal.py +0 -0
  1362. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_workspace_extra_read_roots.py +0 -0
  1363. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_workspace_symlinks.py +0 -0
  1364. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/tools/test_workspace_write_scope.py +0 -0
  1365. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/types/__init__.py +0 -0
  1366. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/types/test_content_blocks.py +0 -0
  1367. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/types/test_tool_def_schema.py +0 -0
  1368. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/verifier/__init__.py +0 -0
  1369. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/verifier/test_progress_tracker.py +0 -0
  1370. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/verifier/test_verifier_binding.py +0 -0
  1371. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/verifier/test_verifier_inspector.py +0 -0
  1372. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/verifier/test_verifier_judge.py +0 -0
  1373. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/verifier/test_verifier_mailbox_lifecycle.py +0 -0
  1374. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/verifier/test_verifier_port.py +0 -0
  1375. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/verifier/test_verifier_rewrite_effects.py +0 -0
  1376. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/verifier/test_verifier_sticky_nudge.py +0 -0
  1377. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/verifier/test_verifier_tracker.py +0 -0
  1378. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/workspace/__init__.py +0 -0
  1379. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/workspace/test_factory.py +0 -0
  1380. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/workspace/test_local_storage.py +0 -0
  1381. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/core/workspace/test_protocol_contract.py +0 -0
  1382. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/__init__.py +0 -0
  1383. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/realtime/__init__.py +0 -0
  1384. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/realtime/test_app.py +0 -0
  1385. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/realtime/test_deps.py +0 -0
  1386. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/realtime/test_guardrails.py +0 -0
  1387. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/realtime/test_manager.py +0 -0
  1388. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/realtime/test_metrics.py +0 -0
  1389. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/realtime/test_routes_client_text.py +0 -0
  1390. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/realtime/test_session.py +0 -0
  1391. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/realtime/test_wire.py +0 -0
  1392. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/sse/__init__.py +0 -0
  1393. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_attachments.py +0 -0
  1394. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_chat_title_route.py +0 -0
  1395. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_config_reload.py +0 -0
  1396. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_create_session_model.py +0 -0
  1397. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_gateway_runtime.py +0 -0
  1398. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_history_routes.py +0 -0
  1399. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_routes.py +0 -0
  1400. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_scheduler_routes.py +0 -0
  1401. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_session_bus.py +0 -0
  1402. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_start_turn_setup_failure.py +0 -0
  1403. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/sse/test_transcript_wiring.py +0 -0
  1404. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/test_otel_fastapi.py +0 -0
  1405. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/test_otel_lifespan.py +0 -0
  1406. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/test_pending_response_endpoints.py +0 -0
  1407. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/test_realtime_main.py +0 -0
  1408. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/test_resolve_provider.py +0 -0
  1409. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/test_sdk_client_shutdown.py +0 -0
  1410. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/test_sse_events.py +0 -0
  1411. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/gateway/test_subagent_event_publisher.py +0 -0
  1412. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/observability/conftest.py +0 -0
  1413. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/observability/test_init.py +0 -0
  1414. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/observability/test_instrumentation.py +0 -0
  1415. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/observability/test_loop_hook_spans.py +0 -0
  1416. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/observability/test_propagation.py +0 -0
  1417. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/observability/test_span_contract.py +0 -0
  1418. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/observability/test_spans.py +0 -0
  1419. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/observability/test_sqlite_exporter.py +0 -0
  1420. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/observability/test_truncate.py +0 -0
  1421. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/observability/test_turn_complete_trace.py +0 -0
  1422. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/packaging/__init__.py +0 -0
  1423. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/packaging/test_cold_start.py +0 -0
  1424. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/packaging/test_packaging_config.py +0 -0
  1425. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/packaging/test_release_script.py +0 -0
  1426. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/__init__.py +0 -0
  1427. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/conftest.py +0 -0
  1428. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_anthropic_cache.py +0 -0
  1429. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_anthropic_history.py +0 -0
  1430. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_bedrock_estimate.py +0 -0
  1431. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_connection_warm.py +0 -0
  1432. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_fireworks.py +0 -0
  1433. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_gemini_history.py +0 -0
  1434. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_gemini_live.py +0 -0
  1435. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_gemini_usage.py +0 -0
  1436. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_huggingface.py +0 -0
  1437. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_model_capabilities.py +0 -0
  1438. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_nvidia.py +0 -0
  1439. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_ollama.py +0 -0
  1440. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_openai_byte_budget.py +0 -0
  1441. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_openai_compat_usage.py +0 -0
  1442. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_openai_history.py +0 -0
  1443. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_pricing.py +0 -0
  1444. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_request_budget.py +0 -0
  1445. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_safe_parse_tool_args.py +0 -0
  1446. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_sampling.py +0 -0
  1447. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_sdk_client_reuse.py +0 -0
  1448. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_sonnet5_sampling.py +0 -0
  1449. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_source_grep_gates.py +0 -0
  1450. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_tiktoken_encoding.py +0 -0
  1451. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/providers/test_vertex_claude_history.py +0 -0
  1452. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/scheduler/__init__.py +0 -0
  1453. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/scheduler/test_engine.py +0 -0
  1454. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/scheduler/test_interval.py +0 -0
  1455. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/skills/__init__.py +0 -0
  1456. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/skills/test_generate_image_script.py +0 -0
  1457. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/testkit/__init__.py +0 -0
  1458. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/testkit/test_clock.py +0 -0
  1459. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/testkit/test_failure_ledger.py +0 -0
  1460. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/testkit/test_failures_cli.py +0 -0
  1461. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/testkit/test_fake_history.py +0 -0
  1462. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/testkit/test_scripted_provider.py +0 -0
  1463. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/testkit/test_scrub.py +0 -0
  1464. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/testkit/test_sse_reader.py +0 -0
  1465. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/todo_list/__init__.py +0 -0
  1466. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/todo_list/test_todo_list.py +0 -0
  1467. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/web_search/__init__.py +0 -0
  1468. {monkeybot-3.11.0 → monkeybot-3.12.0}/tests/unit/web_search/test_web_search.py +0 -0
@@ -0,0 +1 @@
1
+ * @VibeEffect
@@ -11,6 +11,9 @@ internal/
11
11
  # Local scaffolded harness config (defaults ship in monkeybot-cli scaffold_defaults/)
12
12
  /monkeybot_config/
13
13
 
14
+ # Local agent for manual CLI testing. Recreate with `monkeybot new --dest ./cli-agent`.
15
+ /cli-agent/
16
+
14
17
  # Live eval run artifacts. Baselines under regression/t4/baselines/ stay versioned.
15
18
  /regression/t4/runs/
16
19
  # Live-eval agent project local state. Live secrets come from the repo-root .env; a stray key
@@ -6,7 +6,25 @@ the project adheres to [Semantic Versioning](https://semver.org/).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
- ### CLI
9
+ ## [core v3.12.0] - 2026-10-29
10
+
11
+ ### Added
12
+
13
+ - Bedrock Converse models (Grok, Nova, Llama, and other non-Claude ids) send prompt-cache checkpoints when `model.cache_retention` is not `none`. Checkpoints land on the system prompt, the tool list, and the last two user turns, up to Bedrock's limit of four. `short` and `long` both use Converse's default 5-minute cache. A model that rejects cache points is retried once without them.
14
+
15
+ ## [cli v0.12.0] - 2026-10-28
16
+
17
+ ### Changed
18
+
19
+ - Chat shows thoughts, tool calls, and web sources as one collapsed row. The reply no longer carries an assistant label.
20
+
21
+ ## [core v3.11.1] - 2026-10-28
22
+
23
+ ### Fixed
24
+
25
+ - Sandbox volume names stay valid DNS labels and unique per path. The name used to be cut to 63 characters after dashes were stripped, so a cut could leave a trailing `-` and OpenSandbox rejected it with HTTP 422 on long workspace paths. Names now end in an 8-character hash of the path.
26
+
27
+ ## [cli v0.11.1] - 2026-10-28
10
28
 
11
29
  ### Fixed
12
30
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: monkeybot
3
- Version: 3.11.0
3
+ Version: 3.12.0
4
4
  Summary: monkeybot agent harness — FastAPI SSE gateway, owned loop, SQLite, and MCP.
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "monkeybot-cli"
7
- version = "0.11.0"
7
+ version = "0.12.0"
8
8
  description = "CLI to create, configure, validate, and chat with monkeybot agents."
9
9
  requires-python = ">=3.11"
10
10
  dependencies = [
@@ -57,6 +57,7 @@ from monkeybot_cli.chat_tui_widgets import (
57
57
  ToolCallBlock,
58
58
  TranscriptPane,
59
59
  UserTurn,
60
+ activity_label,
60
61
  write_osc52_clipboard,
61
62
  )
62
63
  from monkeybot_cli.config_resolve import load_config_doc, resolve_config
@@ -360,6 +361,7 @@ class ChatApp(App[int]):
360
361
  self._assistant: AssistantTurn | None = None
361
362
  self._thinking: ThinkingLine | None = None
362
363
  self._thinking_trace: ThinkingTrace | None = None
364
+ self._status_note = ""
363
365
  self._hitl_card: HitlCard | None = None
364
366
  self._hitl_status_flash: str | None = None
365
367
  self._ring_text = "[dim]○ 0%[/]"
@@ -433,7 +435,10 @@ class ChatApp(App[int]):
433
435
  if self._hitl_status_flash:
434
436
  parts.append(self._hitl_status_flash)
435
437
  if self._turn_active and not self._hitl_active:
436
- parts.append("working · Esc interrupt")
438
+ if self._status_note:
439
+ parts.append(f"{self._status_note} · Esc interrupt")
440
+ else:
441
+ parts.append("working · Esc interrupt")
437
442
  elif self._hitl_active:
438
443
  if self._hitl_kind == "elicit":
439
444
  parts.append("Enter submit · Ctrl-C cancel")
@@ -647,8 +652,24 @@ class ChatApp(App[int]):
647
652
  transcript.mount(earlier, before=0)
648
653
  earlier.absorb(digest)
649
654
 
655
+ def _mark_activity_lead(self, widget: object) -> None:
656
+ """First row of a thought/tool/search stack gets the gap above it."""
657
+ if not isinstance(widget, (ThinkingTrace, ToolCallBlock, GroundingBlock)):
658
+ return
659
+ prev = None
660
+ for child in reversed(self._transcript().children):
661
+ if child is widget or getattr(child, "id", None) == "empty-hint":
662
+ continue
663
+ if isinstance(child, ThinkingTrace) and not child._raw.strip():
664
+ continue
665
+ prev = child
666
+ break
667
+ if not isinstance(prev, (ThinkingTrace, ToolCallBlock, GroundingBlock)):
668
+ widget.add_class("-lead")
669
+
650
670
  def _mount(self, widget: object) -> None:
651
671
  self._hide_empty_hint()
672
+ self._mark_activity_lead(widget)
652
673
  if self._is_counted_turn(widget):
653
674
  self._trim_old_turns()
654
675
  self._turn_count += 1
@@ -673,10 +694,33 @@ class ChatApp(App[int]):
673
694
  self._thinking.remove()
674
695
  self._thinking = None
675
696
 
697
+ def _drop_empty_thinking(self) -> None:
698
+ trace = self._thinking_trace
699
+ if trace is None or not trace.is_attached or trace._raw.strip():
700
+ return
701
+ already = bool(getattr(trace, "_trimmed", False))
702
+ trace._trimmed = True # type: ignore[attr-defined]
703
+ trace.remove()
704
+ self._thinking_trace = None
705
+ if not already:
706
+ self._turn_count = max(0, self._turn_count - 1)
707
+
708
+ def _ensure_live_thinking(self) -> None:
709
+ trace = self._thinking_trace
710
+ if trace is not None and trace.is_attached and not trace.has_class("-done"):
711
+ return
712
+ self._clear_thinking()
713
+ block = ThinkingTrace()
714
+ self._thinking_trace = block
715
+ self._mount(block)
716
+
676
717
  def _finish_thinking_trace(self, *, clear: bool = False) -> None:
677
- if self._thinking_trace is not None and self._thinking_trace.is_attached:
678
- if not self._thinking_trace.has_class("-done"):
679
- self._thinking_trace.finish()
718
+ trace = self._thinking_trace
719
+ if trace is not None and trace.is_attached:
720
+ if not trace._raw.strip():
721
+ self._drop_empty_thinking()
722
+ elif not trace.has_class("-done"):
723
+ trace.finish()
680
724
  if clear:
681
725
  self._thinking_trace = None
682
726
 
@@ -973,7 +1017,11 @@ class ChatApp(App[int]):
973
1017
  self._follow_scroll()
974
1018
 
975
1019
  def _ev_thinking(self, p: dict) -> None:
976
- self._show_thinking(str(p.get("text") or "thinking…"))
1020
+ text = str(p.get("text") or "thinking…")
1021
+ if text.strip().lower() in {"thinking…", "thinking...", "thinking"}:
1022
+ self._ensure_live_thinking()
1023
+ return
1024
+ self._show_thinking(text)
977
1025
 
978
1026
  def _ev_thinking_clear(self, _p: dict) -> None:
979
1027
  self._clear_thinking()
@@ -981,13 +1029,16 @@ class ChatApp(App[int]):
981
1029
  def _ev_turn_started(self, _p: dict) -> None:
982
1030
  self._turn_active = True
983
1031
  self._assistant = None
1032
+ self._status_note = ""
984
1033
  self._seal_thinking_trace()
985
1034
  self._clear_open_tools()
986
- self._show_thinking("thinking…")
1035
+ self._clear_thinking()
1036
+ self._ensure_live_thinking()
987
1037
  self._refresh_status()
988
1038
 
989
1039
  def _ev_assistant_start(self, _p: dict) -> None:
990
1040
  self._clear_thinking()
1041
+ self._drop_empty_thinking()
991
1042
 
992
1043
  def _ev_assistant_delta(self, p: dict) -> None:
993
1044
  delta = str(p.get("delta", ""))
@@ -1027,30 +1078,49 @@ class ChatApp(App[int]):
1027
1078
 
1028
1079
  def _ev_summarizing(self, p: dict) -> None:
1029
1080
  tokens = int(p.get("tokens") or 0)
1030
- self._show_thinking(f"summarizing context ({tokens:,} tokens)")
1081
+ self._drop_empty_thinking()
1082
+ self._clear_thinking()
1083
+ self._status_note = f"summarizing context ({tokens:,} tokens)"
1084
+ self._refresh_status()
1031
1085
 
1032
1086
  def _ev_summarized(self, p: dict) -> None:
1033
1087
  turns = int(p.get("turns") or 0)
1034
1088
  noun = "turn" if turns == 1 else "turns"
1035
- self._show_thinking(f"summarized {turns} {noun}")
1089
+ self._status_note = f"summarized {turns} {noun}"
1090
+ self._refresh_status()
1036
1091
 
1037
1092
  def _ev_grounding(self, p: dict) -> None:
1038
1093
  self._clear_thinking()
1094
+ self._drop_empty_thinking()
1039
1095
  queries = p.get("search_queries") or []
1040
- lines = ["**grounded search**"]
1041
- if queries:
1042
- q = ", ".join(f'"{q}"' for q in queries)
1043
- lines[0] += f" — {q}"
1044
- for source in (p.get("sources") or [])[:5]:
1045
- if not isinstance(source, dict):
1046
- continue
1096
+ raw_sources = p.get("sources") or []
1097
+ sources = [source for source in raw_sources if isinstance(source, dict)]
1098
+ lines: list[str] = []
1099
+ shown = 0
1100
+ linked = 0
1101
+ for source in sources:
1047
1102
  title = str(source.get("title") or "").strip()
1048
1103
  uri = str(source.get("uri") or "").strip()
1049
1104
  if not uri:
1050
1105
  continue
1106
+ linked += 1
1107
+ if shown >= 5:
1108
+ continue
1109
+ shown += 1
1051
1110
  label = title or uri
1052
1111
  lines.append(f"- [{label}]({uri})")
1053
- self._mount(GroundingBlock("\n".join(lines)))
1112
+ query_text = ", ".join(str(query).strip() for query in queries if str(query).strip())
1113
+ if query_text and linked:
1114
+ noun = "source" if linked == 1 else "sources"
1115
+ hint = f"{query_text} · {linked} {noun}"
1116
+ elif query_text:
1117
+ hint = query_text
1118
+ elif linked:
1119
+ noun = "source" if linked == 1 else "sources"
1120
+ hint = f"{linked} {noun}"
1121
+ else:
1122
+ hint = ""
1123
+ self._mount(GroundingBlock("\n".join(lines), title=activity_label("Web", hint)))
1054
1124
 
1055
1125
  def _ev_turn_error(self, p: dict) -> None:
1056
1126
  self._close_assistant()
@@ -1157,9 +1227,10 @@ class ChatApp(App[int]):
1157
1227
  def _ev_stream_ended(self, _p: dict) -> None:
1158
1228
  self._exit_code = 1 if self._controller.stream_error else self._exit_code
1159
1229
 
1160
- def _ev_thinking_trace(self, p: dict) -> None:
1161
- # Legacy --show-thinking path; prefer thinking_block_* when present.
1162
- self._show_thinking(f"thinking {p.get('text')}")
1230
+ def _ev_thinking_trace(self, _p: dict) -> None:
1231
+ # thinking_block_* owns the collapsed row. This legacy event would
1232
+ # print the trace inline.
1233
+ return
1163
1234
 
1164
1235
  def _ev_thinking_block_delta(self, p: dict) -> None:
1165
1236
  text = str(p.get("text") or "")
@@ -1230,6 +1301,7 @@ class ChatApp(App[int]):
1230
1301
  def _finish_turn_ui(self) -> None:
1231
1302
  self._turn_active = False
1232
1303
  self._assistant = None
1304
+ self._status_note = ""
1233
1305
  self._clear_open_tools()
1234
1306
  self._refresh_status()
1235
1307
  self.query_one("#prompt", Composer).focus()
@@ -39,6 +39,38 @@ def _plain_title(text: str) -> Content:
39
39
  return Content.from_text(text, markup=False)
40
40
 
41
41
 
42
+ _KIND_WIDTH = 7
43
+ _HINT_MAX = 72
44
+
45
+
46
+ def activity_label(kind: str, hint: str = "") -> str:
47
+ """One activity row: kind padded so hints share a column (``Thought …``)."""
48
+ kind = " ".join(kind.split())
49
+ hint = " ".join(hint.split())
50
+ if len(hint) > _HINT_MAX:
51
+ hint = hint[:_HINT_MAX] + "…"
52
+ if not hint:
53
+ return kind
54
+ return f"{kind:<{_KIND_WIDTH}} {hint}"
55
+
56
+
57
+ def activity_label_from_title(title: str) -> str:
58
+ """Align a ``Kind hint`` title that ``tool_collapsed_title`` already built."""
59
+ kind, sep, hint = title.partition(" ")
60
+ if not sep:
61
+ return activity_label(kind)
62
+ return activity_label(kind, hint)
63
+
64
+
65
+ def _set_collapsed_mark(widget: Collapsible, mark: str) -> None:
66
+ """The disclosure symbol is the row's only glyph (spinner, ▸, ✓, ✗)."""
67
+ title = widget._title
68
+ if title.collapsed_symbol == mark:
69
+ return
70
+ title.collapsed_symbol = mark
71
+ title._update_label()
72
+
73
+
42
74
  def write_osc52_clipboard(app: App[object], text: str) -> bool:
43
75
  """Best-effort OSC 52 clipboard write via the Textual driver."""
44
76
  try:
@@ -110,59 +142,105 @@ class ThinkingLine(Static):
110
142
  self.update(Text(f"{self._label} {elapsed}s", style="dim italic"))
111
143
 
112
144
 
113
- class ThinkingTrace(Vertical):
114
- """OpenCode-style thinking block: ``Thinking...`` / body / ``...done thinking.``"""
145
+ class ThinkingTrace(Collapsible):
146
+ """Collapsed thinking row. Click it (or focus it and press Enter) to read the trace."""
115
147
 
116
148
  DEFAULT_CSS = """
117
149
  ThinkingTrace {
118
150
  width: 1fr;
119
151
  height: auto;
120
- margin-top: 1;
152
+ background: transparent;
153
+ border-top: none;
121
154
  padding: 0 1;
122
- }
123
- ThinkingTrace > .header {
124
- height: 1;
155
+ margin-top: 0;
125
156
  color: $muted;
126
- text-style: bold dim;
127
157
  }
128
- ThinkingTrace > .body {
129
- height: auto;
130
- color: $muted;
131
- text-style: dim;
158
+ ThinkingTrace.-lead {
159
+ margin-top: 1;
132
160
  }
133
- ThinkingTrace > .footer {
134
- height: 1;
135
- color: $muted;
136
- text-style: bold dim;
137
- display: none;
161
+ ThinkingTrace > Contents {
162
+ width: 1fr;
163
+ height: auto;
164
+ padding: 0 1 1 3;
165
+ color: $disabled;
138
166
  }
139
- ThinkingTrace.-done > .footer {
140
- display: block;
167
+ ThinkingTrace .thinking-body {
168
+ width: 1fr;
169
+ height: auto;
170
+ margin: 0;
171
+ padding: 0;
172
+ background: transparent;
173
+ color: $disabled;
141
174
  }
142
175
  """
143
176
 
144
177
  def __init__(self, **kwargs: object) -> None:
145
- super().__init__(**kwargs) # type: ignore[arg-type]
146
178
  self._raw = ""
179
+ self._done = False
180
+ self._spin_i = 0
181
+ self._spin_timer: Timer | None = None
182
+ self._body = Static("", classes="thinking-body")
183
+ super().__init__(
184
+ self._body,
185
+ title=_plain_title("Thinking…"), # type: ignore[arg-type]
186
+ collapsed=True,
187
+ collapsed_symbol="▸",
188
+ expanded_symbol="▾",
189
+ **kwargs, # type: ignore[arg-type]
190
+ )
147
191
 
148
- def compose(self) -> ComposeResult:
149
- yield Static("Thinking...", classes="header")
150
- yield Static("", classes="body")
151
- yield Static("...done thinking.", classes="footer")
192
+ def on_mount(self) -> None:
193
+ self._start_spinner()
194
+
195
+ def on_unmount(self) -> None:
196
+ self._stop_spinner()
152
197
 
153
198
  def append_delta(self, chunk: str) -> None:
154
199
  if not chunk:
155
200
  return
156
201
  self._raw += chunk
157
- with contextlib.suppress(NoMatches):
158
- self.query_one(".body", Static).update(Text(self._raw, style="dim"))
202
+ self._body.update(Text(self._raw, style="dim"))
159
203
 
160
204
  def finish(self) -> None:
205
+ self._done = True
206
+ self._stop_spinner()
161
207
  self.add_class("-done")
208
+ _set_collapsed_mark(self, "▸")
209
+ self.title = _plain_title(activity_label("Thought", self._preview())) # type: ignore[assignment]
162
210
 
163
211
  def reopen(self) -> None:
164
212
  """Allow late thinking deltas to continue this block after a premature close."""
213
+ self._done = False
165
214
  self.remove_class("-done")
215
+ self.title = _plain_title("Thinking…") # type: ignore[assignment]
216
+ _set_collapsed_mark(self, "▸")
217
+ self._start_spinner()
218
+
219
+ def _preview(self) -> str:
220
+ return " ".join(self._raw.split())
221
+
222
+ def _start_spinner(self) -> None:
223
+ if self._done or not self.is_mounted:
224
+ return
225
+ self.title = _plain_title("Thinking…") # type: ignore[assignment]
226
+ if not bool(getattr(self.app, "animations_enabled", True)):
227
+ _set_collapsed_mark(self, "▸")
228
+ return
229
+ if self._spin_timer is None:
230
+ self._spin_timer = self.set_interval(0.08, self._tick_spinner)
231
+ self._tick_spinner()
232
+
233
+ def _stop_spinner(self) -> None:
234
+ if self._spin_timer is not None:
235
+ self._spin_timer.stop()
236
+ self._spin_timer = None
237
+
238
+ def _tick_spinner(self) -> None:
239
+ if self._done:
240
+ return
241
+ glyph = _SPIN[self._spin_i % len(_SPIN)]
242
+ self._spin_i += 1
243
+ _set_collapsed_mark(self, glyph)
166
244
 
167
245
 
168
246
  class SystemLine(Static):
@@ -193,32 +271,50 @@ class SystemLine(Static):
193
271
  self.update(Text(self.body, style=style))
194
272
 
195
273
 
196
- class GroundingBlock(Vertical):
197
- """Grounding sources with clickable markdown links."""
274
+ class GroundingBlock(Collapsible):
275
+ """Collapsed web-search row. Open it to read the source links."""
198
276
 
199
277
  DEFAULT_CSS = """
200
278
  GroundingBlock {
201
279
  width: 1fr;
202
280
  height: auto;
203
- margin-top: 1;
281
+ background: transparent;
282
+ border-top: none;
204
283
  padding: 0 1;
284
+ margin-top: 0;
285
+ color: $muted;
286
+ }
287
+ GroundingBlock.-lead {
288
+ margin-top: 1;
205
289
  }
206
- GroundingBlock > Markdown {
290
+ GroundingBlock > Contents {
291
+ width: 1fr;
292
+ height: auto;
293
+ padding: 0 1 1 3;
294
+ color: $disabled;
295
+ }
296
+ GroundingBlock .grounding-body {
297
+ width: 1fr;
207
298
  height: auto;
208
299
  margin: 0;
209
300
  padding: 0;
210
301
  background: transparent;
211
- color: $muted;
302
+ color: $disabled;
212
303
  }
213
304
  """
214
305
 
215
- def __init__(self, markdown: str, **kwargs: object) -> None:
216
- super().__init__(**kwargs) # type: ignore[arg-type]
306
+ def __init__(self, markdown: str, *, title: str = "Web", **kwargs: object) -> None:
217
307
  self.markdown = markdown
218
308
  self.mounted_at = datetime.now()
219
-
220
- def compose(self) -> ComposeResult:
221
- yield Markdown(self.markdown, open_links=True)
309
+ body = Markdown(markdown, open_links=True, classes="grounding-body")
310
+ super().__init__(
311
+ body,
312
+ title=_plain_title(title), # type: ignore[arg-type]
313
+ collapsed=True,
314
+ collapsed_symbol="▸",
315
+ expanded_symbol="▾",
316
+ **kwargs, # type: ignore[arg-type]
317
+ )
222
318
 
223
319
 
224
320
  class EarlierTurns(Collapsible):
@@ -289,7 +385,7 @@ class UserTurn(Static):
289
385
  content = Text()
290
386
  if self.show_timestamp:
291
387
  content.append(self.mounted_at.strftime("%H:%M:%S "), style="dim")
292
- content.append("you\n", style="bold")
388
+ content.append("you\n", style="dim")
293
389
  content.append(self.body)
294
390
  self.update(content)
295
391
 
@@ -304,7 +400,7 @@ class AssistantTurn(Vertical):
304
400
  margin-top: 1;
305
401
  padding: 0 1;
306
402
  }
307
- AssistantTurn > .role {
403
+ AssistantTurn > .stamp {
308
404
  height: 1;
309
405
  color: $muted;
310
406
  text-style: dim;
@@ -335,22 +431,24 @@ class AssistantTurn(Vertical):
335
431
  self.show_timestamp = show_timestamp
336
432
 
337
433
  def compose(self) -> ComposeResult:
338
- yield Static(self._role_label(), classes="role")
434
+ yield Static("", classes="stamp")
339
435
  yield Markdown("", open_links=False, classes="body")
340
436
  yield Static("▍", classes="cursor")
341
437
 
342
- def _role_label(self) -> str:
438
+ def _stamp_text(self) -> str:
343
439
  if self.show_timestamp:
344
- return f"{self.mounted_at.strftime('%H:%M:%S')} assistant"
345
- return "assistant"
440
+ return self.mounted_at.strftime("%H:%M:%S")
441
+ return ""
346
442
 
347
443
  def refresh_label(self) -> None:
348
444
  with contextlib.suppress(NoMatches):
349
- self.query_one(".role", Static).update(self._role_label())
445
+ stamp = self.query_one(".stamp", Static)
446
+ text = self._stamp_text()
447
+ stamp.update(text)
448
+ stamp.display = bool(text)
350
449
 
351
450
  def on_mount(self) -> None:
352
- # Flush timer is started lazily on first delta (and paused when drained).
353
- return
451
+ self.refresh_label()
354
452
 
355
453
  def append_delta(self, chunk: str) -> None:
356
454
  if not chunk:
@@ -403,6 +501,9 @@ class ToolCallBlock(Collapsible):
403
501
  margin-top: 0;
404
502
  color: $muted;
405
503
  }
504
+ ToolCallBlock.-lead {
505
+ margin-top: 1;
506
+ }
406
507
  ToolCallBlock > Contents {
407
508
  width: 1fr;
408
509
  height: auto;
@@ -452,10 +553,10 @@ class ToolCallBlock(Collapsible):
452
553
  )
453
554
  super().__init__(
454
555
  self._detail,
455
- title=_plain_title(f" {title}"), # type: ignore[arg-type]
556
+ title=_plain_title(activity_label_from_title(title)), # type: ignore[arg-type]
456
557
  collapsed=True,
457
- collapsed_symbol="▶",
458
- expanded_symbol="▼",
558
+ collapsed_symbol="▸",
559
+ expanded_symbol="▾",
459
560
  classes="running",
460
561
  **kwargs, # type: ignore[arg-type]
461
562
  )
@@ -466,14 +567,14 @@ class ToolCallBlock(Collapsible):
466
567
  self._spin_timer = self.set_interval(0.08, self._tick_spinner)
467
568
  self._tick_spinner()
468
569
  else:
469
- self.title = _plain_title(f" {self.display_label}") # type: ignore[assignment]
570
+ _set_collapsed_mark(self, "▸")
470
571
 
471
572
  def _tick_spinner(self) -> None:
472
573
  if self.status != "running":
473
574
  return
474
575
  glyph = _SPIN[self._spin_i % len(_SPIN)]
475
576
  self._spin_i += 1
476
- self.title = _plain_title(f" {glyph} {self.display_label}") # type: ignore[assignment]
577
+ _set_collapsed_mark(self, glyph)
477
578
 
478
579
  def mark_finished(self, *, error: object = None, result: str = "") -> None:
479
580
  self.status = "error" if error else "ok"
@@ -482,8 +583,8 @@ class ToolCallBlock(Collapsible):
482
583
  if self._spin_timer is not None:
483
584
  self._spin_timer.stop()
484
585
  self._spin_timer = None
485
- mark = "✗" if error else "✓"
486
- self.title = _plain_title(f" {mark} {self.display_label}") # type: ignore[assignment]
586
+ _set_collapsed_mark(self, "✗" if error else "✓")
587
+ self.title = _plain_title(activity_label_from_title(self.display_label)) # type: ignore[assignment]
487
588
  self._detail.update(
488
589
  format_tool_expand_body(
489
590
  self.tool_name,
@@ -592,6 +592,10 @@ def test_grounding_mounts_markdown_links(tmp_path: Path) -> None:
592
592
  await pilot.pause()
593
593
  blocks = list(app.query(GroundingBlock))
594
594
  assert len(blocks) == 1
595
+ assert blocks[0].collapsed is True
596
+ assert "Web" in str(blocks[0].title)
597
+ assert "monkeys" in str(blocks[0].title)
598
+ assert "1 source" in str(blocks[0].title)
595
599
  assert "https://example.com" in blocks[0].markdown
596
600
  assert "[Docs]" in blocks[0].markdown
597
601
 
@@ -1212,24 +1216,36 @@ def test_thinking_trace_streams_and_finishes(tmp_path: Path) -> None:
1212
1216
  await pilot.pause()
1213
1217
  assert app._thinking_trace is not None
1214
1218
  assert "The user said hello" in app._thinking_trace._raw
1215
- header = app._thinking_trace.query_one(".header")
1216
- assert "Thinking" in str(header.render())
1219
+ assert app._thinking_trace.collapsed is True
1220
+ assert "Thinking" in str(app._thinking_trace.title)
1217
1221
  assert not app._thinking_trace.has_class("-done")
1218
1222
 
1219
1223
  app._ev_thinking_block_delta({"text": " — reply briefly."})
1220
1224
  await pilot.pause()
1221
1225
  assert "reply briefly" in app._thinking_trace._raw
1226
+ assert app._thinking_trace.collapsed is True
1222
1227
 
1223
1228
  app._ev_thinking_block_complete({})
1224
1229
  await pilot.pause()
1225
- # Finished block stays mounted; pointer kept for late re-entry.
1230
+ # Finished block stays mounted and collapsed; pointer kept for late re-entry.
1226
1231
  assert app._thinking_trace is not None
1227
1232
  assert app._thinking_trace.has_class("-done")
1233
+ assert app._thinking_trace.collapsed is True
1234
+ assert "Thought" in str(app._thinking_trace.title)
1235
+ assert "hello" in str(app._thinking_trace.title)
1236
+ assert app._thinking_trace._title.collapsed_symbol == "▸"
1228
1237
  traces = list(app.query(ThinkingTrace))
1229
1238
  assert len(traces) == 1
1230
1239
  assert traces[0].has_class("-done")
1240
+ assert traces[0].collapsed is True
1231
1241
  assert "The user said hello — reply briefly." in traces[0]._raw
1232
1242
 
1243
+ await pilot.click(traces[0].children[0])
1244
+ await pilot.pause()
1245
+ assert traces[0].collapsed is False
1246
+ body = traces[0].query_one(".thinking-body")
1247
+ assert "The user said hello — reply briefly." in str(body.render())
1248
+
1233
1249
  app._ev_turn_complete({})
1234
1250
  await pilot.pause()
1235
1251
  assert app._thinking_trace is None
@@ -1272,6 +1288,7 @@ def test_late_thinking_delta_reopens_same_block(tmp_path: Path) -> None:
1272
1288
  assert len(traces) == 1
1273
1289
  assert "ask what they'd like me to build." in traces[0]._raw
1274
1290
  assert traces[0].has_class("-done")
1291
+ assert traces[0].collapsed is True
1275
1292
 
1276
1293
  # Thinking block must still sit above the assistant turn.
1277
1294
  children = list(app._transcript().children)
@@ -633,7 +633,7 @@ wheels = [
633
633
 
634
634
  [[package]]
635
635
  name = "monkeybot"
636
- version = "3.10.0"
636
+ version = "3.11.0"
637
637
  source = { editable = "../" }
638
638
  dependencies = [
639
639
  { name = "aiosqlite" },
@@ -725,6 +725,7 @@ provides-extras = ["memory", "gemini", "vertex", "claude", "vertex-claude", "bed
725
725
  dev = [
726
726
  { name = "anthropic", extras = ["vertex", "bedrock"], specifier = ">=0.40.0" },
727
727
  { name = "asgi-lifespan", specifier = ">=2.1.0" },
728
+ { name = "jsonschema", specifier = ">=4.26.0" },
728
729
  { name = "monkeybot", extras = ["memory"] },
729
730
  { name = "monkeybot", extras = ["postgres"] },
730
731
  { name = "monkeybot-cli", editable = "." },
@@ -773,7 +774,7 @@ dev = [{ name = "pytest", specifier = ">=8.0.0" }]
773
774
 
774
775
  [[package]]
775
776
  name = "monkeybot-cli"
776
- version = "0.11.0"
777
+ version = "0.11.1"
777
778
  source = { editable = "." }
778
779
  dependencies = [
779
780
  { name = "httpx" },