monkeybot 3.7.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 (1069) 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/.cursor/skills/mb-retro/SKILL.md +85 -0
  4. monkeybot-3.9.0/.github/workflows/ci.yml +51 -0
  5. monkeybot-3.9.0/.pre-commit-config.yaml +36 -0
  6. monkeybot-3.9.0/BACKLOG.md +61 -0
  7. monkeybot-3.9.0/CHANGELOG.md +530 -0
  8. monkeybot-3.9.0/CONTRIBUTING.md +43 -0
  9. monkeybot-3.9.0/PKG-INFO +202 -0
  10. monkeybot-3.9.0/cli/pyproject.toml +44 -0
  11. monkeybot-3.9.0/cli/skills/monkeybot/references/config-sections.md +168 -0
  12. monkeybot-3.9.0/cli/src/monkeybot_cli/chat_session.py +967 -0
  13. monkeybot-3.9.0/cli/src/monkeybot_cli/chat_tool_display.py +238 -0
  14. monkeybot-3.9.0/cli/src/monkeybot_cli/chat_tui.py +1909 -0
  15. monkeybot-3.9.0/cli/src/monkeybot_cli/commands/chat.py +887 -0
  16. monkeybot-3.9.0/cli/src/monkeybot_cli/commands/doctor.py +655 -0
  17. monkeybot-3.9.0/cli/src/monkeybot_cli/commands/loop.py +212 -0
  18. monkeybot-3.9.0/cli/src/monkeybot_cli/commands/new.py +205 -0
  19. monkeybot-3.9.0/cli/src/monkeybot_cli/commands/trace.py +174 -0
  20. monkeybot-3.9.0/cli/src/monkeybot_cli/commands/validate.py +416 -0
  21. monkeybot-3.9.0/cli/src/monkeybot_cli/compat.py +26 -0
  22. monkeybot-3.9.0/cli/src/monkeybot_cli/extras_catalog.py +99 -0
  23. monkeybot-3.9.0/cli/src/monkeybot_cli/gateway_health.py +69 -0
  24. monkeybot-3.9.0/cli/src/monkeybot_cli/main.py +43 -0
  25. monkeybot-3.9.0/cli/src/monkeybot_cli/opensandbox_lifecycle.py +325 -0
  26. monkeybot-3.9.0/cli/src/monkeybot_cli/output.py +112 -0
  27. monkeybot-3.9.0/cli/src/monkeybot_cli/providers.py +146 -0
  28. monkeybot-3.9.0/cli/src/monkeybot_cli/realtime/push_to_talk.py +127 -0
  29. monkeybot-3.9.0/cli/src/monkeybot_cli/realtime/session_controller.py +499 -0
  30. monkeybot-3.9.0/cli/src/monkeybot_cli/scaffold_defaults/env.example +46 -0
  31. monkeybot-3.9.0/cli/src/monkeybot_cli/scaffold_defaults/monkeybot.example.yaml +262 -0
  32. monkeybot-3.9.0/cli/tests/test_chat_continue.py +196 -0
  33. monkeybot-3.9.0/cli/tests/test_chat_errors.py +227 -0
  34. monkeybot-3.9.0/cli/tests/test_chat_local_shell.py +160 -0
  35. monkeybot-3.9.0/cli/tests/test_chat_renderer_parity.py +24 -0
  36. monkeybot-3.9.0/cli/tests/test_chat_session.py +450 -0
  37. monkeybot-3.9.0/cli/tests/test_chat_tui.py +2389 -0
  38. monkeybot-3.9.0/cli/tests/test_cli.py +325 -0
  39. monkeybot-3.9.0/cli/tests/test_config_resolve.py +34 -0
  40. monkeybot-3.9.0/cli/tests/test_doctor.py +269 -0
  41. monkeybot-3.9.0/cli/tests/test_realtime_session_controller.py +317 -0
  42. monkeybot-3.9.0/cli/tests/test_run_cmd.py +281 -0
  43. monkeybot-3.9.0/cli/tests/test_runtime_python.py +1078 -0
  44. monkeybot-3.9.0/cli/tests/test_terminal_markdown.py +43 -0
  45. monkeybot-3.9.0/cli/tests/test_trace_cmd.py +85 -0
  46. monkeybot-3.9.0/cli/uv.lock +1767 -0
  47. monkeybot-3.9.0/docs/features.md +832 -0
  48. monkeybot-3.9.0/docs/migrations/history-row-id.sql +10 -0
  49. monkeybot-3.9.0/docs/migrations/session-branches.sql +23 -0
  50. monkeybot-3.9.0/docs/verifier-agent-design.md +831 -0
  51. monkeybot-3.9.0/evals/TEST_COVERAGE.md +67 -0
  52. monkeybot-3.9.0/evals/diff.py +130 -0
  53. monkeybot-3.9.0/evals/report.py +374 -0
  54. monkeybot-3.9.0/evals/scenario_loader.py +93 -0
  55. monkeybot-3.9.0/evals/scorer.py +382 -0
  56. monkeybot-3.9.0/evals/test_assertions.py +264 -0
  57. monkeybot-3.9.0/evals/test_diff.py +88 -0
  58. monkeybot-3.9.0/evals/test_judge.py +82 -0
  59. monkeybot-3.9.0/evals/test_report.py +194 -0
  60. monkeybot-3.9.0/examples/agentcore/runtime_app.py +106 -0
  61. monkeybot-3.9.0/examples/cloud-functions/main.py +73 -0
  62. monkeybot-3.9.0/integrations/browser-mcp/scripts/perf_bench.py +298 -0
  63. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/actions.py +639 -0
  64. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/app.py +193 -0
  65. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/backend.py +261 -0
  66. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/chat_context.py +373 -0
  67. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/dom_indexing.py +613 -0
  68. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/in_app_cdp.py +281 -0
  69. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/observe.py +435 -0
  70. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/playbooks.py +320 -0
  71. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/playwright_helpers.py +427 -0
  72. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/results.py +34 -0
  73. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/tab_ops.py +233 -0
  74. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/tabs.py +619 -0
  75. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/tools/batch.py +61 -0
  76. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/tools/interact.py +293 -0
  77. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/tools/navigate.py +62 -0
  78. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/tools/playbook.py +131 -0
  79. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/tools/read.py +173 -0
  80. monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/tools/tab_control.py +260 -0
  81. monkeybot-3.9.0/integrations/browser-mcp/tests/integration/test_act_observe.py +48 -0
  82. monkeybot-3.9.0/integrations/browser-mcp/tests/integration/test_driver_persist.py +52 -0
  83. monkeybot-3.9.0/integrations/browser-mcp/tests/integration/test_intent_tools.py +132 -0
  84. monkeybot-3.9.0/integrations/browser-mcp/tests/integration/test_observation.py +85 -0
  85. monkeybot-3.9.0/integrations/browser-mcp/tests/integration/test_wait_for.py +55 -0
  86. monkeybot-3.9.0/integrations/browser-mcp/tests/test_act.py +233 -0
  87. monkeybot-3.9.0/integrations/browser-mcp/tests/test_agentcore.py +366 -0
  88. monkeybot-3.9.0/integrations/browser-mcp/tests/test_chat_isolation.py +375 -0
  89. monkeybot-3.9.0/integrations/browser-mcp/tests/test_chat_scope.py +289 -0
  90. monkeybot-3.9.0/integrations/browser-mcp/tests/test_fill_form.py +112 -0
  91. monkeybot-3.9.0/integrations/browser-mcp/tests/test_in_app_cdp.py +1206 -0
  92. monkeybot-3.9.0/integrations/browser-mcp/tests/test_indexed_tools.py +324 -0
  93. monkeybot-3.9.0/integrations/browser-mcp/tests/test_observe_after.py +332 -0
  94. monkeybot-3.9.0/integrations/browser-mcp/tests/test_perf.py +232 -0
  95. monkeybot-3.9.0/integrations/browser-mcp/tests/test_playbook_flows.py +295 -0
  96. monkeybot-3.9.0/integrations/browser-mcp/tests/test_playbooks.py +118 -0
  97. monkeybot-3.9.0/integrations/browser-mcp/tests/test_screenshots.py +121 -0
  98. monkeybot-3.9.0/integrations/browser-mcp/tests/test_tabs.py +414 -0
  99. monkeybot-3.9.0/integrations/browser-mcp/uv.lock +1212 -0
  100. monkeybot-3.9.0/pyproject.toml +135 -0
  101. monkeybot-3.9.0/scripts/ci-local.sh +76 -0
  102. monkeybot-3.9.0/scripts/release.py +244 -0
  103. monkeybot-3.9.0/src/monkeybot/core/attachments/catalog.py +75 -0
  104. monkeybot-3.9.0/src/monkeybot/core/attachments/config.py +81 -0
  105. monkeybot-3.9.0/src/monkeybot/core/attachments/freeze.py +165 -0
  106. monkeybot-3.9.0/src/monkeybot/core/attachments/resolve.py +155 -0
  107. monkeybot-3.9.0/src/monkeybot/core/attachments/store.py +207 -0
  108. monkeybot-3.9.0/src/monkeybot/core/attachments/text.py +81 -0
  109. monkeybot-3.9.0/src/monkeybot/core/bootstrap.py +293 -0
  110. monkeybot-3.9.0/src/monkeybot/core/config/runtime_env.py +548 -0
  111. monkeybot-3.9.0/src/monkeybot/core/config/settings.py +899 -0
  112. monkeybot-3.9.0/src/monkeybot/core/config/snapshot.py +1025 -0
  113. monkeybot-3.9.0/src/monkeybot/core/config/validation.py +271 -0
  114. monkeybot-3.9.0/src/monkeybot/core/config/yaml_loader.py +44 -0
  115. monkeybot-3.9.0/src/monkeybot/core/context/__init__.py +1134 -0
  116. monkeybot-3.9.0/src/monkeybot/core/context/epoch.py +241 -0
  117. monkeybot-3.9.0/src/monkeybot/core/context/secret_egress.py +445 -0
  118. monkeybot-3.9.0/src/monkeybot/core/context/tool_result_ingress.py +310 -0
  119. monkeybot-3.9.0/src/monkeybot/core/context/tool_shapers.py +369 -0
  120. monkeybot-3.9.0/src/monkeybot/core/hooks/__init__.py +261 -0
  121. monkeybot-3.9.0/src/monkeybot/core/hooks/evidence_guard.py +271 -0
  122. monkeybot-3.9.0/src/monkeybot/core/llm/provider.py +319 -0
  123. monkeybot-3.9.0/src/monkeybot/core/memory/hook.py +75 -0
  124. monkeybot-3.9.0/src/monkeybot/core/memory/migrate_layout.py +437 -0
  125. monkeybot-3.9.0/src/monkeybot/core/memory/subsystem.py +355 -0
  126. monkeybot-3.9.0/src/monkeybot/core/messages/tool_integrity.py +281 -0
  127. monkeybot-3.9.0/src/monkeybot/core/messages/transform_context.py +111 -0
  128. monkeybot-3.9.0/src/monkeybot/core/persistence/__init__.py +17 -0
  129. monkeybot-3.9.0/src/monkeybot/core/persistence/backends.py +319 -0
  130. monkeybot-3.9.0/src/monkeybot/core/persistence/branches.py +265 -0
  131. monkeybot-3.9.0/src/monkeybot/core/persistence/firestore.py +1736 -0
  132. monkeybot-3.9.0/src/monkeybot/core/persistence/goal_ledger.py +555 -0
  133. monkeybot-3.9.0/src/monkeybot/core/persistence/history.py +438 -0
  134. monkeybot-3.9.0/src/monkeybot/core/persistence/postgres.py +2015 -0
  135. monkeybot-3.9.0/src/monkeybot/core/persistence/row_ids.py +44 -0
  136. monkeybot-3.9.0/src/monkeybot/core/persistence/sqlite.py +667 -0
  137. monkeybot-3.9.0/src/monkeybot/core/persistence/sqlite_backend.py +128 -0
  138. monkeybot-3.9.0/src/monkeybot/core/persistence/thread_summary.py +457 -0
  139. monkeybot-3.9.0/src/monkeybot/core/persistence/transcript.py +802 -0
  140. monkeybot-3.9.0/src/monkeybot/core/persistence/transcript_reader.py +955 -0
  141. monkeybot-3.9.0/src/monkeybot/core/prompts/harness_prompt.py +208 -0
  142. monkeybot-3.9.0/src/monkeybot/core/runtime/context_budget.py +239 -0
  143. monkeybot-3.9.0/src/monkeybot/core/runtime/doom_loop.py +118 -0
  144. monkeybot-3.9.0/src/monkeybot/core/runtime/events.py +1451 -0
  145. monkeybot-3.9.0/src/monkeybot/core/runtime/history_compaction.py +554 -0
  146. monkeybot-3.9.0/src/monkeybot/core/runtime/history_rewrite.py +686 -0
  147. monkeybot-3.9.0/src/monkeybot/core/runtime/loop_hooks.py +190 -0
  148. monkeybot-3.9.0/src/monkeybot/core/runtime/loop_messages.py +265 -0
  149. monkeybot-3.9.0/src/monkeybot/core/runtime/loop_usage.py +176 -0
  150. monkeybot-3.9.0/src/monkeybot/core/runtime/realtime_loop.py +770 -0
  151. monkeybot-3.9.0/src/monkeybot/core/runtime/tool_dispatch.py +1187 -0
  152. monkeybot-3.9.0/src/monkeybot/core/runtime/turn_loop.py +1996 -0
  153. monkeybot-3.9.0/src/monkeybot/core/runtime/utterance_buffer.py +177 -0
  154. monkeybot-3.9.0/src/monkeybot/core/subagents/subagent_worker.py +539 -0
  155. monkeybot-3.9.0/src/monkeybot/core/subagents/worker_pool.py +570 -0
  156. monkeybot-3.9.0/src/monkeybot/core/tools/core_tool_executor.py +2724 -0
  157. monkeybot-3.9.0/src/monkeybot/core/tools/fs_isolation.py +962 -0
  158. monkeybot-3.9.0/src/monkeybot/core/tools/patch.py +559 -0
  159. monkeybot-3.9.0/src/monkeybot/core/tools/permission.py +349 -0
  160. monkeybot-3.9.0/src/monkeybot/core/tools/sandbox_executor.py +799 -0
  161. monkeybot-3.9.0/src/monkeybot/core/tools/spill_inventory.py +618 -0
  162. monkeybot-3.9.0/src/monkeybot/core/tools/tool_kind.py +40 -0
  163. monkeybot-3.9.0/src/monkeybot/core/types/content_blocks.py +632 -0
  164. monkeybot-3.9.0/src/monkeybot/core/types/interfaces.py +156 -0
  165. monkeybot-3.9.0/src/monkeybot/core/verifier/ledger.py +574 -0
  166. monkeybot-3.9.0/src/monkeybot/core/verifier/match.py +94 -0
  167. monkeybot-3.9.0/src/monkeybot/core/verifier/rewrite_effects.py +38 -0
  168. monkeybot-3.9.0/src/monkeybot/core/verifier/tracker.py +381 -0
  169. monkeybot-3.9.0/src/monkeybot/core/workspace/gcs.py +146 -0
  170. monkeybot-3.9.0/src/monkeybot/core/workspace/s3.py +171 -0
  171. monkeybot-3.9.0/src/monkeybot/gateway/bootstrap.py +69 -0
  172. monkeybot-3.9.0/src/monkeybot/gateway/realtime/__init__.py +45 -0
  173. monkeybot-3.9.0/src/monkeybot/gateway/realtime/manager.py +136 -0
  174. monkeybot-3.9.0/src/monkeybot/gateway/realtime/metrics.py +147 -0
  175. monkeybot-3.9.0/src/monkeybot/gateway/realtime/routes.py +1025 -0
  176. monkeybot-3.9.0/src/monkeybot/gateway/realtime/wire.py +410 -0
  177. monkeybot-3.9.0/src/monkeybot/gateway/sse/app.py +1507 -0
  178. monkeybot-3.9.0/src/monkeybot/gateway/sse/history_routes.py +294 -0
  179. monkeybot-3.9.0/src/monkeybot/gateway/sse/models.py +291 -0
  180. monkeybot-3.9.0/src/monkeybot/gateway/sse/routes.py +1450 -0
  181. monkeybot-3.9.0/src/monkeybot/gateway/sse/sse.py +44 -0
  182. monkeybot-3.9.0/src/monkeybot/observability/sqlite_exporter.py +737 -0
  183. monkeybot-3.9.0/src/monkeybot/providers/__init__.py +23 -0
  184. monkeybot-3.9.0/src/monkeybot/providers/_openai_compat.py +1534 -0
  185. monkeybot-3.9.0/src/monkeybot/providers/_sdk_client.py +165 -0
  186. monkeybot-3.9.0/src/monkeybot/providers/_utils.py +808 -0
  187. monkeybot-3.9.0/src/monkeybot/providers/bedrock.py +248 -0
  188. monkeybot-3.9.0/src/monkeybot/providers/claude.py +153 -0
  189. monkeybot-3.9.0/src/monkeybot/providers/fireworks.py +126 -0
  190. monkeybot-3.9.0/src/monkeybot/providers/gemini.py +989 -0
  191. monkeybot-3.9.0/src/monkeybot/providers/huggingface.py +148 -0
  192. monkeybot-3.9.0/src/monkeybot/providers/nvidia.py +123 -0
  193. monkeybot-3.9.0/src/monkeybot/providers/ollama.py +342 -0
  194. monkeybot-3.9.0/src/monkeybot/providers/openai.py +179 -0
  195. monkeybot-3.9.0/src/monkeybot/providers/openrouter.py +125 -0
  196. monkeybot-3.9.0/src/monkeybot/providers/rejected_sampling.py +140 -0
  197. monkeybot-3.9.0/src/monkeybot/providers/sampling.py +92 -0
  198. monkeybot-3.9.0/src/monkeybot/providers/vertex_claude.py +178 -0
  199. monkeybot-3.9.0/src/monkeybot/scheduler/http_invoker.py +59 -0
  200. monkeybot-3.9.0/src/monkeybot/todo_list/store.py +262 -0
  201. monkeybot-3.9.0/src/monkeybot/todo_list/tool.py +130 -0
  202. monkeybot-3.9.0/src/monkeybot/web_search/backends/duckduckgo.py +29 -0
  203. monkeybot-3.9.0/src/monkeybot/web_search/backends/firecrawl.py +42 -0
  204. monkeybot-3.9.0/src/monkeybot/web_search/backends/tavily.py +44 -0
  205. monkeybot-3.9.0/tests/conftest.py +101 -0
  206. monkeybot-3.9.0/tests/core/memory/test_mempalace.py +489 -0
  207. monkeybot-3.9.0/tests/core/memory/test_review_fixes.py +1235 -0
  208. monkeybot-3.9.0/tests/core/test_background_jobs.py +591 -0
  209. monkeybot-3.9.0/tests/core/test_bootstrap.py +396 -0
  210. monkeybot-3.9.0/tests/core/test_branch_store_backends.py +185 -0
  211. monkeybot-3.9.0/tests/core/test_config_extensions.py +908 -0
  212. monkeybot-3.9.0/tests/core/test_context.py +758 -0
  213. monkeybot-3.9.0/tests/core/test_core_tool_executor.py +5072 -0
  214. monkeybot-3.9.0/tests/core/test_doom_loop.py +515 -0
  215. monkeybot-3.9.0/tests/core/test_durable_events.py +94 -0
  216. monkeybot-3.9.0/tests/core/test_empty_completion.py +180 -0
  217. monkeybot-3.9.0/tests/core/test_events.py +801 -0
  218. monkeybot-3.9.0/tests/core/test_evidence_guard.py +392 -0
  219. monkeybot-3.9.0/tests/core/test_firestore_history.py +361 -0
  220. monkeybot-3.9.0/tests/core/test_fs_isolation.py +997 -0
  221. monkeybot-3.9.0/tests/core/test_goals.py +494 -0
  222. monkeybot-3.9.0/tests/core/test_grant_store.py +185 -0
  223. monkeybot-3.9.0/tests/core/test_history.py +436 -0
  224. monkeybot-3.9.0/tests/core/test_history_branches.py +652 -0
  225. monkeybot-3.9.0/tests/core/test_history_compaction_split.py +265 -0
  226. monkeybot-3.9.0/tests/core/test_history_row_ids.py +444 -0
  227. monkeybot-3.9.0/tests/core/test_hooks.py +219 -0
  228. monkeybot-3.9.0/tests/core/test_image_preview.py +200 -0
  229. monkeybot-3.9.0/tests/core/test_inspector.py +283 -0
  230. monkeybot-3.9.0/tests/core/test_loop.py +3582 -0
  231. monkeybot-3.9.0/tests/core/test_loop_hooks.py +767 -0
  232. monkeybot-3.9.0/tests/core/test_loop_observability.py +204 -0
  233. monkeybot-3.9.0/tests/core/test_loop_transcript.py +288 -0
  234. monkeybot-3.9.0/tests/core/test_memory_layout_migrate.py +201 -0
  235. monkeybot-3.9.0/tests/core/test_message_pipeline.py +138 -0
  236. monkeybot-3.9.0/tests/core/test_patch.py +399 -0
  237. monkeybot-3.9.0/tests/core/test_path_grant_inspector.py +224 -0
  238. monkeybot-3.9.0/tests/core/test_permission.py +259 -0
  239. monkeybot-3.9.0/tests/core/test_progress_publish.py +253 -0
  240. monkeybot-3.9.0/tests/core/test_provider_contract.py +259 -0
  241. monkeybot-3.9.0/tests/core/test_provider_stream_mapper.py +88 -0
  242. monkeybot-3.9.0/tests/core/test_realtime_loop.py +745 -0
  243. monkeybot-3.9.0/tests/core/test_runtime_env.py +550 -0
  244. monkeybot-3.9.0/tests/core/test_secret_egress.py +462 -0
  245. monkeybot-3.9.0/tests/core/test_session_branches_migration.py +230 -0
  246. monkeybot-3.9.0/tests/core/test_spill_dynamic.py +399 -0
  247. monkeybot-3.9.0/tests/core/test_spill_inventory.py +244 -0
  248. monkeybot-3.9.0/tests/core/test_storage_backends.py +1285 -0
  249. monkeybot-3.9.0/tests/core/test_subagent_proto.py +490 -0
  250. monkeybot-3.9.0/tests/core/test_subagent_trace_propagation.py +659 -0
  251. monkeybot-3.9.0/tests/core/test_subagent_transcript.py +81 -0
  252. monkeybot-3.9.0/tests/core/test_terminal.py +1166 -0
  253. monkeybot-3.9.0/tests/core/test_thread_summary_wire.py +629 -0
  254. monkeybot-3.9.0/tests/core/test_transcript.py +775 -0
  255. monkeybot-3.9.0/tests/core/test_transcript_reader.py +463 -0
  256. monkeybot-3.9.0/tests/core/test_truncated_tool_batch.py +201 -0
  257. monkeybot-3.9.0/tests/core/test_turn_session_id.py +150 -0
  258. monkeybot-3.9.0/tests/core/test_usage.py +372 -0
  259. monkeybot-3.9.0/tests/core/test_utterance_buffer.py +133 -0
  260. monkeybot-3.9.0/tests/core/test_verifier_rewrite_effects.py +358 -0
  261. monkeybot-3.9.0/tests/core/test_worker_pool.py +791 -0
  262. monkeybot-3.9.0/tests/evals/scenario_runner.py +191 -0
  263. monkeybot-3.9.0/tests/evals/test_agent_behavior.py +37 -0
  264. monkeybot-3.9.0/tests/gateway/realtime/test_app.py +44 -0
  265. monkeybot-3.9.0/tests/gateway/realtime/test_session.py +209 -0
  266. monkeybot-3.9.0/tests/gateway/realtime/test_wire.py +274 -0
  267. monkeybot-3.9.0/tests/gateway/sse/test_attachments.py +251 -0
  268. monkeybot-3.9.0/tests/gateway/sse/test_create_session_model.py +370 -0
  269. monkeybot-3.9.0/tests/gateway/sse/test_gateway_runtime.py +856 -0
  270. monkeybot-3.9.0/tests/gateway/sse/test_history_routes.py +359 -0
  271. monkeybot-3.9.0/tests/gateway/sse/test_routes.py +733 -0
  272. monkeybot-3.9.0/tests/gateway/sse/test_session_bus.py +242 -0
  273. monkeybot-3.9.0/tests/gateway/sse/test_start_turn_setup_failure.py +177 -0
  274. monkeybot-3.9.0/tests/gateway/sse/test_transcript_wiring.py +208 -0
  275. monkeybot-3.9.0/tests/gateway/test_otel_lifespan.py +108 -0
  276. monkeybot-3.9.0/tests/gateway/test_resolve_provider.py +118 -0
  277. monkeybot-3.9.0/tests/gateway/test_sdk_client_shutdown.py +78 -0
  278. monkeybot-3.9.0/tests/integration/test_prompt_caching_integration.py +140 -0
  279. monkeybot-3.9.0/tests/observability/test_init.py +152 -0
  280. monkeybot-3.9.0/tests/observability/test_loop_hook_spans.py +76 -0
  281. monkeybot-3.9.0/tests/observability/test_span_contract.py +238 -0
  282. monkeybot-3.9.0/tests/observability/test_spans.py +192 -0
  283. monkeybot-3.9.0/tests/observability/test_sqlite_exporter.py +705 -0
  284. monkeybot-3.9.0/tests/providers/conftest.py +119 -0
  285. monkeybot-3.9.0/tests/providers/test_anthropic_cache.py +745 -0
  286. monkeybot-3.9.0/tests/providers/test_bedrock_converse.py +613 -0
  287. monkeybot-3.9.0/tests/providers/test_fireworks.py +27 -0
  288. monkeybot-3.9.0/tests/providers/test_gemini_live.py +268 -0
  289. monkeybot-3.9.0/tests/providers/test_gemini_usage.py +615 -0
  290. monkeybot-3.9.0/tests/providers/test_huggingface.py +62 -0
  291. monkeybot-3.9.0/tests/providers/test_ollama.py +372 -0
  292. monkeybot-3.9.0/tests/providers/test_openai_byte_budget.py +419 -0
  293. monkeybot-3.9.0/tests/providers/test_openai_compat_usage.py +1254 -0
  294. monkeybot-3.9.0/tests/providers/test_openai_history.py +489 -0
  295. monkeybot-3.9.0/tests/providers/test_sampling.py +490 -0
  296. monkeybot-3.9.0/tests/providers/test_sdk_client_reuse.py +743 -0
  297. monkeybot-3.9.0/tests/providers/test_sonnet5_sampling.py +568 -0
  298. monkeybot-3.9.0/tests/providers/test_source_grep_gates.py +68 -0
  299. monkeybot-3.9.0/tests/test_packaging_config.py +85 -0
  300. monkeybot-3.9.0/tests/test_release_script.py +192 -0
  301. monkeybot-3.9.0/tests/todo_list/test_todo_list.py +306 -0
  302. monkeybot-3.9.0/tests/web_search/test_web_search.py +298 -0
  303. monkeybot-3.9.0/uv.lock +5362 -0
  304. monkeybot-3.7.0/.github/workflows/ci.yml +0 -47
  305. monkeybot-3.7.0/.pre-commit-config.yaml +0 -20
  306. monkeybot-3.7.0/BACKLOG.md +0 -62
  307. monkeybot-3.7.0/CHANGELOG.md +0 -472
  308. monkeybot-3.7.0/CONTRIBUTING.md +0 -42
  309. monkeybot-3.7.0/PKG-INFO +0 -204
  310. monkeybot-3.7.0/cli/pyproject.toml +0 -44
  311. monkeybot-3.7.0/cli/skills/monkeybot/references/config-sections.md +0 -167
  312. monkeybot-3.7.0/cli/src/monkeybot_cli/chat_session.py +0 -973
  313. monkeybot-3.7.0/cli/src/monkeybot_cli/chat_tool_display.py +0 -240
  314. monkeybot-3.7.0/cli/src/monkeybot_cli/chat_tui.py +0 -1917
  315. monkeybot-3.7.0/cli/src/monkeybot_cli/commands/chat.py +0 -888
  316. monkeybot-3.7.0/cli/src/monkeybot_cli/commands/doctor.py +0 -592
  317. monkeybot-3.7.0/cli/src/monkeybot_cli/commands/loop.py +0 -207
  318. monkeybot-3.7.0/cli/src/monkeybot_cli/commands/new.py +0 -207
  319. monkeybot-3.7.0/cli/src/monkeybot_cli/commands/validate.py +0 -383
  320. monkeybot-3.7.0/cli/src/monkeybot_cli/compat.py +0 -30
  321. monkeybot-3.7.0/cli/src/monkeybot_cli/extras_catalog.py +0 -98
  322. monkeybot-3.7.0/cli/src/monkeybot_cli/gateway_health.py +0 -71
  323. monkeybot-3.7.0/cli/src/monkeybot_cli/main.py +0 -42
  324. monkeybot-3.7.0/cli/src/monkeybot_cli/opensandbox_lifecycle.py +0 -324
  325. monkeybot-3.7.0/cli/src/monkeybot_cli/output.py +0 -110
  326. monkeybot-3.7.0/cli/src/monkeybot_cli/providers.py +0 -146
  327. monkeybot-3.7.0/cli/src/monkeybot_cli/realtime/push_to_talk.py +0 -128
  328. monkeybot-3.7.0/cli/src/monkeybot_cli/realtime/session_controller.py +0 -501
  329. monkeybot-3.7.0/cli/src/monkeybot_cli/scaffold_defaults/env.example +0 -43
  330. monkeybot-3.7.0/cli/src/monkeybot_cli/scaffold_defaults/monkeybot.example.yaml +0 -280
  331. monkeybot-3.7.0/cli/tests/test_chat_continue.py +0 -198
  332. monkeybot-3.7.0/cli/tests/test_chat_errors.py +0 -219
  333. monkeybot-3.7.0/cli/tests/test_chat_local_shell.py +0 -158
  334. monkeybot-3.7.0/cli/tests/test_chat_renderer_parity.py +0 -26
  335. monkeybot-3.7.0/cli/tests/test_chat_session.py +0 -452
  336. monkeybot-3.7.0/cli/tests/test_chat_tui.py +0 -2383
  337. monkeybot-3.7.0/cli/tests/test_cli.py +0 -319
  338. monkeybot-3.7.0/cli/tests/test_config_resolve.py +0 -32
  339. monkeybot-3.7.0/cli/tests/test_doctor.py +0 -217
  340. monkeybot-3.7.0/cli/tests/test_realtime_session_controller.py +0 -319
  341. monkeybot-3.7.0/cli/tests/test_run_cmd.py +0 -277
  342. monkeybot-3.7.0/cli/tests/test_runtime_python.py +0 -1076
  343. monkeybot-3.7.0/cli/tests/test_terminal_markdown.py +0 -47
  344. monkeybot-3.7.0/cli/uv.lock +0 -1846
  345. monkeybot-3.7.0/docs/features.md +0 -834
  346. monkeybot-3.7.0/docs/knowledge-layer-fixes.md +0 -274
  347. monkeybot-3.7.0/docs/memory-graph-split-plan.md +0 -231
  348. monkeybot-3.7.0/docs/verifier-agent-design.md +0 -831
  349. monkeybot-3.7.0/docs/workspace-index-design.md +0 -996
  350. monkeybot-3.7.0/evals/TEST_COVERAGE.md +0 -68
  351. monkeybot-3.7.0/evals/diff.py +0 -123
  352. monkeybot-3.7.0/evals/report.py +0 -363
  353. monkeybot-3.7.0/evals/scenario_loader.py +0 -87
  354. monkeybot-3.7.0/evals/scorer.py +0 -366
  355. monkeybot-3.7.0/evals/test_assertions.py +0 -249
  356. monkeybot-3.7.0/evals/test_diff.py +0 -86
  357. monkeybot-3.7.0/evals/test_judge.py +0 -79
  358. monkeybot-3.7.0/evals/test_report.py +0 -156
  359. monkeybot-3.7.0/examples/agentcore/runtime_app.py +0 -104
  360. monkeybot-3.7.0/examples/cloud-functions/main.py +0 -77
  361. monkeybot-3.7.0/integrations/browser-mcp/scripts/perf_bench.py +0 -304
  362. monkeybot-3.7.0/integrations/browser-mcp/src/browser_mcp/actions.py +0 -645
  363. monkeybot-3.7.0/integrations/browser-mcp/src/browser_mcp/app.py +0 -190
  364. monkeybot-3.7.0/integrations/browser-mcp/src/browser_mcp/backend.py +0 -257
  365. monkeybot-3.7.0/integrations/browser-mcp/src/browser_mcp/chat_context.py +0 -375
  366. monkeybot-3.7.0/integrations/browser-mcp/src/browser_mcp/dom_indexing.py +0 -616
  367. monkeybot-3.7.0/integrations/browser-mcp/src/browser_mcp/in_app_cdp.py +0 -283
  368. monkeybot-3.7.0/integrations/browser-mcp/src/browser_mcp/observe.py +0 -441
  369. monkeybot-3.7.0/integrations/browser-mcp/src/browser_mcp/playbooks.py +0 -321
  370. monkeybot-3.7.0/integrations/browser-mcp/src/browser_mcp/playwright_helpers.py +0 -418
  371. monkeybot-3.7.0/integrations/browser-mcp/src/browser_mcp/results.py +0 -36
  372. monkeybot-3.7.0/integrations/browser-mcp/src/browser_mcp/tab_ops.py +0 -235
  373. monkeybot-3.7.0/integrations/browser-mcp/src/browser_mcp/tabs.py +0 -623
  374. monkeybot-3.7.0/integrations/browser-mcp/src/browser_mcp/tools/batch.py +0 -62
  375. monkeybot-3.7.0/integrations/browser-mcp/src/browser_mcp/tools/interact.py +0 -309
  376. monkeybot-3.7.0/integrations/browser-mcp/src/browser_mcp/tools/navigate.py +0 -61
  377. monkeybot-3.7.0/integrations/browser-mcp/src/browser_mcp/tools/playbook.py +0 -126
  378. monkeybot-3.7.0/integrations/browser-mcp/src/browser_mcp/tools/read.py +0 -169
  379. monkeybot-3.7.0/integrations/browser-mcp/src/browser_mcp/tools/tab_control.py +0 -256
  380. monkeybot-3.7.0/integrations/browser-mcp/tests/integration/test_act_observe.py +0 -53
  381. monkeybot-3.7.0/integrations/browser-mcp/tests/integration/test_driver_persist.py +0 -54
  382. monkeybot-3.7.0/integrations/browser-mcp/tests/integration/test_intent_tools.py +0 -134
  383. monkeybot-3.7.0/integrations/browser-mcp/tests/integration/test_observation.py +0 -97
  384. monkeybot-3.7.0/integrations/browser-mcp/tests/integration/test_wait_for.py +0 -57
  385. monkeybot-3.7.0/integrations/browser-mcp/tests/test_act.py +0 -230
  386. monkeybot-3.7.0/integrations/browser-mcp/tests/test_agentcore.py +0 -360
  387. monkeybot-3.7.0/integrations/browser-mcp/tests/test_chat_isolation.py +0 -369
  388. monkeybot-3.7.0/integrations/browser-mcp/tests/test_chat_scope.py +0 -293
  389. monkeybot-3.7.0/integrations/browser-mcp/tests/test_fill_form.py +0 -116
  390. monkeybot-3.7.0/integrations/browser-mcp/tests/test_in_app_cdp.py +0 -1205
  391. monkeybot-3.7.0/integrations/browser-mcp/tests/test_indexed_tools.py +0 -326
  392. monkeybot-3.7.0/integrations/browser-mcp/tests/test_observe_after.py +0 -332
  393. monkeybot-3.7.0/integrations/browser-mcp/tests/test_perf.py +0 -230
  394. monkeybot-3.7.0/integrations/browser-mcp/tests/test_playbook_flows.py +0 -285
  395. monkeybot-3.7.0/integrations/browser-mcp/tests/test_playbooks.py +0 -110
  396. monkeybot-3.7.0/integrations/browser-mcp/tests/test_screenshots.py +0 -117
  397. monkeybot-3.7.0/integrations/browser-mcp/tests/test_tabs.py +0 -416
  398. monkeybot-3.7.0/integrations/browser-mcp/uv.lock +0 -1212
  399. monkeybot-3.7.0/pyproject.toml +0 -143
  400. monkeybot-3.7.0/scripts/release.py +0 -238
  401. monkeybot-3.7.0/src/monkeybot/core/attachments/catalog.py +0 -63
  402. monkeybot-3.7.0/src/monkeybot/core/attachments/config.py +0 -62
  403. monkeybot-3.7.0/src/monkeybot/core/attachments/freeze.py +0 -170
  404. monkeybot-3.7.0/src/monkeybot/core/attachments/resolve.py +0 -156
  405. monkeybot-3.7.0/src/monkeybot/core/attachments/store.py +0 -188
  406. monkeybot-3.7.0/src/monkeybot/core/attachments/text.py +0 -84
  407. monkeybot-3.7.0/src/monkeybot/core/bootstrap.py +0 -311
  408. monkeybot-3.7.0/src/monkeybot/core/config/runtime_env.py +0 -537
  409. monkeybot-3.7.0/src/monkeybot/core/config/settings.py +0 -873
  410. monkeybot-3.7.0/src/monkeybot/core/config/snapshot.py +0 -1023
  411. monkeybot-3.7.0/src/monkeybot/core/config/validation.py +0 -270
  412. monkeybot-3.7.0/src/monkeybot/core/config/yaml_loader.py +0 -39
  413. monkeybot-3.7.0/src/monkeybot/core/context/__init__.py +0 -1159
  414. monkeybot-3.7.0/src/monkeybot/core/context/epoch.py +0 -243
  415. monkeybot-3.7.0/src/monkeybot/core/context/secret_egress.py +0 -443
  416. monkeybot-3.7.0/src/monkeybot/core/context/tool_result_ingress.py +0 -315
  417. monkeybot-3.7.0/src/monkeybot/core/context/tool_shapers.py +0 -366
  418. monkeybot-3.7.0/src/monkeybot/core/hooks/__init__.py +0 -261
  419. monkeybot-3.7.0/src/monkeybot/core/knowledge/__init__.py +0 -18
  420. monkeybot-3.7.0/src/monkeybot/core/knowledge/captions.py +0 -202
  421. monkeybot-3.7.0/src/monkeybot/core/knowledge/chunking.py +0 -880
  422. monkeybot-3.7.0/src/monkeybot/core/knowledge/config.py +0 -274
  423. monkeybot-3.7.0/src/monkeybot/core/knowledge/embeddings/__init__.py +0 -25
  424. monkeybot-3.7.0/src/monkeybot/core/knowledge/embeddings/base.py +0 -248
  425. monkeybot-3.7.0/src/monkeybot/core/knowledge/embeddings/factory.py +0 -206
  426. monkeybot-3.7.0/src/monkeybot/core/knowledge/embeddings/gemini.py +0 -149
  427. monkeybot-3.7.0/src/monkeybot/core/knowledge/embeddings/nvidia.py +0 -69
  428. monkeybot-3.7.0/src/monkeybot/core/knowledge/embeddings/openai_compat.py +0 -116
  429. monkeybot-3.7.0/src/monkeybot/core/knowledge/embeddings/sanitize.py +0 -27
  430. monkeybot-3.7.0/src/monkeybot/core/knowledge/evidence_guard.py +0 -275
  431. monkeybot-3.7.0/src/monkeybot/core/knowledge/extractors.py +0 -364
  432. monkeybot-3.7.0/src/monkeybot/core/knowledge/fusion.py +0 -419
  433. monkeybot-3.7.0/src/monkeybot/core/knowledge/hook.py +0 -417
  434. monkeybot-3.7.0/src/monkeybot/core/knowledge/indexer.py +0 -680
  435. monkeybot-3.7.0/src/monkeybot/core/knowledge/links.py +0 -175
  436. monkeybot-3.7.0/src/monkeybot/core/knowledge/salience.py +0 -207
  437. monkeybot-3.7.0/src/monkeybot/core/knowledge/sqlite_index.py +0 -767
  438. monkeybot-3.7.0/src/monkeybot/core/knowledge/subsystem.py +0 -298
  439. monkeybot-3.7.0/src/monkeybot/core/knowledge/tool.py +0 -29
  440. monkeybot-3.7.0/src/monkeybot/core/knowledge/types.py +0 -127
  441. monkeybot-3.7.0/src/monkeybot/core/llm/provider.py +0 -302
  442. monkeybot-3.7.0/src/monkeybot/core/memory/hook.py +0 -77
  443. monkeybot-3.7.0/src/monkeybot/core/memory/migrate_layout.py +0 -439
  444. monkeybot-3.7.0/src/monkeybot/core/memory/subsystem.py +0 -357
  445. monkeybot-3.7.0/src/monkeybot/core/messages/tool_integrity.py +0 -280
  446. monkeybot-3.7.0/src/monkeybot/core/messages/transform_context.py +0 -121
  447. monkeybot-3.7.0/src/monkeybot/core/persistence/__init__.py +0 -25
  448. monkeybot-3.7.0/src/monkeybot/core/persistence/backends.py +0 -308
  449. monkeybot-3.7.0/src/monkeybot/core/persistence/firestore.py +0 -1481
  450. monkeybot-3.7.0/src/monkeybot/core/persistence/goal_ledger.py +0 -447
  451. monkeybot-3.7.0/src/monkeybot/core/persistence/history.py +0 -362
  452. monkeybot-3.7.0/src/monkeybot/core/persistence/postgres.py +0 -1741
  453. monkeybot-3.7.0/src/monkeybot/core/persistence/sqlite.py +0 -546
  454. monkeybot-3.7.0/src/monkeybot/core/persistence/sqlite_backend.py +0 -117
  455. monkeybot-3.7.0/src/monkeybot/core/persistence/sqlite_vector.py +0 -481
  456. monkeybot-3.7.0/src/monkeybot/core/persistence/thread_summary.py +0 -366
  457. monkeybot-3.7.0/src/monkeybot/core/persistence/transcript.py +0 -736
  458. monkeybot-3.7.0/src/monkeybot/core/prompts/harness_prompt.py +0 -208
  459. monkeybot-3.7.0/src/monkeybot/core/runtime/context_budget.py +0 -237
  460. monkeybot-3.7.0/src/monkeybot/core/runtime/doom_loop.py +0 -121
  461. monkeybot-3.7.0/src/monkeybot/core/runtime/events.py +0 -1376
  462. monkeybot-3.7.0/src/monkeybot/core/runtime/history_compaction.py +0 -532
  463. monkeybot-3.7.0/src/monkeybot/core/runtime/loop_hooks.py +0 -188
  464. monkeybot-3.7.0/src/monkeybot/core/runtime/loop_messages.py +0 -263
  465. monkeybot-3.7.0/src/monkeybot/core/runtime/loop_usage.py +0 -174
  466. monkeybot-3.7.0/src/monkeybot/core/runtime/realtime_loop.py +0 -765
  467. monkeybot-3.7.0/src/monkeybot/core/runtime/tool_dispatch.py +0 -1198
  468. monkeybot-3.7.0/src/monkeybot/core/runtime/turn_loop.py +0 -1920
  469. monkeybot-3.7.0/src/monkeybot/core/runtime/utterance_buffer.py +0 -179
  470. monkeybot-3.7.0/src/monkeybot/core/subagents/subagent_worker.py +0 -520
  471. monkeybot-3.7.0/src/monkeybot/core/subagents/worker_pool.py +0 -576
  472. monkeybot-3.7.0/src/monkeybot/core/tools/core_tool_executor.py +0 -2768
  473. monkeybot-3.7.0/src/monkeybot/core/tools/fs_isolation.py +0 -845
  474. monkeybot-3.7.0/src/monkeybot/core/tools/patch.py +0 -567
  475. monkeybot-3.7.0/src/monkeybot/core/tools/permission.py +0 -355
  476. monkeybot-3.7.0/src/monkeybot/core/tools/sandbox_executor.py +0 -802
  477. monkeybot-3.7.0/src/monkeybot/core/tools/spill_inventory.py +0 -605
  478. monkeybot-3.7.0/src/monkeybot/core/tools/tool_kind.py +0 -41
  479. monkeybot-3.7.0/src/monkeybot/core/types/content_blocks.py +0 -652
  480. monkeybot-3.7.0/src/monkeybot/core/types/interfaces.py +0 -156
  481. monkeybot-3.7.0/src/monkeybot/core/verifier/ledger.py +0 -426
  482. monkeybot-3.7.0/src/monkeybot/core/verifier/match.py +0 -94
  483. monkeybot-3.7.0/src/monkeybot/core/verifier/tracker.py +0 -344
  484. monkeybot-3.7.0/src/monkeybot/core/workspace/gcs.py +0 -144
  485. monkeybot-3.7.0/src/monkeybot/core/workspace/s3.py +0 -169
  486. monkeybot-3.7.0/src/monkeybot/gateway/bootstrap.py +0 -67
  487. monkeybot-3.7.0/src/monkeybot/gateway/realtime/__init__.py +0 -44
  488. monkeybot-3.7.0/src/monkeybot/gateway/realtime/manager.py +0 -101
  489. monkeybot-3.7.0/src/monkeybot/gateway/realtime/metrics.py +0 -147
  490. monkeybot-3.7.0/src/monkeybot/gateway/realtime/routes.py +0 -1009
  491. monkeybot-3.7.0/src/monkeybot/gateway/realtime/wire.py +0 -412
  492. monkeybot-3.7.0/src/monkeybot/gateway/sse/app.py +0 -1467
  493. monkeybot-3.7.0/src/monkeybot/gateway/sse/models.py +0 -246
  494. monkeybot-3.7.0/src/monkeybot/gateway/sse/routes.py +0 -1387
  495. monkeybot-3.7.0/src/monkeybot/gateway/sse/sse.py +0 -46
  496. monkeybot-3.7.0/src/monkeybot/observability/sqlite_exporter.py +0 -748
  497. monkeybot-3.7.0/src/monkeybot/providers/__init__.py +0 -21
  498. monkeybot-3.7.0/src/monkeybot/providers/_openai_compat.py +0 -1354
  499. monkeybot-3.7.0/src/monkeybot/providers/_utils.py +0 -718
  500. monkeybot-3.7.0/src/monkeybot/providers/bedrock.py +0 -211
  501. monkeybot-3.7.0/src/monkeybot/providers/claude.py +0 -135
  502. monkeybot-3.7.0/src/monkeybot/providers/gemini.py +0 -809
  503. monkeybot-3.7.0/src/monkeybot/providers/huggingface.py +0 -136
  504. monkeybot-3.7.0/src/monkeybot/providers/nvidia.py +0 -111
  505. monkeybot-3.7.0/src/monkeybot/providers/ollama.py +0 -322
  506. monkeybot-3.7.0/src/monkeybot/providers/openai.py +0 -151
  507. monkeybot-3.7.0/src/monkeybot/providers/openrouter.py +0 -113
  508. monkeybot-3.7.0/src/monkeybot/providers/sampling.py +0 -53
  509. monkeybot-3.7.0/src/monkeybot/providers/vertex_claude.py +0 -151
  510. monkeybot-3.7.0/src/monkeybot/scheduler/http_invoker.py +0 -61
  511. monkeybot-3.7.0/src/monkeybot/todo_list/store.py +0 -264
  512. monkeybot-3.7.0/src/monkeybot/todo_list/tool.py +0 -132
  513. monkeybot-3.7.0/src/monkeybot/web_search/backends/duckduckgo.py +0 -32
  514. monkeybot-3.7.0/src/monkeybot/web_search/backends/firecrawl.py +0 -43
  515. monkeybot-3.7.0/src/monkeybot/web_search/backends/tavily.py +0 -45
  516. monkeybot-3.7.0/tests/conftest.py +0 -91
  517. monkeybot-3.7.0/tests/core/memory/test_mempalace.py +0 -485
  518. monkeybot-3.7.0/tests/core/memory/test_review_fixes.py +0 -1234
  519. monkeybot-3.7.0/tests/core/test_background_jobs.py +0 -531
  520. monkeybot-3.7.0/tests/core/test_bootstrap.py +0 -394
  521. monkeybot-3.7.0/tests/core/test_config_extensions.py +0 -893
  522. monkeybot-3.7.0/tests/core/test_context.py +0 -759
  523. monkeybot-3.7.0/tests/core/test_core_tool_executor.py +0 -4875
  524. monkeybot-3.7.0/tests/core/test_doom_loop.py +0 -518
  525. monkeybot-3.7.0/tests/core/test_durable_events.py +0 -97
  526. monkeybot-3.7.0/tests/core/test_empty_completion.py +0 -168
  527. monkeybot-3.7.0/tests/core/test_events.py +0 -771
  528. monkeybot-3.7.0/tests/core/test_evidence_guard.py +0 -392
  529. monkeybot-3.7.0/tests/core/test_firestore_history.py +0 -352
  530. monkeybot-3.7.0/tests/core/test_fs_isolation.py +0 -779
  531. monkeybot-3.7.0/tests/core/test_goals.py +0 -464
  532. monkeybot-3.7.0/tests/core/test_grant_store.py +0 -183
  533. monkeybot-3.7.0/tests/core/test_history.py +0 -431
  534. monkeybot-3.7.0/tests/core/test_history_compaction_split.py +0 -226
  535. monkeybot-3.7.0/tests/core/test_hooks.py +0 -220
  536. monkeybot-3.7.0/tests/core/test_image_preview.py +0 -169
  537. monkeybot-3.7.0/tests/core/test_inspector.py +0 -281
  538. monkeybot-3.7.0/tests/core/test_knowledge_chunking.py +0 -283
  539. monkeybot-3.7.0/tests/core/test_knowledge_chunking_rank.py +0 -86
  540. monkeybot-3.7.0/tests/core/test_knowledge_config.py +0 -189
  541. monkeybot-3.7.0/tests/core/test_knowledge_embeddings.py +0 -332
  542. monkeybot-3.7.0/tests/core/test_knowledge_fts.py +0 -218
  543. monkeybot-3.7.0/tests/core/test_knowledge_fusion.py +0 -475
  544. monkeybot-3.7.0/tests/core/test_knowledge_fusion_ann.py +0 -166
  545. monkeybot-3.7.0/tests/core/test_knowledge_hook.py +0 -71
  546. monkeybot-3.7.0/tests/core/test_knowledge_indexer.py +0 -955
  547. monkeybot-3.7.0/tests/core/test_knowledge_links.py +0 -106
  548. monkeybot-3.7.0/tests/core/test_knowledge_media.py +0 -375
  549. monkeybot-3.7.0/tests/core/test_knowledge_salience.py +0 -211
  550. monkeybot-3.7.0/tests/core/test_knowledge_single_writer.py +0 -291
  551. monkeybot-3.7.0/tests/core/test_knowledge_subsystem.py +0 -102
  552. monkeybot-3.7.0/tests/core/test_knowledge_vectors.py +0 -283
  553. monkeybot-3.7.0/tests/core/test_loop.py +0 -3398
  554. monkeybot-3.7.0/tests/core/test_loop_hooks.py +0 -769
  555. monkeybot-3.7.0/tests/core/test_loop_observability.py +0 -196
  556. monkeybot-3.7.0/tests/core/test_loop_transcript.py +0 -279
  557. monkeybot-3.7.0/tests/core/test_memory_layout_migrate.py +0 -210
  558. monkeybot-3.7.0/tests/core/test_message_pipeline.py +0 -143
  559. monkeybot-3.7.0/tests/core/test_patch.py +0 -403
  560. monkeybot-3.7.0/tests/core/test_path_grant_inspector.py +0 -230
  561. monkeybot-3.7.0/tests/core/test_permission.py +0 -267
  562. monkeybot-3.7.0/tests/core/test_progress_publish.py +0 -255
  563. monkeybot-3.7.0/tests/core/test_provider_contract.py +0 -253
  564. monkeybot-3.7.0/tests/core/test_provider_stream_mapper.py +0 -90
  565. monkeybot-3.7.0/tests/core/test_realtime_loop.py +0 -740
  566. monkeybot-3.7.0/tests/core/test_runtime_env.py +0 -552
  567. monkeybot-3.7.0/tests/core/test_secret_egress.py +0 -466
  568. monkeybot-3.7.0/tests/core/test_spill_dynamic.py +0 -386
  569. monkeybot-3.7.0/tests/core/test_spill_inventory.py +0 -248
  570. monkeybot-3.7.0/tests/core/test_storage_backends.py +0 -1247
  571. monkeybot-3.7.0/tests/core/test_subagent_proto.py +0 -490
  572. monkeybot-3.7.0/tests/core/test_subagent_trace_propagation.py +0 -647
  573. monkeybot-3.7.0/tests/core/test_terminal.py +0 -1193
  574. monkeybot-3.7.0/tests/core/test_thread_summary_wire.py +0 -579
  575. monkeybot-3.7.0/tests/core/test_transcript.py +0 -745
  576. monkeybot-3.7.0/tests/core/test_truncated_tool_batch.py +0 -192
  577. monkeybot-3.7.0/tests/core/test_usage.py +0 -375
  578. monkeybot-3.7.0/tests/core/test_utterance_buffer.py +0 -131
  579. monkeybot-3.7.0/tests/core/test_worker_pool.py +0 -789
  580. monkeybot-3.7.0/tests/evals/scenario_runner.py +0 -193
  581. monkeybot-3.7.0/tests/evals/scenarios/tool_search_knowledge.yaml +0 -17
  582. monkeybot-3.7.0/tests/evals/test_agent_behavior.py +0 -38
  583. monkeybot-3.7.0/tests/evals/test_memory_knowledge_routing.py +0 -70
  584. monkeybot-3.7.0/tests/gateway/realtime/test_app.py +0 -40
  585. monkeybot-3.7.0/tests/gateway/realtime/test_session.py +0 -211
  586. monkeybot-3.7.0/tests/gateway/realtime/test_wire.py +0 -272
  587. monkeybot-3.7.0/tests/gateway/sse/test_attachments.py +0 -205
  588. monkeybot-3.7.0/tests/gateway/sse/test_create_session_model.py +0 -313
  589. monkeybot-3.7.0/tests/gateway/sse/test_gateway_runtime.py +0 -817
  590. monkeybot-3.7.0/tests/gateway/sse/test_routes.py +0 -719
  591. monkeybot-3.7.0/tests/gateway/sse/test_session_bus.py +0 -246
  592. monkeybot-3.7.0/tests/gateway/sse/test_transcript_wiring.py +0 -157
  593. monkeybot-3.7.0/tests/gateway/test_otel_lifespan.py +0 -107
  594. monkeybot-3.7.0/tests/gateway/test_resolve_provider.py +0 -102
  595. monkeybot-3.7.0/tests/integration/test_prompt_caching_integration.py +0 -139
  596. monkeybot-3.7.0/tests/observability/test_init.py +0 -154
  597. monkeybot-3.7.0/tests/observability/test_loop_hook_spans.py +0 -74
  598. monkeybot-3.7.0/tests/observability/test_span_contract.py +0 -240
  599. monkeybot-3.7.0/tests/observability/test_spans.py +0 -186
  600. monkeybot-3.7.0/tests/observability/test_sqlite_exporter.py +0 -709
  601. monkeybot-3.7.0/tests/providers/conftest.py +0 -106
  602. monkeybot-3.7.0/tests/providers/test_anthropic_cache.py +0 -747
  603. monkeybot-3.7.0/tests/providers/test_bedrock_converse.py +0 -605
  604. monkeybot-3.7.0/tests/providers/test_gemini_live.py +0 -272
  605. monkeybot-3.7.0/tests/providers/test_gemini_usage.py +0 -355
  606. monkeybot-3.7.0/tests/providers/test_huggingface.py +0 -61
  607. monkeybot-3.7.0/tests/providers/test_ollama.py +0 -362
  608. monkeybot-3.7.0/tests/providers/test_openai_byte_budget.py +0 -415
  609. monkeybot-3.7.0/tests/providers/test_openai_compat_usage.py +0 -1195
  610. monkeybot-3.7.0/tests/providers/test_openai_history.py +0 -437
  611. monkeybot-3.7.0/tests/providers/test_sampling.py +0 -156
  612. monkeybot-3.7.0/tests/providers/test_sonnet5_sampling.py +0 -435
  613. monkeybot-3.7.0/tests/providers/test_source_grep_gates.py +0 -66
  614. monkeybot-3.7.0/tests/test_packaging_config.py +0 -85
  615. monkeybot-3.7.0/tests/test_release_script.py +0 -190
  616. monkeybot-3.7.0/tests/todo_list/test_todo_list.py +0 -308
  617. monkeybot-3.7.0/tests/web_search/test_web_search.py +0 -293
  618. monkeybot-3.7.0/uv.lock +0 -5436
  619. {monkeybot-3.7.0 → monkeybot-3.9.0}/.dockerignore +0 -0
  620. {monkeybot-3.7.0 → monkeybot-3.9.0}/.github/workflows/live-eval-smoke.yml +0 -0
  621. {monkeybot-3.7.0 → monkeybot-3.9.0}/.github/workflows/prepare-release.yml +0 -0
  622. {monkeybot-3.7.0 → monkeybot-3.9.0}/.github/workflows/publish-release.yml +0 -0
  623. {monkeybot-3.7.0 → monkeybot-3.9.0}/.gitignore +0 -0
  624. {monkeybot-3.7.0 → monkeybot-3.9.0}/LICENSE +0 -0
  625. {monkeybot-3.7.0 → monkeybot-3.9.0}/README.md +0 -0
  626. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/skills/monkeybot/SKILL.md +0 -0
  627. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/__init__.py +0 -0
  628. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/chat_file_index.py +0 -0
  629. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/chat_local_shell.py +0 -0
  630. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/chat_renderer.py +0 -0
  631. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/chat_status_bar.py +0 -0
  632. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/chat_theme.py +0 -0
  633. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/chat_tui_widgets.py +0 -0
  634. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/commands/__init__.py +0 -0
  635. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/commands/refresh.py +0 -0
  636. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/commands/run_cmd.py +0 -0
  637. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/commands/talk.py +0 -0
  638. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/config_resolve.py +0 -0
  639. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/exit_commands.py +0 -0
  640. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/process_tree.py +0 -0
  641. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/realtime/__init__.py +0 -0
  642. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/realtime/audio_io.py +0 -0
  643. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/realtime/client.py +0 -0
  644. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/realtime/gateway_manager.py +0 -0
  645. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/realtime/session.py +0 -0
  646. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/realtime/talk_ui.py +0 -0
  647. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/realtime/wire_encode.py +0 -0
  648. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/runtime_python.py +0 -0
  649. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold.py +0 -0
  650. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/AGENT.md +0 -0
  651. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/Dockerfile +0 -0
  652. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/__init__.py +0 -0
  653. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/browser/SKILL.md +0 -0
  654. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/command_allowlist.yaml +0 -0
  655. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/dockerignore +0 -0
  656. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/goal/SKILL.md +0 -0
  657. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/image-generator/SKILL.md +0 -0
  658. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/image-generator/generate_image.py +0 -0
  659. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/loop/SKILL.md +0 -0
  660. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/mcp.json +0 -0
  661. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/opensandbox.docker.toml +0 -0
  662. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/otel-collector.example.yaml +0 -0
  663. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/permissions.yaml +0 -0
  664. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/session_controller.py +0 -0
  665. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/terminal_markdown.py +0 -0
  666. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/tests/test_chat_e2e.py +0 -0
  667. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/tests/test_chat_file_index.py +0 -0
  668. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/tests/test_chat_grounding.py +0 -0
  669. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/tests/test_chat_status_bar.py +0 -0
  670. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/tests/test_chat_theme.py +0 -0
  671. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/tests/test_chat_tool_display.py +0 -0
  672. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/tests/test_extras_catalog.py +0 -0
  673. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/tests/test_gateway_health.py +0 -0
  674. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/tests/test_opensandbox_lifecycle.py +0 -0
  675. {monkeybot-3.7.0 → monkeybot-3.9.0}/cli/tests/test_scaffold.py +0 -0
  676. {monkeybot-3.7.0 → monkeybot-3.9.0}/docker/Dockerfile +0 -0
  677. {monkeybot-3.7.0 → monkeybot-3.9.0}/docker/demo-model.yaml +0 -0
  678. {monkeybot-3.7.0 → monkeybot-3.9.0}/docker/demo.yaml +0 -0
  679. {monkeybot-3.7.0 → monkeybot-3.9.0}/docker/docker-compose.sandbox.yml +0 -0
  680. {monkeybot-3.7.0 → monkeybot-3.9.0}/docker/opensandbox.docker.toml +0 -0
  681. {monkeybot-3.7.0 → monkeybot-3.9.0}/docker/sandbox.Dockerfile +0 -0
  682. {monkeybot-3.7.0 → monkeybot-3.9.0}/docker-compose.yml +0 -0
  683. {monkeybot-3.7.0 → monkeybot-3.9.0}/docs/agent-layout.md +0 -0
  684. {monkeybot-3.7.0 → monkeybot-3.9.0}/docs/assets/logo.png +0 -0
  685. {monkeybot-3.7.0 → monkeybot-3.9.0}/docs/browser-mcp-perf-baseline.md +0 -0
  686. {monkeybot-3.7.0 → monkeybot-3.9.0}/docs/browser-mcp-performance-plan.md +0 -0
  687. {monkeybot-3.7.0 → monkeybot-3.9.0}/docs/browser-mcp.md +0 -0
  688. {monkeybot-3.7.0 → monkeybot-3.9.0}/docs/cloud-deployment-design.md +0 -0
  689. {monkeybot-3.7.0 → monkeybot-3.9.0}/docs/deploy-aws-agentcore.md +0 -0
  690. {monkeybot-3.7.0 → monkeybot-3.9.0}/docs/deploy-pattern-a-container.md +0 -0
  691. {monkeybot-3.7.0 → monkeybot-3.9.0}/docs/deploy-pattern-b-serverless.md +0 -0
  692. {monkeybot-3.7.0 → monkeybot-3.9.0}/docs/deploy-pattern-c-agent-platform.md +0 -0
  693. {monkeybot-3.7.0 → monkeybot-3.9.0}/docs/deploy-pattern-d-realtime.md +0 -0
  694. {monkeybot-3.7.0 → monkeybot-3.9.0}/docs/getting-started.md +0 -0
  695. {monkeybot-3.7.0 → monkeybot-3.9.0}/docs/live-evals.md +0 -0
  696. {monkeybot-3.7.0 → monkeybot-3.9.0}/docs/mcp.md +0 -0
  697. {monkeybot-3.7.0 → monkeybot-3.9.0}/docs/migrations/agent-scope-namespacing.md +0 -0
  698. {monkeybot-3.7.0 → monkeybot-3.9.0}/docs/migrations/memory-outbox.sql +0 -0
  699. {monkeybot-3.7.0 → monkeybot-3.9.0}/docs/observability-runbook.md +0 -0
  700. {monkeybot-3.7.0 → monkeybot-3.9.0}/docs/ollama-local.md +0 -0
  701. {monkeybot-3.7.0 → monkeybot-3.9.0}/docs/otel-collector.example.yaml +0 -0
  702. {monkeybot-3.7.0 → monkeybot-3.9.0}/docs/progressive-loop-tools.md +0 -0
  703. {monkeybot-3.7.0 → monkeybot-3.9.0}/docs/progressive-mcp-tools.md +0 -0
  704. {monkeybot-3.7.0 → monkeybot-3.9.0}/docs/skills.md +0 -0
  705. {monkeybot-3.7.0 → monkeybot-3.9.0}/docs/spill-dynamic-design.md +0 -0
  706. {monkeybot-3.7.0 → monkeybot-3.9.0}/docs/sse-gateway-ui.md +0 -0
  707. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/assertions.py +0 -0
  708. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/baselines/smoke.json +0 -0
  709. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/baselines/smoke.md +0 -0
  710. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/eval_config.yaml +0 -0
  711. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/models.py +0 -0
  712. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/persistence.py +0 -0
  713. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/runner.py +0 -0
  714. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/scenarios/context/summarization_trigger.yaml +0 -0
  715. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/scenarios/drift/declares_done.yaml +0 -0
  716. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/scenarios/drift/path_constraint.yaml +0 -0
  717. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/scenarios/drift/preempt.yaml +0 -0
  718. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/scenarios/drift/repeat_correction.yaml +0 -0
  719. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/scenarios/drift/supersession.yaml +0 -0
  720. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/scenarios/mcp/get_prompt.yaml +0 -0
  721. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/scenarios/mcp/list_resources.yaml +0 -0
  722. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/scenarios/mcp/tool_invoke.yaml +0 -0
  723. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/scenarios/memory/recall_cross_session.yaml +0 -0
  724. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/scenarios/memory/recall_single_session.yaml +0 -0
  725. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/scenarios/multi_turn/task_tracking.yaml +0 -0
  726. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/scenarios/skills/skill_invocation.yaml +0 -0
  727. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/scenarios/subagents/dispatch_complete.yaml +0 -0
  728. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/scenarios/tools/core_read.yaml +0 -0
  729. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/scenarios/tools/core_read_error.yaml +0 -0
  730. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/scenarios/tools/core_run_command.yaml +0 -0
  731. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/scenarios/tools/core_run_command_sandbox.yaml +0 -0
  732. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/scenarios/tools/core_write.yaml +0 -0
  733. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/smoke_agent/.env.example +0 -0
  734. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/smoke_agent/.gitignore +0 -0
  735. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/smoke_agent/fixture_mcp_server.py +0 -0
  736. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/smoke_agent/monkeybot_config/AGENT.md +0 -0
  737. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/smoke_agent/monkeybot_config/command_allowlist.yaml +0 -0
  738. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/smoke_agent/monkeybot_config/mcp.json +0 -0
  739. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/smoke_agent/monkeybot_config/monkeybot.verifier-on.yaml +0 -0
  740. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/smoke_agent/monkeybot_config/monkeybot.yaml +0 -0
  741. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/smoke_agent/monkeybot_config/permissions.yaml +0 -0
  742. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/smoke_agent/pyproject.toml +0 -0
  743. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/smoke_agent/skills/browser/SKILL.md +0 -0
  744. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/smoke_agent/uv.lock +0 -0
  745. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/smoke_agent/workspace/.gitkeep +0 -0
  746. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/smoke_agent/workspace/skills/browser/playbooks/.gitkeep +0 -0
  747. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/suites/drift.yaml +0 -0
  748. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/suites/smoke.yaml +0 -0
  749. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/test_runner_sse.py +0 -0
  750. {monkeybot-3.7.0 → monkeybot-3.9.0}/evals/test_scorer.py +0 -0
  751. {monkeybot-3.7.0 → monkeybot-3.9.0}/examples/README.md +0 -0
  752. {monkeybot-3.7.0 → monkeybot-3.9.0}/examples/agentcore/handler.py +0 -0
  753. {monkeybot-3.7.0 → monkeybot-3.9.0}/examples/agentengine/handler.py +0 -0
  754. {monkeybot-3.7.0 → monkeybot-3.9.0}/examples/lambda/handler.py +0 -0
  755. {monkeybot-3.7.0 → monkeybot-3.9.0}/examples/ollama/PrefixStable.Modelfile +0 -0
  756. {monkeybot-3.7.0 → monkeybot-3.9.0}/examples/skills/browser/SKILL.md +0 -0
  757. {monkeybot-3.7.0 → monkeybot-3.9.0}/examples/skills/browser/playbooks/.gitkeep +0 -0
  758. {monkeybot-3.7.0 → monkeybot-3.9.0}/examples/skills/diagnostics/README.md +0 -0
  759. {monkeybot-3.7.0 → monkeybot-3.9.0}/examples/skills/diagnostics/SKILL.md +0 -0
  760. {monkeybot-3.7.0 → monkeybot-3.9.0}/examples/skills/diagnostics/__init__.py +0 -0
  761. {monkeybot-3.7.0 → monkeybot-3.9.0}/examples/skills/diagnostics/diagnostics.py +0 -0
  762. {monkeybot-3.7.0 → monkeybot-3.9.0}/examples/skills/image-generator/SKILL.md +0 -0
  763. {monkeybot-3.7.0 → monkeybot-3.9.0}/examples/skills/image-generator/generate_image.py +0 -0
  764. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/pyproject.toml +0 -0
  765. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/scripts/agentcore_smoke.py +0 -0
  766. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/scripts/dump_tool_surface.py +0 -0
  767. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/__init__.py +0 -0
  768. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/agentcore.py +0 -0
  769. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/assets/NOTICE.md +0 -0
  770. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/assets/dom_tree.js +0 -0
  771. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/assets/pa_driver.js +0 -0
  772. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/chat_scope.py +0 -0
  773. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/login.py +0 -0
  774. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/perf.py +0 -0
  775. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/screenshots.py +0 -0
  776. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/server.py +0 -0
  777. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/tools/__init__.py +0 -0
  778. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/tools/capture.py +0 -0
  779. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/conftest.py +0 -0
  780. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/fixtures/api.json +0 -0
  781. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/fixtures/article.html +0 -0
  782. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/fixtures/cards.html +0 -0
  783. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/fixtures/form.html +0 -0
  784. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/fixtures/long_list.html +0 -0
  785. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/fixtures/spa.html +0 -0
  786. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/fixtures/tool_surface.json +0 -0
  787. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/integration/conftest.py +0 -0
  788. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/integration/test_multi_tab.py +0 -0
  789. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/integration/test_run_playbook.py +0 -0
  790. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/test_dom_indexing.py +0 -0
  791. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/test_observe.py +0 -0
  792. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/test_playwright_helpers.py +0 -0
  793. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/test_server_shutdown.py +0 -0
  794. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/test_tool_surface.py +0 -0
  795. {monkeybot-3.7.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/test_wait_tools.py +0 -0
  796. {monkeybot-3.7.0 → monkeybot-3.9.0}/pytest.ini +0 -0
  797. {monkeybot-3.7.0 → monkeybot-3.9.0}/scripts/create_schema.py +0 -0
  798. {monkeybot-3.7.0 → monkeybot-3.9.0}/scripts/precommit-pytest.sh +0 -0
  799. {monkeybot-3.7.0 → monkeybot-3.9.0}/scripts/smoke_global_cli.sh +0 -0
  800. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/__init__.py +0 -0
  801. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/cli/__init__.py +0 -0
  802. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/cli/__main__.py +0 -0
  803. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/cli/audio_io.py +0 -0
  804. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/cli/gateway_manager.py +0 -0
  805. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/cli/main.py +0 -0
  806. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/cli/push_to_talk.py +0 -0
  807. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/cli/realtime_client.py +0 -0
  808. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/computer/__init__.py +0 -0
  809. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/computer/approvals.py +0 -0
  810. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/computer/permissions.py +0 -0
  811. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/computer/safety.py +0 -0
  812. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/computer/tools.py +0 -0
  813. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/__init__.py +0 -0
  814. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/attachments/__init__.py +0 -0
  815. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/attachments/image_preview.py +0 -0
  816. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/attachments/tools.py +0 -0
  817. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/config/__init__.py +0 -0
  818. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/config/realtime_config.py +0 -0
  819. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/context/campaign_context.py +0 -0
  820. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/context/common.py +0 -0
  821. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/context/slash_skills.py +0 -0
  822. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/context/tool_output_policy.py +0 -0
  823. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/goals/__init__.py +0 -0
  824. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/goals/service.py +0 -0
  825. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/layout.py +0 -0
  826. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/llm/__init__.py +0 -0
  827. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/llm/realtime_provider.py +0 -0
  828. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/llm/usage.py +0 -0
  829. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/lockfile_names.py +0 -0
  830. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/logging_utils.py +0 -0
  831. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/mcp/__init__.py +0 -0
  832. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/mcp/mcp_client.py +0 -0
  833. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/mcp/ports_mcp.py +0 -0
  834. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/__init__.py +0 -0
  835. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/config.py +0 -0
  836. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/ids.py +0 -0
  837. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/ingest.py +0 -0
  838. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/observability.py +0 -0
  839. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/outbox.py +0 -0
  840. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/palace.py +0 -0
  841. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/uri.py +0 -0
  842. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/writer.py +0 -0
  843. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/messages/__init__.py +0 -0
  844. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/messages/convert_provider.py +0 -0
  845. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/path_safety.py +0 -0
  846. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/db.py +0 -0
  847. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/durable_runs.py +0 -0
  848. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/errors.py +0 -0
  849. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/firestore.indexes.json +0 -0
  850. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/firestore_scheduled_loops.py +0 -0
  851. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/runs.py +0 -0
  852. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/scheduled_loops.py +0 -0
  853. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/session_turn_locks.py +0 -0
  854. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/usage.py +0 -0
  855. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/usage_buckets.py +0 -0
  856. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/prompts/__init__.py +0 -0
  857. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/prompts/headings.py +0 -0
  858. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/prompts/prompt.py +0 -0
  859. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/runtime/__init__.py +0 -0
  860. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/runtime/input_admission.py +0 -0
  861. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/runtime/loop.py +0 -0
  862. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/runtime/loop_ports.py +0 -0
  863. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/runtime/provider_stream_mapper.py +0 -0
  864. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/runtime/tool_batch.py +0 -0
  865. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/subagents/__init__.py +0 -0
  866. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/subagents/progress_publish.py +0 -0
  867. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/subagents/subagent_proto.py +0 -0
  868. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/subprocess_groups.py +0 -0
  869. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/testing/__init__.py +0 -0
  870. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/testing/mocks_provider.py +0 -0
  871. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/testing/mocks_realtime_provider.py +0 -0
  872. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/__init__.py +0 -0
  873. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/ask_user.py +0 -0
  874. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/background_jobs.py +0 -0
  875. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/command_executor.py +0 -0
  876. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/grant_store.py +0 -0
  877. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/inspector.py +0 -0
  878. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/loop_inspector.py +0 -0
  879. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/path_grant_inspector.py +0 -0
  880. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/terminal.py +0 -0
  881. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/text_normalize.py +0 -0
  882. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/tool_hint.py +0 -0
  883. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/types.py +0 -0
  884. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/workspace_service.py +0 -0
  885. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/types/__init__.py +0 -0
  886. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/types/types_tools.py +0 -0
  887. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/__init__.py +0 -0
  888. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/actuator.py +0 -0
  889. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/binding.py +0 -0
  890. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/classify.py +0 -0
  891. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/inspector.py +0 -0
  892. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/intervention.py +0 -0
  893. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/judge.py +0 -0
  894. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/mailbox.py +0 -0
  895. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/port.py +0 -0
  896. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/severity.py +0 -0
  897. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/workspace/__init__.py +0 -0
  898. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/workspace/factory.py +0 -0
  899. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/workspace/local.py +0 -0
  900. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/workspace/protocol.py +0 -0
  901. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/core/workspace_layout.py +0 -0
  902. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/gateway/__init__.py +0 -0
  903. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/gateway/main.py +0 -0
  904. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/gateway/pending_response_bus.py +0 -0
  905. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/gateway/realtime/app.py +0 -0
  906. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/gateway/realtime/deps.py +0 -0
  907. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/gateway/realtime/errors.py +0 -0
  908. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/gateway/realtime/guardrails.py +0 -0
  909. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/gateway/realtime/session.py +0 -0
  910. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/gateway/realtime_main.py +0 -0
  911. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/__init__.py +0 -0
  912. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/goal_routes.py +0 -0
  913. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/loop_port.py +0 -0
  914. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/reload.py +0 -0
  915. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/reply_body.py +0 -0
  916. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/request_storage.py +0 -0
  917. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/scheduler_routes.py +0 -0
  918. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/scheduler_wiring.py +0 -0
  919. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/session_bus.py +0 -0
  920. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/workspace_layout.py +0 -0
  921. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/observability/__init__.py +0 -0
  922. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/observability/_state.py +0 -0
  923. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/observability/instrumentation.py +0 -0
  924. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/observability/propagation.py +0 -0
  925. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/observability/spans.py +0 -0
  926. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/providers/_bedrock_converse.py +0 -0
  927. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/providers/gemini_live.py +0 -0
  928. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/providers/model_capabilities.py +0 -0
  929. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/providers/pricing.py +0 -0
  930. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/providers/request_budget.py +0 -0
  931. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/scaffold/__init__.py +0 -0
  932. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/scheduler/__init__.py +0 -0
  933. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/scheduler/__main__.py +0 -0
  934. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/scheduler/engine.py +0 -0
  935. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/scheduler/interval.py +0 -0
  936. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/scheduler/tick_result.py +0 -0
  937. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/scheduler/worker.py +0 -0
  938. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/subagents/__init__.py +0 -0
  939. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/subagents/worker/__init__.py +0 -0
  940. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/subagents/worker/__main__.py +0 -0
  941. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/todo_list/__init__.py +0 -0
  942. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/web_search/__init__.py +0 -0
  943. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/web_search/backends/__init__.py +0 -0
  944. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/web_search/protocol.py +0 -0
  945. {monkeybot-3.7.0 → monkeybot-3.9.0}/src/monkeybot/web_search/tool.py +0 -0
  946. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/__init__.py +0 -0
  947. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/acceptance/test_observability_acceptance.py +0 -0
  948. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/cli/__init__.py +0 -0
  949. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/cli/test_gateway_manager.py +0 -0
  950. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/cli/test_main.py +0 -0
  951. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/cli/test_push_to_talk.py +0 -0
  952. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/cli/test_realtime_client.py +0 -0
  953. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/computer/__init__.py +0 -0
  954. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/computer/test_approvals.py +0 -0
  955. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/computer/test_computer_tools.py +0 -0
  956. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/computer/test_package_init.py +0 -0
  957. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/computer/test_path_policy.py +0 -0
  958. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/computer/test_permissions.py +0 -0
  959. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/computer/test_subagent_exclusion.py +0 -0
  960. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/computer/test_wiring.py +0 -0
  961. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/__init__.py +0 -0
  962. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/fixtures/bitbucket_dc_style_pr.diff +0 -0
  963. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/memory/helpers.py +0 -0
  964. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/memory/in_memory_palace.py +0 -0
  965. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_agent_layout.py +0 -0
  966. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_ask_user.py +0 -0
  967. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_attachment_freeze.py +0 -0
  968. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_attachment_store.py +0 -0
  969. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_content_blocks.py +0 -0
  970. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_context_budget.py +0 -0
  971. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_context_epoch.py +0 -0
  972. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_durable_runs.py +0 -0
  973. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_env_map_grep_gates.py +0 -0
  974. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_firestore_scheduled_loops.py +0 -0
  975. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_firestore_usage.py +0 -0
  976. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_gemini_history_replay.py +0 -0
  977. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_goal_ledger.py +0 -0
  978. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_goal_persistence.py +0 -0
  979. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_harness_prompt.py +0 -0
  980. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_input_admission.py +0 -0
  981. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_layout.py +0 -0
  982. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_logging_utils.py +0 -0
  983. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_mcp_client.py +0 -0
  984. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_mocks_realtime_provider.py +0 -0
  985. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_path_safety.py +0 -0
  986. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_pricing.py +0 -0
  987. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_progress_tracker.py +0 -0
  988. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_prompt.py +0 -0
  989. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_replace_fuzzy.py +0 -0
  990. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_run_command_parse.py +0 -0
  991. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_runs.py +0 -0
  992. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_runtime_config_snapshot.py +0 -0
  993. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_sandbox_executor.py +0 -0
  994. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_scheduled_loops.py +0 -0
  995. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_session_turn_locks.py +0 -0
  996. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_settlement.py +0 -0
  997. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_slash_skills.py +0 -0
  998. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_subagent_worker_paths.py +0 -0
  999. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_tool_def_schema.py +0 -0
  1000. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_tool_integrity.py +0 -0
  1001. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_tool_result_ingress.py +0 -0
  1002. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_tool_shapers.py +0 -0
  1003. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_usage_migration.py +0 -0
  1004. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_verifier_binding.py +0 -0
  1005. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_verifier_inspector.py +0 -0
  1006. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_verifier_judge.py +0 -0
  1007. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_verifier_mailbox_lifecycle.py +0 -0
  1008. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_verifier_sticky_nudge.py +0 -0
  1009. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_workspace_extra_read_roots.py +0 -0
  1010. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_workspace_layout.py +0 -0
  1011. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_workspace_symlinks.py +0 -0
  1012. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/test_workspace_write_scope.py +0 -0
  1013. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/workspace/test_factory.py +0 -0
  1014. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/workspace/test_local_storage.py +0 -0
  1015. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/core/workspace/test_protocol_contract.py +0 -0
  1016. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/evals/__init__.py +0 -0
  1017. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/evals/eval_hook.py +0 -0
  1018. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/evals/scenarios/memory_wake_up_large.yaml +0 -0
  1019. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/evals/scenarios/memory_write_inject.yaml +0 -0
  1020. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/evals/scenarios/subagent_roundtrip.yaml +0 -0
  1021. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_glob_grep.yaml +0 -0
  1022. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_load_file.yaml +0 -0
  1023. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_loops.yaml +0 -0
  1024. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_read.yaml +0 -0
  1025. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_replace_apply_patch.yaml +0 -0
  1026. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_run_command.yaml +0 -0
  1027. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_search_memory.yaml +0 -0
  1028. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_todo_list.yaml +0 -0
  1029. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_web_search.yaml +0 -0
  1030. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_write.yaml +0 -0
  1031. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/evals/scenarios/turn_completion.yaml +0 -0
  1032. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/evals/test_verifier_port.py +0 -0
  1033. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/gateway/__init__.py +0 -0
  1034. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/gateway/realtime/__init__.py +0 -0
  1035. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/gateway/realtime/test_deps.py +0 -0
  1036. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/gateway/realtime/test_guardrails.py +0 -0
  1037. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/gateway/realtime/test_manager.py +0 -0
  1038. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/gateway/realtime/test_metrics.py +0 -0
  1039. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/gateway/realtime/test_routes_client_text.py +0 -0
  1040. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/gateway/sse/test_config_reload.py +0 -0
  1041. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/gateway/sse/test_scheduler_routes.py +0 -0
  1042. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/gateway/test_otel_fastapi.py +0 -0
  1043. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/gateway/test_pending_response_endpoints.py +0 -0
  1044. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/gateway/test_realtime_main.py +0 -0
  1045. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/gateway/test_sse_events.py +0 -0
  1046. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/gateway/test_subagent_event_publisher.py +0 -0
  1047. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/integration/__init__.py +0 -0
  1048. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/integration/test_mb_e2e_simple_reply.py +0 -0
  1049. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/integration/test_observability_integration.py +0 -0
  1050. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/observability/conftest.py +0 -0
  1051. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/observability/test_instrumentation.py +0 -0
  1052. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/observability/test_propagation.py +0 -0
  1053. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/observability/test_truncate.py +0 -0
  1054. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/observability/test_turn_complete_trace.py +0 -0
  1055. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/providers/test_anthropic_history.py +0 -0
  1056. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/providers/test_bedrock_estimate.py +0 -0
  1057. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/providers/test_gemini_history.py +0 -0
  1058. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/providers/test_model_capabilities.py +0 -0
  1059. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/providers/test_nvidia.py +0 -0
  1060. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/providers/test_pricing.py +0 -0
  1061. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/providers/test_request_budget.py +0 -0
  1062. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/providers/test_safe_parse_tool_args.py +0 -0
  1063. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/providers/test_vertex_claude_history.py +0 -0
  1064. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/scheduler/test_engine.py +0 -0
  1065. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/scheduler/test_interval.py +0 -0
  1066. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/skills/__init__.py +0 -0
  1067. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/skills/test_generate_image_script.py +0 -0
  1068. {monkeybot-3.7.0 → monkeybot-3.9.0}/tests/test_cold_start.py +0 -0
  1069. {monkeybot-3.7.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,85 @@
1
+ ---
2
+ name: mb-retro
3
+ description: >-
4
+ Review one MonkeyBot session transcript and propose environment fixes
5
+ (checks, verifier criteria, AGENT.md pointers, tool access). Use ONLY when
6
+ the user explicitly asks for /mb-retro, a MonkeyBot retro, or to review a
7
+ MonkeyBot transcript for why the agent struggled. Do not run during ordinary
8
+ coding, and do not edit anything until the user picks a candidate.
9
+ disable-model-invocation: true
10
+ ---
11
+
12
+ # mb-retro
13
+
14
+ Look at one MonkeyBot session and propose changes to the agent's environment so the next run goes better. Propose only. Edit nothing until the user picks a candidate.
15
+
16
+ This is the MonkeyBot form of a session retro. It does not review the code the session produced. If the user wants a verdict on a diff, that is a code review, not this skill.
17
+
18
+ ## Input
19
+
20
+ A session id, a session directory, or a `transcript.ndjson` path. Transcripts live under `{workspace}/.monkeybot/transcripts/` and exist only when `runtime.transcript_enabled` is true in `monkeybot.yaml`.
21
+
22
+ From the monkeybot repo:
23
+
24
+ ```bash
25
+ uv run monkeybot trace list --cwd <agent-root>
26
+ uv run monkeybot trace digest <session-id-or-path> --cwd <agent-root>
27
+ ```
28
+
29
+ If the user does not name a session, run `trace list` and suggest the session with the highest `score`. Say which one you are using. Do not retro every session.
30
+
31
+ ## Read
32
+
33
+ 1. Run `uv run monkeybot trace digest <id>`. That output is already resolved. Do not hand-expand `text_seq`, `result_seq`, `schema_seq`, `content_seq`, or `base_seq` diffs.
34
+ 2. Open one record only when the digest line is not enough: `uv run monkeybot trace digest <id> --seq N`. Repeat `--seq` for a few records, not the whole file.
35
+ 3. Subagent work is inlined under the `task` call that started it, from `{session}/subagents/`. Runs the digest cannot tie to a call appear under `Unlinked subagent runs`. If a line says `no child transcript`, say so and do not invent what the child did.
36
+ 4. A `--seq` record with `text_error: diff_mismatch` was written by an older harness whose prompt diff cannot be rebuilt. Do not quote its text.
37
+
38
+ A smooth digest (score 0, short timeline, no interventions) has little to teach. Say that and stop.
39
+
40
+ ## Find struggle moments
41
+
42
+ Every candidate must cite one or more `@seq` lines from this digest. Discard any candidate you cannot point at a specific moment. Do not fill categories with generic advice.
43
+
44
+ Look for:
45
+
46
+ - Tool errors, especially the same `error_kind` more than once
47
+ - `HarnessIntervention` (`doom_loop`, `truncated_batch`, `empty_completion`, `post_tool_empty`, `background_jobs_nudge`, `compaction_fallback`, `max_turns`, `verifier_replan`)
48
+ - Steers, verifier verdicts, empty assistant replies, context summaries
49
+ - Slow tools and repeated identical calls
50
+ - A long search before a fact that a pointer would have named
51
+ - A subagent that struggled while the parent looked fine
52
+
53
+ ## Classify
54
+
55
+ Put each moment in one category. The category decides where the fix goes.
56
+
57
+ | What went wrong | Propose |
58
+ | --- | --- |
59
+ | Slow to find a fact | A navigation pointer in the agent's `AGENT.md`, a skill description, or a memory entry |
60
+ | A mechanical mistake | An inspector or `PRE_TOOL` hook, tighter tool-schema validation, `permissions.yaml` or a path grant, or a guard threshold |
61
+ | A judgement-call miss | A verifier criterion. The verifier is the reviewer. |
62
+ | Bloated `AGENT.md` or harness prompt (`src/monkeybot/core/prompts/harness_prompt.py`) | Move the steering into an on-demand skill, or delete the no-op lines |
63
+ | An expensive tool call | Trim tool output, spill it to a file, or load tools progressively |
64
+ | Missing information or access | An MCP server, a tool, or wider permissions |
65
+ | The agent behaved reasonably and the harness misbehaved | A code fix plus a regression test in `tests/`, or an eval scenario in `evals/scenarios/` |
66
+
67
+ ## Rules
68
+
69
+ - A mechanical problem gets a check that can fail, never a sentence in a steering file.
70
+ - `AGENT.md` gets navigation pointers only. Do not add new standing rules there, and do not add them to a root `AGENTS.md` or `CLAUDE.md`.
71
+ - If a check already exists but is not wired up, the fix is to wire it, not to write a second one.
72
+ - A missing guardrail (no test or eval covers this failure) is its own finding.
73
+ - Rank by severity for the next session, not by how loud the log line was. A quiet expensive miss can outrank a noisy cheap one. Say that the order is a draft.
74
+ - Do not propose deleting lint rules, hooks, or CI jobs from other sessions. This skill sees one transcript.
75
+
76
+ ## Output
77
+
78
+ Ranked candidates, most severe first. For each one:
79
+
80
+ 1. **Moment** — quote the digest lines and their `@seq` numbers.
81
+ 2. **Category** — one row from the table.
82
+ 3. **Target** — the exact file or config key.
83
+ 4. **Change** — the proposed check, pointer, criterion, or deletion, in a few lines. Not a patch yet.
84
+
85
+ Then stop and ask which candidates to apply. Do not edit files, install hooks, or change `monkeybot.yaml` before that.
@@ -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]
@@ -0,0 +1,61 @@
1
+ # monkeybot Backlog
2
+
3
+ ---
4
+
5
+ ## Up Next — Major Priorities
6
+
7
+ ### 1. Chat Integration
8
+ - **Google Chat gateway** — incoming webhook + event handler for Google Chat spaces.
9
+ - **Slack gateway** — Slack Events API / socket mode integration.
10
+
11
+ ### 2. Sandbox Workspace Protection
12
+ - Add a hard-coded deny layer inside `SandboxExecutor` that blocks `run_command` from targeting harness-owned paths: `.monkeybot/`, `monkeybot.yaml`, `*.env`, `.agents/`, `config/`.
13
+ - Path-level policy at the executor — distinct from `command_allowlist.yaml` which is command-level. Agent should retain free rw access to `./code/`, `./data/`, etc.
14
+
15
+ ### 3. CLI-managed optional service dependencies
16
+ - `monkeybot chat` / `run` only spawn the gateway process; they don't start the Docker-backed optional services some `monkeybot.yaml` configs require: OpenSandbox (`sandbox.enabled`), Firestore emulator (`paths.db_url: firestore://...`), or the observability stack (Phoenix/Langfuse/OTel collector). Those used to be orchestrated by a demo `run.sh`; the CLI alone still can't fully run an agent that uses those features.
17
+ - Decide and implement: should the CLI (`doctor`, `run`, `chat`) detect these from config and actually start/stop the containers, or just validate/warn with remediation hints while the user manages Docker manually?
18
+ - Open sub-questions if going the "CLI starts services" route: where do per-project Docker assets live (`opensandbox.docker.toml`, OTel collector yaml, compose files) — agent-project-owned files referenced from `monkeybot.yaml`, or CLI-shipped generic templates; and is the sandbox worker image (project-specific extra deps) something the CLI should build, or stay manual/documented.
19
+
20
+ ---
21
+
22
+ ## Do Later
23
+
24
+ ### Connectors
25
+ - **CLI gateway** — interactive stdin/stdout beyond the existing `monkeybot chat` / `talk` clients.
26
+ - **Webhook gateway** — generic HTTP + HMAC ingress for third-party chat products.
27
+ - **Expanded `python -m monkeybot` surface** — additional operator subcommands (`usage` / `schedule`, etc.) as needed.
28
+
29
+ ### Cloud Deployments
30
+ - **GCP server** — GCE / GKE deployment option (docs + examples exist; no IaC).
31
+ - **AWS serverless** — Lambda + API Gateway (example handler exists; not a full deploy path).
32
+ - **AWS server** — EC2 / ECS deployment option.
33
+ - **Docker CI image matrix** — multi-extras build matrix in CI.
34
+
35
+ ### Infra
36
+ - **Postgres as production default** — backend exists; gateway still defaults to SQLite; decide when/if this becomes the default.
37
+ - **Firestore usage aggregation doesn't scale** — `FirestoreUsageStore.summary()`/`breakdown()` (agent-wide, no `thread_id`) stream the entire `turn_usage` collection into memory and aggregate in Python. Fine at small scale; revisit with a Firestore aggregation query or a scheduled rollup doc if `/usage` traffic or data volume grows.
38
+
39
+ ### MCP
40
+ - **MCP distro linkage** — confirm scaffolded `monkeybot.yaml` paths (`paths.mcp_config`, `paths.skills_path`) match deployment; smoke-test against real MCP servers beyond the bundled examples.
41
+
42
+ ### Tooling *(intentionally dropped — not completed)*
43
+
44
+ Product decision to stop tracking these as active backlog items (not claiming they shipped):
45
+
46
+ - **File-op tool audit** — Keep `write_file`; no plan to replace it with `create_file` + `find_and_replace` only.
47
+ - **Custom subagents** — Named profiles with per-persona skills / MCP selections remain out of scope for now; workers continue to load the global skills path and `MCP_CONFIG`.
48
+
49
+ ### Future platforms *(not scheduled)*
50
+
51
+ Moved from README — longer-term / speculative integrations without active implementation:
52
+
53
+ - **Azure OpenAI** — Azure-hosted OpenAI models
54
+ - **Azure Blob Storage** — memory backend (`[azure]` extra; docs note as planned)
55
+ - **Azure Key Vault** — secrets for Azure deployments
56
+ - **AWS Secrets Manager** — secret resolver at runtime
57
+ - **GCP Secret Manager** — finish `secrets.provider: gcp_secret_manager` wiring (schema exists; resolver not shipped)
58
+ - **Microsoft Teams** — Teams bot interface
59
+ - **Telegram** — Telegram bot interface
60
+ - **DynamoDB** — checkpointer / job storage backend
61
+ - **Cosmos DB** — Azure-native persistence options