monkeybot 3.8.0__tar.gz → 3.9.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 (984) hide show
  1. monkeybot-3.9.0/.cursor/hooks/pre-pr.py +147 -0
  2. monkeybot-3.9.0/.cursor/hooks.json +21 -0
  3. monkeybot-3.9.0/.github/workflows/ci.yml +51 -0
  4. monkeybot-3.9.0/.pre-commit-config.yaml +36 -0
  5. monkeybot-3.9.0/CHANGELOG.md +530 -0
  6. monkeybot-3.9.0/CONTRIBUTING.md +43 -0
  7. monkeybot-3.9.0/PKG-INFO +202 -0
  8. monkeybot-3.9.0/cli/pyproject.toml +44 -0
  9. monkeybot-3.9.0/cli/skills/monkeybot/references/config-sections.md +168 -0
  10. monkeybot-3.9.0/cli/src/monkeybot_cli/chat_session.py +967 -0
  11. monkeybot-3.9.0/cli/src/monkeybot_cli/chat_tool_display.py +238 -0
  12. monkeybot-3.9.0/cli/src/monkeybot_cli/chat_tui.py +1909 -0
  13. monkeybot-3.9.0/cli/src/monkeybot_cli/commands/chat.py +887 -0
  14. monkeybot-3.9.0/cli/src/monkeybot_cli/commands/doctor.py +655 -0
  15. monkeybot-3.9.0/cli/src/monkeybot_cli/commands/loop.py +212 -0
  16. monkeybot-3.9.0/cli/src/monkeybot_cli/commands/new.py +205 -0
  17. monkeybot-3.9.0/cli/src/monkeybot_cli/commands/validate.py +416 -0
  18. monkeybot-3.9.0/cli/src/monkeybot_cli/compat.py +26 -0
  19. monkeybot-3.9.0/cli/src/monkeybot_cli/extras_catalog.py +99 -0
  20. monkeybot-3.9.0/cli/src/monkeybot_cli/gateway_health.py +69 -0
  21. monkeybot-3.9.0/cli/src/monkeybot_cli/opensandbox_lifecycle.py +325 -0
  22. monkeybot-3.9.0/cli/src/monkeybot_cli/output.py +112 -0
  23. monkeybot-3.9.0/cli/src/monkeybot_cli/providers.py +146 -0
  24. monkeybot-3.9.0/cli/src/monkeybot_cli/realtime/push_to_talk.py +127 -0
  25. monkeybot-3.9.0/cli/src/monkeybot_cli/realtime/session_controller.py +499 -0
  26. monkeybot-3.9.0/cli/src/monkeybot_cli/scaffold_defaults/env.example +46 -0
  27. monkeybot-3.9.0/cli/src/monkeybot_cli/scaffold_defaults/monkeybot.example.yaml +262 -0
  28. monkeybot-3.9.0/cli/tests/test_chat_continue.py +196 -0
  29. monkeybot-3.9.0/cli/tests/test_chat_errors.py +227 -0
  30. monkeybot-3.9.0/cli/tests/test_chat_local_shell.py +160 -0
  31. monkeybot-3.9.0/cli/tests/test_chat_renderer_parity.py +24 -0
  32. monkeybot-3.9.0/cli/tests/test_chat_session.py +450 -0
  33. monkeybot-3.9.0/cli/tests/test_chat_tui.py +2389 -0
  34. monkeybot-3.9.0/cli/tests/test_cli.py +325 -0
  35. monkeybot-3.9.0/cli/tests/test_config_resolve.py +34 -0
  36. monkeybot-3.9.0/cli/tests/test_doctor.py +269 -0
  37. monkeybot-3.9.0/cli/tests/test_realtime_session_controller.py +317 -0
  38. monkeybot-3.9.0/cli/tests/test_run_cmd.py +281 -0
  39. monkeybot-3.9.0/cli/tests/test_runtime_python.py +1078 -0
  40. monkeybot-3.9.0/cli/tests/test_terminal_markdown.py +43 -0
  41. monkeybot-3.9.0/cli/uv.lock +1767 -0
  42. monkeybot-3.9.0/docs/features.md +832 -0
  43. monkeybot-3.9.0/docs/verifier-agent-design.md +831 -0
  44. monkeybot-3.9.0/evals/diff.py +130 -0
  45. monkeybot-3.9.0/evals/report.py +374 -0
  46. monkeybot-3.9.0/evals/scenario_loader.py +93 -0
  47. monkeybot-3.9.0/evals/scorer.py +382 -0
  48. monkeybot-3.9.0/evals/test_assertions.py +264 -0
  49. monkeybot-3.9.0/evals/test_diff.py +88 -0
  50. monkeybot-3.9.0/evals/test_judge.py +82 -0
  51. monkeybot-3.9.0/evals/test_report.py +194 -0
  52. monkeybot-3.9.0/examples/agentcore/runtime_app.py +106 -0
  53. monkeybot-3.9.0/examples/cloud-functions/main.py +73 -0
  54. monkeybot-3.9.0/integrations/browser-mcp/scripts/perf_bench.py +298 -0
  55. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/actions.py +639 -0
  56. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/app.py +193 -0
  57. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/backend.py +261 -0
  58. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/chat_context.py +373 -0
  59. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/dom_indexing.py +613 -0
  60. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/in_app_cdp.py +281 -0
  61. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/observe.py +435 -0
  62. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/playbooks.py +320 -0
  63. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/playwright_helpers.py +427 -0
  64. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/results.py +34 -0
  65. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/tab_ops.py +233 -0
  66. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/tabs.py +619 -0
  67. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/tools/batch.py +61 -0
  68. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/tools/interact.py +293 -0
  69. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/tools/navigate.py +62 -0
  70. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/tools/playbook.py +131 -0
  71. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/tools/read.py +173 -0
  72. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/tools/tab_control.py +260 -0
  73. monkeybot-3.9.0/integrations/browser-mcp/tests/integration/test_act_observe.py +48 -0
  74. monkeybot-3.9.0/integrations/browser-mcp/tests/integration/test_driver_persist.py +52 -0
  75. monkeybot-3.9.0/integrations/browser-mcp/tests/integration/test_intent_tools.py +132 -0
  76. monkeybot-3.9.0/integrations/browser-mcp/tests/integration/test_observation.py +85 -0
  77. monkeybot-3.9.0/integrations/browser-mcp/tests/integration/test_wait_for.py +55 -0
  78. monkeybot-3.9.0/integrations/browser-mcp/tests/test_act.py +233 -0
  79. monkeybot-3.9.0/integrations/browser-mcp/tests/test_agentcore.py +366 -0
  80. monkeybot-3.9.0/integrations/browser-mcp/tests/test_chat_isolation.py +375 -0
  81. monkeybot-3.9.0/integrations/browser-mcp/tests/test_chat_scope.py +289 -0
  82. monkeybot-3.9.0/integrations/browser-mcp/tests/test_fill_form.py +112 -0
  83. monkeybot-3.9.0/integrations/browser-mcp/tests/test_in_app_cdp.py +1206 -0
  84. monkeybot-3.9.0/integrations/browser-mcp/tests/test_indexed_tools.py +324 -0
  85. monkeybot-3.9.0/integrations/browser-mcp/tests/test_observe_after.py +332 -0
  86. monkeybot-3.9.0/integrations/browser-mcp/tests/test_perf.py +232 -0
  87. monkeybot-3.9.0/integrations/browser-mcp/tests/test_playbook_flows.py +295 -0
  88. monkeybot-3.9.0/integrations/browser-mcp/tests/test_playbooks.py +118 -0
  89. monkeybot-3.9.0/integrations/browser-mcp/tests/test_screenshots.py +121 -0
  90. monkeybot-3.9.0/integrations/browser-mcp/tests/test_tabs.py +414 -0
  91. monkeybot-3.9.0/integrations/browser-mcp/uv.lock +1212 -0
  92. monkeybot-3.9.0/pyproject.toml +135 -0
  93. monkeybot-3.9.0/scripts/ci-local.sh +76 -0
  94. monkeybot-3.9.0/scripts/release.py +244 -0
  95. monkeybot-3.9.0/src/monkeybot/core/attachments/catalog.py +75 -0
  96. monkeybot-3.9.0/src/monkeybot/core/attachments/config.py +81 -0
  97. monkeybot-3.9.0/src/monkeybot/core/attachments/resolve.py +155 -0
  98. monkeybot-3.9.0/src/monkeybot/core/attachments/text.py +81 -0
  99. monkeybot-3.9.0/src/monkeybot/core/config/runtime_env.py +548 -0
  100. monkeybot-3.9.0/src/monkeybot/core/config/settings.py +899 -0
  101. monkeybot-3.9.0/src/monkeybot/core/config/snapshot.py +1025 -0
  102. monkeybot-3.9.0/src/monkeybot/core/config/validation.py +271 -0
  103. monkeybot-3.9.0/src/monkeybot/core/config/yaml_loader.py +44 -0
  104. monkeybot-3.9.0/src/monkeybot/core/context/epoch.py +241 -0
  105. monkeybot-3.9.0/src/monkeybot/core/context/secret_egress.py +445 -0
  106. monkeybot-3.9.0/src/monkeybot/core/context/tool_shapers.py +369 -0
  107. monkeybot-3.9.0/src/monkeybot/core/hooks/__init__.py +261 -0
  108. monkeybot-3.9.0/src/monkeybot/core/llm/provider.py +319 -0
  109. monkeybot-3.9.0/src/monkeybot/core/memory/hook.py +75 -0
  110. monkeybot-3.9.0/src/monkeybot/core/memory/migrate_layout.py +437 -0
  111. monkeybot-3.9.0/src/monkeybot/core/memory/subsystem.py +355 -0
  112. monkeybot-3.9.0/src/monkeybot/core/messages/transform_context.py +111 -0
  113. monkeybot-3.9.0/src/monkeybot/core/runtime/context_budget.py +239 -0
  114. monkeybot-3.9.0/src/monkeybot/core/runtime/doom_loop.py +118 -0
  115. monkeybot-3.9.0/src/monkeybot/core/runtime/events.py +1451 -0
  116. monkeybot-3.9.0/src/monkeybot/core/runtime/history_compaction.py +554 -0
  117. monkeybot-3.9.0/src/monkeybot/core/runtime/loop_messages.py +265 -0
  118. monkeybot-3.9.0/src/monkeybot/core/runtime/loop_usage.py +176 -0
  119. monkeybot-3.9.0/src/monkeybot/core/runtime/tool_dispatch.py +1187 -0
  120. monkeybot-3.9.0/src/monkeybot/core/runtime/turn_loop.py +1996 -0
  121. monkeybot-3.9.0/src/monkeybot/core/runtime/utterance_buffer.py +177 -0
  122. monkeybot-3.9.0/src/monkeybot/core/subagents/worker_pool.py +570 -0
  123. monkeybot-3.9.0/src/monkeybot/core/tools/core_tool_executor.py +2724 -0
  124. monkeybot-3.9.0/src/monkeybot/core/tools/fs_isolation.py +962 -0
  125. monkeybot-3.9.0/src/monkeybot/core/tools/patch.py +559 -0
  126. monkeybot-3.9.0/src/monkeybot/core/tools/permission.py +349 -0
  127. monkeybot-3.9.0/src/monkeybot/core/tools/spill_inventory.py +618 -0
  128. monkeybot-3.9.0/src/monkeybot/core/types/content_blocks.py +632 -0
  129. monkeybot-3.9.0/src/monkeybot/core/types/interfaces.py +156 -0
  130. monkeybot-3.9.0/src/monkeybot/core/workspace/gcs.py +146 -0
  131. monkeybot-3.9.0/src/monkeybot/core/workspace/s3.py +171 -0
  132. monkeybot-3.9.0/src/monkeybot/gateway/bootstrap.py +69 -0
  133. monkeybot-3.9.0/src/monkeybot/gateway/realtime/__init__.py +45 -0
  134. monkeybot-3.9.0/src/monkeybot/gateway/realtime/metrics.py +147 -0
  135. monkeybot-3.9.0/src/monkeybot/gateway/realtime/wire.py +410 -0
  136. monkeybot-3.9.0/src/monkeybot/gateway/sse/app.py +1507 -0
  137. monkeybot-3.9.0/src/monkeybot/gateway/sse/routes.py +1450 -0
  138. monkeybot-3.9.0/src/monkeybot/gateway/sse/sse.py +44 -0
  139. monkeybot-3.9.0/src/monkeybot/observability/sqlite_exporter.py +737 -0
  140. monkeybot-3.9.0/src/monkeybot/providers/__init__.py +23 -0
  141. monkeybot-3.9.0/src/monkeybot/providers/_openai_compat.py +1534 -0
  142. monkeybot-3.9.0/src/monkeybot/providers/_sdk_client.py +165 -0
  143. monkeybot-3.9.0/src/monkeybot/providers/_utils.py +808 -0
  144. monkeybot-3.9.0/src/monkeybot/providers/bedrock.py +248 -0
  145. monkeybot-3.9.0/src/monkeybot/providers/claude.py +153 -0
  146. monkeybot-3.9.0/src/monkeybot/providers/fireworks.py +126 -0
  147. monkeybot-3.9.0/src/monkeybot/providers/gemini.py +989 -0
  148. monkeybot-3.9.0/src/monkeybot/providers/huggingface.py +148 -0
  149. monkeybot-3.9.0/src/monkeybot/providers/nvidia.py +123 -0
  150. monkeybot-3.9.0/src/monkeybot/providers/ollama.py +342 -0
  151. monkeybot-3.9.0/src/monkeybot/providers/openai.py +179 -0
  152. monkeybot-3.9.0/src/monkeybot/providers/openrouter.py +125 -0
  153. monkeybot-3.9.0/src/monkeybot/providers/rejected_sampling.py +140 -0
  154. monkeybot-3.9.0/src/monkeybot/providers/sampling.py +92 -0
  155. monkeybot-3.9.0/src/monkeybot/providers/vertex_claude.py +178 -0
  156. monkeybot-3.9.0/src/monkeybot/scheduler/http_invoker.py +59 -0
  157. monkeybot-3.9.0/src/monkeybot/todo_list/store.py +262 -0
  158. monkeybot-3.9.0/src/monkeybot/todo_list/tool.py +130 -0
  159. monkeybot-3.9.0/src/monkeybot/web_search/backends/duckduckgo.py +29 -0
  160. monkeybot-3.9.0/src/monkeybot/web_search/backends/firecrawl.py +42 -0
  161. monkeybot-3.9.0/src/monkeybot/web_search/backends/tavily.py +44 -0
  162. monkeybot-3.9.0/tests/conftest.py +101 -0
  163. monkeybot-3.9.0/tests/core/memory/test_mempalace.py +489 -0
  164. monkeybot-3.9.0/tests/core/memory/test_review_fixes.py +1235 -0
  165. monkeybot-3.9.0/tests/core/test_bootstrap.py +396 -0
  166. monkeybot-3.9.0/tests/core/test_config_extensions.py +908 -0
  167. monkeybot-3.9.0/tests/core/test_core_tool_executor.py +5072 -0
  168. monkeybot-3.9.0/tests/core/test_doom_loop.py +515 -0
  169. monkeybot-3.9.0/tests/core/test_durable_events.py +94 -0
  170. monkeybot-3.9.0/tests/core/test_firestore_history.py +361 -0
  171. monkeybot-3.9.0/tests/core/test_fs_isolation.py +997 -0
  172. monkeybot-3.9.0/tests/core/test_grant_store.py +185 -0
  173. monkeybot-3.9.0/tests/core/test_history.py +436 -0
  174. monkeybot-3.9.0/tests/core/test_history_compaction_split.py +265 -0
  175. monkeybot-3.9.0/tests/core/test_history_row_ids.py +444 -0
  176. monkeybot-3.9.0/tests/core/test_hooks.py +219 -0
  177. monkeybot-3.9.0/tests/core/test_image_preview.py +200 -0
  178. monkeybot-3.9.0/tests/core/test_inspector.py +283 -0
  179. monkeybot-3.9.0/tests/core/test_loop.py +3582 -0
  180. monkeybot-3.9.0/tests/core/test_loop_hooks.py +767 -0
  181. monkeybot-3.9.0/tests/core/test_loop_observability.py +204 -0
  182. monkeybot-3.9.0/tests/core/test_loop_transcript.py +288 -0
  183. monkeybot-3.9.0/tests/core/test_memory_layout_migrate.py +201 -0
  184. monkeybot-3.9.0/tests/core/test_message_pipeline.py +138 -0
  185. monkeybot-3.9.0/tests/core/test_patch.py +399 -0
  186. monkeybot-3.9.0/tests/core/test_path_grant_inspector.py +224 -0
  187. monkeybot-3.9.0/tests/core/test_permission.py +259 -0
  188. monkeybot-3.9.0/tests/core/test_progress_publish.py +253 -0
  189. monkeybot-3.9.0/tests/core/test_provider_contract.py +259 -0
  190. monkeybot-3.9.0/tests/core/test_provider_stream_mapper.py +88 -0
  191. monkeybot-3.9.0/tests/core/test_realtime_loop.py +745 -0
  192. monkeybot-3.9.0/tests/core/test_runtime_env.py +550 -0
  193. monkeybot-3.9.0/tests/core/test_secret_egress.py +462 -0
  194. monkeybot-3.9.0/tests/core/test_spill_dynamic.py +399 -0
  195. monkeybot-3.9.0/tests/core/test_spill_inventory.py +244 -0
  196. monkeybot-3.9.0/tests/core/test_storage_backends.py +1285 -0
  197. monkeybot-3.9.0/tests/core/test_subagent_proto.py +490 -0
  198. monkeybot-3.9.0/tests/core/test_subagent_trace_propagation.py +659 -0
  199. monkeybot-3.9.0/tests/core/test_terminal.py +1166 -0
  200. monkeybot-3.9.0/tests/core/test_truncated_tool_batch.py +201 -0
  201. monkeybot-3.9.0/tests/core/test_usage.py +372 -0
  202. monkeybot-3.9.0/tests/core/test_utterance_buffer.py +133 -0
  203. monkeybot-3.9.0/tests/core/test_worker_pool.py +791 -0
  204. monkeybot-3.9.0/tests/gateway/realtime/test_app.py +44 -0
  205. monkeybot-3.9.0/tests/gateway/realtime/test_session.py +209 -0
  206. monkeybot-3.9.0/tests/gateway/realtime/test_wire.py +274 -0
  207. monkeybot-3.9.0/tests/gateway/sse/test_attachments.py +251 -0
  208. monkeybot-3.9.0/tests/gateway/sse/test_gateway_runtime.py +856 -0
  209. monkeybot-3.9.0/tests/gateway/sse/test_routes.py +733 -0
  210. monkeybot-3.9.0/tests/gateway/sse/test_session_bus.py +242 -0
  211. monkeybot-3.9.0/tests/gateway/sse/test_start_turn_setup_failure.py +177 -0
  212. monkeybot-3.9.0/tests/gateway/test_otel_lifespan.py +108 -0
  213. monkeybot-3.9.0/tests/gateway/test_resolve_provider.py +118 -0
  214. monkeybot-3.9.0/tests/gateway/test_sdk_client_shutdown.py +78 -0
  215. monkeybot-3.9.0/tests/integration/test_prompt_caching_integration.py +140 -0
  216. monkeybot-3.9.0/tests/observability/test_init.py +152 -0
  217. monkeybot-3.9.0/tests/observability/test_loop_hook_spans.py +76 -0
  218. monkeybot-3.9.0/tests/observability/test_span_contract.py +238 -0
  219. monkeybot-3.9.0/tests/observability/test_spans.py +192 -0
  220. monkeybot-3.9.0/tests/observability/test_sqlite_exporter.py +705 -0
  221. monkeybot-3.9.0/tests/providers/conftest.py +119 -0
  222. monkeybot-3.9.0/tests/providers/test_anthropic_cache.py +745 -0
  223. monkeybot-3.9.0/tests/providers/test_bedrock_converse.py +613 -0
  224. monkeybot-3.9.0/tests/providers/test_fireworks.py +27 -0
  225. monkeybot-3.9.0/tests/providers/test_gemini_live.py +268 -0
  226. monkeybot-3.9.0/tests/providers/test_gemini_usage.py +615 -0
  227. monkeybot-3.9.0/tests/providers/test_huggingface.py +62 -0
  228. monkeybot-3.9.0/tests/providers/test_ollama.py +372 -0
  229. monkeybot-3.9.0/tests/providers/test_openai_byte_budget.py +419 -0
  230. monkeybot-3.9.0/tests/providers/test_openai_compat_usage.py +1254 -0
  231. monkeybot-3.9.0/tests/providers/test_openai_history.py +489 -0
  232. monkeybot-3.9.0/tests/providers/test_sampling.py +490 -0
  233. monkeybot-3.9.0/tests/providers/test_sdk_client_reuse.py +743 -0
  234. monkeybot-3.9.0/tests/providers/test_sonnet5_sampling.py +568 -0
  235. monkeybot-3.9.0/tests/providers/test_source_grep_gates.py +68 -0
  236. monkeybot-3.9.0/tests/test_packaging_config.py +85 -0
  237. monkeybot-3.9.0/tests/test_release_script.py +192 -0
  238. monkeybot-3.9.0/tests/todo_list/test_todo_list.py +306 -0
  239. monkeybot-3.9.0/tests/web_search/test_web_search.py +298 -0
  240. monkeybot-3.9.0/uv.lock +5362 -0
  241. monkeybot-3.8.0/.github/workflows/ci.yml +0 -47
  242. monkeybot-3.8.0/.pre-commit-config.yaml +0 -20
  243. monkeybot-3.8.0/CHANGELOG.md +0 -501
  244. monkeybot-3.8.0/CONTRIBUTING.md +0 -42
  245. monkeybot-3.8.0/PKG-INFO +0 -198
  246. monkeybot-3.8.0/cli/pyproject.toml +0 -44
  247. monkeybot-3.8.0/cli/skills/monkeybot/references/config-sections.md +0 -167
  248. monkeybot-3.8.0/cli/src/monkeybot_cli/chat_session.py +0 -973
  249. monkeybot-3.8.0/cli/src/monkeybot_cli/chat_tool_display.py +0 -240
  250. monkeybot-3.8.0/cli/src/monkeybot_cli/chat_tui.py +0 -1917
  251. monkeybot-3.8.0/cli/src/monkeybot_cli/commands/chat.py +0 -888
  252. monkeybot-3.8.0/cli/src/monkeybot_cli/commands/doctor.py +0 -592
  253. monkeybot-3.8.0/cli/src/monkeybot_cli/commands/loop.py +0 -207
  254. monkeybot-3.8.0/cli/src/monkeybot_cli/commands/new.py +0 -207
  255. monkeybot-3.8.0/cli/src/monkeybot_cli/commands/validate.py +0 -383
  256. monkeybot-3.8.0/cli/src/monkeybot_cli/compat.py +0 -30
  257. monkeybot-3.8.0/cli/src/monkeybot_cli/extras_catalog.py +0 -98
  258. monkeybot-3.8.0/cli/src/monkeybot_cli/gateway_health.py +0 -71
  259. monkeybot-3.8.0/cli/src/monkeybot_cli/opensandbox_lifecycle.py +0 -324
  260. monkeybot-3.8.0/cli/src/monkeybot_cli/output.py +0 -110
  261. monkeybot-3.8.0/cli/src/monkeybot_cli/providers.py +0 -144
  262. monkeybot-3.8.0/cli/src/monkeybot_cli/realtime/push_to_talk.py +0 -128
  263. monkeybot-3.8.0/cli/src/monkeybot_cli/realtime/session_controller.py +0 -501
  264. monkeybot-3.8.0/cli/src/monkeybot_cli/scaffold_defaults/env.example +0 -43
  265. monkeybot-3.8.0/cli/src/monkeybot_cli/scaffold_defaults/monkeybot.example.yaml +0 -253
  266. monkeybot-3.8.0/cli/tests/test_chat_continue.py +0 -198
  267. monkeybot-3.8.0/cli/tests/test_chat_errors.py +0 -219
  268. monkeybot-3.8.0/cli/tests/test_chat_local_shell.py +0 -158
  269. monkeybot-3.8.0/cli/tests/test_chat_renderer_parity.py +0 -26
  270. monkeybot-3.8.0/cli/tests/test_chat_session.py +0 -452
  271. monkeybot-3.8.0/cli/tests/test_chat_tui.py +0 -2392
  272. monkeybot-3.8.0/cli/tests/test_cli.py +0 -319
  273. monkeybot-3.8.0/cli/tests/test_config_resolve.py +0 -32
  274. monkeybot-3.8.0/cli/tests/test_doctor.py +0 -217
  275. monkeybot-3.8.0/cli/tests/test_realtime_session_controller.py +0 -319
  276. monkeybot-3.8.0/cli/tests/test_run_cmd.py +0 -277
  277. monkeybot-3.8.0/cli/tests/test_runtime_python.py +0 -1076
  278. monkeybot-3.8.0/cli/tests/test_terminal_markdown.py +0 -47
  279. monkeybot-3.8.0/cli/uv.lock +0 -1763
  280. monkeybot-3.8.0/docs/features.md +0 -832
  281. monkeybot-3.8.0/docs/verifier-agent-design.md +0 -831
  282. monkeybot-3.8.0/evals/diff.py +0 -123
  283. monkeybot-3.8.0/evals/report.py +0 -363
  284. monkeybot-3.8.0/evals/scenario_loader.py +0 -87
  285. monkeybot-3.8.0/evals/scorer.py +0 -366
  286. monkeybot-3.8.0/evals/test_assertions.py +0 -249
  287. monkeybot-3.8.0/evals/test_diff.py +0 -86
  288. monkeybot-3.8.0/evals/test_judge.py +0 -79
  289. monkeybot-3.8.0/evals/test_report.py +0 -156
  290. monkeybot-3.8.0/examples/agentcore/runtime_app.py +0 -104
  291. monkeybot-3.8.0/examples/cloud-functions/main.py +0 -77
  292. monkeybot-3.8.0/integrations/browser-mcp/scripts/perf_bench.py +0 -304
  293. monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/actions.py +0 -645
  294. monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/app.py +0 -190
  295. monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/backend.py +0 -257
  296. monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/chat_context.py +0 -375
  297. monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/dom_indexing.py +0 -616
  298. monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/in_app_cdp.py +0 -283
  299. monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/observe.py +0 -441
  300. monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/playbooks.py +0 -321
  301. monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/playwright_helpers.py +0 -418
  302. monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/results.py +0 -36
  303. monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/tab_ops.py +0 -235
  304. monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/tabs.py +0 -623
  305. monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/tools/batch.py +0 -62
  306. monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/tools/interact.py +0 -309
  307. monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/tools/navigate.py +0 -61
  308. monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/tools/playbook.py +0 -126
  309. monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/tools/read.py +0 -169
  310. monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/tools/tab_control.py +0 -256
  311. monkeybot-3.8.0/integrations/browser-mcp/tests/integration/test_act_observe.py +0 -53
  312. monkeybot-3.8.0/integrations/browser-mcp/tests/integration/test_driver_persist.py +0 -54
  313. monkeybot-3.8.0/integrations/browser-mcp/tests/integration/test_intent_tools.py +0 -134
  314. monkeybot-3.8.0/integrations/browser-mcp/tests/integration/test_observation.py +0 -97
  315. monkeybot-3.8.0/integrations/browser-mcp/tests/integration/test_wait_for.py +0 -57
  316. monkeybot-3.8.0/integrations/browser-mcp/tests/test_act.py +0 -230
  317. monkeybot-3.8.0/integrations/browser-mcp/tests/test_agentcore.py +0 -360
  318. monkeybot-3.8.0/integrations/browser-mcp/tests/test_chat_isolation.py +0 -369
  319. monkeybot-3.8.0/integrations/browser-mcp/tests/test_chat_scope.py +0 -293
  320. monkeybot-3.8.0/integrations/browser-mcp/tests/test_fill_form.py +0 -116
  321. monkeybot-3.8.0/integrations/browser-mcp/tests/test_in_app_cdp.py +0 -1205
  322. monkeybot-3.8.0/integrations/browser-mcp/tests/test_indexed_tools.py +0 -326
  323. monkeybot-3.8.0/integrations/browser-mcp/tests/test_observe_after.py +0 -332
  324. monkeybot-3.8.0/integrations/browser-mcp/tests/test_perf.py +0 -230
  325. monkeybot-3.8.0/integrations/browser-mcp/tests/test_playbook_flows.py +0 -285
  326. monkeybot-3.8.0/integrations/browser-mcp/tests/test_playbooks.py +0 -110
  327. monkeybot-3.8.0/integrations/browser-mcp/tests/test_screenshots.py +0 -117
  328. monkeybot-3.8.0/integrations/browser-mcp/tests/test_tabs.py +0 -416
  329. monkeybot-3.8.0/integrations/browser-mcp/uv.lock +0 -1212
  330. monkeybot-3.8.0/pyproject.toml +0 -134
  331. monkeybot-3.8.0/scripts/release.py +0 -238
  332. monkeybot-3.8.0/src/monkeybot/core/attachments/catalog.py +0 -77
  333. monkeybot-3.8.0/src/monkeybot/core/attachments/config.py +0 -62
  334. monkeybot-3.8.0/src/monkeybot/core/attachments/resolve.py +0 -157
  335. monkeybot-3.8.0/src/monkeybot/core/attachments/text.py +0 -84
  336. monkeybot-3.8.0/src/monkeybot/core/config/runtime_env.py +0 -546
  337. monkeybot-3.8.0/src/monkeybot/core/config/settings.py +0 -873
  338. monkeybot-3.8.0/src/monkeybot/core/config/snapshot.py +0 -1023
  339. monkeybot-3.8.0/src/monkeybot/core/config/validation.py +0 -270
  340. monkeybot-3.8.0/src/monkeybot/core/config/yaml_loader.py +0 -39
  341. monkeybot-3.8.0/src/monkeybot/core/context/epoch.py +0 -243
  342. monkeybot-3.8.0/src/monkeybot/core/context/secret_egress.py +0 -443
  343. monkeybot-3.8.0/src/monkeybot/core/context/tool_shapers.py +0 -367
  344. monkeybot-3.8.0/src/monkeybot/core/hooks/__init__.py +0 -263
  345. monkeybot-3.8.0/src/monkeybot/core/llm/provider.py +0 -306
  346. monkeybot-3.8.0/src/monkeybot/core/memory/hook.py +0 -77
  347. monkeybot-3.8.0/src/monkeybot/core/memory/migrate_layout.py +0 -439
  348. monkeybot-3.8.0/src/monkeybot/core/memory/subsystem.py +0 -357
  349. monkeybot-3.8.0/src/monkeybot/core/messages/transform_context.py +0 -122
  350. monkeybot-3.8.0/src/monkeybot/core/runtime/context_budget.py +0 -237
  351. monkeybot-3.8.0/src/monkeybot/core/runtime/doom_loop.py +0 -121
  352. monkeybot-3.8.0/src/monkeybot/core/runtime/events.py +0 -1449
  353. monkeybot-3.8.0/src/monkeybot/core/runtime/history_compaction.py +0 -533
  354. monkeybot-3.8.0/src/monkeybot/core/runtime/loop_messages.py +0 -263
  355. monkeybot-3.8.0/src/monkeybot/core/runtime/loop_usage.py +0 -174
  356. monkeybot-3.8.0/src/monkeybot/core/runtime/tool_dispatch.py +0 -1215
  357. monkeybot-3.8.0/src/monkeybot/core/runtime/turn_loop.py +0 -1969
  358. monkeybot-3.8.0/src/monkeybot/core/runtime/utterance_buffer.py +0 -179
  359. monkeybot-3.8.0/src/monkeybot/core/subagents/worker_pool.py +0 -576
  360. monkeybot-3.8.0/src/monkeybot/core/tools/core_tool_executor.py +0 -2706
  361. monkeybot-3.8.0/src/monkeybot/core/tools/fs_isolation.py +0 -845
  362. monkeybot-3.8.0/src/monkeybot/core/tools/patch.py +0 -567
  363. monkeybot-3.8.0/src/monkeybot/core/tools/permission.py +0 -355
  364. monkeybot-3.8.0/src/monkeybot/core/tools/spill_inventory.py +0 -605
  365. monkeybot-3.8.0/src/monkeybot/core/types/content_blocks.py +0 -652
  366. monkeybot-3.8.0/src/monkeybot/core/types/interfaces.py +0 -156
  367. monkeybot-3.8.0/src/monkeybot/core/workspace/gcs.py +0 -144
  368. monkeybot-3.8.0/src/monkeybot/core/workspace/s3.py +0 -169
  369. monkeybot-3.8.0/src/monkeybot/gateway/bootstrap.py +0 -67
  370. monkeybot-3.8.0/src/monkeybot/gateway/realtime/__init__.py +0 -44
  371. monkeybot-3.8.0/src/monkeybot/gateway/realtime/metrics.py +0 -147
  372. monkeybot-3.8.0/src/monkeybot/gateway/realtime/wire.py +0 -412
  373. monkeybot-3.8.0/src/monkeybot/gateway/sse/app.py +0 -1409
  374. monkeybot-3.8.0/src/monkeybot/gateway/sse/routes.py +0 -1449
  375. monkeybot-3.8.0/src/monkeybot/gateway/sse/sse.py +0 -46
  376. monkeybot-3.8.0/src/monkeybot/observability/sqlite_exporter.py +0 -748
  377. monkeybot-3.8.0/src/monkeybot/providers/__init__.py +0 -21
  378. monkeybot-3.8.0/src/monkeybot/providers/_openai_compat.py +0 -1354
  379. monkeybot-3.8.0/src/monkeybot/providers/_utils.py +0 -718
  380. monkeybot-3.8.0/src/monkeybot/providers/bedrock.py +0 -211
  381. monkeybot-3.8.0/src/monkeybot/providers/claude.py +0 -135
  382. monkeybot-3.8.0/src/monkeybot/providers/gemini.py +0 -809
  383. monkeybot-3.8.0/src/monkeybot/providers/huggingface.py +0 -136
  384. monkeybot-3.8.0/src/monkeybot/providers/nvidia.py +0 -111
  385. monkeybot-3.8.0/src/monkeybot/providers/ollama.py +0 -322
  386. monkeybot-3.8.0/src/monkeybot/providers/openai.py +0 -151
  387. monkeybot-3.8.0/src/monkeybot/providers/openrouter.py +0 -113
  388. monkeybot-3.8.0/src/monkeybot/providers/sampling.py +0 -53
  389. monkeybot-3.8.0/src/monkeybot/providers/vertex_claude.py +0 -151
  390. monkeybot-3.8.0/src/monkeybot/scheduler/http_invoker.py +0 -61
  391. monkeybot-3.8.0/src/monkeybot/todo_list/store.py +0 -264
  392. monkeybot-3.8.0/src/monkeybot/todo_list/tool.py +0 -132
  393. monkeybot-3.8.0/src/monkeybot/web_search/backends/duckduckgo.py +0 -32
  394. monkeybot-3.8.0/src/monkeybot/web_search/backends/firecrawl.py +0 -43
  395. monkeybot-3.8.0/src/monkeybot/web_search/backends/tavily.py +0 -45
  396. monkeybot-3.8.0/tests/conftest.py +0 -91
  397. monkeybot-3.8.0/tests/core/memory/test_mempalace.py +0 -485
  398. monkeybot-3.8.0/tests/core/memory/test_review_fixes.py +0 -1234
  399. monkeybot-3.8.0/tests/core/test_bootstrap.py +0 -394
  400. monkeybot-3.8.0/tests/core/test_config_extensions.py +0 -907
  401. monkeybot-3.8.0/tests/core/test_core_tool_executor.py +0 -4832
  402. monkeybot-3.8.0/tests/core/test_doom_loop.py +0 -525
  403. monkeybot-3.8.0/tests/core/test_durable_events.py +0 -97
  404. monkeybot-3.8.0/tests/core/test_firestore_history.py +0 -352
  405. monkeybot-3.8.0/tests/core/test_fs_isolation.py +0 -779
  406. monkeybot-3.8.0/tests/core/test_grant_store.py +0 -183
  407. monkeybot-3.8.0/tests/core/test_history.py +0 -433
  408. monkeybot-3.8.0/tests/core/test_history_compaction_split.py +0 -226
  409. monkeybot-3.8.0/tests/core/test_history_row_ids.py +0 -409
  410. monkeybot-3.8.0/tests/core/test_hooks.py +0 -220
  411. monkeybot-3.8.0/tests/core/test_image_preview.py +0 -169
  412. monkeybot-3.8.0/tests/core/test_inspector.py +0 -281
  413. monkeybot-3.8.0/tests/core/test_loop.py +0 -3398
  414. monkeybot-3.8.0/tests/core/test_loop_hooks.py +0 -769
  415. monkeybot-3.8.0/tests/core/test_loop_observability.py +0 -196
  416. monkeybot-3.8.0/tests/core/test_loop_transcript.py +0 -279
  417. monkeybot-3.8.0/tests/core/test_memory_layout_migrate.py +0 -210
  418. monkeybot-3.8.0/tests/core/test_message_pipeline.py +0 -143
  419. monkeybot-3.8.0/tests/core/test_patch.py +0 -403
  420. monkeybot-3.8.0/tests/core/test_path_grant_inspector.py +0 -230
  421. monkeybot-3.8.0/tests/core/test_permission.py +0 -267
  422. monkeybot-3.8.0/tests/core/test_progress_publish.py +0 -255
  423. monkeybot-3.8.0/tests/core/test_provider_contract.py +0 -253
  424. monkeybot-3.8.0/tests/core/test_provider_stream_mapper.py +0 -90
  425. monkeybot-3.8.0/tests/core/test_realtime_loop.py +0 -740
  426. monkeybot-3.8.0/tests/core/test_runtime_env.py +0 -552
  427. monkeybot-3.8.0/tests/core/test_secret_egress.py +0 -466
  428. monkeybot-3.8.0/tests/core/test_spill_dynamic.py +0 -386
  429. monkeybot-3.8.0/tests/core/test_spill_inventory.py +0 -248
  430. monkeybot-3.8.0/tests/core/test_storage_backends.py +0 -1247
  431. monkeybot-3.8.0/tests/core/test_subagent_proto.py +0 -490
  432. monkeybot-3.8.0/tests/core/test_subagent_trace_propagation.py +0 -647
  433. monkeybot-3.8.0/tests/core/test_terminal.py +0 -1193
  434. monkeybot-3.8.0/tests/core/test_truncated_tool_batch.py +0 -205
  435. monkeybot-3.8.0/tests/core/test_usage.py +0 -375
  436. monkeybot-3.8.0/tests/core/test_utterance_buffer.py +0 -131
  437. monkeybot-3.8.0/tests/core/test_worker_pool.py +0 -789
  438. monkeybot-3.8.0/tests/gateway/realtime/test_app.py +0 -40
  439. monkeybot-3.8.0/tests/gateway/realtime/test_session.py +0 -211
  440. monkeybot-3.8.0/tests/gateway/realtime/test_wire.py +0 -272
  441. monkeybot-3.8.0/tests/gateway/sse/test_attachments.py +0 -205
  442. monkeybot-3.8.0/tests/gateway/sse/test_gateway_runtime.py +0 -858
  443. monkeybot-3.8.0/tests/gateway/sse/test_routes.py +0 -729
  444. monkeybot-3.8.0/tests/gateway/sse/test_session_bus.py +0 -246
  445. monkeybot-3.8.0/tests/gateway/test_otel_lifespan.py +0 -107
  446. monkeybot-3.8.0/tests/gateway/test_resolve_provider.py +0 -102
  447. monkeybot-3.8.0/tests/integration/test_prompt_caching_integration.py +0 -139
  448. monkeybot-3.8.0/tests/observability/test_init.py +0 -154
  449. monkeybot-3.8.0/tests/observability/test_loop_hook_spans.py +0 -74
  450. monkeybot-3.8.0/tests/observability/test_span_contract.py +0 -240
  451. monkeybot-3.8.0/tests/observability/test_spans.py +0 -186
  452. monkeybot-3.8.0/tests/observability/test_sqlite_exporter.py +0 -709
  453. monkeybot-3.8.0/tests/providers/conftest.py +0 -106
  454. monkeybot-3.8.0/tests/providers/test_anthropic_cache.py +0 -747
  455. monkeybot-3.8.0/tests/providers/test_bedrock_converse.py +0 -605
  456. monkeybot-3.8.0/tests/providers/test_gemini_live.py +0 -272
  457. monkeybot-3.8.0/tests/providers/test_gemini_usage.py +0 -355
  458. monkeybot-3.8.0/tests/providers/test_huggingface.py +0 -61
  459. monkeybot-3.8.0/tests/providers/test_ollama.py +0 -362
  460. monkeybot-3.8.0/tests/providers/test_openai_byte_budget.py +0 -415
  461. monkeybot-3.8.0/tests/providers/test_openai_compat_usage.py +0 -1195
  462. monkeybot-3.8.0/tests/providers/test_openai_history.py +0 -437
  463. monkeybot-3.8.0/tests/providers/test_sampling.py +0 -156
  464. monkeybot-3.8.0/tests/providers/test_sonnet5_sampling.py +0 -435
  465. monkeybot-3.8.0/tests/providers/test_source_grep_gates.py +0 -66
  466. monkeybot-3.8.0/tests/test_packaging_config.py +0 -85
  467. monkeybot-3.8.0/tests/test_release_script.py +0 -190
  468. monkeybot-3.8.0/tests/todo_list/test_todo_list.py +0 -308
  469. monkeybot-3.8.0/tests/web_search/test_web_search.py +0 -293
  470. monkeybot-3.8.0/uv.lock +0 -5354
  471. {monkeybot-3.8.0 → monkeybot-3.9.0}/.cursor/skills/mb-retro/SKILL.md +0 -0
  472. {monkeybot-3.8.0 → monkeybot-3.9.0}/.dockerignore +0 -0
  473. {monkeybot-3.8.0 → monkeybot-3.9.0}/.github/workflows/live-eval-smoke.yml +0 -0
  474. {monkeybot-3.8.0 → monkeybot-3.9.0}/.github/workflows/prepare-release.yml +0 -0
  475. {monkeybot-3.8.0 → monkeybot-3.9.0}/.github/workflows/publish-release.yml +0 -0
  476. {monkeybot-3.8.0 → monkeybot-3.9.0}/.gitignore +0 -0
  477. {monkeybot-3.8.0 → monkeybot-3.9.0}/BACKLOG.md +0 -0
  478. {monkeybot-3.8.0 → monkeybot-3.9.0}/LICENSE +0 -0
  479. {monkeybot-3.8.0 → monkeybot-3.9.0}/README.md +0 -0
  480. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/skills/monkeybot/SKILL.md +0 -0
  481. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/__init__.py +0 -0
  482. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/chat_file_index.py +0 -0
  483. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/chat_local_shell.py +0 -0
  484. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/chat_renderer.py +0 -0
  485. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/chat_status_bar.py +0 -0
  486. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/chat_theme.py +0 -0
  487. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/chat_tui_widgets.py +0 -0
  488. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/commands/__init__.py +0 -0
  489. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/commands/refresh.py +0 -0
  490. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/commands/run_cmd.py +0 -0
  491. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/commands/talk.py +0 -0
  492. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/commands/trace.py +0 -0
  493. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/config_resolve.py +0 -0
  494. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/exit_commands.py +0 -0
  495. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/main.py +0 -0
  496. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/process_tree.py +0 -0
  497. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/realtime/__init__.py +0 -0
  498. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/realtime/audio_io.py +0 -0
  499. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/realtime/client.py +0 -0
  500. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/realtime/gateway_manager.py +0 -0
  501. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/realtime/session.py +0 -0
  502. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/realtime/talk_ui.py +0 -0
  503. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/realtime/wire_encode.py +0 -0
  504. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/runtime_python.py +0 -0
  505. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold.py +0 -0
  506. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/AGENT.md +0 -0
  507. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/Dockerfile +0 -0
  508. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/__init__.py +0 -0
  509. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/browser/SKILL.md +0 -0
  510. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/command_allowlist.yaml +0 -0
  511. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/dockerignore +0 -0
  512. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/goal/SKILL.md +0 -0
  513. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/image-generator/SKILL.md +0 -0
  514. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/image-generator/generate_image.py +0 -0
  515. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/loop/SKILL.md +0 -0
  516. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/mcp.json +0 -0
  517. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/opensandbox.docker.toml +0 -0
  518. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/otel-collector.example.yaml +0 -0
  519. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/permissions.yaml +0 -0
  520. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/session_controller.py +0 -0
  521. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/terminal_markdown.py +0 -0
  522. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/tests/test_chat_e2e.py +0 -0
  523. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/tests/test_chat_file_index.py +0 -0
  524. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/tests/test_chat_grounding.py +0 -0
  525. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/tests/test_chat_status_bar.py +0 -0
  526. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/tests/test_chat_theme.py +0 -0
  527. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/tests/test_chat_tool_display.py +0 -0
  528. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/tests/test_extras_catalog.py +0 -0
  529. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/tests/test_gateway_health.py +0 -0
  530. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/tests/test_opensandbox_lifecycle.py +0 -0
  531. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/tests/test_scaffold.py +0 -0
  532. {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/tests/test_trace_cmd.py +0 -0
  533. {monkeybot-3.8.0 → monkeybot-3.9.0}/docker/Dockerfile +0 -0
  534. {monkeybot-3.8.0 → monkeybot-3.9.0}/docker/demo-model.yaml +0 -0
  535. {monkeybot-3.8.0 → monkeybot-3.9.0}/docker/demo.yaml +0 -0
  536. {monkeybot-3.8.0 → monkeybot-3.9.0}/docker/docker-compose.sandbox.yml +0 -0
  537. {monkeybot-3.8.0 → monkeybot-3.9.0}/docker/opensandbox.docker.toml +0 -0
  538. {monkeybot-3.8.0 → monkeybot-3.9.0}/docker/sandbox.Dockerfile +0 -0
  539. {monkeybot-3.8.0 → monkeybot-3.9.0}/docker-compose.yml +0 -0
  540. {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/agent-layout.md +0 -0
  541. {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/assets/logo.png +0 -0
  542. {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/browser-mcp-perf-baseline.md +0 -0
  543. {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/browser-mcp-performance-plan.md +0 -0
  544. {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/browser-mcp.md +0 -0
  545. {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/cloud-deployment-design.md +0 -0
  546. {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/deploy-aws-agentcore.md +0 -0
  547. {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/deploy-pattern-a-container.md +0 -0
  548. {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/deploy-pattern-b-serverless.md +0 -0
  549. {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/deploy-pattern-c-agent-platform.md +0 -0
  550. {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/deploy-pattern-d-realtime.md +0 -0
  551. {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/getting-started.md +0 -0
  552. {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/live-evals.md +0 -0
  553. {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/mcp.md +0 -0
  554. {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/migrations/agent-scope-namespacing.md +0 -0
  555. {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/migrations/history-row-id.sql +0 -0
  556. {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/migrations/memory-outbox.sql +0 -0
  557. {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/migrations/session-branches.sql +0 -0
  558. {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/observability-runbook.md +0 -0
  559. {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/ollama-local.md +0 -0
  560. {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/otel-collector.example.yaml +0 -0
  561. {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/progressive-loop-tools.md +0 -0
  562. {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/progressive-mcp-tools.md +0 -0
  563. {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/skills.md +0 -0
  564. {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/spill-dynamic-design.md +0 -0
  565. {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/sse-gateway-ui.md +0 -0
  566. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/TEST_COVERAGE.md +0 -0
  567. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/assertions.py +0 -0
  568. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/baselines/smoke.json +0 -0
  569. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/baselines/smoke.md +0 -0
  570. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/eval_config.yaml +0 -0
  571. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/models.py +0 -0
  572. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/persistence.py +0 -0
  573. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/runner.py +0 -0
  574. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/context/summarization_trigger.yaml +0 -0
  575. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/drift/declares_done.yaml +0 -0
  576. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/drift/path_constraint.yaml +0 -0
  577. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/drift/preempt.yaml +0 -0
  578. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/drift/repeat_correction.yaml +0 -0
  579. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/drift/supersession.yaml +0 -0
  580. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/mcp/get_prompt.yaml +0 -0
  581. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/mcp/list_resources.yaml +0 -0
  582. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/mcp/tool_invoke.yaml +0 -0
  583. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/memory/recall_cross_session.yaml +0 -0
  584. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/memory/recall_single_session.yaml +0 -0
  585. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/multi_turn/task_tracking.yaml +0 -0
  586. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/skills/skill_invocation.yaml +0 -0
  587. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/subagents/dispatch_complete.yaml +0 -0
  588. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/tools/core_read.yaml +0 -0
  589. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/tools/core_read_error.yaml +0 -0
  590. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/tools/core_run_command.yaml +0 -0
  591. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/tools/core_run_command_sandbox.yaml +0 -0
  592. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/tools/core_write.yaml +0 -0
  593. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/.env.example +0 -0
  594. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/.gitignore +0 -0
  595. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/fixture_mcp_server.py +0 -0
  596. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/monkeybot_config/AGENT.md +0 -0
  597. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/monkeybot_config/command_allowlist.yaml +0 -0
  598. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/monkeybot_config/mcp.json +0 -0
  599. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/monkeybot_config/monkeybot.verifier-on.yaml +0 -0
  600. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/monkeybot_config/monkeybot.yaml +0 -0
  601. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/monkeybot_config/permissions.yaml +0 -0
  602. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/pyproject.toml +0 -0
  603. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/skills/browser/SKILL.md +0 -0
  604. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/uv.lock +0 -0
  605. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/workspace/.gitkeep +0 -0
  606. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/workspace/skills/browser/playbooks/.gitkeep +0 -0
  607. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/suites/drift.yaml +0 -0
  608. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/suites/smoke.yaml +0 -0
  609. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/test_runner_sse.py +0 -0
  610. {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/test_scorer.py +0 -0
  611. {monkeybot-3.8.0 → monkeybot-3.9.0}/examples/README.md +0 -0
  612. {monkeybot-3.8.0 → monkeybot-3.9.0}/examples/agentcore/handler.py +0 -0
  613. {monkeybot-3.8.0 → monkeybot-3.9.0}/examples/agentengine/handler.py +0 -0
  614. {monkeybot-3.8.0 → monkeybot-3.9.0}/examples/lambda/handler.py +0 -0
  615. {monkeybot-3.8.0 → monkeybot-3.9.0}/examples/ollama/PrefixStable.Modelfile +0 -0
  616. {monkeybot-3.8.0 → monkeybot-3.9.0}/examples/skills/browser/SKILL.md +0 -0
  617. {monkeybot-3.8.0 → monkeybot-3.9.0}/examples/skills/browser/playbooks/.gitkeep +0 -0
  618. {monkeybot-3.8.0 → monkeybot-3.9.0}/examples/skills/diagnostics/README.md +0 -0
  619. {monkeybot-3.8.0 → monkeybot-3.9.0}/examples/skills/diagnostics/SKILL.md +0 -0
  620. {monkeybot-3.8.0 → monkeybot-3.9.0}/examples/skills/diagnostics/__init__.py +0 -0
  621. {monkeybot-3.8.0 → monkeybot-3.9.0}/examples/skills/diagnostics/diagnostics.py +0 -0
  622. {monkeybot-3.8.0 → monkeybot-3.9.0}/examples/skills/image-generator/SKILL.md +0 -0
  623. {monkeybot-3.8.0 → monkeybot-3.9.0}/examples/skills/image-generator/generate_image.py +0 -0
  624. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/pyproject.toml +0 -0
  625. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/scripts/agentcore_smoke.py +0 -0
  626. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/scripts/dump_tool_surface.py +0 -0
  627. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/__init__.py +0 -0
  628. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/agentcore.py +0 -0
  629. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/assets/NOTICE.md +0 -0
  630. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/assets/dom_tree.js +0 -0
  631. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/assets/pa_driver.js +0 -0
  632. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/chat_scope.py +0 -0
  633. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/login.py +0 -0
  634. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/perf.py +0 -0
  635. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/screenshots.py +0 -0
  636. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/server.py +0 -0
  637. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/tools/__init__.py +0 -0
  638. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/tools/capture.py +0 -0
  639. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/conftest.py +0 -0
  640. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/fixtures/api.json +0 -0
  641. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/fixtures/article.html +0 -0
  642. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/fixtures/cards.html +0 -0
  643. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/fixtures/form.html +0 -0
  644. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/fixtures/long_list.html +0 -0
  645. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/fixtures/spa.html +0 -0
  646. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/fixtures/tool_surface.json +0 -0
  647. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/integration/conftest.py +0 -0
  648. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/integration/test_multi_tab.py +0 -0
  649. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/integration/test_run_playbook.py +0 -0
  650. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/test_dom_indexing.py +0 -0
  651. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/test_observe.py +0 -0
  652. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/test_playwright_helpers.py +0 -0
  653. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/test_server_shutdown.py +0 -0
  654. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/test_tool_surface.py +0 -0
  655. {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/test_wait_tools.py +0 -0
  656. {monkeybot-3.8.0 → monkeybot-3.9.0}/pytest.ini +0 -0
  657. {monkeybot-3.8.0 → monkeybot-3.9.0}/scripts/create_schema.py +0 -0
  658. {monkeybot-3.8.0 → monkeybot-3.9.0}/scripts/precommit-pytest.sh +0 -0
  659. {monkeybot-3.8.0 → monkeybot-3.9.0}/scripts/smoke_global_cli.sh +0 -0
  660. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/__init__.py +0 -0
  661. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/cli/__init__.py +0 -0
  662. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/cli/__main__.py +0 -0
  663. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/cli/audio_io.py +0 -0
  664. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/cli/gateway_manager.py +0 -0
  665. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/cli/main.py +0 -0
  666. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/cli/push_to_talk.py +0 -0
  667. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/cli/realtime_client.py +0 -0
  668. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/computer/__init__.py +0 -0
  669. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/computer/approvals.py +0 -0
  670. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/computer/permissions.py +0 -0
  671. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/computer/safety.py +0 -0
  672. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/computer/tools.py +0 -0
  673. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/__init__.py +0 -0
  674. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/attachments/__init__.py +0 -0
  675. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/attachments/freeze.py +0 -0
  676. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/attachments/image_preview.py +0 -0
  677. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/attachments/store.py +0 -0
  678. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/attachments/tools.py +0 -0
  679. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/bootstrap.py +0 -0
  680. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/config/__init__.py +0 -0
  681. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/config/realtime_config.py +0 -0
  682. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/context/__init__.py +0 -0
  683. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/context/campaign_context.py +0 -0
  684. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/context/common.py +0 -0
  685. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/context/slash_skills.py +0 -0
  686. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/context/tool_output_policy.py +0 -0
  687. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/context/tool_result_ingress.py +0 -0
  688. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/goals/__init__.py +0 -0
  689. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/goals/service.py +0 -0
  690. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/hooks/evidence_guard.py +0 -0
  691. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/layout.py +0 -0
  692. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/llm/__init__.py +0 -0
  693. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/llm/realtime_provider.py +0 -0
  694. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/llm/usage.py +0 -0
  695. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/lockfile_names.py +0 -0
  696. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/logging_utils.py +0 -0
  697. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/mcp/__init__.py +0 -0
  698. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/mcp/mcp_client.py +0 -0
  699. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/mcp/ports_mcp.py +0 -0
  700. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/__init__.py +0 -0
  701. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/config.py +0 -0
  702. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/ids.py +0 -0
  703. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/ingest.py +0 -0
  704. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/observability.py +0 -0
  705. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/outbox.py +0 -0
  706. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/palace.py +0 -0
  707. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/uri.py +0 -0
  708. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/writer.py +0 -0
  709. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/messages/__init__.py +0 -0
  710. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/messages/convert_provider.py +0 -0
  711. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/messages/tool_integrity.py +0 -0
  712. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/path_safety.py +0 -0
  713. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/__init__.py +0 -0
  714. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/backends.py +0 -0
  715. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/branches.py +0 -0
  716. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/db.py +0 -0
  717. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/durable_runs.py +0 -0
  718. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/errors.py +0 -0
  719. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/firestore.indexes.json +0 -0
  720. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/firestore.py +0 -0
  721. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/firestore_scheduled_loops.py +0 -0
  722. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/goal_ledger.py +0 -0
  723. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/history.py +0 -0
  724. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/postgres.py +0 -0
  725. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/row_ids.py +0 -0
  726. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/runs.py +0 -0
  727. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/scheduled_loops.py +0 -0
  728. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/session_turn_locks.py +0 -0
  729. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/sqlite.py +0 -0
  730. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/sqlite_backend.py +0 -0
  731. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/thread_summary.py +0 -0
  732. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/transcript.py +0 -0
  733. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/transcript_reader.py +0 -0
  734. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/usage.py +0 -0
  735. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/usage_buckets.py +0 -0
  736. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/prompts/__init__.py +0 -0
  737. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/prompts/harness_prompt.py +0 -0
  738. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/prompts/headings.py +0 -0
  739. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/prompts/prompt.py +0 -0
  740. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/runtime/__init__.py +0 -0
  741. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/runtime/history_rewrite.py +0 -0
  742. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/runtime/input_admission.py +0 -0
  743. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/runtime/loop.py +0 -0
  744. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/runtime/loop_hooks.py +0 -0
  745. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/runtime/loop_ports.py +0 -0
  746. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/runtime/provider_stream_mapper.py +0 -0
  747. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/runtime/realtime_loop.py +0 -0
  748. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/runtime/tool_batch.py +0 -0
  749. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/subagents/__init__.py +0 -0
  750. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/subagents/progress_publish.py +0 -0
  751. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/subagents/subagent_proto.py +0 -0
  752. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/subagents/subagent_worker.py +0 -0
  753. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/subprocess_groups.py +0 -0
  754. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/testing/__init__.py +0 -0
  755. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/testing/mocks_provider.py +0 -0
  756. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/testing/mocks_realtime_provider.py +0 -0
  757. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/__init__.py +0 -0
  758. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/ask_user.py +0 -0
  759. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/background_jobs.py +0 -0
  760. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/command_executor.py +0 -0
  761. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/grant_store.py +0 -0
  762. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/inspector.py +0 -0
  763. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/loop_inspector.py +0 -0
  764. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/path_grant_inspector.py +0 -0
  765. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/sandbox_executor.py +0 -0
  766. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/terminal.py +0 -0
  767. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/text_normalize.py +0 -0
  768. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/tool_hint.py +0 -0
  769. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/tool_kind.py +0 -0
  770. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/types.py +0 -0
  771. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/workspace_service.py +0 -0
  772. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/types/__init__.py +0 -0
  773. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/types/types_tools.py +0 -0
  774. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/__init__.py +0 -0
  775. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/actuator.py +0 -0
  776. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/binding.py +0 -0
  777. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/classify.py +0 -0
  778. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/inspector.py +0 -0
  779. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/intervention.py +0 -0
  780. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/judge.py +0 -0
  781. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/ledger.py +0 -0
  782. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/mailbox.py +0 -0
  783. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/match.py +0 -0
  784. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/port.py +0 -0
  785. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/rewrite_effects.py +0 -0
  786. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/severity.py +0 -0
  787. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/tracker.py +0 -0
  788. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/workspace/__init__.py +0 -0
  789. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/workspace/factory.py +0 -0
  790. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/workspace/local.py +0 -0
  791. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/workspace/protocol.py +0 -0
  792. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/workspace_layout.py +0 -0
  793. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/__init__.py +0 -0
  794. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/main.py +0 -0
  795. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/pending_response_bus.py +0 -0
  796. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/realtime/app.py +0 -0
  797. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/realtime/deps.py +0 -0
  798. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/realtime/errors.py +0 -0
  799. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/realtime/guardrails.py +0 -0
  800. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/realtime/manager.py +0 -0
  801. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/realtime/routes.py +0 -0
  802. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/realtime/session.py +0 -0
  803. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/realtime_main.py +0 -0
  804. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/__init__.py +0 -0
  805. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/goal_routes.py +0 -0
  806. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/history_routes.py +0 -0
  807. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/loop_port.py +0 -0
  808. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/models.py +0 -0
  809. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/reload.py +0 -0
  810. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/reply_body.py +0 -0
  811. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/request_storage.py +0 -0
  812. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/scheduler_routes.py +0 -0
  813. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/scheduler_wiring.py +0 -0
  814. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/session_bus.py +0 -0
  815. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/workspace_layout.py +0 -0
  816. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/observability/__init__.py +0 -0
  817. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/observability/_state.py +0 -0
  818. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/observability/instrumentation.py +0 -0
  819. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/observability/propagation.py +0 -0
  820. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/observability/spans.py +0 -0
  821. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/providers/_bedrock_converse.py +0 -0
  822. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/providers/gemini_live.py +0 -0
  823. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/providers/model_capabilities.py +0 -0
  824. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/providers/pricing.py +0 -0
  825. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/providers/request_budget.py +0 -0
  826. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/scaffold/__init__.py +0 -0
  827. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/scheduler/__init__.py +0 -0
  828. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/scheduler/__main__.py +0 -0
  829. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/scheduler/engine.py +0 -0
  830. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/scheduler/interval.py +0 -0
  831. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/scheduler/tick_result.py +0 -0
  832. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/scheduler/worker.py +0 -0
  833. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/subagents/__init__.py +0 -0
  834. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/subagents/worker/__init__.py +0 -0
  835. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/subagents/worker/__main__.py +0 -0
  836. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/todo_list/__init__.py +0 -0
  837. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/web_search/__init__.py +0 -0
  838. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/web_search/backends/__init__.py +0 -0
  839. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/web_search/protocol.py +0 -0
  840. {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/web_search/tool.py +0 -0
  841. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/__init__.py +0 -0
  842. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/acceptance/test_observability_acceptance.py +0 -0
  843. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/cli/__init__.py +0 -0
  844. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/cli/test_gateway_manager.py +0 -0
  845. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/cli/test_main.py +0 -0
  846. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/cli/test_push_to_talk.py +0 -0
  847. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/cli/test_realtime_client.py +0 -0
  848. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/computer/__init__.py +0 -0
  849. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/computer/test_approvals.py +0 -0
  850. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/computer/test_computer_tools.py +0 -0
  851. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/computer/test_package_init.py +0 -0
  852. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/computer/test_path_policy.py +0 -0
  853. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/computer/test_permissions.py +0 -0
  854. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/computer/test_subagent_exclusion.py +0 -0
  855. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/computer/test_wiring.py +0 -0
  856. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/__init__.py +0 -0
  857. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/fixtures/bitbucket_dc_style_pr.diff +0 -0
  858. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/memory/helpers.py +0 -0
  859. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/memory/in_memory_palace.py +0 -0
  860. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_agent_layout.py +0 -0
  861. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_ask_user.py +0 -0
  862. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_attachment_freeze.py +0 -0
  863. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_attachment_store.py +0 -0
  864. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_background_jobs.py +0 -0
  865. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_branch_store_backends.py +0 -0
  866. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_content_blocks.py +0 -0
  867. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_context.py +0 -0
  868. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_context_budget.py +0 -0
  869. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_context_epoch.py +0 -0
  870. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_durable_runs.py +0 -0
  871. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_empty_completion.py +0 -0
  872. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_env_map_grep_gates.py +0 -0
  873. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_events.py +0 -0
  874. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_evidence_guard.py +0 -0
  875. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_firestore_scheduled_loops.py +0 -0
  876. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_firestore_usage.py +0 -0
  877. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_gemini_history_replay.py +0 -0
  878. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_goal_ledger.py +0 -0
  879. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_goal_persistence.py +0 -0
  880. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_goals.py +0 -0
  881. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_harness_prompt.py +0 -0
  882. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_history_branches.py +0 -0
  883. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_input_admission.py +0 -0
  884. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_layout.py +0 -0
  885. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_logging_utils.py +0 -0
  886. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_mcp_client.py +0 -0
  887. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_mocks_realtime_provider.py +0 -0
  888. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_path_safety.py +0 -0
  889. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_pricing.py +0 -0
  890. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_progress_tracker.py +0 -0
  891. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_prompt.py +0 -0
  892. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_replace_fuzzy.py +0 -0
  893. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_run_command_parse.py +0 -0
  894. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_runs.py +0 -0
  895. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_runtime_config_snapshot.py +0 -0
  896. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_sandbox_executor.py +0 -0
  897. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_scheduled_loops.py +0 -0
  898. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_session_branches_migration.py +0 -0
  899. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_session_turn_locks.py +0 -0
  900. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_settlement.py +0 -0
  901. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_slash_skills.py +0 -0
  902. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_subagent_transcript.py +0 -0
  903. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_subagent_worker_paths.py +0 -0
  904. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_thread_summary_wire.py +0 -0
  905. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_tool_def_schema.py +0 -0
  906. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_tool_integrity.py +0 -0
  907. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_tool_result_ingress.py +0 -0
  908. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_tool_shapers.py +0 -0
  909. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_transcript.py +0 -0
  910. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_transcript_reader.py +0 -0
  911. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_turn_session_id.py +0 -0
  912. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_usage_migration.py +0 -0
  913. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_verifier_binding.py +0 -0
  914. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_verifier_inspector.py +0 -0
  915. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_verifier_judge.py +0 -0
  916. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_verifier_mailbox_lifecycle.py +0 -0
  917. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_verifier_rewrite_effects.py +0 -0
  918. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_verifier_sticky_nudge.py +0 -0
  919. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_workspace_extra_read_roots.py +0 -0
  920. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_workspace_layout.py +0 -0
  921. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_workspace_symlinks.py +0 -0
  922. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_workspace_write_scope.py +0 -0
  923. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/workspace/test_factory.py +0 -0
  924. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/workspace/test_local_storage.py +0 -0
  925. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/workspace/test_protocol_contract.py +0 -0
  926. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/__init__.py +0 -0
  927. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/eval_hook.py +0 -0
  928. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenario_runner.py +0 -0
  929. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/memory_wake_up_large.yaml +0 -0
  930. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/memory_write_inject.yaml +0 -0
  931. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/subagent_roundtrip.yaml +0 -0
  932. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_glob_grep.yaml +0 -0
  933. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_load_file.yaml +0 -0
  934. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_loops.yaml +0 -0
  935. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_read.yaml +0 -0
  936. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_replace_apply_patch.yaml +0 -0
  937. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_run_command.yaml +0 -0
  938. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_search_memory.yaml +0 -0
  939. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_todo_list.yaml +0 -0
  940. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_web_search.yaml +0 -0
  941. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_write.yaml +0 -0
  942. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/turn_completion.yaml +0 -0
  943. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/test_agent_behavior.py +0 -0
  944. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/test_verifier_port.py +0 -0
  945. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/__init__.py +0 -0
  946. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/realtime/__init__.py +0 -0
  947. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/realtime/test_deps.py +0 -0
  948. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/realtime/test_guardrails.py +0 -0
  949. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/realtime/test_manager.py +0 -0
  950. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/realtime/test_metrics.py +0 -0
  951. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/realtime/test_routes_client_text.py +0 -0
  952. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/sse/test_config_reload.py +0 -0
  953. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/sse/test_create_session_model.py +0 -0
  954. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/sse/test_history_routes.py +0 -0
  955. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/sse/test_scheduler_routes.py +0 -0
  956. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/sse/test_transcript_wiring.py +0 -0
  957. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/test_otel_fastapi.py +0 -0
  958. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/test_pending_response_endpoints.py +0 -0
  959. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/test_realtime_main.py +0 -0
  960. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/test_sse_events.py +0 -0
  961. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/test_subagent_event_publisher.py +0 -0
  962. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/integration/__init__.py +0 -0
  963. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/integration/test_mb_e2e_simple_reply.py +0 -0
  964. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/integration/test_observability_integration.py +0 -0
  965. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/observability/conftest.py +0 -0
  966. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/observability/test_instrumentation.py +0 -0
  967. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/observability/test_propagation.py +0 -0
  968. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/observability/test_truncate.py +0 -0
  969. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/observability/test_turn_complete_trace.py +0 -0
  970. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/providers/test_anthropic_history.py +0 -0
  971. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/providers/test_bedrock_estimate.py +0 -0
  972. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/providers/test_gemini_history.py +0 -0
  973. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/providers/test_model_capabilities.py +0 -0
  974. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/providers/test_nvidia.py +0 -0
  975. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/providers/test_pricing.py +0 -0
  976. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/providers/test_request_budget.py +0 -0
  977. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/providers/test_safe_parse_tool_args.py +0 -0
  978. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/providers/test_vertex_claude_history.py +0 -0
  979. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/scheduler/test_engine.py +0 -0
  980. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/scheduler/test_interval.py +0 -0
  981. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/skills/__init__.py +0 -0
  982. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/skills/test_generate_image_script.py +0 -0
  983. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/test_cold_start.py +0 -0
  984. {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/web_search/__init__.py +0 -0
@@ -0,0 +1,147 @@
1
+ #!/usr/bin/env python3
2
+ """Block pull-request creation until local CI has passed for this repo."""
3
+
4
+ from __future__ import annotations
5
+
6
+ import json
7
+ import os
8
+ import re
9
+ import subprocess
10
+ import sys
11
+
12
+ ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", ".."))
13
+ REPO_NAME = os.path.basename(ROOT)
14
+ CREATE_PR = re.compile(r"(?:^|[^\w./-])gh\s+pr\s+create\b")
15
+ REPO_FLAG = re.compile(r"(?:^|\s)(?:-R|--repo)(?:=|\s+)(\S+)")
16
+ CD = re.compile(r"(?:^|[;&|]\s*)cd\s+([^;&|\n]+)")
17
+
18
+
19
+ def emit(permission: str, message: str | None = None) -> None:
20
+ payload: dict[str, str] = {"permission": permission}
21
+ if message:
22
+ payload["user_message"] = message
23
+ payload["agent_message"] = message
24
+ json.dump(payload, sys.stdout)
25
+ sys.stdout.write("\n")
26
+
27
+
28
+ def allow() -> None:
29
+ emit("allow")
30
+ raise SystemExit(0)
31
+
32
+
33
+ def deny(message: str) -> None:
34
+ emit("deny", message)
35
+ raise SystemExit(0)
36
+
37
+
38
+ def in_repo(path: str) -> bool:
39
+ try:
40
+ return os.path.commonpath(
41
+ [os.path.realpath(path), os.path.realpath(ROOT)]
42
+ ) == os.path.realpath(ROOT)
43
+ except ValueError:
44
+ return False
45
+
46
+
47
+ def is_this_repo(value: str) -> bool:
48
+ name = value.rstrip("/").split("/")[-1]
49
+ if name.endswith(".git"):
50
+ name = name[: -len(".git")]
51
+ return name == REPO_NAME
52
+
53
+
54
+ def effective_cwd(cwd: str, command: str) -> str:
55
+ base = cwd or ROOT
56
+ matches = CD.findall(command)
57
+ if not matches:
58
+ return base
59
+ target = matches[-1].strip().strip('"').strip("'")
60
+ target = os.path.expanduser(target)
61
+ if not os.path.isabs(target):
62
+ target = os.path.normpath(os.path.join(base, target))
63
+ return target
64
+
65
+
66
+ def run_ci() -> int:
67
+ completed = subprocess.run(
68
+ ["bash", "scripts/ci-local.sh", "--if-needed"],
69
+ cwd=ROOT,
70
+ stdout=sys.stderr,
71
+ )
72
+ return completed.returncode
73
+
74
+
75
+ def gate_shell(data: dict) -> None:
76
+ command = str(data.get("command") or "")
77
+ if CREATE_PR.search(command) is None:
78
+ allow()
79
+
80
+ flagged = REPO_FLAG.search(command)
81
+ if flagged is not None:
82
+ if not is_this_repo(flagged.group(1)):
83
+ allow()
84
+ else:
85
+ cwd = str(data.get("cwd") or "")
86
+ if cwd or CD.search(command):
87
+ if not in_repo(effective_cwd(cwd, command)):
88
+ allow()
89
+ else:
90
+ roots = data.get("workspace_roots") or []
91
+ if len(roots) != 1 or not in_repo(str(roots[0])):
92
+ deny(
93
+ "Set the shell working directory to the repository before creating a pull request "
94
+ "so local CI runs in the right project."
95
+ )
96
+
97
+ if run_ci() != 0:
98
+ deny("Local CI failed, so the pull request was not created.")
99
+ allow()
100
+
101
+
102
+ def gate_mcp(data: dict) -> None:
103
+ if data.get("tool_name") != "create_pull_request":
104
+ allow()
105
+ raw = data.get("tool_input") or {}
106
+ if isinstance(raw, str):
107
+ try:
108
+ payload = json.loads(raw) if raw else {}
109
+ except json.JSONDecodeError:
110
+ deny("create_pull_request input was not valid JSON, so local CI did not run.")
111
+ elif isinstance(raw, dict):
112
+ payload = raw
113
+ else:
114
+ payload = {}
115
+ repo = str(payload.get("repo") or "")
116
+ if not repo:
117
+ deny(
118
+ "create_pull_request is missing a repo, so local CI cannot tell which project to test."
119
+ )
120
+ if not is_this_repo(repo):
121
+ allow()
122
+ if run_ci() != 0:
123
+ deny("Local CI failed, so the pull request was not created.")
124
+ allow()
125
+
126
+
127
+ def main() -> None:
128
+ try:
129
+ data = json.load(sys.stdin)
130
+ except json.JSONDecodeError:
131
+ deny("Local CI hook received invalid input.")
132
+ event = str(data.get("hook_event_name") or "")
133
+ if event == "beforeMCPExecution" or (
134
+ not event and data.get("tool_name") == "create_pull_request"
135
+ ):
136
+ gate_mcp(data)
137
+ else:
138
+ gate_shell(data)
139
+
140
+
141
+ if __name__ == "__main__":
142
+ try:
143
+ main()
144
+ except SystemExit:
145
+ raise
146
+ except Exception as exc:
147
+ deny(f"Local CI hook failed: {exc}")
@@ -0,0 +1,21 @@
1
+ {
2
+ "version": 1,
3
+ "hooks": {
4
+ "beforeShellExecution": [
5
+ {
6
+ "command": ".cursor/hooks/pre-pr.py",
7
+ "matcher": "gh\\s+pr\\s+create",
8
+ "timeout": 2400,
9
+ "failClosed": true
10
+ }
11
+ ],
12
+ "beforeMCPExecution": [
13
+ {
14
+ "command": ".cursor/hooks/pre-pr.py",
15
+ "matcher": "create_pull_request",
16
+ "timeout": 2400,
17
+ "failClosed": true
18
+ }
19
+ ]
20
+ }
21
+ }
@@ -0,0 +1,51 @@
1
+ # Automatic runs are off. Pushing a branch runs this same suite locally
2
+ # (scripts/ci-local.sh via the pre-push hook). Dispatch this workflow from the
3
+ # Actions tab only when you want a GitHub-hosted run.
4
+ name: CI
5
+
6
+ on:
7
+ workflow_dispatch:
8
+
9
+ jobs:
10
+ python:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+
15
+ - name: Install ripgrep and GitHub CLI
16
+ run: sudo apt-get update && sudo apt-get install -y ripgrep gh
17
+
18
+ - uses: astral-sh/setup-uv@v5
19
+ with:
20
+ version: "latest"
21
+
22
+ - name: Sync dependencies
23
+ run: uv sync --extra claude --extra vertex-claude --extra bedrock --extra firestore
24
+
25
+ - name: Ruff format
26
+ run: uv run ruff format --check .
27
+
28
+ - name: Mypy
29
+ run: uv run mypy src/monkeybot
30
+
31
+ - name: Pytest
32
+ run: uv run pytest tests/ -q
33
+
34
+ - name: CLI pytest
35
+ working-directory: cli
36
+ run: |
37
+ uv sync
38
+ uv run pytest -q
39
+
40
+ - name: Browser MCP pytest
41
+ working-directory: integrations/browser-mcp
42
+ run: |
43
+ uv sync --dev
44
+ uv run pytest -q
45
+
46
+ - name: Evals self-checks (no live agent, no model calls)
47
+ run: |
48
+ uv sync --extra evals
49
+ uv run python evals/test_assertions.py
50
+ uv run python evals/test_report.py
51
+ uv run python evals/test_runner_sse.py
@@ -0,0 +1,36 @@
1
+ # Pre-commit hooks for monkeybot
2
+ # Install: uv run pre-commit install && uv run pre-commit install --hook-type pre-push
3
+ # Run the commit hooks manually: uv run pre-commit run --all-files
4
+ # Run the full pull-request suite: bash scripts/ci-local.sh
5
+
6
+ repos:
7
+ - repo: local
8
+ hooks:
9
+ - id: ruff-format
10
+ name: ruff format
11
+ entry: uv run ruff format --check .
12
+ language: system
13
+ pass_filenames: false
14
+ always_run: true
15
+
16
+ - id: mypy
17
+ name: mypy (src/monkeybot)
18
+ entry: uv run mypy src/monkeybot
19
+ language: system
20
+ pass_filenames: false
21
+ always_run: true
22
+
23
+ - id: pytest
24
+ name: pytest (changed tests or collection check)
25
+ entry: bash scripts/precommit-pytest.sh
26
+ language: system
27
+ files: ^(src/monkeybot|tests)/.*\.py$
28
+ pass_filenames: true
29
+
30
+ - id: local-ci
31
+ name: local CI (ruff format, mypy, pytest, cli, browser MCP, eval self-checks)
32
+ entry: bash scripts/ci-local.sh --if-needed
33
+ language: system
34
+ pass_filenames: false
35
+ always_run: true
36
+ stages: [pre-push]