monkeybot 2.1.1__tar.gz → 3.0.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 (965) hide show
  1. monkeybot-3.0.0/.dockerignore +14 -0
  2. monkeybot-3.0.0/.github/workflows/live-eval-smoke.yml +213 -0
  3. monkeybot-3.0.0/.github/workflows/prepare-release.yml +36 -0
  4. monkeybot-3.0.0/.github/workflows/publish-release.yml +172 -0
  5. monkeybot-3.0.0/.gitignore +71 -0
  6. monkeybot-3.0.0/BACKLOG.md +62 -0
  7. monkeybot-3.0.0/CHANGELOG.md +246 -0
  8. monkeybot-3.0.0/CONTRIBUTING.md +42 -0
  9. monkeybot-3.0.0/PKG-INFO +196 -0
  10. monkeybot-3.0.0/README.md +98 -0
  11. monkeybot-3.0.0/cli/pyproject.toml +44 -0
  12. monkeybot-3.0.0/cli/skills/monkeybot/SKILL.md +200 -0
  13. monkeybot-3.0.0/cli/skills/monkeybot/references/config-sections.md +179 -0
  14. monkeybot-3.0.0/cli/src/monkeybot_cli/__init__.py +8 -0
  15. monkeybot-3.0.0/cli/src/monkeybot_cli/chat_file_index.py +101 -0
  16. monkeybot-3.0.0/cli/src/monkeybot_cli/chat_local_shell.py +178 -0
  17. monkeybot-3.0.0/cli/src/monkeybot_cli/chat_session.py +938 -0
  18. monkeybot-3.0.0/cli/src/monkeybot_cli/chat_status_bar.py +207 -0
  19. monkeybot-3.0.0/cli/src/monkeybot_cli/chat_tool_display.py +240 -0
  20. monkeybot-3.0.0/cli/src/monkeybot_cli/chat_tui.py +1917 -0
  21. monkeybot-3.0.0/cli/src/monkeybot_cli/chat_tui_widgets.py +1117 -0
  22. monkeybot-3.0.0/cli/src/monkeybot_cli/commands/chat.py +889 -0
  23. monkeybot-3.0.0/cli/src/monkeybot_cli/commands/doctor.py +439 -0
  24. monkeybot-3.0.0/cli/src/monkeybot_cli/commands/refresh.py +36 -0
  25. monkeybot-3.0.0/cli/src/monkeybot_cli/commands/run_cmd.py +63 -0
  26. monkeybot-3.0.0/cli/src/monkeybot_cli/commands/validate.py +394 -0
  27. monkeybot-3.0.0/cli/src/monkeybot_cli/compat.py +30 -0
  28. monkeybot-3.0.0/cli/src/monkeybot_cli/config_resolve.py +49 -0
  29. monkeybot-3.0.0/cli/src/monkeybot_cli/extras_catalog.py +97 -0
  30. monkeybot-3.0.0/cli/src/monkeybot_cli/gateway_health.py +71 -0
  31. monkeybot-3.0.0/cli/src/monkeybot_cli/main.py +42 -0
  32. monkeybot-3.0.0/cli/src/monkeybot_cli/opensandbox_lifecycle.py +324 -0
  33. monkeybot-3.0.0/cli/src/monkeybot_cli/providers.py +135 -0
  34. monkeybot-3.0.0/cli/src/monkeybot_cli/realtime/gateway_manager.py +145 -0
  35. monkeybot-3.0.0/cli/src/monkeybot_cli/realtime/session.py +265 -0
  36. monkeybot-3.0.0/cli/src/monkeybot_cli/realtime/session_controller.py +501 -0
  37. monkeybot-3.0.0/cli/src/monkeybot_cli/realtime/talk_ui.py +248 -0
  38. monkeybot-3.0.0/cli/src/monkeybot_cli/runtime_python.py +746 -0
  39. monkeybot-3.0.0/cli/src/monkeybot_cli/scaffold.py +435 -0
  40. monkeybot-3.0.0/cli/src/monkeybot_cli/scaffold_defaults/Dockerfile +27 -0
  41. monkeybot-3.0.0/cli/src/monkeybot_cli/scaffold_defaults/browser/SKILL.md +16 -0
  42. monkeybot-3.0.0/cli/src/monkeybot_cli/scaffold_defaults/command_allowlist.yaml +67 -0
  43. monkeybot-3.0.0/cli/src/monkeybot_cli/scaffold_defaults/dockerignore +5 -0
  44. monkeybot-3.0.0/cli/src/monkeybot_cli/scaffold_defaults/env.example +40 -0
  45. monkeybot-3.0.0/cli/src/monkeybot_cli/scaffold_defaults/image-generator/SKILL.md +72 -0
  46. monkeybot-3.0.0/cli/src/monkeybot_cli/scaffold_defaults/image-generator/generate_image.py +214 -0
  47. monkeybot-3.0.0/cli/src/monkeybot_cli/scaffold_defaults/loop/SKILL.md +45 -0
  48. monkeybot-3.0.0/cli/src/monkeybot_cli/scaffold_defaults/mcp.json +50 -0
  49. monkeybot-3.0.0/cli/src/monkeybot_cli/scaffold_defaults/monkeybot.example.yaml +243 -0
  50. monkeybot-3.0.0/cli/src/monkeybot_cli/scaffold_defaults/opensandbox.docker.toml +46 -0
  51. monkeybot-3.0.0/cli/tests/test_chat_continue.py +198 -0
  52. monkeybot-3.0.0/cli/tests/test_chat_errors.py +219 -0
  53. monkeybot-3.0.0/cli/tests/test_chat_file_index.py +84 -0
  54. monkeybot-3.0.0/cli/tests/test_chat_local_shell.py +157 -0
  55. monkeybot-3.0.0/cli/tests/test_chat_session.py +452 -0
  56. monkeybot-3.0.0/cli/tests/test_chat_tui.py +2383 -0
  57. monkeybot-3.0.0/cli/tests/test_cli.py +319 -0
  58. monkeybot-3.0.0/cli/tests/test_config_resolve.py +32 -0
  59. monkeybot-3.0.0/cli/tests/test_doctor.py +85 -0
  60. monkeybot-3.0.0/cli/tests/test_extras_catalog.py +102 -0
  61. monkeybot-3.0.0/cli/tests/test_gateway_health.py +163 -0
  62. monkeybot-3.0.0/cli/tests/test_opensandbox_lifecycle.py +41 -0
  63. monkeybot-3.0.0/cli/tests/test_realtime_session_controller.py +319 -0
  64. monkeybot-3.0.0/cli/tests/test_run_cmd.py +90 -0
  65. monkeybot-3.0.0/cli/tests/test_runtime_python.py +1076 -0
  66. monkeybot-3.0.0/cli/tests/test_scaffold.py +220 -0
  67. monkeybot-3.0.0/cli/uv.lock +1838 -0
  68. monkeybot-3.0.0/docker/Dockerfile +31 -0
  69. monkeybot-3.0.0/docker/docker-compose.sandbox.yml +57 -0
  70. monkeybot-3.0.0/docker/opensandbox.docker.toml +46 -0
  71. monkeybot-3.0.0/docker/sandbox.Dockerfile +9 -0
  72. monkeybot-3.0.0/docker-compose.yml +13 -0
  73. monkeybot-3.0.0/docs/agent-layout.md +136 -0
  74. monkeybot-3.0.0/docs/browser-mcp.md +221 -0
  75. monkeybot-3.0.0/docs/cloud-deployment-design.md +96 -0
  76. monkeybot-3.0.0/docs/deploy-aws-agentcore.md +109 -0
  77. monkeybot-3.0.0/docs/deploy-pattern-a-container.md +403 -0
  78. monkeybot-3.0.0/docs/deploy-pattern-b-serverless.md +370 -0
  79. monkeybot-3.0.0/docs/deploy-pattern-c-agent-platform.md +236 -0
  80. monkeybot-3.0.0/docs/deploy-pattern-d-realtime.md +308 -0
  81. monkeybot-3.0.0/docs/features.md +821 -0
  82. monkeybot-3.0.0/docs/getting-started.md +182 -0
  83. monkeybot-3.0.0/docs/knowledge-layer-fixes.md +274 -0
  84. monkeybot-3.0.0/docs/live-evals.md +66 -0
  85. monkeybot-3.0.0/docs/mcp.md +193 -0
  86. monkeybot-3.0.0/docs/memory-graph-split-plan.md +231 -0
  87. monkeybot-3.0.0/docs/migrations/agent-scope-namespacing.md +96 -0
  88. monkeybot-3.0.0/docs/migrations/memory-outbox.sql +39 -0
  89. monkeybot-3.0.0/docs/observability-runbook.md +64 -0
  90. monkeybot-3.0.0/docs/progressive-loop-tools.md +24 -0
  91. monkeybot-3.0.0/docs/progressive-mcp-tools.md +23 -0
  92. monkeybot-3.0.0/docs/skills.md +67 -0
  93. monkeybot-3.0.0/docs/spill-dynamic-design.md +555 -0
  94. monkeybot-3.0.0/docs/sse-gateway-ui.md +273 -0
  95. monkeybot-3.0.0/docs/workspace-index-design.md +996 -0
  96. monkeybot-3.0.0/evals/TEST_COVERAGE.md +68 -0
  97. monkeybot-3.0.0/evals/assertions.py +105 -0
  98. monkeybot-3.0.0/evals/diff.py +123 -0
  99. monkeybot-3.0.0/evals/models.py +115 -0
  100. monkeybot-3.0.0/evals/persistence.py +193 -0
  101. monkeybot-3.0.0/evals/report.py +363 -0
  102. monkeybot-3.0.0/evals/runner.py +231 -0
  103. monkeybot-3.0.0/evals/scenario_loader.py +87 -0
  104. monkeybot-3.0.0/evals/scenarios/mcp/get_prompt.yaml +12 -0
  105. monkeybot-3.0.0/evals/scenarios/mcp/list_resources.yaml +12 -0
  106. monkeybot-3.0.0/evals/scenarios/mcp/tool_invoke.yaml +12 -0
  107. monkeybot-3.0.0/evals/scenarios/memory/recall_cross_session.yaml +12 -0
  108. monkeybot-3.0.0/evals/scenarios/memory/recall_single_session.yaml +11 -0
  109. monkeybot-3.0.0/evals/scenarios/tools/core_read.yaml +10 -0
  110. monkeybot-3.0.0/evals/scenarios/tools/core_run_command.yaml +11 -0
  111. monkeybot-3.0.0/evals/scenarios/tools/core_run_command_sandbox.yaml +20 -0
  112. monkeybot-3.0.0/evals/scenarios/tools/core_write.yaml +10 -0
  113. monkeybot-3.0.0/evals/scorer.py +361 -0
  114. monkeybot-3.0.0/evals/smoke_agent/.env.example +5 -0
  115. monkeybot-3.0.0/evals/smoke_agent/.gitignore +10 -0
  116. monkeybot-3.0.0/evals/smoke_agent/fixture_mcp_server.py +35 -0
  117. monkeybot-3.0.0/evals/smoke_agent/monkeybot_config/command_allowlist.yaml +34 -0
  118. monkeybot-3.0.0/evals/smoke_agent/monkeybot_config/mcp.json +12 -0
  119. monkeybot-3.0.0/evals/smoke_agent/monkeybot_config/monkeybot.yaml +48 -0
  120. monkeybot-3.0.0/evals/smoke_agent/pyproject.toml +13 -0
  121. monkeybot-3.0.0/evals/smoke_agent/skills/browser/SKILL.md +8 -0
  122. monkeybot-3.0.0/evals/smoke_agent/uv.lock +2332 -0
  123. monkeybot-3.0.0/evals/suites/smoke.yaml +19 -0
  124. monkeybot-3.0.0/evals/test_assertions.py +166 -0
  125. monkeybot-3.0.0/evals/test_diff.py +86 -0
  126. monkeybot-3.0.0/evals/test_report.py +156 -0
  127. monkeybot-3.0.0/evals/test_scorer.py +53 -0
  128. monkeybot-3.0.0/examples/README.md +34 -0
  129. monkeybot-3.0.0/examples/agentcore/handler.py +113 -0
  130. monkeybot-3.0.0/examples/agentcore/runtime_app.py +104 -0
  131. monkeybot-3.0.0/examples/agentengine/handler.py +78 -0
  132. monkeybot-3.0.0/examples/cloud-functions/main.py +77 -0
  133. monkeybot-3.0.0/examples/lambda/handler.py +95 -0
  134. monkeybot-3.0.0/examples/skills/browser/SKILL.md +68 -0
  135. monkeybot-3.0.0/examples/skills/diagnostics/README.md +250 -0
  136. monkeybot-3.0.0/examples/skills/diagnostics/SKILL.md +31 -0
  137. monkeybot-3.0.0/examples/skills/diagnostics/diagnostics.py +127 -0
  138. monkeybot-3.0.0/examples/skills/image-generator/SKILL.md +72 -0
  139. monkeybot-3.0.0/examples/skills/image-generator/generate_image.py +214 -0
  140. monkeybot-3.0.0/integrations/browser-mcp/pyproject.toml +25 -0
  141. monkeybot-3.0.0/integrations/browser-mcp/scripts/agentcore_smoke.py +47 -0
  142. monkeybot-3.0.0/integrations/browser-mcp/src/browser_mcp/agentcore.py +73 -0
  143. monkeybot-3.0.0/integrations/browser-mcp/src/browser_mcp/playbooks.py +91 -0
  144. monkeybot-3.0.0/integrations/browser-mcp/src/browser_mcp/playwright_helpers.py +344 -0
  145. monkeybot-3.0.0/integrations/browser-mcp/src/browser_mcp/screenshots.py +57 -0
  146. monkeybot-3.0.0/integrations/browser-mcp/src/browser_mcp/server.py +536 -0
  147. monkeybot-3.0.0/integrations/browser-mcp/tests/test_agentcore.py +348 -0
  148. monkeybot-3.0.0/integrations/browser-mcp/tests/test_in_app_cdp.py +208 -0
  149. monkeybot-3.0.0/integrations/browser-mcp/tests/test_indexed_tools.py +120 -0
  150. monkeybot-3.0.0/integrations/browser-mcp/tests/test_playbooks.py +110 -0
  151. monkeybot-3.0.0/integrations/browser-mcp/tests/test_playwright_helpers.py +145 -0
  152. monkeybot-3.0.0/integrations/browser-mcp/tests/test_screenshots.py +61 -0
  153. monkeybot-3.0.0/integrations/browser-mcp/tests/test_server_shutdown.py +117 -0
  154. monkeybot-3.0.0/integrations/browser-mcp/uv.lock +1153 -0
  155. monkeybot-3.0.0/pyproject.toml +140 -0
  156. monkeybot-3.0.0/pytest.ini +15 -0
  157. monkeybot-3.0.0/scripts/precommit-pytest.sh +28 -0
  158. monkeybot-3.0.0/scripts/release.py +238 -0
  159. monkeybot-3.0.0/src/monkeybot/__init__.py +8 -0
  160. monkeybot-3.0.0/src/monkeybot/core/__init__.py +19 -0
  161. monkeybot-3.0.0/src/monkeybot/core/attachments/__init__.py +28 -0
  162. monkeybot-3.0.0/src/monkeybot/core/attachments/catalog.py +63 -0
  163. monkeybot-3.0.0/src/monkeybot/core/attachments/freeze.py +170 -0
  164. monkeybot-3.0.0/src/monkeybot/core/attachments/store.py +185 -0
  165. monkeybot-3.0.0/src/monkeybot/core/attachments/text.py +84 -0
  166. monkeybot-3.0.0/src/monkeybot/core/attachments/tools.py +41 -0
  167. monkeybot-3.0.0/src/monkeybot/core/bootstrap.py +299 -0
  168. monkeybot-3.0.0/src/monkeybot/core/config/__init__.py +75 -0
  169. monkeybot-3.0.0/src/monkeybot/core/config/runtime_env.py +331 -0
  170. monkeybot-3.0.0/src/monkeybot/core/config/settings.py +426 -0
  171. monkeybot-3.0.0/src/monkeybot/core/config/validation.py +255 -0
  172. monkeybot-3.0.0/src/monkeybot/core/config/yaml_loader.py +39 -0
  173. monkeybot-3.0.0/src/monkeybot/core/context/__init__.py +949 -0
  174. monkeybot-3.0.0/src/monkeybot/core/context/epoch.py +243 -0
  175. monkeybot-3.0.0/src/monkeybot/core/context/tool_result_ingress.py +315 -0
  176. monkeybot-3.0.0/src/monkeybot/core/context/tool_shapers.py +366 -0
  177. monkeybot-3.0.0/src/monkeybot/core/knowledge/__init__.py +16 -0
  178. monkeybot-3.0.0/src/monkeybot/core/knowledge/captions.py +198 -0
  179. monkeybot-3.0.0/src/monkeybot/core/knowledge/chunking.py +880 -0
  180. monkeybot-3.0.0/src/monkeybot/core/knowledge/config.py +259 -0
  181. monkeybot-3.0.0/src/monkeybot/core/knowledge/embeddings/__init__.py +25 -0
  182. monkeybot-3.0.0/src/monkeybot/core/knowledge/embeddings/base.py +248 -0
  183. monkeybot-3.0.0/src/monkeybot/core/knowledge/embeddings/factory.py +206 -0
  184. monkeybot-3.0.0/src/monkeybot/core/knowledge/embeddings/gemini.py +149 -0
  185. monkeybot-3.0.0/src/monkeybot/core/knowledge/embeddings/nvidia.py +69 -0
  186. monkeybot-3.0.0/src/monkeybot/core/knowledge/embeddings/openai_compat.py +116 -0
  187. monkeybot-3.0.0/src/monkeybot/core/knowledge/embeddings/sanitize.py +27 -0
  188. monkeybot-3.0.0/src/monkeybot/core/knowledge/evidence_guard.py +275 -0
  189. monkeybot-3.0.0/src/monkeybot/core/knowledge/extractors.py +364 -0
  190. monkeybot-3.0.0/src/monkeybot/core/knowledge/fusion.py +419 -0
  191. monkeybot-3.0.0/src/monkeybot/core/knowledge/hook.py +417 -0
  192. monkeybot-3.0.0/src/monkeybot/core/knowledge/indexer.py +680 -0
  193. monkeybot-3.0.0/src/monkeybot/core/knowledge/links.py +175 -0
  194. monkeybot-3.0.0/src/monkeybot/core/knowledge/salience.py +207 -0
  195. monkeybot-3.0.0/src/monkeybot/core/knowledge/sqlite_index.py +767 -0
  196. monkeybot-3.0.0/src/monkeybot/core/knowledge/subsystem.py +298 -0
  197. monkeybot-3.0.0/src/monkeybot/core/knowledge/tool.py +29 -0
  198. monkeybot-3.0.0/src/monkeybot/core/knowledge/types.py +127 -0
  199. monkeybot-3.0.0/src/monkeybot/core/layout.py +292 -0
  200. monkeybot-3.0.0/src/monkeybot/core/llm/provider.py +302 -0
  201. monkeybot-3.0.0/src/monkeybot/core/llm/usage.py +76 -0
  202. monkeybot-3.0.0/src/monkeybot/core/lockfile_names.py +21 -0
  203. monkeybot-3.0.0/src/monkeybot/core/mcp/mcp_client.py +1244 -0
  204. monkeybot-3.0.0/src/monkeybot/core/mcp/ports_mcp.py +103 -0
  205. monkeybot-3.0.0/src/monkeybot/core/memory/__init__.py +12 -0
  206. monkeybot-3.0.0/src/monkeybot/core/memory/config.py +51 -0
  207. monkeybot-3.0.0/src/monkeybot/core/memory/hook.py +77 -0
  208. monkeybot-3.0.0/src/monkeybot/core/memory/ids.py +21 -0
  209. monkeybot-3.0.0/src/monkeybot/core/memory/ingest.py +187 -0
  210. monkeybot-3.0.0/src/monkeybot/core/memory/migrate_layout.py +439 -0
  211. monkeybot-3.0.0/src/monkeybot/core/memory/observability.py +119 -0
  212. monkeybot-3.0.0/src/monkeybot/core/memory/outbox.py +499 -0
  213. monkeybot-3.0.0/src/monkeybot/core/memory/palace.py +444 -0
  214. monkeybot-3.0.0/src/monkeybot/core/memory/subsystem.py +355 -0
  215. monkeybot-3.0.0/src/monkeybot/core/memory/uri.py +26 -0
  216. monkeybot-3.0.0/src/monkeybot/core/memory/writer.py +205 -0
  217. monkeybot-3.0.0/src/monkeybot/core/messages/tool_integrity.py +280 -0
  218. monkeybot-3.0.0/src/monkeybot/core/messages/transform_context.py +121 -0
  219. monkeybot-3.0.0/src/monkeybot/core/persistence/__init__.py +25 -0
  220. monkeybot-3.0.0/src/monkeybot/core/persistence/backends.py +292 -0
  221. monkeybot-3.0.0/src/monkeybot/core/persistence/durable_runs.py +372 -0
  222. monkeybot-3.0.0/src/monkeybot/core/persistence/errors.py +7 -0
  223. monkeybot-3.0.0/src/monkeybot/core/persistence/firestore.indexes.json +31 -0
  224. monkeybot-3.0.0/src/monkeybot/core/persistence/firestore.py +1445 -0
  225. monkeybot-3.0.0/src/monkeybot/core/persistence/history.py +324 -0
  226. monkeybot-3.0.0/src/monkeybot/core/persistence/postgres.py +1586 -0
  227. monkeybot-3.0.0/src/monkeybot/core/persistence/scheduled_loops.py +454 -0
  228. monkeybot-3.0.0/src/monkeybot/core/persistence/session_turn_locks.py +107 -0
  229. monkeybot-3.0.0/src/monkeybot/core/persistence/sqlite.py +466 -0
  230. monkeybot-3.0.0/src/monkeybot/core/persistence/sqlite_backend.py +108 -0
  231. monkeybot-3.0.0/src/monkeybot/core/persistence/sqlite_vector.py +481 -0
  232. monkeybot-3.0.0/src/monkeybot/core/persistence/thread_summary.py +366 -0
  233. monkeybot-3.0.0/src/monkeybot/core/persistence/transcript.py +289 -0
  234. monkeybot-3.0.0/src/monkeybot/core/persistence/transcript_analyzer.py +849 -0
  235. monkeybot-3.0.0/src/monkeybot/core/persistence/usage.py +220 -0
  236. monkeybot-3.0.0/src/monkeybot/core/prompts/harness_prompt.py +183 -0
  237. monkeybot-3.0.0/src/monkeybot/core/prompts/headings.py +58 -0
  238. monkeybot-3.0.0/src/monkeybot/core/prompts/prompt.py +203 -0
  239. monkeybot-3.0.0/src/monkeybot/core/runtime/__init__.py +5 -0
  240. monkeybot-3.0.0/src/monkeybot/core/runtime/context_budget.py +237 -0
  241. monkeybot-3.0.0/src/monkeybot/core/runtime/doom_loop.py +121 -0
  242. monkeybot-3.0.0/src/monkeybot/core/runtime/events.py +1067 -0
  243. monkeybot-3.0.0/src/monkeybot/core/runtime/history_compaction.py +407 -0
  244. monkeybot-3.0.0/src/monkeybot/core/runtime/loop.py +164 -0
  245. monkeybot-3.0.0/src/monkeybot/core/runtime/loop_hooks.py +133 -0
  246. monkeybot-3.0.0/src/monkeybot/core/runtime/loop_messages.py +261 -0
  247. monkeybot-3.0.0/src/monkeybot/core/runtime/loop_ports.py +17 -0
  248. monkeybot-3.0.0/src/monkeybot/core/runtime/loop_usage.py +166 -0
  249. monkeybot-3.0.0/src/monkeybot/core/runtime/realtime_loop.py +692 -0
  250. monkeybot-3.0.0/src/monkeybot/core/runtime/tool_batch.py +147 -0
  251. monkeybot-3.0.0/src/monkeybot/core/runtime/tool_dispatch.py +1037 -0
  252. monkeybot-3.0.0/src/monkeybot/core/runtime/turn_loop.py +1429 -0
  253. monkeybot-3.0.0/src/monkeybot/core/subagents/progress_publish.py +183 -0
  254. monkeybot-3.0.0/src/monkeybot/core/subagents/subagent_proto.py +371 -0
  255. monkeybot-3.0.0/src/monkeybot/core/subagents/subagent_worker.py +496 -0
  256. monkeybot-3.0.0/src/monkeybot/core/subagents/worker_pool.py +635 -0
  257. monkeybot-3.0.0/src/monkeybot/core/tools/core_tool_executor.py +2170 -0
  258. monkeybot-3.0.0/src/monkeybot/core/tools/fs_isolation.py +316 -0
  259. monkeybot-3.0.0/src/monkeybot/core/tools/inspector.py +277 -0
  260. monkeybot-3.0.0/src/monkeybot/core/tools/patch.py +567 -0
  261. monkeybot-3.0.0/src/monkeybot/core/tools/permission.py +291 -0
  262. monkeybot-3.0.0/src/monkeybot/core/tools/sandbox_executor.py +357 -0
  263. monkeybot-3.0.0/src/monkeybot/core/tools/spill_inventory.py +518 -0
  264. monkeybot-3.0.0/src/monkeybot/core/tools/terminal.py +756 -0
  265. monkeybot-3.0.0/src/monkeybot/core/tools/tool_hint.py +128 -0
  266. monkeybot-3.0.0/src/monkeybot/core/tools/tool_kind.py +39 -0
  267. monkeybot-3.0.0/src/monkeybot/core/tools/workspace_service.py +1486 -0
  268. monkeybot-3.0.0/src/monkeybot/core/types/types_tools.py +45 -0
  269. monkeybot-3.0.0/src/monkeybot/core/workspace/gcs.py +144 -0
  270. monkeybot-3.0.0/src/monkeybot/core/workspace/local.py +173 -0
  271. monkeybot-3.0.0/src/monkeybot/core/workspace/protocol.py +52 -0
  272. monkeybot-3.0.0/src/monkeybot/core/workspace/s3.py +169 -0
  273. monkeybot-3.0.0/src/monkeybot/core/workspace_layout.py +19 -0
  274. monkeybot-3.0.0/src/monkeybot/gateway/bootstrap.py +67 -0
  275. monkeybot-3.0.0/src/monkeybot/gateway/main.py +50 -0
  276. monkeybot-3.0.0/src/monkeybot/gateway/realtime/__init__.py +44 -0
  277. monkeybot-3.0.0/src/monkeybot/gateway/realtime/app.py +131 -0
  278. monkeybot-3.0.0/src/monkeybot/gateway/realtime/deps.py +54 -0
  279. monkeybot-3.0.0/src/monkeybot/gateway/realtime/manager.py +101 -0
  280. monkeybot-3.0.0/src/monkeybot/gateway/realtime/metrics.py +147 -0
  281. monkeybot-3.0.0/src/monkeybot/gateway/realtime/routes.py +906 -0
  282. monkeybot-3.0.0/src/monkeybot/gateway/realtime/session.py +236 -0
  283. monkeybot-3.0.0/src/monkeybot/gateway/realtime_main.py +51 -0
  284. monkeybot-3.0.0/src/monkeybot/gateway/sse/app.py +814 -0
  285. monkeybot-3.0.0/src/monkeybot/gateway/sse/loop_port.py +34 -0
  286. monkeybot-3.0.0/src/monkeybot/gateway/sse/models.py +215 -0
  287. monkeybot-3.0.0/src/monkeybot/gateway/sse/routes.py +1207 -0
  288. monkeybot-3.0.0/src/monkeybot/gateway/sse/scheduler_routes.py +207 -0
  289. monkeybot-3.0.0/src/monkeybot/gateway/sse/session_bus.py +393 -0
  290. monkeybot-3.0.0/src/monkeybot/observability/__init__.py +240 -0
  291. monkeybot-3.0.0/src/monkeybot/observability/instrumentation.py +151 -0
  292. monkeybot-3.0.0/src/monkeybot/observability/spans.py +473 -0
  293. monkeybot-3.0.0/src/monkeybot/observability/sqlite_exporter.py +722 -0
  294. monkeybot-3.0.0/src/monkeybot/providers/__init__.py +21 -0
  295. monkeybot-3.0.0/src/monkeybot/providers/_openai_compat.py +715 -0
  296. monkeybot-3.0.0/src/monkeybot/providers/_utils.py +650 -0
  297. monkeybot-3.0.0/src/monkeybot/providers/bedrock.py +142 -0
  298. monkeybot-3.0.0/src/monkeybot/providers/claude.py +127 -0
  299. monkeybot-3.0.0/src/monkeybot/providers/gemini.py +780 -0
  300. monkeybot-3.0.0/src/monkeybot/providers/model_capabilities.py +52 -0
  301. monkeybot-3.0.0/src/monkeybot/providers/ollama.py +181 -0
  302. monkeybot-3.0.0/src/monkeybot/providers/openai.py +127 -0
  303. monkeybot-3.0.0/src/monkeybot/providers/openrouter.py +106 -0
  304. monkeybot-3.0.0/src/monkeybot/providers/pricing.py +100 -0
  305. monkeybot-3.0.0/src/monkeybot/providers/vertex_claude.py +144 -0
  306. monkeybot-3.0.0/src/monkeybot/scheduler/worker.py +91 -0
  307. monkeybot-3.0.0/src/monkeybot/todo_list/__init__.py +45 -0
  308. monkeybot-3.0.0/src/monkeybot/todo_list/store.py +264 -0
  309. monkeybot-3.0.0/src/monkeybot/todo_list/tool.py +132 -0
  310. monkeybot-3.0.0/tests/cli/test_main.py +111 -0
  311. monkeybot-3.0.0/tests/conftest.py +91 -0
  312. monkeybot-3.0.0/tests/core/fixtures/bitbucket_dc_style_pr.diff +456 -0
  313. monkeybot-3.0.0/tests/core/memory/helpers.py +28 -0
  314. monkeybot-3.0.0/tests/core/memory/in_memory_palace.py +107 -0
  315. monkeybot-3.0.0/tests/core/memory/test_mempalace.py +485 -0
  316. monkeybot-3.0.0/tests/core/memory/test_review_fixes.py +1234 -0
  317. monkeybot-3.0.0/tests/core/test_agent_layout.py +267 -0
  318. monkeybot-3.0.0/tests/core/test_attachment_freeze.py +130 -0
  319. monkeybot-3.0.0/tests/core/test_bootstrap.py +394 -0
  320. monkeybot-3.0.0/tests/core/test_config_extensions.py +554 -0
  321. monkeybot-3.0.0/tests/core/test_context.py +687 -0
  322. monkeybot-3.0.0/tests/core/test_context_budget.py +167 -0
  323. monkeybot-3.0.0/tests/core/test_context_epoch.py +268 -0
  324. monkeybot-3.0.0/tests/core/test_core_tool_executor.py +4306 -0
  325. monkeybot-3.0.0/tests/core/test_doom_loop.py +506 -0
  326. monkeybot-3.0.0/tests/core/test_durable_events.py +103 -0
  327. monkeybot-3.0.0/tests/core/test_durable_runs.py +217 -0
  328. monkeybot-3.0.0/tests/core/test_empty_completion.py +168 -0
  329. monkeybot-3.0.0/tests/core/test_events.py +622 -0
  330. monkeybot-3.0.0/tests/core/test_evidence_guard.py +392 -0
  331. monkeybot-3.0.0/tests/core/test_firestore_history.py +352 -0
  332. monkeybot-3.0.0/tests/core/test_fs_isolation.py +242 -0
  333. monkeybot-3.0.0/tests/core/test_gemini_history_replay.py +327 -0
  334. monkeybot-3.0.0/tests/core/test_harness_prompt.py +162 -0
  335. monkeybot-3.0.0/tests/core/test_history.py +366 -0
  336. monkeybot-3.0.0/tests/core/test_history_compaction_split.py +120 -0
  337. monkeybot-3.0.0/tests/core/test_inspector.py +251 -0
  338. monkeybot-3.0.0/tests/core/test_knowledge_chunking.py +283 -0
  339. monkeybot-3.0.0/tests/core/test_knowledge_chunking_rank.py +86 -0
  340. monkeybot-3.0.0/tests/core/test_knowledge_config.py +185 -0
  341. monkeybot-3.0.0/tests/core/test_knowledge_embeddings.py +332 -0
  342. monkeybot-3.0.0/tests/core/test_knowledge_fts.py +218 -0
  343. monkeybot-3.0.0/tests/core/test_knowledge_fusion.py +475 -0
  344. monkeybot-3.0.0/tests/core/test_knowledge_fusion_ann.py +166 -0
  345. monkeybot-3.0.0/tests/core/test_knowledge_hook.py +71 -0
  346. monkeybot-3.0.0/tests/core/test_knowledge_indexer.py +955 -0
  347. monkeybot-3.0.0/tests/core/test_knowledge_links.py +106 -0
  348. monkeybot-3.0.0/tests/core/test_knowledge_media.py +336 -0
  349. monkeybot-3.0.0/tests/core/test_knowledge_salience.py +211 -0
  350. monkeybot-3.0.0/tests/core/test_knowledge_single_writer.py +291 -0
  351. monkeybot-3.0.0/tests/core/test_knowledge_subsystem.py +102 -0
  352. monkeybot-3.0.0/tests/core/test_knowledge_vectors.py +283 -0
  353. monkeybot-3.0.0/tests/core/test_loop.py +2761 -0
  354. monkeybot-3.0.0/tests/core/test_loop_hooks.py +584 -0
  355. monkeybot-3.0.0/tests/core/test_loop_observability.py +196 -0
  356. monkeybot-3.0.0/tests/core/test_loop_transcript.py +270 -0
  357. monkeybot-3.0.0/tests/core/test_mcp_client.py +993 -0
  358. monkeybot-3.0.0/tests/core/test_memory_layout_migrate.py +210 -0
  359. monkeybot-3.0.0/tests/core/test_message_pipeline.py +143 -0
  360. monkeybot-3.0.0/tests/core/test_patch.py +403 -0
  361. monkeybot-3.0.0/tests/core/test_pricing.py +23 -0
  362. monkeybot-3.0.0/tests/core/test_progress_publish.py +255 -0
  363. monkeybot-3.0.0/tests/core/test_prompt.py +336 -0
  364. monkeybot-3.0.0/tests/core/test_realtime_loop.py +458 -0
  365. monkeybot-3.0.0/tests/core/test_run_command_parse.py +89 -0
  366. monkeybot-3.0.0/tests/core/test_runtime_env.py +396 -0
  367. monkeybot-3.0.0/tests/core/test_sandbox_executor.py +798 -0
  368. monkeybot-3.0.0/tests/core/test_spill_dynamic.py +386 -0
  369. monkeybot-3.0.0/tests/core/test_spill_inventory.py +81 -0
  370. monkeybot-3.0.0/tests/core/test_storage_backends.py +1238 -0
  371. monkeybot-3.0.0/tests/core/test_subagent_proto.py +490 -0
  372. monkeybot-3.0.0/tests/core/test_subagent_trace_propagation.py +557 -0
  373. monkeybot-3.0.0/tests/core/test_subagent_worker_paths.py +402 -0
  374. monkeybot-3.0.0/tests/core/test_terminal.py +989 -0
  375. monkeybot-3.0.0/tests/core/test_thread_summary_wire.py +579 -0
  376. monkeybot-3.0.0/tests/core/test_tool_def_schema.py +49 -0
  377. monkeybot-3.0.0/tests/core/test_tool_integrity.py +198 -0
  378. monkeybot-3.0.0/tests/core/test_tool_result_ingress.py +208 -0
  379. monkeybot-3.0.0/tests/core/test_transcript.py +242 -0
  380. monkeybot-3.0.0/tests/core/test_transcript_analyzer.py +371 -0
  381. monkeybot-3.0.0/tests/core/test_truncated_tool_batch.py +175 -0
  382. monkeybot-3.0.0/tests/core/test_usage.py +269 -0
  383. monkeybot-3.0.0/tests/core/test_worker_pool.py +693 -0
  384. monkeybot-3.0.0/tests/core/test_workspace_layout.py +75 -0
  385. monkeybot-3.0.0/tests/core/test_workspace_symlinks.py +67 -0
  386. monkeybot-3.0.0/tests/core/test_workspace_write_scope.py +114 -0
  387. monkeybot-3.0.0/tests/evals/scenario_runner.py +183 -0
  388. monkeybot-3.0.0/tests/evals/scenarios/tool_glob_grep.yaml +24 -0
  389. monkeybot-3.0.0/tests/evals/scenarios/tool_load_file.yaml +17 -0
  390. monkeybot-3.0.0/tests/evals/scenarios/tool_loops.yaml +24 -0
  391. monkeybot-3.0.0/tests/evals/scenarios/tool_replace_apply_patch.yaml +32 -0
  392. monkeybot-3.0.0/tests/evals/scenarios/tool_run_command.yaml +17 -0
  393. monkeybot-3.0.0/tests/evals/scenarios/tool_search_knowledge.yaml +17 -0
  394. monkeybot-3.0.0/tests/evals/scenarios/tool_search_memory.yaml +17 -0
  395. monkeybot-3.0.0/tests/evals/scenarios/tool_todo_list.yaml +18 -0
  396. monkeybot-3.0.0/tests/evals/scenarios/tool_web_search.yaml +17 -0
  397. monkeybot-3.0.0/tests/evals/scenarios/tool_write.yaml +18 -0
  398. monkeybot-3.0.0/tests/evals/test_agent_behavior.py +48 -0
  399. monkeybot-3.0.0/tests/evals/test_memory_knowledge_routing.py +70 -0
  400. monkeybot-3.0.0/tests/gateway/realtime/test_app.py +40 -0
  401. monkeybot-3.0.0/tests/gateway/realtime/test_manager.py +133 -0
  402. monkeybot-3.0.0/tests/gateway/realtime/test_routes_client_text.py +249 -0
  403. monkeybot-3.0.0/tests/gateway/sse/test_create_session_model.py +282 -0
  404. monkeybot-3.0.0/tests/gateway/sse/test_routes.py +682 -0
  405. monkeybot-3.0.0/tests/gateway/sse/test_scheduler_routes.py +166 -0
  406. monkeybot-3.0.0/tests/gateway/sse/test_session_bus.py +231 -0
  407. monkeybot-3.0.0/tests/gateway/sse/test_transcript_wiring.py +155 -0
  408. monkeybot-3.0.0/tests/gateway/test_otel_lifespan.py +107 -0
  409. monkeybot-3.0.0/tests/gateway/test_resolve_provider.py +74 -0
  410. monkeybot-3.0.0/tests/gateway/test_sse_events.py +113 -0
  411. monkeybot-3.0.0/tests/gateway/test_subagent_event_publisher.py +43 -0
  412. monkeybot-3.0.0/tests/integration/test_observability_integration.py +382 -0
  413. monkeybot-3.0.0/tests/observability/test_init.py +154 -0
  414. monkeybot-3.0.0/tests/observability/test_sqlite_exporter.py +655 -0
  415. monkeybot-3.0.0/tests/providers/conftest.py +79 -0
  416. monkeybot-3.0.0/tests/providers/test_anthropic_cache.py +743 -0
  417. monkeybot-3.0.0/tests/providers/test_bedrock_estimate.py +48 -0
  418. monkeybot-3.0.0/tests/providers/test_gemini_usage.py +355 -0
  419. monkeybot-3.0.0/tests/providers/test_model_capabilities.py +40 -0
  420. monkeybot-3.0.0/tests/providers/test_ollama.py +125 -0
  421. monkeybot-3.0.0/tests/providers/test_openai_compat_usage.py +514 -0
  422. monkeybot-3.0.0/tests/providers/test_openai_history.py +356 -0
  423. monkeybot-3.0.0/tests/providers/test_pricing.py +97 -0
  424. monkeybot-3.0.0/tests/providers/test_sonnet5_sampling.py +357 -0
  425. monkeybot-3.0.0/tests/skills/test_generate_image_script.py +208 -0
  426. monkeybot-3.0.0/tests/test_cold_start.py +84 -0
  427. monkeybot-3.0.0/tests/test_packaging_config.py +84 -0
  428. monkeybot-3.0.0/tests/test_release_script.py +190 -0
  429. monkeybot-3.0.0/tests/todo_list/test_todo_list.py +308 -0
  430. monkeybot-3.0.0/tests/web_search/test_web_search.py +293 -0
  431. monkeybot-3.0.0/uv.lock +5429 -0
  432. monkeybot-2.1.1/.dockerignore +0 -17
  433. monkeybot-2.1.1/.github/workflows/live-eval-smoke.yml +0 -158
  434. monkeybot-2.1.1/.github/workflows/prepare-release.yml +0 -36
  435. monkeybot-2.1.1/.github/workflows/publish-release.yml +0 -98
  436. monkeybot-2.1.1/.gitignore +0 -64
  437. monkeybot-2.1.1/AGENTS.md +0 -34
  438. monkeybot-2.1.1/BACKLOG.md +0 -77
  439. monkeybot-2.1.1/CHANGELOG.md +0 -135
  440. monkeybot-2.1.1/PKG-INFO +0 -318
  441. monkeybot-2.1.1/README.md +0 -237
  442. monkeybot-2.1.1/cli/pyproject.toml +0 -42
  443. monkeybot-2.1.1/cli/skills/monkeybot/SKILL.md +0 -197
  444. monkeybot-2.1.1/cli/skills/monkeybot/references/config-sections.md +0 -160
  445. monkeybot-2.1.1/cli/src/monkeybot_cli/__init__.py +0 -3
  446. monkeybot-2.1.1/cli/src/monkeybot_cli/chat_session.py +0 -911
  447. monkeybot-2.1.1/cli/src/monkeybot_cli/chat_status_bar.py +0 -205
  448. monkeybot-2.1.1/cli/src/monkeybot_cli/chat_tool_display.py +0 -334
  449. monkeybot-2.1.1/cli/src/monkeybot_cli/chat_tui.py +0 -1491
  450. monkeybot-2.1.1/cli/src/monkeybot_cli/chat_tui_widgets.py +0 -996
  451. monkeybot-2.1.1/cli/src/monkeybot_cli/commands/chat.py +0 -817
  452. monkeybot-2.1.1/cli/src/monkeybot_cli/commands/doctor.py +0 -293
  453. monkeybot-2.1.1/cli/src/monkeybot_cli/commands/run_cmd.py +0 -41
  454. monkeybot-2.1.1/cli/src/monkeybot_cli/commands/validate.py +0 -385
  455. monkeybot-2.1.1/cli/src/monkeybot_cli/compat.py +0 -7
  456. monkeybot-2.1.1/cli/src/monkeybot_cli/config_resolve.py +0 -55
  457. monkeybot-2.1.1/cli/src/monkeybot_cli/extras_catalog.py +0 -95
  458. monkeybot-2.1.1/cli/src/monkeybot_cli/gateway_health.py +0 -34
  459. monkeybot-2.1.1/cli/src/monkeybot_cli/main.py +0 -38
  460. monkeybot-2.1.1/cli/src/monkeybot_cli/opensandbox_lifecycle.py +0 -314
  461. monkeybot-2.1.1/cli/src/monkeybot_cli/providers.py +0 -112
  462. monkeybot-2.1.1/cli/src/monkeybot_cli/realtime/gateway_manager.py +0 -142
  463. monkeybot-2.1.1/cli/src/monkeybot_cli/realtime/session.py +0 -256
  464. monkeybot-2.1.1/cli/src/monkeybot_cli/realtime/session_controller.py +0 -501
  465. monkeybot-2.1.1/cli/src/monkeybot_cli/realtime/talk_ui.py +0 -243
  466. monkeybot-2.1.1/cli/src/monkeybot_cli/runtime_python.py +0 -91
  467. monkeybot-2.1.1/cli/src/monkeybot_cli/scaffold.py +0 -287
  468. monkeybot-2.1.1/cli/src/monkeybot_cli/scaffold_defaults/command_allowlist.yaml +0 -57
  469. monkeybot-2.1.1/cli/src/monkeybot_cli/scaffold_defaults/env.example +0 -35
  470. monkeybot-2.1.1/cli/src/monkeybot_cli/scaffold_defaults/mcp.json +0 -49
  471. monkeybot-2.1.1/cli/src/monkeybot_cli/scaffold_defaults/monkeybot.example.yaml +0 -191
  472. monkeybot-2.1.1/cli/src/monkeybot_cli/scaffold_defaults/setup-workspace.sh +0 -24
  473. monkeybot-2.1.1/cli/tests/test_chat_errors.py +0 -218
  474. monkeybot-2.1.1/cli/tests/test_chat_session.py +0 -363
  475. monkeybot-2.1.1/cli/tests/test_chat_tui.py +0 -1243
  476. monkeybot-2.1.1/cli/tests/test_cli.py +0 -132
  477. monkeybot-2.1.1/cli/tests/test_config_resolve.py +0 -21
  478. monkeybot-2.1.1/cli/tests/test_doctor.py +0 -49
  479. monkeybot-2.1.1/cli/tests/test_extras_catalog.py +0 -87
  480. monkeybot-2.1.1/cli/tests/test_opensandbox_lifecycle.py +0 -41
  481. monkeybot-2.1.1/cli/tests/test_realtime_session_controller.py +0 -301
  482. monkeybot-2.1.1/cli/tests/test_run_cmd.py +0 -79
  483. monkeybot-2.1.1/cli/tests/test_runtime_python.py +0 -109
  484. monkeybot-2.1.1/cli/tests/test_scaffold.py +0 -115
  485. monkeybot-2.1.1/cli/uv.lock +0 -1612
  486. monkeybot-2.1.1/demo_agent/.env.example +0 -21
  487. monkeybot-2.1.1/demo_agent/.gitignore +0 -9
  488. monkeybot-2.1.1/demo_agent/docker-compose.langfuse.yml +0 -159
  489. monkeybot-2.1.1/demo_agent/docker-compose.observability.yml +0 -31
  490. monkeybot-2.1.1/demo_agent/firebase.json +0 -11
  491. monkeybot-2.1.1/demo_agent/firestore.indexes.json +0 -14
  492. monkeybot-2.1.1/demo_agent/pyproject.toml +0 -17
  493. monkeybot-2.1.1/demo_agent/run.sh +0 -532
  494. monkeybot-2.1.1/demo_agent/uv.lock +0 -2782
  495. monkeybot-2.1.1/demo_agent/workspace/skills/browser/SKILL.md +0 -68
  496. monkeybot-2.1.1/demo_agent/workspace/skills/image-generator/SKILL.md +0 -56
  497. monkeybot-2.1.1/demo_agent/workspace/skills/image-generator/generate_image.py +0 -199
  498. monkeybot-2.1.1/docker/Dockerfile +0 -30
  499. monkeybot-2.1.1/docker/Dockerfile.demo-sandbox +0 -8
  500. monkeybot-2.1.1/docker/docker-compose.sandbox.yml +0 -49
  501. monkeybot-2.1.1/docker/opensandbox.docker.toml +0 -46
  502. monkeybot-2.1.1/docker-compose.evals.yml +0 -24
  503. monkeybot-2.1.1/docker-compose.yml +0 -29
  504. monkeybot-2.1.1/docs/browser-mcp.md +0 -160
  505. monkeybot-2.1.1/docs/chat-tui-improvements.md +0 -220
  506. monkeybot-2.1.1/docs/cli-pypi-distribution.md +0 -264
  507. monkeybot-2.1.1/docs/cloud-deployment-design.md +0 -555
  508. monkeybot-2.1.1/docs/deploy-aws-agentcore.md +0 -103
  509. monkeybot-2.1.1/docs/deploy-pattern-a-container.md +0 -361
  510. monkeybot-2.1.1/docs/deploy-pattern-b-serverless.md +0 -332
  511. monkeybot-2.1.1/docs/deploy-pattern-c-agent-platform.md +0 -209
  512. monkeybot-2.1.1/docs/deploy-pattern-d-realtime.md +0 -300
  513. monkeybot-2.1.1/docs/eval-pr-scorecard.md +0 -417
  514. monkeybot-2.1.1/docs/features.md +0 -780
  515. monkeybot-2.1.1/docs/getting-started.md +0 -147
  516. monkeybot-2.1.1/docs/mcp.md +0 -195
  517. monkeybot-2.1.1/docs/monkeycleaner-cli-prettier.md +0 -38
  518. monkeybot-2.1.1/docs/observability-runbook.md +0 -57
  519. monkeybot-2.1.1/docs/progressive-mcp-tools.md +0 -263
  520. monkeybot-2.1.1/docs/realtime-streaming-design.md +0 -542
  521. monkeybot-2.1.1/docs/skills.md +0 -50
  522. monkeybot-2.1.1/docs/sse-gateway-ui.md +0 -272
  523. monkeybot-2.1.1/evals/Dockerfile +0 -20
  524. monkeybot-2.1.1/evals/assertions.py +0 -71
  525. monkeybot-2.1.1/evals/main.py +0 -259
  526. monkeybot-2.1.1/evals/models.py +0 -125
  527. monkeybot-2.1.1/evals/persistence.py +0 -186
  528. monkeybot-2.1.1/evals/pyproject.toml +0 -32
  529. monkeybot-2.1.1/evals/report.py +0 -328
  530. monkeybot-2.1.1/evals/requirements.txt +0 -9
  531. monkeybot-2.1.1/evals/runner.py +0 -216
  532. monkeybot-2.1.1/evals/scenario_loader.py +0 -98
  533. monkeybot-2.1.1/evals/scenarios/mcp/tool_invoke.yaml +0 -11
  534. monkeybot-2.1.1/evals/scenarios/memory/recall_cross_session.yaml +0 -12
  535. monkeybot-2.1.1/evals/scenarios/memory/recall_single_session.yaml +0 -11
  536. monkeybot-2.1.1/evals/scenarios/operator/.gitkeep +0 -0
  537. monkeybot-2.1.1/evals/scenarios/tools/core_read.yaml +0 -11
  538. monkeybot-2.1.1/evals/scorer.py +0 -342
  539. monkeybot-2.1.1/evals/store.py +0 -60
  540. monkeybot-2.1.1/evals/suites/smoke.yaml +0 -12
  541. monkeybot-2.1.1/evals/test_assertions.py +0 -98
  542. monkeybot-2.1.1/evals/test_report.py +0 -122
  543. monkeybot-2.1.1/evals/uv.lock +0 -2153
  544. monkeybot-2.1.1/evals/ws_manager.py +0 -46
  545. monkeybot-2.1.1/examples/README.md +0 -63
  546. monkeybot-2.1.1/examples/agentcore/handler.py +0 -112
  547. monkeybot-2.1.1/examples/agentcore/runtime_app.py +0 -103
  548. monkeybot-2.1.1/examples/agentengine/handler.py +0 -77
  549. monkeybot-2.1.1/examples/cloud-functions/main.py +0 -76
  550. monkeybot-2.1.1/examples/lambda/handler.py +0 -79
  551. monkeybot-2.1.1/examples/skills/browser/SKILL.md +0 -14
  552. monkeybot-2.1.1/examples/skills/diagnostics/README.md +0 -264
  553. monkeybot-2.1.1/examples/skills/diagnostics/SKILL.md +0 -36
  554. monkeybot-2.1.1/examples/skills/diagnostics/diagnostics.py +0 -130
  555. monkeybot-2.1.1/examples/skills/image-generator/SKILL.md +0 -10
  556. monkeybot-2.1.1/examples/skills/image-generator/generate_image.py +0 -199
  557. monkeybot-2.1.1/integrations/browser-mcp/pyproject.toml +0 -22
  558. monkeybot-2.1.1/integrations/browser-mcp/src/browser_mcp/playbooks.py +0 -89
  559. monkeybot-2.1.1/integrations/browser-mcp/src/browser_mcp/screenshots.py +0 -63
  560. monkeybot-2.1.1/integrations/browser-mcp/src/browser_mcp/server.py +0 -351
  561. monkeybot-2.1.1/integrations/browser-mcp/tests/test_indexed_tools.py +0 -117
  562. monkeybot-2.1.1/integrations/browser-mcp/tests/test_playbooks.py +0 -103
  563. monkeybot-2.1.1/integrations/browser-mcp/tests/test_screenshots.py +0 -51
  564. monkeybot-2.1.1/integrations/browser-mcp/tests/test_server_shutdown.py +0 -104
  565. monkeybot-2.1.1/integrations/browser-mcp/uv.lock +0 -936
  566. monkeybot-2.1.1/monkeybot_config_example/command_allowlist.example.yaml +0 -61
  567. monkeybot-2.1.1/monkeybot_config_example/mcp.example.json +0 -49
  568. monkeybot-2.1.1/monkeybot_config_example/monkeybot.example.yaml +0 -209
  569. monkeybot-2.1.1/monkeybot_config_example/opensandbox.docker.example.toml +0 -51
  570. monkeybot-2.1.1/monkeybot_config_example/otel-collector.demo-dual.example.yaml +0 -46
  571. monkeybot-2.1.1/monkeybot_config_example/otel-collector.demo.example.yaml +0 -35
  572. monkeybot-2.1.1/pyproject.toml +0 -124
  573. monkeybot-2.1.1/pytest.ini +0 -16
  574. monkeybot-2.1.1/scripts/precommit-pytest.sh +0 -22
  575. monkeybot-2.1.1/scripts/release.py +0 -165
  576. monkeybot-2.1.1/scripts/verify_memory.py +0 -27
  577. monkeybot-2.1.1/src/monkeybot/__init__.py +0 -3
  578. monkeybot-2.1.1/src/monkeybot/core/__init__.py +0 -19
  579. monkeybot-2.1.1/src/monkeybot/core/attachments/__init__.py +0 -22
  580. monkeybot-2.1.1/src/monkeybot/core/attachments/catalog.py +0 -62
  581. monkeybot-2.1.1/src/monkeybot/core/attachments/freeze.py +0 -158
  582. monkeybot-2.1.1/src/monkeybot/core/attachments/store.py +0 -180
  583. monkeybot-2.1.1/src/monkeybot/core/attachments/text.py +0 -72
  584. monkeybot-2.1.1/src/monkeybot/core/attachments/tools.py +0 -54
  585. monkeybot-2.1.1/src/monkeybot/core/bootstrap.py +0 -242
  586. monkeybot-2.1.1/src/monkeybot/core/config/__init__.py +0 -71
  587. monkeybot-2.1.1/src/monkeybot/core/config/runtime_env.py +0 -262
  588. monkeybot-2.1.1/src/monkeybot/core/config/settings.py +0 -341
  589. monkeybot-2.1.1/src/monkeybot/core/config/validation.py +0 -249
  590. monkeybot-2.1.1/src/monkeybot/core/config/yaml_loader.py +0 -45
  591. monkeybot-2.1.1/src/monkeybot/core/context/__init__.py +0 -781
  592. monkeybot-2.1.1/src/monkeybot/core/context/curator.py +0 -255
  593. monkeybot-2.1.1/src/monkeybot/core/context/epoch.py +0 -226
  594. monkeybot-2.1.1/src/monkeybot/core/context/memory_prompt.py +0 -222
  595. monkeybot-2.1.1/src/monkeybot/core/context/tool_result_ingress.py +0 -290
  596. monkeybot-2.1.1/src/monkeybot/core/context/tool_shapers.py +0 -361
  597. monkeybot-2.1.1/src/monkeybot/core/llm/provider.py +0 -296
  598. monkeybot-2.1.1/src/monkeybot/core/llm/usage.py +0 -57
  599. monkeybot-2.1.1/src/monkeybot/core/mcp/mcp_client.py +0 -1215
  600. monkeybot-2.1.1/src/monkeybot/core/mcp/ports_mcp.py +0 -109
  601. monkeybot-2.1.1/src/monkeybot/core/memory/__init__.py +0 -24
  602. monkeybot-2.1.1/src/monkeybot/core/memory/hook.py +0 -413
  603. monkeybot-2.1.1/src/monkeybot/core/memory/index_format.py +0 -104
  604. monkeybot-2.1.1/src/monkeybot/core/memory/integrity.py +0 -180
  605. monkeybot-2.1.1/src/monkeybot/core/memory/organizer.py +0 -270
  606. monkeybot-2.1.1/src/monkeybot/core/memory/storage_ops.py +0 -139
  607. monkeybot-2.1.1/src/monkeybot/core/memory/subsystem.py +0 -91
  608. monkeybot-2.1.1/src/monkeybot/core/messages/tool_integrity.py +0 -262
  609. monkeybot-2.1.1/src/monkeybot/core/messages/transform_context.py +0 -84
  610. monkeybot-2.1.1/src/monkeybot/core/persistence/__init__.py +0 -17
  611. monkeybot-2.1.1/src/monkeybot/core/persistence/backends.py +0 -236
  612. monkeybot-2.1.1/src/monkeybot/core/persistence/durable_runs.py +0 -286
  613. monkeybot-2.1.1/src/monkeybot/core/persistence/firestore.py +0 -658
  614. monkeybot-2.1.1/src/monkeybot/core/persistence/history.py +0 -156
  615. monkeybot-2.1.1/src/monkeybot/core/persistence/postgres.py +0 -895
  616. monkeybot-2.1.1/src/monkeybot/core/persistence/scheduled_loops.py +0 -435
  617. monkeybot-2.1.1/src/monkeybot/core/persistence/session_turn_locks.py +0 -94
  618. monkeybot-2.1.1/src/monkeybot/core/persistence/sqlite.py +0 -218
  619. monkeybot-2.1.1/src/monkeybot/core/persistence/sqlite_backend.py +0 -74
  620. monkeybot-2.1.1/src/monkeybot/core/persistence/thread_summary.py +0 -61
  621. monkeybot-2.1.1/src/monkeybot/core/persistence/transcript.py +0 -194
  622. monkeybot-2.1.1/src/monkeybot/core/persistence/usage.py +0 -149
  623. monkeybot-2.1.1/src/monkeybot/core/prompts/harness_prompt.py +0 -197
  624. monkeybot-2.1.1/src/monkeybot/core/prompts/prompt.py +0 -215
  625. monkeybot-2.1.1/src/monkeybot/core/runtime/__init__.py +0 -1
  626. monkeybot-2.1.1/src/monkeybot/core/runtime/context_budget.py +0 -267
  627. monkeybot-2.1.1/src/monkeybot/core/runtime/events.py +0 -819
  628. monkeybot-2.1.1/src/monkeybot/core/runtime/loop.py +0 -2374
  629. monkeybot-2.1.1/src/monkeybot/core/runtime/realtime_loop.py +0 -654
  630. monkeybot-2.1.1/src/monkeybot/core/subagents/subagent_proto.py +0 -331
  631. monkeybot-2.1.1/src/monkeybot/core/subagents/subagent_worker.py +0 -441
  632. monkeybot-2.1.1/src/monkeybot/core/subagents/worker_pool.py +0 -403
  633. monkeybot-2.1.1/src/monkeybot/core/tools/core_tool_executor.py +0 -1548
  634. monkeybot-2.1.1/src/monkeybot/core/tools/inspector.py +0 -226
  635. monkeybot-2.1.1/src/monkeybot/core/tools/patch.py +0 -480
  636. monkeybot-2.1.1/src/monkeybot/core/tools/permission.py +0 -284
  637. monkeybot-2.1.1/src/monkeybot/core/tools/sandbox_executor.py +0 -255
  638. monkeybot-2.1.1/src/monkeybot/core/tools/spill_inventory.py +0 -35
  639. monkeybot-2.1.1/src/monkeybot/core/tools/terminal.py +0 -381
  640. monkeybot-2.1.1/src/monkeybot/core/tools/workspace_service.py +0 -710
  641. monkeybot-2.1.1/src/monkeybot/core/tools/workspace_tools.py +0 -116
  642. monkeybot-2.1.1/src/monkeybot/core/types/types_tools.py +0 -29
  643. monkeybot-2.1.1/src/monkeybot/core/workspace/gcs.py +0 -130
  644. monkeybot-2.1.1/src/monkeybot/core/workspace/local.py +0 -162
  645. monkeybot-2.1.1/src/monkeybot/core/workspace/protocol.py +0 -45
  646. monkeybot-2.1.1/src/monkeybot/core/workspace/s3.py +0 -151
  647. monkeybot-2.1.1/src/monkeybot/core/workspace_layout.py +0 -27
  648. monkeybot-2.1.1/src/monkeybot/gateway/bootstrap.py +0 -18
  649. monkeybot-2.1.1/src/monkeybot/gateway/main.py +0 -47
  650. monkeybot-2.1.1/src/monkeybot/gateway/realtime/__init__.py +0 -31
  651. monkeybot-2.1.1/src/monkeybot/gateway/realtime/app.py +0 -321
  652. monkeybot-2.1.1/src/monkeybot/gateway/realtime/deps.py +0 -52
  653. monkeybot-2.1.1/src/monkeybot/gateway/realtime/manager.py +0 -77
  654. monkeybot-2.1.1/src/monkeybot/gateway/realtime/metrics.py +0 -144
  655. monkeybot-2.1.1/src/monkeybot/gateway/realtime/routes.py +0 -864
  656. monkeybot-2.1.1/src/monkeybot/gateway/realtime/session.py +0 -232
  657. monkeybot-2.1.1/src/monkeybot/gateway/realtime_main.py +0 -49
  658. monkeybot-2.1.1/src/monkeybot/gateway/sse/app.py +0 -733
  659. monkeybot-2.1.1/src/monkeybot/gateway/sse/loop_port.py +0 -31
  660. monkeybot-2.1.1/src/monkeybot/gateway/sse/models.py +0 -177
  661. monkeybot-2.1.1/src/monkeybot/gateway/sse/routes.py +0 -1101
  662. monkeybot-2.1.1/src/monkeybot/gateway/sse/scheduler_routes.py +0 -200
  663. monkeybot-2.1.1/src/monkeybot/gateway/sse/session_bus.py +0 -226
  664. monkeybot-2.1.1/src/monkeybot/observability/__init__.py +0 -220
  665. monkeybot-2.1.1/src/monkeybot/observability/instrumentation.py +0 -153
  666. monkeybot-2.1.1/src/monkeybot/observability/spans.py +0 -455
  667. monkeybot-2.1.1/src/monkeybot/providers/__init__.py +0 -19
  668. monkeybot-2.1.1/src/monkeybot/providers/_openai_compat.py +0 -450
  669. monkeybot-2.1.1/src/monkeybot/providers/_utils.py +0 -473
  670. monkeybot-2.1.1/src/monkeybot/providers/bedrock.py +0 -145
  671. monkeybot-2.1.1/src/monkeybot/providers/claude.py +0 -125
  672. monkeybot-2.1.1/src/monkeybot/providers/gemini.py +0 -677
  673. monkeybot-2.1.1/src/monkeybot/providers/ollama.py +0 -152
  674. monkeybot-2.1.1/src/monkeybot/providers/openai.py +0 -127
  675. monkeybot-2.1.1/src/monkeybot/providers/pricing.py +0 -60
  676. monkeybot-2.1.1/src/monkeybot/providers/vertex_claude.py +0 -148
  677. monkeybot-2.1.1/src/monkeybot/scheduler/worker.py +0 -87
  678. monkeybot-2.1.1/testing/BENCH_NOTES.md +0 -226
  679. monkeybot-2.1.1/testing/bench.py +0 -560
  680. monkeybot-2.1.1/testing/bots/devbot/AGENT.md +0 -27
  681. monkeybot-2.1.1/testing/bots/devbot/MEMORY.md +0 -12
  682. monkeybot-2.1.1/testing/bots/devbot/config.yaml +0 -17
  683. monkeybot-2.1.1/testing/bots/devbot/skills/file-ops/SKILL.md +0 -24
  684. monkeybot-2.1.1/testing/bots/devbot/webhook.py +0 -20
  685. monkeybot-2.1.1/tests/cli/test_main.py +0 -45
  686. monkeybot-2.1.1/tests/conftest.py +0 -11
  687. monkeybot-2.1.1/tests/core/memory/fake_workspace_storage.py +0 -57
  688. monkeybot-2.1.1/tests/core/memory/test_hook_with_storage.py +0 -76
  689. monkeybot-2.1.1/tests/core/memory/test_index_format.py +0 -38
  690. monkeybot-2.1.1/tests/core/memory/test_organizer_with_storage.py +0 -88
  691. monkeybot-2.1.1/tests/core/memory/test_subsystem.py +0 -153
  692. monkeybot-2.1.1/tests/core/test_attachment_freeze.py +0 -124
  693. monkeybot-2.1.1/tests/core/test_bootstrap.py +0 -289
  694. monkeybot-2.1.1/tests/core/test_config_extensions.py +0 -417
  695. monkeybot-2.1.1/tests/core/test_context.py +0 -541
  696. monkeybot-2.1.1/tests/core/test_context_budget.py +0 -177
  697. monkeybot-2.1.1/tests/core/test_context_curator.py +0 -105
  698. monkeybot-2.1.1/tests/core/test_context_epoch.py +0 -220
  699. monkeybot-2.1.1/tests/core/test_core_tool_executor.py +0 -1861
  700. monkeybot-2.1.1/tests/core/test_doom_loop.py +0 -506
  701. monkeybot-2.1.1/tests/core/test_durable_events.py +0 -69
  702. monkeybot-2.1.1/tests/core/test_durable_runs.py +0 -190
  703. monkeybot-2.1.1/tests/core/test_events.py +0 -314
  704. monkeybot-2.1.1/tests/core/test_firestore_history.py +0 -98
  705. monkeybot-2.1.1/tests/core/test_gemini_history_replay.py +0 -217
  706. monkeybot-2.1.1/tests/core/test_harness_prompt.py +0 -152
  707. monkeybot-2.1.1/tests/core/test_history.py +0 -346
  708. monkeybot-2.1.1/tests/core/test_inspector.py +0 -225
  709. monkeybot-2.1.1/tests/core/test_loop.py +0 -2450
  710. monkeybot-2.1.1/tests/core/test_loop_hooks.py +0 -582
  711. monkeybot-2.1.1/tests/core/test_loop_observability.py +0 -195
  712. monkeybot-2.1.1/tests/core/test_loop_transcript.py +0 -240
  713. monkeybot-2.1.1/tests/core/test_mcp_client.py +0 -896
  714. monkeybot-2.1.1/tests/core/test_memory.py +0 -202
  715. monkeybot-2.1.1/tests/core/test_memory_hook.py +0 -473
  716. monkeybot-2.1.1/tests/core/test_memory_organizer.py +0 -226
  717. monkeybot-2.1.1/tests/core/test_memory_prompt.py +0 -234
  718. monkeybot-2.1.1/tests/core/test_message_pipeline.py +0 -100
  719. monkeybot-2.1.1/tests/core/test_patch.py +0 -228
  720. monkeybot-2.1.1/tests/core/test_prompt.py +0 -314
  721. monkeybot-2.1.1/tests/core/test_realtime_loop.py +0 -444
  722. monkeybot-2.1.1/tests/core/test_run_command_parse.py +0 -59
  723. monkeybot-2.1.1/tests/core/test_runtime_env.py +0 -280
  724. monkeybot-2.1.1/tests/core/test_sandbox_executor.py +0 -644
  725. monkeybot-2.1.1/tests/core/test_spill_inventory.py +0 -28
  726. monkeybot-2.1.1/tests/core/test_storage_backends.py +0 -632
  727. monkeybot-2.1.1/tests/core/test_subagent_proto.py +0 -368
  728. monkeybot-2.1.1/tests/core/test_subagent_trace_propagation.py +0 -577
  729. monkeybot-2.1.1/tests/core/test_subagent_worker_paths.py +0 -245
  730. monkeybot-2.1.1/tests/core/test_terminal.py +0 -491
  731. monkeybot-2.1.1/tests/core/test_tool_integrity.py +0 -195
  732. monkeybot-2.1.1/tests/core/test_tool_result_ingress.py +0 -155
  733. monkeybot-2.1.1/tests/core/test_transcript.py +0 -209
  734. monkeybot-2.1.1/tests/core/test_truncated_tool_batch.py +0 -175
  735. monkeybot-2.1.1/tests/core/test_usage.py +0 -223
  736. monkeybot-2.1.1/tests/core/test_worker_pool.py +0 -395
  737. monkeybot-2.1.1/tests/core/test_workspace_layout.py +0 -62
  738. monkeybot-2.1.1/tests/core/test_workspace_symlinks.py +0 -50
  739. monkeybot-2.1.1/tests/core/test_workspace_write_scope.py +0 -97
  740. monkeybot-2.1.1/tests/evals/conftest.py +0 -97
  741. monkeybot-2.1.1/tests/evals/scenario_runner.py +0 -169
  742. monkeybot-2.1.1/tests/evals/scenarios/tool_search_memory.yaml +0 -17
  743. monkeybot-2.1.1/tests/evals/test_agent_behavior.py +0 -39
  744. monkeybot-2.1.1/tests/evals/test_memory_integrity.py +0 -60
  745. monkeybot-2.1.1/tests/gateway/realtime/test_app.py +0 -29
  746. monkeybot-2.1.1/tests/gateway/realtime/test_manager.py +0 -90
  747. monkeybot-2.1.1/tests/gateway/realtime/test_routes_client_text.py +0 -199
  748. monkeybot-2.1.1/tests/gateway/sse/test_create_session_model.py +0 -284
  749. monkeybot-2.1.1/tests/gateway/sse/test_routes.py +0 -460
  750. monkeybot-2.1.1/tests/gateway/sse/test_scheduler_routes.py +0 -120
  751. monkeybot-2.1.1/tests/gateway/sse/test_session_bus.py +0 -111
  752. monkeybot-2.1.1/tests/gateway/sse/test_transcript_wiring.py +0 -150
  753. monkeybot-2.1.1/tests/gateway/test_otel_lifespan.py +0 -49
  754. monkeybot-2.1.1/tests/gateway/test_resolve_provider.py +0 -69
  755. monkeybot-2.1.1/tests/gateway/test_sse_events.py +0 -101
  756. monkeybot-2.1.1/tests/integration/test_observability_integration.py +0 -382
  757. monkeybot-2.1.1/tests/observability/test_init.py +0 -115
  758. monkeybot-2.1.1/tests/providers/conftest.py +0 -78
  759. monkeybot-2.1.1/tests/providers/test_anthropic_cache.py +0 -489
  760. monkeybot-2.1.1/tests/providers/test_bedrock_estimate.py +0 -14
  761. monkeybot-2.1.1/tests/providers/test_gemini_usage.py +0 -253
  762. monkeybot-2.1.1/tests/providers/test_ollama.py +0 -101
  763. monkeybot-2.1.1/tests/providers/test_openai_compat_usage.py +0 -290
  764. monkeybot-2.1.1/tests/providers/test_openai_history.py +0 -135
  765. monkeybot-2.1.1/tests/providers/test_pricing.py +0 -56
  766. monkeybot-2.1.1/tests/skills/test_generate_image_script.py +0 -208
  767. monkeybot-2.1.1/tests/test_cold_start.py +0 -74
  768. monkeybot-2.1.1/tests/test_packaging_config.py +0 -68
  769. monkeybot-2.1.1/tests/test_release_script.py +0 -41
  770. monkeybot-2.1.1/tests/web_search/test_web_search.py +0 -305
  771. monkeybot-2.1.1/uv.lock +0 -4381
  772. {monkeybot-2.1.1 → monkeybot-3.0.0}/.github/workflows/ci.yml +0 -0
  773. {monkeybot-2.1.1 → monkeybot-3.0.0}/.pre-commit-config.yaml +0 -0
  774. {monkeybot-2.1.1 → monkeybot-3.0.0}/LICENSE +0 -0
  775. {monkeybot-2.1.1 → monkeybot-3.0.0}/cli/src/monkeybot_cli/chat_renderer.py +0 -0
  776. {monkeybot-2.1.1 → monkeybot-3.0.0}/cli/src/monkeybot_cli/chat_theme.py +0 -0
  777. {monkeybot-2.1.1 → monkeybot-3.0.0}/cli/src/monkeybot_cli/commands/__init__.py +0 -0
  778. {monkeybot-2.1.1 → monkeybot-3.0.0}/cli/src/monkeybot_cli/commands/loop.py +0 -0
  779. {monkeybot-2.1.1 → monkeybot-3.0.0}/cli/src/monkeybot_cli/commands/new.py +0 -0
  780. {monkeybot-2.1.1 → monkeybot-3.0.0}/cli/src/monkeybot_cli/commands/talk.py +0 -0
  781. {monkeybot-2.1.1 → monkeybot-3.0.0}/cli/src/monkeybot_cli/exit_commands.py +0 -0
  782. {monkeybot-2.1.1 → monkeybot-3.0.0}/cli/src/monkeybot_cli/output.py +0 -0
  783. {monkeybot-2.1.1 → monkeybot-3.0.0}/cli/src/monkeybot_cli/realtime/__init__.py +0 -0
  784. {monkeybot-2.1.1 → monkeybot-3.0.0}/cli/src/monkeybot_cli/realtime/audio_io.py +0 -0
  785. {monkeybot-2.1.1 → monkeybot-3.0.0}/cli/src/monkeybot_cli/realtime/client.py +0 -0
  786. {monkeybot-2.1.1 → monkeybot-3.0.0}/cli/src/monkeybot_cli/realtime/push_to_talk.py +0 -0
  787. {monkeybot-2.1.1 → monkeybot-3.0.0}/cli/src/monkeybot_cli/realtime/wire_encode.py +0 -0
  788. {monkeybot-2.1.1 → monkeybot-3.0.0}/cli/src/monkeybot_cli/scaffold_defaults/AGENT.md +0 -0
  789. {monkeybot-2.1.1 → monkeybot-3.0.0}/cli/src/monkeybot_cli/scaffold_defaults/__init__.py +0 -0
  790. {monkeybot-2.1.1 → monkeybot-3.0.0}/cli/src/monkeybot_cli/scaffold_defaults/otel-collector.example.yaml +0 -0
  791. {monkeybot-2.1.1 → monkeybot-3.0.0}/cli/src/monkeybot_cli/scaffold_defaults/permissions.yaml +0 -0
  792. {monkeybot-2.1.1 → monkeybot-3.0.0}/cli/src/monkeybot_cli/session_controller.py +0 -0
  793. {monkeybot-2.1.1 → monkeybot-3.0.0}/cli/src/monkeybot_cli/terminal_markdown.py +0 -0
  794. {monkeybot-2.1.1 → monkeybot-3.0.0}/cli/tests/test_chat_e2e.py +0 -0
  795. {monkeybot-2.1.1 → monkeybot-3.0.0}/cli/tests/test_chat_grounding.py +0 -0
  796. {monkeybot-2.1.1 → monkeybot-3.0.0}/cli/tests/test_chat_renderer_parity.py +0 -0
  797. {monkeybot-2.1.1 → monkeybot-3.0.0}/cli/tests/test_chat_status_bar.py +0 -0
  798. {monkeybot-2.1.1 → monkeybot-3.0.0}/cli/tests/test_chat_theme.py +0 -0
  799. {monkeybot-2.1.1 → monkeybot-3.0.0}/cli/tests/test_chat_tool_display.py +0 -0
  800. {monkeybot-2.1.1 → monkeybot-3.0.0}/cli/tests/test_terminal_markdown.py +0 -0
  801. {monkeybot-2.1.1 → monkeybot-3.0.0/docs/assets}/logo.png +0 -0
  802. {monkeybot-2.1.1 → monkeybot-3.0.0}/docs/otel-collector.example.yaml +0 -0
  803. {monkeybot-2.1.1 → monkeybot-3.0.0}/evals/eval_config.yaml +0 -0
  804. {monkeybot-2.1.1 → monkeybot-3.0.0}/evals/scenarios/context/summarization_trigger.yaml +0 -0
  805. {monkeybot-2.1.1 → monkeybot-3.0.0}/evals/scenarios/multi_turn/task_tracking.yaml +0 -0
  806. {monkeybot-2.1.1 → monkeybot-3.0.0}/evals/scenarios/skills/skill_invocation.yaml +0 -0
  807. {monkeybot-2.1.1 → monkeybot-3.0.0}/evals/scenarios/subagents/dispatch_complete.yaml +0 -0
  808. {monkeybot-2.1.1 → monkeybot-3.0.0}/evals/scenarios/tools/core_read_error.yaml +0 -0
  809. /monkeybot-2.1.1/monkeybot_config_example/AGENT.example.md → /monkeybot-3.0.0/evals/smoke_agent/monkeybot_config/AGENT.md +0 -0
  810. /monkeybot-2.1.1/monkeybot_config_example/permissions.example.yaml → /monkeybot-3.0.0/evals/smoke_agent/monkeybot_config/permissions.yaml +0 -0
  811. {monkeybot-2.1.1/demo_agent → monkeybot-3.0.0/evals/smoke_agent}/workspace/.gitkeep +0 -0
  812. {monkeybot-2.1.1/demo_agent/workspace/browser/Screenshots → monkeybot-3.0.0/evals/smoke_agent/workspace/skills/browser/playbooks}/.gitkeep +0 -0
  813. {monkeybot-2.1.1 → monkeybot-3.0.0}/evals/test_judge.py +0 -0
  814. {monkeybot-2.1.1 → monkeybot-3.0.0}/evals/test_runner_sse.py +0 -0
  815. {monkeybot-2.1.1/demo_agent/workspace → monkeybot-3.0.0/examples}/skills/browser/playbooks/.gitkeep +0 -0
  816. {monkeybot-2.1.1 → monkeybot-3.0.0}/examples/skills/diagnostics/__init__.py +0 -0
  817. {monkeybot-2.1.1 → monkeybot-3.0.0}/integrations/browser-mcp/src/browser_mcp/__init__.py +0 -0
  818. {monkeybot-2.1.1 → monkeybot-3.0.0}/integrations/browser-mcp/src/browser_mcp/assets/NOTICE.md +0 -0
  819. {monkeybot-2.1.1 → monkeybot-3.0.0}/integrations/browser-mcp/src/browser_mcp/assets/dom_tree.js +0 -0
  820. {monkeybot-2.1.1 → monkeybot-3.0.0}/integrations/browser-mcp/src/browser_mcp/assets/pa_driver.js +0 -0
  821. {monkeybot-2.1.1 → monkeybot-3.0.0}/integrations/browser-mcp/src/browser_mcp/dom_indexing.py +0 -0
  822. {monkeybot-2.1.1 → monkeybot-3.0.0}/integrations/browser-mcp/tests/test_dom_indexing.py +0 -0
  823. {monkeybot-2.1.1 → monkeybot-3.0.0}/scripts/create_schema.py +0 -0
  824. {monkeybot-2.1.1 → monkeybot-3.0.0}/scripts/smoke_global_cli.sh +0 -0
  825. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/cli/__init__.py +0 -0
  826. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/cli/__main__.py +0 -0
  827. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/cli/audio_io.py +0 -0
  828. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/cli/gateway_manager.py +0 -0
  829. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/cli/main.py +0 -0
  830. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/cli/push_to_talk.py +0 -0
  831. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/cli/realtime_client.py +0 -0
  832. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/attachments/config.py +0 -0
  833. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/attachments/resolve.py +0 -0
  834. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/config/realtime_config.py +0 -0
  835. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/context/campaign_context.py +0 -0
  836. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/context/common.py +0 -0
  837. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/context/tool_output_policy.py +0 -0
  838. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/hooks/__init__.py +0 -0
  839. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/llm/__init__.py +0 -0
  840. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/llm/realtime_provider.py +0 -0
  841. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/logging_utils.py +0 -0
  842. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/mcp/__init__.py +0 -0
  843. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/messages/__init__.py +0 -0
  844. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/messages/convert_provider.py +0 -0
  845. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/path_safety.py +0 -0
  846. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/persistence/db.py +0 -0
  847. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/persistence/firestore_scheduled_loops.py +0 -0
  848. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/persistence/runs.py +0 -0
  849. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/prompts/__init__.py +0 -0
  850. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/runtime/input_admission.py +0 -0
  851. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/runtime/provider_stream_mapper.py +0 -0
  852. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/runtime/utterance_buffer.py +0 -0
  853. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/subagents/__init__.py +0 -0
  854. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/testing/__init__.py +0 -0
  855. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/testing/mocks_provider.py +0 -0
  856. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/testing/mocks_realtime_provider.py +0 -0
  857. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/tools/__init__.py +0 -0
  858. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/tools/loop_inspector.py +0 -0
  859. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/tools/text_normalize.py +0 -0
  860. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/tools/types.py +0 -0
  861. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/types/__init__.py +0 -0
  862. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/types/content_blocks.py +0 -0
  863. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/types/interfaces.py +0 -0
  864. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/workspace/__init__.py +0 -0
  865. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/core/workspace/factory.py +0 -0
  866. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/gateway/__init__.py +0 -0
  867. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/gateway/realtime/errors.py +0 -0
  868. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/gateway/realtime/guardrails.py +0 -0
  869. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/gateway/realtime/wire.py +0 -0
  870. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/gateway/sse/__init__.py +0 -0
  871. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/gateway/sse/reply_body.py +0 -0
  872. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/gateway/sse/scheduler_wiring.py +0 -0
  873. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/gateway/sse/sse.py +0 -0
  874. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/gateway/sse/workspace_layout.py +0 -0
  875. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/observability/_state.py +0 -0
  876. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/observability/propagation.py +0 -0
  877. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/providers/gemini_live.py +0 -0
  878. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/providers/huggingface.py +0 -0
  879. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/providers/nvidia.py +0 -0
  880. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/providers/sampling.py +0 -0
  881. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/scaffold/__init__.py +0 -0
  882. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/scheduler/__init__.py +0 -0
  883. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/scheduler/__main__.py +0 -0
  884. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/scheduler/engine.py +0 -0
  885. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/scheduler/http_invoker.py +0 -0
  886. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/scheduler/interval.py +0 -0
  887. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/scheduler/tick_result.py +0 -0
  888. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/subagents/__init__.py +0 -0
  889. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/subagents/worker/__init__.py +0 -0
  890. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/subagents/worker/__main__.py +0 -0
  891. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/web_search/__init__.py +0 -0
  892. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/web_search/backends/__init__.py +0 -0
  893. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/web_search/backends/duckduckgo.py +0 -0
  894. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/web_search/backends/firecrawl.py +0 -0
  895. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/web_search/backends/tavily.py +0 -0
  896. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/web_search/protocol.py +0 -0
  897. {monkeybot-2.1.1 → monkeybot-3.0.0}/src/monkeybot/web_search/tool.py +0 -0
  898. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/__init__.py +0 -0
  899. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/acceptance/test_observability_acceptance.py +0 -0
  900. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/cli/__init__.py +0 -0
  901. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/cli/test_gateway_manager.py +0 -0
  902. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/cli/test_push_to_talk.py +0 -0
  903. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/cli/test_realtime_client.py +0 -0
  904. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/core/__init__.py +0 -0
  905. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/core/test_content_blocks.py +0 -0
  906. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/core/test_firestore_scheduled_loops.py +0 -0
  907. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/core/test_hooks.py +0 -0
  908. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/core/test_input_admission.py +0 -0
  909. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/core/test_logging_utils.py +0 -0
  910. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/core/test_mocks_realtime_provider.py +0 -0
  911. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/core/test_permission.py +0 -0
  912. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/core/test_provider_contract.py +0 -0
  913. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/core/test_provider_stream_mapper.py +0 -0
  914. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/core/test_replace_fuzzy.py +0 -0
  915. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/core/test_runs.py +0 -0
  916. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/core/test_scheduled_loops.py +0 -0
  917. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/core/test_session_turn_locks.py +0 -0
  918. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/core/test_settlement.py +0 -0
  919. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/core/test_tool_shapers.py +0 -0
  920. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/core/test_usage_migration.py +0 -0
  921. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/core/test_utterance_buffer.py +0 -0
  922. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/core/workspace/test_factory.py +0 -0
  923. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/core/workspace/test_local_storage.py +0 -0
  924. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/core/workspace/test_protocol_contract.py +0 -0
  925. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/evals/__init__.py +0 -0
  926. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/evals/eval_hook.py +0 -0
  927. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/evals/scenarios/context_curation.yaml +0 -0
  928. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/evals/scenarios/memory_write_inject.yaml +0 -0
  929. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/evals/scenarios/subagent_roundtrip.yaml +0 -0
  930. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/evals/scenarios/tool_read.yaml +0 -0
  931. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/evals/scenarios/turn_completion.yaml +0 -0
  932. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/gateway/__init__.py +0 -0
  933. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/gateway/realtime/__init__.py +0 -0
  934. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/gateway/realtime/test_deps.py +0 -0
  935. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/gateway/realtime/test_guardrails.py +0 -0
  936. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/gateway/realtime/test_metrics.py +0 -0
  937. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/gateway/realtime/test_session.py +0 -0
  938. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/gateway/realtime/test_wire.py +0 -0
  939. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/gateway/sse/test_attachments.py +0 -0
  940. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/gateway/test_otel_fastapi.py +0 -0
  941. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/gateway/test_pending_response_endpoints.py +0 -0
  942. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/gateway/test_realtime_main.py +0 -0
  943. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/integration/__init__.py +0 -0
  944. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/integration/test_mb_e2e_simple_reply.py +0 -0
  945. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/integration/test_prompt_caching_integration.py +0 -0
  946. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/observability/conftest.py +0 -0
  947. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/observability/test_instrumentation.py +0 -0
  948. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/observability/test_loop_hook_spans.py +0 -0
  949. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/observability/test_propagation.py +0 -0
  950. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/observability/test_span_contract.py +0 -0
  951. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/observability/test_spans.py +0 -0
  952. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/observability/test_truncate.py +0 -0
  953. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/observability/test_turn_complete_trace.py +0 -0
  954. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/providers/test_anthropic_history.py +0 -0
  955. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/providers/test_gemini_live.py +0 -0
  956. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/providers/test_huggingface.py +0 -0
  957. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/providers/test_nvidia.py +0 -0
  958. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/providers/test_safe_parse_tool_args.py +0 -0
  959. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/providers/test_sampling.py +0 -0
  960. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/providers/test_source_grep_gates.py +0 -0
  961. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/providers/test_vertex_claude_history.py +0 -0
  962. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/scheduler/test_engine.py +0 -0
  963. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/scheduler/test_interval.py +0 -0
  964. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/skills/__init__.py +0 -0
  965. {monkeybot-2.1.1 → monkeybot-3.0.0}/tests/web_search/__init__.py +0 -0
@@ -0,0 +1,14 @@
1
+ .git
2
+ .github
3
+ **/.venv
4
+ **/node_modules
5
+ **/__pycache__
6
+ **/*.py[cod]
7
+ **/.pytest_cache
8
+ **/.mypy_cache
9
+ **/.ruff_cache
10
+ **/.env
11
+ **/*.db-shm
12
+ **/*.db-wal
13
+ legacy
14
+ tests
@@ -0,0 +1,213 @@
1
+ name: Live eval smoke
2
+
3
+ # Runs the live eval smoke suite (see docs/live-evals.md) and posts a Markdown
4
+ # scorecard. LLM-judge calls cost money and take minutes, so this does not run on
5
+ # ordinary feature-branch -> develop PRs. Trigger points:
6
+ # (a) any PR from develop into main (release-promotion gate; --fail-on-regression)
7
+ # (b) any PR that touches a dependency lockfile (catches silent SDK breakage,
8
+ # e.g. provider request/response shape changes, that code review won't see)
9
+ # (c) every push to main (scores the new release; report-only, never fails the build)
10
+ # (d) manual: Actions tab -> Live eval smoke -> Run workflow
11
+ # The scorecard always lands on the workflow run's Summary page; PR events also get it
12
+ # as a PR comment. The run JSON is uploaded as an artifact — download two of them and
13
+ # compare with `uv run python -m evals.diff <old.json> <new.json>`.
14
+ #
15
+ # Cost/time budget: smoke suite is ~11 scenarios x 2-5 turns x (agent call + judge call),
16
+ # paced by EVAL_SCENARIO_DELAY_SEC=150 between scenarios to stay under the current
17
+ # model's provider rate limit. Expect roughly $0.75-3.00 and ~30-45 minutes per run
18
+ # (10 delays x 150s = 25 min of pacing alone, plus actual call time) — this is not
19
+ # stuck if it runs long; see timeout-minutes below.
20
+ #
21
+ # Secrets required: NVIDIA_API_KEY only (https://build.nvidia.com — free tier). The agent
22
+ # and the judge both run on NVIDIA-hosted models through the same key, pinned to two
23
+ # *different* models below so the judge isn't grading its own output and scoring doesn't
24
+ # silently drift.
25
+
26
+ on:
27
+ pull_request:
28
+ push:
29
+ branches: [main]
30
+ workflow_dispatch:
31
+
32
+ permissions:
33
+ contents: read
34
+ pull-requests: write
35
+
36
+ jobs:
37
+ gate:
38
+ runs-on: ubuntu-latest
39
+ outputs:
40
+ run: ${{ steps.decide.outputs.run }}
41
+ steps:
42
+ - uses: actions/checkout@v4
43
+ with:
44
+ fetch-depth: 0
45
+
46
+ - id: decide
47
+ env:
48
+ EVENT_NAME: ${{ github.event_name }}
49
+ BASE_REF: ${{ github.base_ref }}
50
+ HEAD_REF: ${{ github.head_ref }}
51
+ BASE_SHA: ${{ github.event.pull_request.base.sha }}
52
+ HEAD_SHA: ${{ github.event.pull_request.head.sha }}
53
+ run: |
54
+ run=false
55
+ # Push to main and manual dispatch always run; PRs are gated below.
56
+ if [[ "$EVENT_NAME" != "pull_request" ]]; then
57
+ run=true
58
+ else
59
+ if [[ "$BASE_REF" == "main" && "$HEAD_REF" == "develop" ]]; then
60
+ run=true
61
+ fi
62
+ changed="$(git diff --name-only "$BASE_SHA" "$HEAD_SHA")"
63
+ for f in uv.lock cli/uv.lock evals/smoke_agent/uv.lock; do
64
+ if grep -qxF "$f" <<<"$changed"; then
65
+ run=true
66
+ fi
67
+ done
68
+ fi
69
+ echo "run=$run" >> "$GITHUB_OUTPUT"
70
+
71
+ secrets:
72
+ needs: gate
73
+ if: needs.gate.outputs.run == 'true'
74
+ runs-on: ubuntu-latest
75
+ outputs:
76
+ available: ${{ steps.check.outputs.available }}
77
+ steps:
78
+ - name: Require live-eval secrets
79
+ id: check
80
+ env:
81
+ NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
82
+ run: |
83
+ if [[ -z "$NVIDIA_API_KEY" ]]; then
84
+ echo "::warning::NVIDIA_API_KEY is not configured; skipping live-eval smoke (https://build.nvidia.com)"
85
+ echo "available=false" >> "$GITHUB_OUTPUT"
86
+ exit 0
87
+ fi
88
+ echo "available=true" >> "$GITHUB_OUTPUT"
89
+
90
+ live-eval:
91
+ needs: [gate, secrets]
92
+ if: needs.gate.outputs.run == 'true' && needs.secrets.outputs.available == 'true'
93
+ runs-on: ubuntu-latest
94
+ timeout-minutes: 60 # 11 scenarios x ~150s inter-scenario delay (see EVAL_SCENARIO_DELAY_SEC) + run time,
95
+ # plus headroom for checkout/uv sync/gateway boot and slow judge or subagent turns
96
+ steps:
97
+ - uses: actions/checkout@v4
98
+
99
+ - uses: astral-sh/setup-uv@v5
100
+ with:
101
+ version: "latest"
102
+
103
+ - name: Sync root deps (evals/report.py needs deepeval, langfuse)
104
+ run: uv sync --extra evals
105
+
106
+ - name: Sync smoke_agent deps
107
+ working-directory: evals/smoke_agent
108
+ run: uv sync
109
+
110
+ - name: Boot monkeybot gateway (evals/smoke_agent workspace)
111
+ working-directory: evals/smoke_agent
112
+ env:
113
+ NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
114
+ # Pin agent model for CI; env beats monkeybot.yaml.
115
+ MODEL_PROVIDER: nvidia
116
+ MODEL_NAME: thinkingmachines/inkling
117
+ # smoke_agent monkeybot.yaml sets runtime.port: 8080; the health check and
118
+ # AGENT_URL below expect 8787, so pin PORT explicitly (env beats yaml).
119
+ PORT: "8787"
120
+ SANDBOX_ENABLED: "false" # no Docker socket in this runner
121
+ # No MODEL_CONTEXT_WINDOW override: that was only needed for
122
+ # context/summarization_trigger.yaml (see evals/suites/smoke.yaml), which is
123
+ # currently excluded from smoke pending a retune against thinkingmachines/inkling.
124
+ # Re-add MODEL_CONTEXT_WINDOW: "8000" here alongside it if it comes back.
125
+ run: |
126
+ uv run -m monkeybot.gateway.main > /tmp/gateway.log 2>&1 &
127
+ echo $! > /tmp/gateway.pid
128
+ for i in $(seq 1 30); do
129
+ if curl -sf http://127.0.0.1:8787/health > /dev/null; then
130
+ echo "gateway healthy"
131
+ exit 0
132
+ fi
133
+ sleep 2
134
+ done
135
+ echo "gateway did not become healthy" >&2
136
+ cat /tmp/gateway.log >&2
137
+ exit 1
138
+
139
+ - name: Run smoke suite report
140
+ env:
141
+ AGENT_URL: http://127.0.0.1:8787
142
+ # Judge on a different NVIDIA-hosted model than the agent (same key).
143
+ JUDGE_PROVIDER: nvidia
144
+ JUDGE_MODEL: nvidia/nemotron-3-ultra-550b-a55b
145
+ NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
146
+ # Scorecard metadata: report the model the gateway actually ran.
147
+ MODEL_PROVIDER: nvidia
148
+ MODEL_NAME: thinkingmachines/inkling
149
+ EVENT_NAME: ${{ github.event_name }}
150
+ # thinkingmachines/inkling gets rate-limited by NVIDIA even at low concurrency;
151
+ # each scenario itself makes several requests in quick succession, so space
152
+ # scenarios out rather than trying to throttle within one.
153
+ EVAL_SCENARIO_DELAY_SEC: "150"
154
+ run: |
155
+ # PRs are a gate and must block on regressions; main pushes and manual runs
156
+ # just score the build and always report. --fail-on-regression always blocks on
157
+ # this run's own scenario errors/failures. It does NOT require evals/baselines/
158
+ # smoke.json to exist (that's the separate --require-baseline flag, intentionally
159
+ # omitted below) — no trusted baseline has been committed yet. Once one has
160
+ # (`uv run python -m evals.report --suite smoke --update-baseline`, committed),
161
+ # add --require-baseline here too so a missing/deleted file can't silently skip
162
+ # the token/cost/latency drift checks.
163
+ flags=""
164
+ if [[ "$EVENT_NAME" == "pull_request" ]]; then
165
+ flags="--fail-on-regression"
166
+ fi
167
+ uv run python -m evals.report \
168
+ --suite smoke \
169
+ --baseline evals/baselines/smoke.json \
170
+ $flags \
171
+ | tee eval-report.md
172
+
173
+ - name: Publish report to run summary
174
+ if: always()
175
+ run: |
176
+ if [[ -f eval-report.md ]]; then
177
+ cat eval-report.md >> "$GITHUB_STEP_SUMMARY"
178
+ else
179
+ echo '`FAIL` — no report produced; see the job logs.' >> "$GITHUB_STEP_SUMMARY"
180
+ fi
181
+
182
+ - name: Post report as PR comment
183
+ if: always() && github.event_name == 'pull_request'
184
+ uses: actions/github-script@v7
185
+ with:
186
+ script: |
187
+ const fs = require("fs");
188
+ const body = fs.existsSync("eval-report.md")
189
+ ? fs.readFileSync("eval-report.md", "utf8")
190
+ : "## monkeybot Eval Scorecard\n\n`FAIL` — the report step did not complete " +
191
+ "(gateway boot or the report command itself errored before writing a report). " +
192
+ "See the workflow run logs for details.";
193
+ await github.rest.issues.createComment({
194
+ issue_number: context.issue.number,
195
+ owner: context.repo.owner,
196
+ repo: context.repo.repo,
197
+ body,
198
+ });
199
+
200
+ - name: Upload run + report artifacts
201
+ if: always()
202
+ uses: actions/upload-artifact@v4
203
+ with:
204
+ name: live-eval-smoke-${{ github.run_id }}
205
+ path: |
206
+ evals/runs/
207
+ eval-report.md
208
+ if-no-files-found: ignore
209
+
210
+ - name: Stop gateway
211
+ if: always()
212
+ working-directory: evals/smoke_agent
213
+ run: kill "$(cat /tmp/gateway.pid)" 2>/dev/null || true
@@ -0,0 +1,36 @@
1
+ name: Prepare release
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ package:
7
+ description: "Which package to release"
8
+ required: true
9
+ type: choice
10
+ options: [core, browser, cli, all]
11
+ bump:
12
+ description: "Version bump"
13
+ required: true
14
+ type: choice
15
+ options: [patch, minor, major]
16
+
17
+ permissions:
18
+ contents: write
19
+ pull-requests: write
20
+
21
+ jobs:
22
+ prepare:
23
+ runs-on: ubuntu-latest
24
+ steps:
25
+ - uses: actions/checkout@v4
26
+ with:
27
+ ref: develop
28
+
29
+ - name: Configure git identity
30
+ run: |
31
+ git config user.name "github-actions[bot]"
32
+ git config user.email "github-actions[bot]@users.noreply.github.com"
33
+
34
+ - run: python3 scripts/release.py prepare ${{ inputs.package }} ${{ inputs.bump }}
35
+ env:
36
+ GH_TOKEN: ${{ github.token }}
@@ -0,0 +1,172 @@
1
+ name: Publish release
2
+
3
+ # Fires whenever main moves - i.e. right after an admin merges a release PR.
4
+ # Branch protection on main (require PR + restrict merges to admins) is the
5
+ # actual access control; this tags + GitHub-Releases + Trusted-Publishes to PyPI.
6
+ #
7
+ # Also supports workflow_dispatch republish for already-tagged packages (e.g.
8
+ # after fixing a Trusted Publisher or sandbox image failure).
9
+ #
10
+ # PyPI Pending Trusted Publishers (one per project — environments must differ):
11
+ # monkeybot: Owner human-plus-machine / Repo monkeybot /
12
+ # Workflow publish-release.yml / Environment pypi
13
+ # monkeybot-cli: Owner human-plus-machine / Repo monkeybot /
14
+ # Workflow publish-release.yml / Environment pypi-cli
15
+ # monkeybot-browser-mcp: Owner human-plus-machine / Repo monkeybot /
16
+ # Workflow publish-release.yml / Environment pypi-browser
17
+ #
18
+ # GitHub: create Environments named exactly `pypi`, `pypi-cli`, and `pypi-browser`.
19
+ on:
20
+ push:
21
+ branches: [main]
22
+ paths:
23
+ - "pyproject.toml"
24
+ - "cli/pyproject.toml"
25
+ - "integrations/browser-mcp/pyproject.toml"
26
+ - "docker/sandbox.Dockerfile"
27
+ - "CHANGELOG.md"
28
+ workflow_dispatch:
29
+ inputs:
30
+ packages:
31
+ description: "Comma-separated packages to (re)publish even if already tagged (core,browser,cli)"
32
+ required: true
33
+ type: string
34
+ default: "browser,cli"
35
+
36
+ permissions:
37
+ contents: write
38
+
39
+ jobs:
40
+ publish:
41
+ runs-on: ubuntu-latest
42
+ outputs:
43
+ packages: ${{ steps.release.outputs.packages }}
44
+ steps:
45
+ - uses: actions/checkout@v4
46
+ with:
47
+ fetch-depth: 0
48
+
49
+ - name: Configure git identity
50
+ run: |
51
+ git config user.name "github-actions[bot]"
52
+ git config user.email "github-actions[bot]@users.noreply.github.com"
53
+
54
+ - id: release
55
+ run: python3 scripts/release.py publish
56
+ env:
57
+ GH_TOKEN: ${{ github.token }}
58
+ FORCE_PACKAGES: ${{ github.event.inputs.packages || '' }}
59
+
60
+ # Core before CLI (separate jobs / environments — required for two pending publishers).
61
+ pypi-core:
62
+ needs: publish
63
+ if: contains(format(',{0},', needs.publish.outputs.packages), ',core,')
64
+ runs-on: ubuntu-latest
65
+ environment:
66
+ name: pypi
67
+ url: https://pypi.org/p/monkeybot
68
+ permissions:
69
+ id-token: write
70
+ contents: read
71
+ steps:
72
+ - uses: actions/checkout@v4
73
+ - uses: astral-sh/setup-uv@v5
74
+ - uses: actions/setup-python@v5
75
+ with:
76
+ python-version: "3.12"
77
+ - name: Build core
78
+ run: uv build --out-dir dist/core .
79
+ - name: Publish core to PyPI
80
+ uses: pypa/gh-action-pypi-publish@release/v1
81
+ with:
82
+ packages-dir: dist/core
83
+ skip-existing: true
84
+
85
+ pypi-browser:
86
+ needs: publish
87
+ if: contains(format(',{0},', needs.publish.outputs.packages), ',browser,')
88
+ runs-on: ubuntu-latest
89
+ environment:
90
+ name: pypi-browser
91
+ url: https://pypi.org/p/monkeybot-browser-mcp
92
+ permissions:
93
+ id-token: write
94
+ contents: read
95
+ steps:
96
+ - uses: actions/checkout@v4
97
+ - uses: astral-sh/setup-uv@v5
98
+ - uses: actions/setup-python@v5
99
+ with:
100
+ python-version: "3.12"
101
+ - name: Build browser MCP
102
+ run: uv build --out-dir dist/browser integrations/browser-mcp
103
+ - name: Publish browser MCP to PyPI
104
+ uses: pypa/gh-action-pypi-publish@release/v1
105
+ with:
106
+ packages-dir: dist/browser
107
+ skip-existing: true
108
+
109
+ pypi-cli:
110
+ needs: [publish, pypi-core, pypi-browser]
111
+ # Run when cli is in the release set. Core/browser may be skipped on a
112
+ # cli-only republish; treat skipped as success. A failed browser publish
113
+ # still blocks cli because monkeybot-cli depends on monkeybot-browser-mcp.
114
+ if: |
115
+ always() &&
116
+ needs.publish.result == 'success' &&
117
+ contains(format(',{0},', needs.publish.outputs.packages), ',cli,') &&
118
+ (needs.pypi-core.result == 'success' || needs.pypi-core.result == 'skipped') &&
119
+ (needs.pypi-browser.result == 'success' || needs.pypi-browser.result == 'skipped')
120
+ runs-on: ubuntu-latest
121
+ environment:
122
+ name: pypi-cli
123
+ url: https://pypi.org/p/monkeybot-cli
124
+ permissions:
125
+ id-token: write
126
+ contents: read
127
+ steps:
128
+ - uses: actions/checkout@v4
129
+ - uses: astral-sh/setup-uv@v5
130
+ - uses: actions/setup-python@v5
131
+ with:
132
+ python-version: "3.12"
133
+ - name: Build cli
134
+ run: uv build --out-dir dist/cli cli
135
+ - name: Publish cli to PyPI
136
+ uses: pypa/gh-action-pypi-publish@release/v1
137
+ with:
138
+ packages-dir: dist/cli
139
+ skip-existing: true
140
+
141
+ sandbox-image:
142
+ needs: publish
143
+ if: contains(format(',{0},', needs.publish.outputs.packages), ',core,')
144
+ runs-on: ubuntu-latest
145
+ permissions:
146
+ contents: read
147
+ packages: write
148
+ steps:
149
+ - uses: actions/checkout@v4
150
+ - uses: docker/login-action@v3
151
+ with:
152
+ registry: ghcr.io
153
+ username: ${{ github.actor }}
154
+ password: ${{ secrets.GITHUB_TOKEN }}
155
+ - id: version
156
+ run: |
157
+ python - <<'PY' >> "$GITHUB_OUTPUT"
158
+ import re
159
+ from pathlib import Path
160
+
161
+ text = Path("pyproject.toml").read_text(encoding="utf-8")
162
+ match = re.search(r'^version = "([^"]+)"', text, re.M)
163
+ if match is None:
164
+ raise SystemExit("no version field in pyproject.toml")
165
+ print(f"value={match.group(1)}")
166
+ PY
167
+ - uses: docker/build-push-action@v6
168
+ with:
169
+ context: .
170
+ file: docker/sandbox.Dockerfile
171
+ push: true
172
+ tags: ghcr.io/human-plus-machine/monkeybot-sandbox:${{ steps.version.outputs.value }}
@@ -0,0 +1,71 @@
1
+ # Internal (not shipped in OSS)
2
+ internal/
3
+
4
+ # Environment
5
+ .env
6
+ .env.*
7
+ !.env.example
8
+
9
+ # Local scaffolded harness config (defaults ship in monkeybot-cli scaffold_defaults/)
10
+ /monkeybot_config/
11
+
12
+ # Live eval run artifacts (only evals/baselines/ is versioned)
13
+ /evals/runs/
14
+
15
+ # Python
16
+ __pycache__/
17
+ *.py[cod]
18
+ *.pyo
19
+ *.pyd
20
+ .Python
21
+ *.egg-info/
22
+ dist/
23
+ build/
24
+ .eggs/
25
+ *.egg
26
+
27
+ # uv
28
+ .venv/
29
+ .uv/
30
+
31
+ # Data (SQLite DB + memory files — never commit)
32
+ data/
33
+ /memory/
34
+ .monkeybot/
35
+ *.sqlite3
36
+ workspace/.monkeybot/
37
+ *.sqlite
38
+ *.sqlite.writer-pid
39
+
40
+ # Testing & coverage
41
+ .pytest_cache/
42
+ .coverage
43
+ htmlcov/
44
+ .mypy_cache/
45
+ .ruff_cache/
46
+ .deepeval/
47
+
48
+ # macOS
49
+ .DS_Store
50
+
51
+ # IDEs
52
+ .idea/
53
+ .vscode/
54
+ *.swp
55
+ *.swo
56
+
57
+ # Docker
58
+ docker/data/
59
+
60
+ # Planning Documents
61
+ .prt/
62
+ .monkeymode/
63
+
64
+ # Reference clones (read-only)
65
+ code/
66
+
67
+ # Local venv for evals dependency experiments
68
+ .evals-venv/
69
+
70
+ # monkeythink
71
+ .monkeythink/
@@ -0,0 +1,62 @@
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
+ - **Knowledge ANN index (sqlite-vec)** — deliberately deferred. The numpy matrix cache in `sqlite_vector.py` holds through ~50–100k chunks and query cost is embed-API bound, not local ANN. Revisit only if measured ANN p95 exceeds ~20–50 ms or the resident matrix causes RAM pressure; the true scale escape hatch is `store.type: pgvector`, not `sqlite-vec` packaging.
39
+
40
+ ### MCP
41
+ - **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.
42
+
43
+ ### Tooling *(intentionally dropped — not completed)*
44
+
45
+ Product decision to stop tracking these as active backlog items (not claiming they shipped):
46
+
47
+ - **File-op tool audit** — Keep `write_file`; no plan to replace it with `create_file` + `find_and_replace` only.
48
+ - **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`.
49
+
50
+ ### Future platforms *(not scheduled)*
51
+
52
+ Moved from README — longer-term / speculative integrations without active implementation:
53
+
54
+ - **Azure OpenAI** — Azure-hosted OpenAI models
55
+ - **Azure Blob Storage** — memory backend (`[azure]` extra; docs note as planned)
56
+ - **Azure Key Vault** — secrets for Azure deployments
57
+ - **AWS Secrets Manager** — secret resolver at runtime
58
+ - **GCP Secret Manager** — finish `secrets.provider: gcp_secret_manager` wiring (schema exists; resolver not shipped)
59
+ - **Microsoft Teams** — Teams bot interface
60
+ - **Telegram** — Telegram bot interface
61
+ - **DynamoDB** — checkpointer / job storage backend
62
+ - **Cosmos DB** — Azure-native persistence options