monkeybot 2.2.0__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 (898) hide show
  1. monkeybot-3.0.0/.github/workflows/live-eval-smoke.yml +213 -0
  2. monkeybot-3.0.0/.github/workflows/publish-release.yml +172 -0
  3. monkeybot-3.0.0/.gitignore +71 -0
  4. monkeybot-3.0.0/BACKLOG.md +62 -0
  5. monkeybot-3.0.0/CHANGELOG.md +246 -0
  6. monkeybot-3.0.0/PKG-INFO +196 -0
  7. monkeybot-3.0.0/cli/pyproject.toml +44 -0
  8. monkeybot-3.0.0/cli/skills/monkeybot/SKILL.md +200 -0
  9. monkeybot-3.0.0/cli/skills/monkeybot/references/config-sections.md +179 -0
  10. monkeybot-3.0.0/cli/src/monkeybot_cli/chat_file_index.py +101 -0
  11. monkeybot-3.0.0/cli/src/monkeybot_cli/chat_local_shell.py +178 -0
  12. monkeybot-3.0.0/cli/src/monkeybot_cli/chat_session.py +938 -0
  13. monkeybot-3.0.0/cli/src/monkeybot_cli/chat_status_bar.py +207 -0
  14. monkeybot-3.0.0/cli/src/monkeybot_cli/chat_tool_display.py +240 -0
  15. monkeybot-3.0.0/cli/src/monkeybot_cli/chat_tui.py +1917 -0
  16. monkeybot-3.0.0/cli/src/monkeybot_cli/chat_tui_widgets.py +1117 -0
  17. monkeybot-3.0.0/cli/src/monkeybot_cli/commands/chat.py +889 -0
  18. monkeybot-3.0.0/cli/src/monkeybot_cli/commands/doctor.py +439 -0
  19. monkeybot-3.0.0/cli/src/monkeybot_cli/commands/refresh.py +36 -0
  20. monkeybot-3.0.0/cli/src/monkeybot_cli/commands/run_cmd.py +63 -0
  21. monkeybot-3.0.0/cli/src/monkeybot_cli/commands/validate.py +394 -0
  22. monkeybot-3.0.0/cli/src/monkeybot_cli/compat.py +30 -0
  23. monkeybot-3.0.0/cli/src/monkeybot_cli/extras_catalog.py +97 -0
  24. monkeybot-3.0.0/cli/src/monkeybot_cli/main.py +42 -0
  25. monkeybot-3.0.0/cli/src/monkeybot_cli/opensandbox_lifecycle.py +324 -0
  26. monkeybot-3.0.0/cli/src/monkeybot_cli/providers.py +135 -0
  27. monkeybot-3.0.0/cli/src/monkeybot_cli/realtime/gateway_manager.py +145 -0
  28. monkeybot-3.0.0/cli/src/monkeybot_cli/realtime/session.py +265 -0
  29. monkeybot-3.0.0/cli/src/monkeybot_cli/realtime/session_controller.py +501 -0
  30. monkeybot-3.0.0/cli/src/monkeybot_cli/realtime/talk_ui.py +248 -0
  31. monkeybot-3.0.0/cli/src/monkeybot_cli/runtime_python.py +746 -0
  32. monkeybot-3.0.0/cli/src/monkeybot_cli/scaffold.py +435 -0
  33. monkeybot-3.0.0/cli/src/monkeybot_cli/scaffold_defaults/Dockerfile +27 -0
  34. monkeybot-3.0.0/cli/src/monkeybot_cli/scaffold_defaults/browser/SKILL.md +16 -0
  35. monkeybot-3.0.0/cli/src/monkeybot_cli/scaffold_defaults/command_allowlist.yaml +67 -0
  36. monkeybot-3.0.0/cli/src/monkeybot_cli/scaffold_defaults/env.example +40 -0
  37. monkeybot-3.0.0/cli/src/monkeybot_cli/scaffold_defaults/image-generator/SKILL.md +72 -0
  38. monkeybot-3.0.0/cli/src/monkeybot_cli/scaffold_defaults/image-generator/generate_image.py +214 -0
  39. monkeybot-3.0.0/cli/src/monkeybot_cli/scaffold_defaults/loop/SKILL.md +45 -0
  40. monkeybot-3.0.0/cli/src/monkeybot_cli/scaffold_defaults/mcp.json +50 -0
  41. monkeybot-3.0.0/cli/src/monkeybot_cli/scaffold_defaults/monkeybot.example.yaml +243 -0
  42. monkeybot-3.0.0/cli/src/monkeybot_cli/scaffold_defaults/opensandbox.docker.toml +46 -0
  43. monkeybot-3.0.0/cli/tests/test_chat_continue.py +198 -0
  44. monkeybot-3.0.0/cli/tests/test_chat_file_index.py +84 -0
  45. monkeybot-3.0.0/cli/tests/test_chat_local_shell.py +157 -0
  46. monkeybot-3.0.0/cli/tests/test_chat_session.py +452 -0
  47. monkeybot-3.0.0/cli/tests/test_chat_tui.py +2383 -0
  48. monkeybot-3.0.0/cli/tests/test_cli.py +319 -0
  49. monkeybot-3.0.0/cli/tests/test_doctor.py +85 -0
  50. monkeybot-3.0.0/cli/tests/test_extras_catalog.py +102 -0
  51. monkeybot-3.0.0/cli/tests/test_gateway_health.py +163 -0
  52. monkeybot-3.0.0/cli/tests/test_realtime_session_controller.py +319 -0
  53. monkeybot-3.0.0/cli/tests/test_run_cmd.py +90 -0
  54. monkeybot-3.0.0/cli/tests/test_runtime_python.py +1076 -0
  55. monkeybot-3.0.0/cli/tests/test_scaffold.py +220 -0
  56. monkeybot-3.0.0/cli/uv.lock +1838 -0
  57. monkeybot-3.0.0/docker/docker-compose.sandbox.yml +57 -0
  58. monkeybot-3.0.0/docs/agent-layout.md +136 -0
  59. monkeybot-3.0.0/docs/browser-mcp.md +221 -0
  60. monkeybot-3.0.0/docs/cloud-deployment-design.md +96 -0
  61. monkeybot-3.0.0/docs/deploy-aws-agentcore.md +109 -0
  62. monkeybot-3.0.0/docs/deploy-pattern-a-container.md +403 -0
  63. monkeybot-3.0.0/docs/deploy-pattern-b-serverless.md +370 -0
  64. monkeybot-3.0.0/docs/deploy-pattern-c-agent-platform.md +236 -0
  65. monkeybot-3.0.0/docs/deploy-pattern-d-realtime.md +308 -0
  66. monkeybot-3.0.0/docs/features.md +821 -0
  67. monkeybot-3.0.0/docs/getting-started.md +182 -0
  68. monkeybot-3.0.0/docs/knowledge-layer-fixes.md +274 -0
  69. monkeybot-3.0.0/docs/live-evals.md +66 -0
  70. monkeybot-3.0.0/docs/mcp.md +193 -0
  71. monkeybot-3.0.0/docs/memory-graph-split-plan.md +231 -0
  72. monkeybot-3.0.0/docs/migrations/agent-scope-namespacing.md +96 -0
  73. monkeybot-3.0.0/docs/migrations/memory-outbox.sql +39 -0
  74. monkeybot-3.0.0/docs/progressive-loop-tools.md +24 -0
  75. monkeybot-3.0.0/docs/progressive-mcp-tools.md +23 -0
  76. monkeybot-3.0.0/docs/spill-dynamic-design.md +555 -0
  77. monkeybot-3.0.0/docs/sse-gateway-ui.md +273 -0
  78. monkeybot-3.0.0/docs/workspace-index-design.md +996 -0
  79. monkeybot-3.0.0/evals/TEST_COVERAGE.md +68 -0
  80. monkeybot-3.0.0/evals/models.py +115 -0
  81. monkeybot-3.0.0/evals/report.py +363 -0
  82. monkeybot-3.0.0/evals/scenarios/mcp/get_prompt.yaml +12 -0
  83. monkeybot-3.0.0/evals/scenarios/mcp/list_resources.yaml +12 -0
  84. monkeybot-3.0.0/evals/scenarios/mcp/tool_invoke.yaml +12 -0
  85. monkeybot-3.0.0/evals/scenarios/memory/recall_single_session.yaml +11 -0
  86. monkeybot-3.0.0/evals/scenarios/tools/core_run_command.yaml +11 -0
  87. monkeybot-3.0.0/evals/scenarios/tools/core_run_command_sandbox.yaml +20 -0
  88. monkeybot-3.0.0/evals/scenarios/tools/core_write.yaml +10 -0
  89. monkeybot-3.0.0/evals/smoke_agent/fixture_mcp_server.py +35 -0
  90. monkeybot-3.0.0/evals/smoke_agent/monkeybot_config/command_allowlist.yaml +34 -0
  91. monkeybot-3.0.0/evals/smoke_agent/monkeybot_config/mcp.json +12 -0
  92. monkeybot-3.0.0/evals/smoke_agent/monkeybot_config/monkeybot.yaml +48 -0
  93. monkeybot-3.0.0/evals/smoke_agent/uv.lock +2332 -0
  94. monkeybot-3.0.0/evals/suites/smoke.yaml +19 -0
  95. monkeybot-3.0.0/evals/test_assertions.py +166 -0
  96. monkeybot-3.0.0/examples/README.md +34 -0
  97. monkeybot-3.0.0/examples/agentcore/handler.py +113 -0
  98. monkeybot-3.0.0/examples/agentcore/runtime_app.py +104 -0
  99. monkeybot-3.0.0/examples/agentengine/handler.py +78 -0
  100. monkeybot-3.0.0/examples/cloud-functions/main.py +77 -0
  101. monkeybot-3.0.0/examples/lambda/handler.py +95 -0
  102. monkeybot-3.0.0/examples/skills/browser/SKILL.md +68 -0
  103. monkeybot-3.0.0/examples/skills/diagnostics/README.md +250 -0
  104. monkeybot-3.0.0/examples/skills/diagnostics/diagnostics.py +127 -0
  105. monkeybot-3.0.0/examples/skills/image-generator/SKILL.md +72 -0
  106. monkeybot-3.0.0/examples/skills/image-generator/generate_image.py +214 -0
  107. monkeybot-3.0.0/integrations/browser-mcp/pyproject.toml +25 -0
  108. monkeybot-3.0.0/integrations/browser-mcp/scripts/agentcore_smoke.py +47 -0
  109. monkeybot-3.0.0/integrations/browser-mcp/src/browser_mcp/agentcore.py +73 -0
  110. monkeybot-3.0.0/integrations/browser-mcp/src/browser_mcp/playwright_helpers.py +344 -0
  111. monkeybot-3.0.0/integrations/browser-mcp/src/browser_mcp/screenshots.py +57 -0
  112. monkeybot-3.0.0/integrations/browser-mcp/src/browser_mcp/server.py +536 -0
  113. monkeybot-3.0.0/integrations/browser-mcp/tests/test_agentcore.py +348 -0
  114. monkeybot-3.0.0/integrations/browser-mcp/tests/test_in_app_cdp.py +208 -0
  115. monkeybot-3.0.0/integrations/browser-mcp/tests/test_indexed_tools.py +120 -0
  116. monkeybot-3.0.0/integrations/browser-mcp/tests/test_playwright_helpers.py +145 -0
  117. monkeybot-3.0.0/integrations/browser-mcp/tests/test_server_shutdown.py +117 -0
  118. monkeybot-3.0.0/integrations/browser-mcp/uv.lock +1153 -0
  119. monkeybot-3.0.0/pyproject.toml +140 -0
  120. monkeybot-3.0.0/scripts/precommit-pytest.sh +28 -0
  121. monkeybot-3.0.0/scripts/release.py +238 -0
  122. monkeybot-3.0.0/src/monkeybot/core/__init__.py +19 -0
  123. monkeybot-3.0.0/src/monkeybot/core/attachments/__init__.py +28 -0
  124. monkeybot-3.0.0/src/monkeybot/core/attachments/catalog.py +63 -0
  125. monkeybot-3.0.0/src/monkeybot/core/attachments/freeze.py +170 -0
  126. monkeybot-3.0.0/src/monkeybot/core/attachments/store.py +185 -0
  127. monkeybot-3.0.0/src/monkeybot/core/attachments/text.py +84 -0
  128. monkeybot-3.0.0/src/monkeybot/core/attachments/tools.py +41 -0
  129. monkeybot-3.0.0/src/monkeybot/core/bootstrap.py +299 -0
  130. monkeybot-3.0.0/src/monkeybot/core/config/__init__.py +75 -0
  131. monkeybot-3.0.0/src/monkeybot/core/config/runtime_env.py +331 -0
  132. monkeybot-3.0.0/src/monkeybot/core/config/settings.py +426 -0
  133. monkeybot-3.0.0/src/monkeybot/core/config/validation.py +255 -0
  134. monkeybot-3.0.0/src/monkeybot/core/context/__init__.py +949 -0
  135. monkeybot-3.0.0/src/monkeybot/core/context/epoch.py +243 -0
  136. monkeybot-3.0.0/src/monkeybot/core/context/tool_result_ingress.py +315 -0
  137. monkeybot-3.0.0/src/monkeybot/core/context/tool_shapers.py +366 -0
  138. monkeybot-3.0.0/src/monkeybot/core/knowledge/__init__.py +16 -0
  139. monkeybot-3.0.0/src/monkeybot/core/knowledge/captions.py +198 -0
  140. monkeybot-3.0.0/src/monkeybot/core/knowledge/chunking.py +880 -0
  141. monkeybot-3.0.0/src/monkeybot/core/knowledge/config.py +259 -0
  142. monkeybot-3.0.0/src/monkeybot/core/knowledge/embeddings/__init__.py +25 -0
  143. monkeybot-3.0.0/src/monkeybot/core/knowledge/embeddings/base.py +248 -0
  144. monkeybot-3.0.0/src/monkeybot/core/knowledge/embeddings/factory.py +206 -0
  145. monkeybot-3.0.0/src/monkeybot/core/knowledge/embeddings/gemini.py +149 -0
  146. monkeybot-3.0.0/src/monkeybot/core/knowledge/embeddings/nvidia.py +69 -0
  147. monkeybot-3.0.0/src/monkeybot/core/knowledge/embeddings/openai_compat.py +116 -0
  148. monkeybot-3.0.0/src/monkeybot/core/knowledge/embeddings/sanitize.py +27 -0
  149. monkeybot-3.0.0/src/monkeybot/core/knowledge/evidence_guard.py +275 -0
  150. monkeybot-3.0.0/src/monkeybot/core/knowledge/extractors.py +364 -0
  151. monkeybot-3.0.0/src/monkeybot/core/knowledge/fusion.py +419 -0
  152. monkeybot-3.0.0/src/monkeybot/core/knowledge/hook.py +417 -0
  153. monkeybot-3.0.0/src/monkeybot/core/knowledge/indexer.py +680 -0
  154. monkeybot-3.0.0/src/monkeybot/core/knowledge/links.py +175 -0
  155. monkeybot-3.0.0/src/monkeybot/core/knowledge/salience.py +207 -0
  156. monkeybot-3.0.0/src/monkeybot/core/knowledge/sqlite_index.py +767 -0
  157. monkeybot-3.0.0/src/monkeybot/core/knowledge/subsystem.py +298 -0
  158. monkeybot-3.0.0/src/monkeybot/core/knowledge/tool.py +29 -0
  159. monkeybot-3.0.0/src/monkeybot/core/knowledge/types.py +127 -0
  160. monkeybot-3.0.0/src/monkeybot/core/layout.py +292 -0
  161. monkeybot-3.0.0/src/monkeybot/core/llm/provider.py +302 -0
  162. monkeybot-3.0.0/src/monkeybot/core/llm/usage.py +76 -0
  163. monkeybot-3.0.0/src/monkeybot/core/lockfile_names.py +21 -0
  164. monkeybot-3.0.0/src/monkeybot/core/mcp/mcp_client.py +1244 -0
  165. monkeybot-3.0.0/src/monkeybot/core/mcp/ports_mcp.py +103 -0
  166. monkeybot-3.0.0/src/monkeybot/core/memory/__init__.py +12 -0
  167. monkeybot-3.0.0/src/monkeybot/core/memory/config.py +51 -0
  168. monkeybot-3.0.0/src/monkeybot/core/memory/hook.py +77 -0
  169. monkeybot-3.0.0/src/monkeybot/core/memory/ids.py +21 -0
  170. monkeybot-3.0.0/src/monkeybot/core/memory/ingest.py +187 -0
  171. monkeybot-3.0.0/src/monkeybot/core/memory/migrate_layout.py +439 -0
  172. monkeybot-3.0.0/src/monkeybot/core/memory/observability.py +119 -0
  173. monkeybot-3.0.0/src/monkeybot/core/memory/outbox.py +499 -0
  174. monkeybot-3.0.0/src/monkeybot/core/memory/palace.py +444 -0
  175. monkeybot-3.0.0/src/monkeybot/core/memory/subsystem.py +355 -0
  176. monkeybot-3.0.0/src/monkeybot/core/memory/uri.py +26 -0
  177. monkeybot-3.0.0/src/monkeybot/core/memory/writer.py +205 -0
  178. monkeybot-3.0.0/src/monkeybot/core/messages/tool_integrity.py +280 -0
  179. monkeybot-3.0.0/src/monkeybot/core/messages/transform_context.py +121 -0
  180. monkeybot-3.0.0/src/monkeybot/core/persistence/__init__.py +25 -0
  181. monkeybot-3.0.0/src/monkeybot/core/persistence/backends.py +292 -0
  182. monkeybot-3.0.0/src/monkeybot/core/persistence/durable_runs.py +372 -0
  183. monkeybot-3.0.0/src/monkeybot/core/persistence/errors.py +7 -0
  184. monkeybot-3.0.0/src/monkeybot/core/persistence/firestore.indexes.json +31 -0
  185. monkeybot-3.0.0/src/monkeybot/core/persistence/firestore.py +1445 -0
  186. monkeybot-3.0.0/src/monkeybot/core/persistence/history.py +324 -0
  187. monkeybot-3.0.0/src/monkeybot/core/persistence/postgres.py +1586 -0
  188. monkeybot-3.0.0/src/monkeybot/core/persistence/scheduled_loops.py +454 -0
  189. monkeybot-3.0.0/src/monkeybot/core/persistence/session_turn_locks.py +107 -0
  190. monkeybot-3.0.0/src/monkeybot/core/persistence/sqlite.py +466 -0
  191. monkeybot-3.0.0/src/monkeybot/core/persistence/sqlite_backend.py +108 -0
  192. monkeybot-3.0.0/src/monkeybot/core/persistence/sqlite_vector.py +481 -0
  193. monkeybot-3.0.0/src/monkeybot/core/persistence/thread_summary.py +366 -0
  194. monkeybot-3.0.0/src/monkeybot/core/persistence/transcript.py +289 -0
  195. monkeybot-3.0.0/src/monkeybot/core/persistence/transcript_analyzer.py +849 -0
  196. monkeybot-3.0.0/src/monkeybot/core/persistence/usage.py +220 -0
  197. monkeybot-3.0.0/src/monkeybot/core/prompts/harness_prompt.py +183 -0
  198. monkeybot-3.0.0/src/monkeybot/core/prompts/headings.py +58 -0
  199. monkeybot-3.0.0/src/monkeybot/core/prompts/prompt.py +203 -0
  200. monkeybot-3.0.0/src/monkeybot/core/runtime/__init__.py +5 -0
  201. monkeybot-3.0.0/src/monkeybot/core/runtime/context_budget.py +237 -0
  202. monkeybot-3.0.0/src/monkeybot/core/runtime/doom_loop.py +121 -0
  203. monkeybot-3.0.0/src/monkeybot/core/runtime/events.py +1067 -0
  204. monkeybot-3.0.0/src/monkeybot/core/runtime/history_compaction.py +407 -0
  205. monkeybot-3.0.0/src/monkeybot/core/runtime/loop.py +164 -0
  206. monkeybot-3.0.0/src/monkeybot/core/runtime/loop_hooks.py +133 -0
  207. monkeybot-3.0.0/src/monkeybot/core/runtime/loop_messages.py +261 -0
  208. monkeybot-3.0.0/src/monkeybot/core/runtime/loop_ports.py +17 -0
  209. monkeybot-3.0.0/src/monkeybot/core/runtime/loop_usage.py +166 -0
  210. monkeybot-3.0.0/src/monkeybot/core/runtime/realtime_loop.py +692 -0
  211. monkeybot-3.0.0/src/monkeybot/core/runtime/tool_batch.py +147 -0
  212. monkeybot-3.0.0/src/monkeybot/core/runtime/tool_dispatch.py +1037 -0
  213. monkeybot-3.0.0/src/monkeybot/core/runtime/turn_loop.py +1429 -0
  214. monkeybot-3.0.0/src/monkeybot/core/subagents/progress_publish.py +183 -0
  215. monkeybot-3.0.0/src/monkeybot/core/subagents/subagent_proto.py +371 -0
  216. monkeybot-3.0.0/src/monkeybot/core/subagents/subagent_worker.py +496 -0
  217. monkeybot-3.0.0/src/monkeybot/core/subagents/worker_pool.py +635 -0
  218. monkeybot-3.0.0/src/monkeybot/core/tools/core_tool_executor.py +2170 -0
  219. monkeybot-3.0.0/src/monkeybot/core/tools/fs_isolation.py +316 -0
  220. monkeybot-3.0.0/src/monkeybot/core/tools/inspector.py +277 -0
  221. monkeybot-3.0.0/src/monkeybot/core/tools/patch.py +567 -0
  222. monkeybot-3.0.0/src/monkeybot/core/tools/permission.py +291 -0
  223. monkeybot-3.0.0/src/monkeybot/core/tools/sandbox_executor.py +357 -0
  224. monkeybot-3.0.0/src/monkeybot/core/tools/spill_inventory.py +518 -0
  225. monkeybot-3.0.0/src/monkeybot/core/tools/terminal.py +756 -0
  226. monkeybot-3.0.0/src/monkeybot/core/tools/tool_hint.py +128 -0
  227. monkeybot-3.0.0/src/monkeybot/core/tools/tool_kind.py +39 -0
  228. monkeybot-3.0.0/src/monkeybot/core/tools/workspace_service.py +1486 -0
  229. monkeybot-3.0.0/src/monkeybot/core/types/types_tools.py +45 -0
  230. monkeybot-3.0.0/src/monkeybot/core/workspace/gcs.py +144 -0
  231. monkeybot-3.0.0/src/monkeybot/core/workspace/local.py +173 -0
  232. monkeybot-3.0.0/src/monkeybot/core/workspace/protocol.py +52 -0
  233. monkeybot-3.0.0/src/monkeybot/core/workspace/s3.py +169 -0
  234. monkeybot-3.0.0/src/monkeybot/core/workspace_layout.py +19 -0
  235. monkeybot-3.0.0/src/monkeybot/gateway/realtime/app.py +131 -0
  236. monkeybot-3.0.0/src/monkeybot/gateway/realtime/deps.py +54 -0
  237. monkeybot-3.0.0/src/monkeybot/gateway/realtime/manager.py +101 -0
  238. monkeybot-3.0.0/src/monkeybot/gateway/realtime/metrics.py +147 -0
  239. monkeybot-3.0.0/src/monkeybot/gateway/realtime/routes.py +906 -0
  240. monkeybot-3.0.0/src/monkeybot/gateway/realtime/session.py +236 -0
  241. monkeybot-3.0.0/src/monkeybot/gateway/sse/app.py +814 -0
  242. monkeybot-3.0.0/src/monkeybot/gateway/sse/loop_port.py +34 -0
  243. monkeybot-3.0.0/src/monkeybot/gateway/sse/models.py +215 -0
  244. monkeybot-3.0.0/src/monkeybot/gateway/sse/routes.py +1207 -0
  245. monkeybot-3.0.0/src/monkeybot/gateway/sse/scheduler_routes.py +207 -0
  246. monkeybot-3.0.0/src/monkeybot/gateway/sse/session_bus.py +393 -0
  247. monkeybot-3.0.0/src/monkeybot/observability/__init__.py +240 -0
  248. monkeybot-3.0.0/src/monkeybot/observability/instrumentation.py +151 -0
  249. monkeybot-3.0.0/src/monkeybot/observability/spans.py +473 -0
  250. monkeybot-3.0.0/src/monkeybot/observability/sqlite_exporter.py +722 -0
  251. monkeybot-3.0.0/src/monkeybot/providers/__init__.py +21 -0
  252. monkeybot-3.0.0/src/monkeybot/providers/_openai_compat.py +715 -0
  253. monkeybot-3.0.0/src/monkeybot/providers/_utils.py +650 -0
  254. monkeybot-3.0.0/src/monkeybot/providers/bedrock.py +142 -0
  255. monkeybot-3.0.0/src/monkeybot/providers/claude.py +127 -0
  256. monkeybot-3.0.0/src/monkeybot/providers/gemini.py +780 -0
  257. monkeybot-3.0.0/src/monkeybot/providers/model_capabilities.py +52 -0
  258. monkeybot-3.0.0/src/monkeybot/providers/ollama.py +181 -0
  259. monkeybot-3.0.0/src/monkeybot/providers/openai.py +127 -0
  260. monkeybot-3.0.0/src/monkeybot/providers/openrouter.py +106 -0
  261. monkeybot-3.0.0/src/monkeybot/providers/pricing.py +100 -0
  262. monkeybot-3.0.0/src/monkeybot/providers/vertex_claude.py +144 -0
  263. monkeybot-3.0.0/src/monkeybot/scheduler/worker.py +91 -0
  264. monkeybot-3.0.0/src/monkeybot/todo_list/__init__.py +45 -0
  265. monkeybot-3.0.0/src/monkeybot/todo_list/store.py +264 -0
  266. monkeybot-3.0.0/src/monkeybot/todo_list/tool.py +132 -0
  267. monkeybot-3.0.0/tests/cli/test_main.py +111 -0
  268. monkeybot-3.0.0/tests/conftest.py +91 -0
  269. monkeybot-3.0.0/tests/core/fixtures/bitbucket_dc_style_pr.diff +456 -0
  270. monkeybot-3.0.0/tests/core/memory/helpers.py +28 -0
  271. monkeybot-3.0.0/tests/core/memory/in_memory_palace.py +107 -0
  272. monkeybot-3.0.0/tests/core/memory/test_mempalace.py +485 -0
  273. monkeybot-3.0.0/tests/core/memory/test_review_fixes.py +1234 -0
  274. monkeybot-3.0.0/tests/core/test_agent_layout.py +267 -0
  275. monkeybot-3.0.0/tests/core/test_attachment_freeze.py +130 -0
  276. monkeybot-3.0.0/tests/core/test_bootstrap.py +394 -0
  277. monkeybot-3.0.0/tests/core/test_config_extensions.py +554 -0
  278. monkeybot-3.0.0/tests/core/test_context.py +687 -0
  279. monkeybot-3.0.0/tests/core/test_context_budget.py +167 -0
  280. monkeybot-3.0.0/tests/core/test_context_epoch.py +268 -0
  281. monkeybot-3.0.0/tests/core/test_core_tool_executor.py +4306 -0
  282. monkeybot-3.0.0/tests/core/test_doom_loop.py +506 -0
  283. monkeybot-3.0.0/tests/core/test_durable_events.py +103 -0
  284. monkeybot-3.0.0/tests/core/test_durable_runs.py +217 -0
  285. monkeybot-3.0.0/tests/core/test_empty_completion.py +168 -0
  286. monkeybot-3.0.0/tests/core/test_events.py +622 -0
  287. monkeybot-3.0.0/tests/core/test_evidence_guard.py +392 -0
  288. monkeybot-3.0.0/tests/core/test_firestore_history.py +352 -0
  289. monkeybot-3.0.0/tests/core/test_fs_isolation.py +242 -0
  290. monkeybot-3.0.0/tests/core/test_gemini_history_replay.py +327 -0
  291. monkeybot-3.0.0/tests/core/test_harness_prompt.py +162 -0
  292. monkeybot-3.0.0/tests/core/test_history.py +366 -0
  293. monkeybot-3.0.0/tests/core/test_history_compaction_split.py +120 -0
  294. monkeybot-3.0.0/tests/core/test_inspector.py +251 -0
  295. monkeybot-3.0.0/tests/core/test_knowledge_chunking.py +283 -0
  296. monkeybot-3.0.0/tests/core/test_knowledge_chunking_rank.py +86 -0
  297. monkeybot-3.0.0/tests/core/test_knowledge_config.py +185 -0
  298. monkeybot-3.0.0/tests/core/test_knowledge_embeddings.py +332 -0
  299. monkeybot-3.0.0/tests/core/test_knowledge_fts.py +218 -0
  300. monkeybot-3.0.0/tests/core/test_knowledge_fusion.py +475 -0
  301. monkeybot-3.0.0/tests/core/test_knowledge_fusion_ann.py +166 -0
  302. monkeybot-3.0.0/tests/core/test_knowledge_hook.py +71 -0
  303. monkeybot-3.0.0/tests/core/test_knowledge_indexer.py +955 -0
  304. monkeybot-3.0.0/tests/core/test_knowledge_links.py +106 -0
  305. monkeybot-3.0.0/tests/core/test_knowledge_media.py +336 -0
  306. monkeybot-3.0.0/tests/core/test_knowledge_salience.py +211 -0
  307. monkeybot-3.0.0/tests/core/test_knowledge_single_writer.py +291 -0
  308. monkeybot-3.0.0/tests/core/test_knowledge_subsystem.py +102 -0
  309. monkeybot-3.0.0/tests/core/test_knowledge_vectors.py +283 -0
  310. monkeybot-3.0.0/tests/core/test_loop.py +2761 -0
  311. monkeybot-3.0.0/tests/core/test_loop_hooks.py +584 -0
  312. monkeybot-3.0.0/tests/core/test_loop_observability.py +196 -0
  313. monkeybot-3.0.0/tests/core/test_loop_transcript.py +270 -0
  314. monkeybot-3.0.0/tests/core/test_mcp_client.py +993 -0
  315. monkeybot-3.0.0/tests/core/test_memory_layout_migrate.py +210 -0
  316. monkeybot-3.0.0/tests/core/test_message_pipeline.py +143 -0
  317. monkeybot-3.0.0/tests/core/test_patch.py +403 -0
  318. monkeybot-3.0.0/tests/core/test_pricing.py +23 -0
  319. monkeybot-3.0.0/tests/core/test_progress_publish.py +255 -0
  320. monkeybot-3.0.0/tests/core/test_prompt.py +336 -0
  321. monkeybot-3.0.0/tests/core/test_realtime_loop.py +458 -0
  322. monkeybot-3.0.0/tests/core/test_run_command_parse.py +89 -0
  323. monkeybot-3.0.0/tests/core/test_runtime_env.py +396 -0
  324. monkeybot-3.0.0/tests/core/test_sandbox_executor.py +798 -0
  325. monkeybot-3.0.0/tests/core/test_spill_dynamic.py +386 -0
  326. monkeybot-3.0.0/tests/core/test_spill_inventory.py +81 -0
  327. monkeybot-3.0.0/tests/core/test_storage_backends.py +1238 -0
  328. monkeybot-3.0.0/tests/core/test_subagent_proto.py +490 -0
  329. monkeybot-3.0.0/tests/core/test_subagent_trace_propagation.py +557 -0
  330. monkeybot-3.0.0/tests/core/test_subagent_worker_paths.py +402 -0
  331. monkeybot-3.0.0/tests/core/test_terminal.py +989 -0
  332. monkeybot-3.0.0/tests/core/test_thread_summary_wire.py +579 -0
  333. monkeybot-3.0.0/tests/core/test_tool_def_schema.py +49 -0
  334. monkeybot-3.0.0/tests/core/test_tool_integrity.py +198 -0
  335. monkeybot-3.0.0/tests/core/test_tool_result_ingress.py +208 -0
  336. monkeybot-3.0.0/tests/core/test_transcript.py +242 -0
  337. monkeybot-3.0.0/tests/core/test_transcript_analyzer.py +371 -0
  338. monkeybot-3.0.0/tests/core/test_truncated_tool_batch.py +175 -0
  339. monkeybot-3.0.0/tests/core/test_usage.py +269 -0
  340. monkeybot-3.0.0/tests/core/test_worker_pool.py +693 -0
  341. monkeybot-3.0.0/tests/core/test_workspace_layout.py +75 -0
  342. monkeybot-3.0.0/tests/core/test_workspace_write_scope.py +114 -0
  343. monkeybot-3.0.0/tests/evals/scenario_runner.py +183 -0
  344. monkeybot-3.0.0/tests/evals/scenarios/tool_glob_grep.yaml +24 -0
  345. monkeybot-3.0.0/tests/evals/scenarios/tool_load_file.yaml +17 -0
  346. monkeybot-3.0.0/tests/evals/scenarios/tool_loops.yaml +24 -0
  347. monkeybot-3.0.0/tests/evals/scenarios/tool_replace_apply_patch.yaml +32 -0
  348. monkeybot-3.0.0/tests/evals/scenarios/tool_run_command.yaml +17 -0
  349. monkeybot-3.0.0/tests/evals/scenarios/tool_search_knowledge.yaml +17 -0
  350. monkeybot-3.0.0/tests/evals/scenarios/tool_search_memory.yaml +17 -0
  351. monkeybot-3.0.0/tests/evals/scenarios/tool_todo_list.yaml +18 -0
  352. monkeybot-3.0.0/tests/evals/scenarios/tool_web_search.yaml +17 -0
  353. monkeybot-3.0.0/tests/evals/scenarios/tool_write.yaml +18 -0
  354. monkeybot-3.0.0/tests/evals/test_agent_behavior.py +48 -0
  355. monkeybot-3.0.0/tests/evals/test_memory_knowledge_routing.py +70 -0
  356. monkeybot-3.0.0/tests/gateway/realtime/test_app.py +40 -0
  357. monkeybot-3.0.0/tests/gateway/realtime/test_manager.py +133 -0
  358. monkeybot-3.0.0/tests/gateway/realtime/test_routes_client_text.py +249 -0
  359. monkeybot-3.0.0/tests/gateway/sse/test_create_session_model.py +282 -0
  360. monkeybot-3.0.0/tests/gateway/sse/test_routes.py +682 -0
  361. monkeybot-3.0.0/tests/gateway/sse/test_scheduler_routes.py +166 -0
  362. monkeybot-3.0.0/tests/gateway/sse/test_session_bus.py +231 -0
  363. monkeybot-3.0.0/tests/gateway/sse/test_transcript_wiring.py +155 -0
  364. monkeybot-3.0.0/tests/gateway/test_otel_lifespan.py +107 -0
  365. monkeybot-3.0.0/tests/gateway/test_resolve_provider.py +74 -0
  366. monkeybot-3.0.0/tests/gateway/test_sse_events.py +113 -0
  367. monkeybot-3.0.0/tests/gateway/test_subagent_event_publisher.py +43 -0
  368. monkeybot-3.0.0/tests/integration/test_observability_integration.py +382 -0
  369. monkeybot-3.0.0/tests/observability/test_init.py +154 -0
  370. monkeybot-3.0.0/tests/observability/test_sqlite_exporter.py +655 -0
  371. monkeybot-3.0.0/tests/providers/conftest.py +79 -0
  372. monkeybot-3.0.0/tests/providers/test_anthropic_cache.py +743 -0
  373. monkeybot-3.0.0/tests/providers/test_bedrock_estimate.py +48 -0
  374. monkeybot-3.0.0/tests/providers/test_gemini_usage.py +355 -0
  375. monkeybot-3.0.0/tests/providers/test_model_capabilities.py +40 -0
  376. monkeybot-3.0.0/tests/providers/test_ollama.py +125 -0
  377. monkeybot-3.0.0/tests/providers/test_openai_compat_usage.py +514 -0
  378. monkeybot-3.0.0/tests/providers/test_openai_history.py +356 -0
  379. monkeybot-3.0.0/tests/providers/test_pricing.py +97 -0
  380. monkeybot-3.0.0/tests/providers/test_sonnet5_sampling.py +357 -0
  381. monkeybot-3.0.0/tests/test_cold_start.py +84 -0
  382. monkeybot-3.0.0/tests/test_packaging_config.py +84 -0
  383. monkeybot-3.0.0/tests/test_release_script.py +190 -0
  384. monkeybot-3.0.0/tests/todo_list/test_todo_list.py +308 -0
  385. monkeybot-3.0.0/tests/web_search/test_web_search.py +293 -0
  386. monkeybot-3.0.0/uv.lock +5429 -0
  387. monkeybot-2.2.0/.github/workflows/live-eval-smoke.yml +0 -199
  388. monkeybot-2.2.0/.github/workflows/publish-release.yml +0 -149
  389. monkeybot-2.2.0/.gitignore +0 -62
  390. monkeybot-2.2.0/BACKLOG.md +0 -77
  391. monkeybot-2.2.0/CHANGELOG.md +0 -179
  392. monkeybot-2.2.0/PKG-INFO +0 -180
  393. monkeybot-2.2.0/cli/pyproject.toml +0 -44
  394. monkeybot-2.2.0/cli/skills/monkeybot/SKILL.md +0 -199
  395. monkeybot-2.2.0/cli/skills/monkeybot/references/config-sections.md +0 -160
  396. monkeybot-2.2.0/cli/src/monkeybot_cli/chat_session.py +0 -911
  397. monkeybot-2.2.0/cli/src/monkeybot_cli/chat_status_bar.py +0 -205
  398. monkeybot-2.2.0/cli/src/monkeybot_cli/chat_tool_display.py +0 -334
  399. monkeybot-2.2.0/cli/src/monkeybot_cli/chat_tui.py +0 -1491
  400. monkeybot-2.2.0/cli/src/monkeybot_cli/chat_tui_widgets.py +0 -996
  401. monkeybot-2.2.0/cli/src/monkeybot_cli/commands/chat.py +0 -824
  402. monkeybot-2.2.0/cli/src/monkeybot_cli/commands/doctor.py +0 -393
  403. monkeybot-2.2.0/cli/src/monkeybot_cli/commands/run_cmd.py +0 -40
  404. monkeybot-2.2.0/cli/src/monkeybot_cli/commands/validate.py +0 -386
  405. monkeybot-2.2.0/cli/src/monkeybot_cli/compat.py +0 -7
  406. monkeybot-2.2.0/cli/src/monkeybot_cli/extras_catalog.py +0 -95
  407. monkeybot-2.2.0/cli/src/monkeybot_cli/main.py +0 -38
  408. monkeybot-2.2.0/cli/src/monkeybot_cli/opensandbox_lifecycle.py +0 -314
  409. monkeybot-2.2.0/cli/src/monkeybot_cli/providers.py +0 -112
  410. monkeybot-2.2.0/cli/src/monkeybot_cli/realtime/gateway_manager.py +0 -142
  411. monkeybot-2.2.0/cli/src/monkeybot_cli/realtime/session.py +0 -256
  412. monkeybot-2.2.0/cli/src/monkeybot_cli/realtime/session_controller.py +0 -501
  413. monkeybot-2.2.0/cli/src/monkeybot_cli/realtime/talk_ui.py +0 -243
  414. monkeybot-2.2.0/cli/src/monkeybot_cli/runtime_python.py +0 -91
  415. monkeybot-2.2.0/cli/src/monkeybot_cli/scaffold.py +0 -263
  416. monkeybot-2.2.0/cli/src/monkeybot_cli/scaffold_defaults/Dockerfile +0 -27
  417. monkeybot-2.2.0/cli/src/monkeybot_cli/scaffold_defaults/browser/SKILL.md +0 -15
  418. monkeybot-2.2.0/cli/src/monkeybot_cli/scaffold_defaults/command_allowlist.yaml +0 -57
  419. monkeybot-2.2.0/cli/src/monkeybot_cli/scaffold_defaults/env.example +0 -36
  420. monkeybot-2.2.0/cli/src/monkeybot_cli/scaffold_defaults/mcp.json +0 -46
  421. monkeybot-2.2.0/cli/src/monkeybot_cli/scaffold_defaults/monkeybot.example.yaml +0 -194
  422. monkeybot-2.2.0/cli/tests/test_chat_session.py +0 -363
  423. monkeybot-2.2.0/cli/tests/test_chat_tui.py +0 -1243
  424. monkeybot-2.2.0/cli/tests/test_cli.py +0 -189
  425. monkeybot-2.2.0/cli/tests/test_doctor.py +0 -49
  426. monkeybot-2.2.0/cli/tests/test_extras_catalog.py +0 -87
  427. monkeybot-2.2.0/cli/tests/test_gateway_health.py +0 -135
  428. monkeybot-2.2.0/cli/tests/test_realtime_session_controller.py +0 -301
  429. monkeybot-2.2.0/cli/tests/test_run_cmd.py +0 -80
  430. monkeybot-2.2.0/cli/tests/test_runtime_python.py +0 -109
  431. monkeybot-2.2.0/cli/tests/test_scaffold.py +0 -120
  432. monkeybot-2.2.0/cli/uv.lock +0 -1612
  433. monkeybot-2.2.0/docker/docker-compose.sandbox.yml +0 -49
  434. monkeybot-2.2.0/docs/agent-layout.md +0 -109
  435. monkeybot-2.2.0/docs/browser-mcp.md +0 -170
  436. monkeybot-2.2.0/docs/cloud-deployment-design.md +0 -96
  437. monkeybot-2.2.0/docs/deploy-aws-agentcore.md +0 -109
  438. monkeybot-2.2.0/docs/deploy-pattern-a-container.md +0 -402
  439. monkeybot-2.2.0/docs/deploy-pattern-b-serverless.md +0 -354
  440. monkeybot-2.2.0/docs/deploy-pattern-c-agent-platform.md +0 -225
  441. monkeybot-2.2.0/docs/deploy-pattern-d-realtime.md +0 -307
  442. monkeybot-2.2.0/docs/features.md +0 -801
  443. monkeybot-2.2.0/docs/getting-started.md +0 -165
  444. monkeybot-2.2.0/docs/live-evals.md +0 -64
  445. monkeybot-2.2.0/docs/mcp.md +0 -194
  446. monkeybot-2.2.0/docs/progressive-mcp-tools.md +0 -267
  447. monkeybot-2.2.0/docs/sse-gateway-ui.md +0 -272
  448. monkeybot-2.2.0/evals/models.py +0 -97
  449. monkeybot-2.2.0/evals/report.py +0 -348
  450. monkeybot-2.2.0/evals/scenarios/mcp/tool_invoke.yaml +0 -12
  451. monkeybot-2.2.0/evals/scenarios/memory/recall_single_session.yaml +0 -11
  452. monkeybot-2.2.0/evals/smoke_agent/monkeybot_config/command_allowlist.yaml +0 -33
  453. monkeybot-2.2.0/evals/smoke_agent/monkeybot_config/monkeybot.yaml +0 -52
  454. monkeybot-2.2.0/evals/smoke_agent/uv.lock +0 -2144
  455. monkeybot-2.2.0/evals/suites/smoke.yaml +0 -12
  456. monkeybot-2.2.0/evals/test_assertions.py +0 -120
  457. monkeybot-2.2.0/examples/README.md +0 -34
  458. monkeybot-2.2.0/examples/agentcore/handler.py +0 -112
  459. monkeybot-2.2.0/examples/agentcore/runtime_app.py +0 -103
  460. monkeybot-2.2.0/examples/agentengine/handler.py +0 -77
  461. monkeybot-2.2.0/examples/cloud-functions/main.py +0 -76
  462. monkeybot-2.2.0/examples/lambda/handler.py +0 -79
  463. monkeybot-2.2.0/examples/skills/browser/SKILL.md +0 -68
  464. monkeybot-2.2.0/examples/skills/diagnostics/README.md +0 -264
  465. monkeybot-2.2.0/examples/skills/diagnostics/diagnostics.py +0 -130
  466. monkeybot-2.2.0/examples/skills/image-generator/SKILL.md +0 -54
  467. monkeybot-2.2.0/examples/skills/image-generator/generate_image.py +0 -199
  468. monkeybot-2.2.0/integrations/browser-mcp/pyproject.toml +0 -22
  469. monkeybot-2.2.0/integrations/browser-mcp/src/browser_mcp/screenshots.py +0 -57
  470. monkeybot-2.2.0/integrations/browser-mcp/src/browser_mcp/server.py +0 -351
  471. monkeybot-2.2.0/integrations/browser-mcp/tests/test_indexed_tools.py +0 -117
  472. monkeybot-2.2.0/integrations/browser-mcp/tests/test_server_shutdown.py +0 -104
  473. monkeybot-2.2.0/integrations/browser-mcp/uv.lock +0 -936
  474. monkeybot-2.2.0/pyproject.toml +0 -124
  475. monkeybot-2.2.0/scripts/precommit-pytest.sh +0 -22
  476. monkeybot-2.2.0/scripts/release.py +0 -227
  477. monkeybot-2.2.0/scripts/verify_memory.py +0 -28
  478. monkeybot-2.2.0/src/monkeybot/core/__init__.py +0 -19
  479. monkeybot-2.2.0/src/monkeybot/core/attachments/__init__.py +0 -22
  480. monkeybot-2.2.0/src/monkeybot/core/attachments/catalog.py +0 -62
  481. monkeybot-2.2.0/src/monkeybot/core/attachments/freeze.py +0 -158
  482. monkeybot-2.2.0/src/monkeybot/core/attachments/store.py +0 -180
  483. monkeybot-2.2.0/src/monkeybot/core/attachments/text.py +0 -72
  484. monkeybot-2.2.0/src/monkeybot/core/attachments/tools.py +0 -54
  485. monkeybot-2.2.0/src/monkeybot/core/bootstrap.py +0 -242
  486. monkeybot-2.2.0/src/monkeybot/core/config/__init__.py +0 -71
  487. monkeybot-2.2.0/src/monkeybot/core/config/runtime_env.py +0 -297
  488. monkeybot-2.2.0/src/monkeybot/core/config/settings.py +0 -341
  489. monkeybot-2.2.0/src/monkeybot/core/config/validation.py +0 -249
  490. monkeybot-2.2.0/src/monkeybot/core/context/__init__.py +0 -781
  491. monkeybot-2.2.0/src/monkeybot/core/context/curator.py +0 -255
  492. monkeybot-2.2.0/src/monkeybot/core/context/epoch.py +0 -226
  493. monkeybot-2.2.0/src/monkeybot/core/context/memory_prompt.py +0 -222
  494. monkeybot-2.2.0/src/monkeybot/core/context/tool_result_ingress.py +0 -290
  495. monkeybot-2.2.0/src/monkeybot/core/context/tool_shapers.py +0 -361
  496. monkeybot-2.2.0/src/monkeybot/core/layout.py +0 -198
  497. monkeybot-2.2.0/src/monkeybot/core/llm/provider.py +0 -296
  498. monkeybot-2.2.0/src/monkeybot/core/llm/usage.py +0 -57
  499. monkeybot-2.2.0/src/monkeybot/core/mcp/mcp_client.py +0 -1215
  500. monkeybot-2.2.0/src/monkeybot/core/mcp/ports_mcp.py +0 -109
  501. monkeybot-2.2.0/src/monkeybot/core/memory/__init__.py +0 -24
  502. monkeybot-2.2.0/src/monkeybot/core/memory/hook.py +0 -413
  503. monkeybot-2.2.0/src/monkeybot/core/memory/index_format.py +0 -104
  504. monkeybot-2.2.0/src/monkeybot/core/memory/integrity.py +0 -180
  505. monkeybot-2.2.0/src/monkeybot/core/memory/organizer.py +0 -270
  506. monkeybot-2.2.0/src/monkeybot/core/memory/storage_ops.py +0 -139
  507. monkeybot-2.2.0/src/monkeybot/core/memory/subsystem.py +0 -91
  508. monkeybot-2.2.0/src/monkeybot/core/messages/tool_integrity.py +0 -262
  509. monkeybot-2.2.0/src/monkeybot/core/messages/transform_context.py +0 -84
  510. monkeybot-2.2.0/src/monkeybot/core/persistence/__init__.py +0 -17
  511. monkeybot-2.2.0/src/monkeybot/core/persistence/backends.py +0 -236
  512. monkeybot-2.2.0/src/monkeybot/core/persistence/durable_runs.py +0 -286
  513. monkeybot-2.2.0/src/monkeybot/core/persistence/firestore.py +0 -658
  514. monkeybot-2.2.0/src/monkeybot/core/persistence/history.py +0 -156
  515. monkeybot-2.2.0/src/monkeybot/core/persistence/postgres.py +0 -895
  516. monkeybot-2.2.0/src/monkeybot/core/persistence/scheduled_loops.py +0 -435
  517. monkeybot-2.2.0/src/monkeybot/core/persistence/session_turn_locks.py +0 -94
  518. monkeybot-2.2.0/src/monkeybot/core/persistence/sqlite.py +0 -219
  519. monkeybot-2.2.0/src/monkeybot/core/persistence/sqlite_backend.py +0 -74
  520. monkeybot-2.2.0/src/monkeybot/core/persistence/thread_summary.py +0 -61
  521. monkeybot-2.2.0/src/monkeybot/core/persistence/transcript.py +0 -194
  522. monkeybot-2.2.0/src/monkeybot/core/persistence/usage.py +0 -149
  523. monkeybot-2.2.0/src/monkeybot/core/prompts/harness_prompt.py +0 -197
  524. monkeybot-2.2.0/src/monkeybot/core/prompts/prompt.py +0 -215
  525. monkeybot-2.2.0/src/monkeybot/core/runtime/__init__.py +0 -1
  526. monkeybot-2.2.0/src/monkeybot/core/runtime/context_budget.py +0 -267
  527. monkeybot-2.2.0/src/monkeybot/core/runtime/events.py +0 -819
  528. monkeybot-2.2.0/src/monkeybot/core/runtime/loop.py +0 -2374
  529. monkeybot-2.2.0/src/monkeybot/core/runtime/realtime_loop.py +0 -654
  530. monkeybot-2.2.0/src/monkeybot/core/subagents/subagent_proto.py +0 -315
  531. monkeybot-2.2.0/src/monkeybot/core/subagents/subagent_worker.py +0 -434
  532. monkeybot-2.2.0/src/monkeybot/core/subagents/worker_pool.py +0 -403
  533. monkeybot-2.2.0/src/monkeybot/core/tools/core_tool_executor.py +0 -1549
  534. monkeybot-2.2.0/src/monkeybot/core/tools/inspector.py +0 -226
  535. monkeybot-2.2.0/src/monkeybot/core/tools/patch.py +0 -480
  536. monkeybot-2.2.0/src/monkeybot/core/tools/permission.py +0 -284
  537. monkeybot-2.2.0/src/monkeybot/core/tools/sandbox_executor.py +0 -349
  538. monkeybot-2.2.0/src/monkeybot/core/tools/spill_inventory.py +0 -35
  539. monkeybot-2.2.0/src/monkeybot/core/tools/terminal.py +0 -381
  540. monkeybot-2.2.0/src/monkeybot/core/tools/workspace_service.py +0 -764
  541. monkeybot-2.2.0/src/monkeybot/core/tools/workspace_tools.py +0 -117
  542. monkeybot-2.2.0/src/monkeybot/core/types/types_tools.py +0 -29
  543. monkeybot-2.2.0/src/monkeybot/core/workspace/gcs.py +0 -130
  544. monkeybot-2.2.0/src/monkeybot/core/workspace/local.py +0 -162
  545. monkeybot-2.2.0/src/monkeybot/core/workspace/protocol.py +0 -45
  546. monkeybot-2.2.0/src/monkeybot/core/workspace/s3.py +0 -151
  547. monkeybot-2.2.0/src/monkeybot/core/workspace_layout.py +0 -26
  548. monkeybot-2.2.0/src/monkeybot/gateway/realtime/app.py +0 -127
  549. monkeybot-2.2.0/src/monkeybot/gateway/realtime/deps.py +0 -52
  550. monkeybot-2.2.0/src/monkeybot/gateway/realtime/manager.py +0 -77
  551. monkeybot-2.2.0/src/monkeybot/gateway/realtime/metrics.py +0 -144
  552. monkeybot-2.2.0/src/monkeybot/gateway/realtime/routes.py +0 -858
  553. monkeybot-2.2.0/src/monkeybot/gateway/realtime/session.py +0 -232
  554. monkeybot-2.2.0/src/monkeybot/gateway/sse/app.py +0 -719
  555. monkeybot-2.2.0/src/monkeybot/gateway/sse/loop_port.py +0 -31
  556. monkeybot-2.2.0/src/monkeybot/gateway/sse/models.py +0 -177
  557. monkeybot-2.2.0/src/monkeybot/gateway/sse/routes.py +0 -1101
  558. monkeybot-2.2.0/src/monkeybot/gateway/sse/scheduler_routes.py +0 -200
  559. monkeybot-2.2.0/src/monkeybot/gateway/sse/session_bus.py +0 -226
  560. monkeybot-2.2.0/src/monkeybot/observability/__init__.py +0 -220
  561. monkeybot-2.2.0/src/monkeybot/observability/instrumentation.py +0 -153
  562. monkeybot-2.2.0/src/monkeybot/observability/spans.py +0 -455
  563. monkeybot-2.2.0/src/monkeybot/providers/__init__.py +0 -19
  564. monkeybot-2.2.0/src/monkeybot/providers/_openai_compat.py +0 -450
  565. monkeybot-2.2.0/src/monkeybot/providers/_utils.py +0 -473
  566. monkeybot-2.2.0/src/monkeybot/providers/bedrock.py +0 -145
  567. monkeybot-2.2.0/src/monkeybot/providers/claude.py +0 -125
  568. monkeybot-2.2.0/src/monkeybot/providers/gemini.py +0 -677
  569. monkeybot-2.2.0/src/monkeybot/providers/ollama.py +0 -152
  570. monkeybot-2.2.0/src/monkeybot/providers/openai.py +0 -127
  571. monkeybot-2.2.0/src/monkeybot/providers/pricing.py +0 -60
  572. monkeybot-2.2.0/src/monkeybot/providers/vertex_claude.py +0 -148
  573. monkeybot-2.2.0/src/monkeybot/scheduler/worker.py +0 -87
  574. monkeybot-2.2.0/tests/cli/test_main.py +0 -47
  575. monkeybot-2.2.0/tests/conftest.py +0 -43
  576. monkeybot-2.2.0/tests/core/memory/fake_workspace_storage.py +0 -57
  577. monkeybot-2.2.0/tests/core/memory/test_hook_with_storage.py +0 -76
  578. monkeybot-2.2.0/tests/core/memory/test_index_format.py +0 -38
  579. monkeybot-2.2.0/tests/core/memory/test_organizer_with_storage.py +0 -88
  580. monkeybot-2.2.0/tests/core/memory/test_subsystem.py +0 -153
  581. monkeybot-2.2.0/tests/core/test_agent_layout.py +0 -165
  582. monkeybot-2.2.0/tests/core/test_attachment_freeze.py +0 -124
  583. monkeybot-2.2.0/tests/core/test_bootstrap.py +0 -289
  584. monkeybot-2.2.0/tests/core/test_config_extensions.py +0 -417
  585. monkeybot-2.2.0/tests/core/test_context.py +0 -541
  586. monkeybot-2.2.0/tests/core/test_context_budget.py +0 -177
  587. monkeybot-2.2.0/tests/core/test_context_curator.py +0 -105
  588. monkeybot-2.2.0/tests/core/test_context_epoch.py +0 -220
  589. monkeybot-2.2.0/tests/core/test_core_tool_executor.py +0 -1863
  590. monkeybot-2.2.0/tests/core/test_doom_loop.py +0 -506
  591. monkeybot-2.2.0/tests/core/test_durable_events.py +0 -69
  592. monkeybot-2.2.0/tests/core/test_durable_runs.py +0 -190
  593. monkeybot-2.2.0/tests/core/test_events.py +0 -314
  594. monkeybot-2.2.0/tests/core/test_firestore_history.py +0 -98
  595. monkeybot-2.2.0/tests/core/test_gemini_history_replay.py +0 -217
  596. monkeybot-2.2.0/tests/core/test_harness_prompt.py +0 -152
  597. monkeybot-2.2.0/tests/core/test_history.py +0 -346
  598. monkeybot-2.2.0/tests/core/test_inspector.py +0 -225
  599. monkeybot-2.2.0/tests/core/test_loop.py +0 -2450
  600. monkeybot-2.2.0/tests/core/test_loop_hooks.py +0 -582
  601. monkeybot-2.2.0/tests/core/test_loop_observability.py +0 -195
  602. monkeybot-2.2.0/tests/core/test_loop_transcript.py +0 -240
  603. monkeybot-2.2.0/tests/core/test_mcp_client.py +0 -896
  604. monkeybot-2.2.0/tests/core/test_memory.py +0 -202
  605. monkeybot-2.2.0/tests/core/test_memory_hook.py +0 -473
  606. monkeybot-2.2.0/tests/core/test_memory_organizer.py +0 -226
  607. monkeybot-2.2.0/tests/core/test_memory_prompt.py +0 -234
  608. monkeybot-2.2.0/tests/core/test_message_pipeline.py +0 -100
  609. monkeybot-2.2.0/tests/core/test_patch.py +0 -228
  610. monkeybot-2.2.0/tests/core/test_prompt.py +0 -314
  611. monkeybot-2.2.0/tests/core/test_realtime_loop.py +0 -444
  612. monkeybot-2.2.0/tests/core/test_run_command_parse.py +0 -59
  613. monkeybot-2.2.0/tests/core/test_runtime_env.py +0 -300
  614. monkeybot-2.2.0/tests/core/test_sandbox_executor.py +0 -738
  615. monkeybot-2.2.0/tests/core/test_spill_inventory.py +0 -28
  616. monkeybot-2.2.0/tests/core/test_storage_backends.py +0 -632
  617. monkeybot-2.2.0/tests/core/test_subagent_proto.py +0 -368
  618. monkeybot-2.2.0/tests/core/test_subagent_trace_propagation.py +0 -577
  619. monkeybot-2.2.0/tests/core/test_subagent_worker_paths.py +0 -245
  620. monkeybot-2.2.0/tests/core/test_terminal.py +0 -491
  621. monkeybot-2.2.0/tests/core/test_tool_integrity.py +0 -195
  622. monkeybot-2.2.0/tests/core/test_tool_result_ingress.py +0 -155
  623. monkeybot-2.2.0/tests/core/test_transcript.py +0 -209
  624. monkeybot-2.2.0/tests/core/test_truncated_tool_batch.py +0 -175
  625. monkeybot-2.2.0/tests/core/test_usage.py +0 -223
  626. monkeybot-2.2.0/tests/core/test_worker_pool.py +0 -395
  627. monkeybot-2.2.0/tests/core/test_workspace_layout.py +0 -72
  628. monkeybot-2.2.0/tests/core/test_workspace_write_scope.py +0 -97
  629. monkeybot-2.2.0/tests/evals/conftest.py +0 -97
  630. monkeybot-2.2.0/tests/evals/scenario_runner.py +0 -169
  631. monkeybot-2.2.0/tests/evals/scenarios/tool_search_memory.yaml +0 -17
  632. monkeybot-2.2.0/tests/evals/test_agent_behavior.py +0 -39
  633. monkeybot-2.2.0/tests/evals/test_memory_integrity.py +0 -60
  634. monkeybot-2.2.0/tests/gateway/realtime/test_app.py +0 -29
  635. monkeybot-2.2.0/tests/gateway/realtime/test_manager.py +0 -90
  636. monkeybot-2.2.0/tests/gateway/realtime/test_routes_client_text.py +0 -199
  637. monkeybot-2.2.0/tests/gateway/sse/test_create_session_model.py +0 -284
  638. monkeybot-2.2.0/tests/gateway/sse/test_routes.py +0 -466
  639. monkeybot-2.2.0/tests/gateway/sse/test_scheduler_routes.py +0 -120
  640. monkeybot-2.2.0/tests/gateway/sse/test_session_bus.py +0 -111
  641. monkeybot-2.2.0/tests/gateway/sse/test_transcript_wiring.py +0 -150
  642. monkeybot-2.2.0/tests/gateway/test_otel_lifespan.py +0 -97
  643. monkeybot-2.2.0/tests/gateway/test_resolve_provider.py +0 -69
  644. monkeybot-2.2.0/tests/gateway/test_sse_events.py +0 -101
  645. monkeybot-2.2.0/tests/integration/test_observability_integration.py +0 -382
  646. monkeybot-2.2.0/tests/observability/test_init.py +0 -115
  647. monkeybot-2.2.0/tests/providers/conftest.py +0 -78
  648. monkeybot-2.2.0/tests/providers/test_anthropic_cache.py +0 -489
  649. monkeybot-2.2.0/tests/providers/test_bedrock_estimate.py +0 -14
  650. monkeybot-2.2.0/tests/providers/test_gemini_usage.py +0 -253
  651. monkeybot-2.2.0/tests/providers/test_ollama.py +0 -101
  652. monkeybot-2.2.0/tests/providers/test_openai_compat_usage.py +0 -290
  653. monkeybot-2.2.0/tests/providers/test_openai_history.py +0 -135
  654. monkeybot-2.2.0/tests/providers/test_pricing.py +0 -56
  655. monkeybot-2.2.0/tests/test_cold_start.py +0 -74
  656. monkeybot-2.2.0/tests/test_packaging_config.py +0 -77
  657. monkeybot-2.2.0/tests/test_release_script.py +0 -151
  658. monkeybot-2.2.0/tests/web_search/test_web_search.py +0 -305
  659. monkeybot-2.2.0/uv.lock +0 -4511
  660. {monkeybot-2.2.0 → monkeybot-3.0.0}/.dockerignore +0 -0
  661. {monkeybot-2.2.0 → monkeybot-3.0.0}/.github/workflows/ci.yml +0 -0
  662. {monkeybot-2.2.0 → monkeybot-3.0.0}/.github/workflows/prepare-release.yml +0 -0
  663. {monkeybot-2.2.0 → monkeybot-3.0.0}/.pre-commit-config.yaml +0 -0
  664. {monkeybot-2.2.0 → monkeybot-3.0.0}/CONTRIBUTING.md +0 -0
  665. {monkeybot-2.2.0 → monkeybot-3.0.0}/LICENSE +0 -0
  666. {monkeybot-2.2.0 → monkeybot-3.0.0}/README.md +0 -0
  667. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/src/monkeybot_cli/__init__.py +0 -0
  668. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/src/monkeybot_cli/chat_renderer.py +0 -0
  669. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/src/monkeybot_cli/chat_theme.py +0 -0
  670. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/src/monkeybot_cli/commands/__init__.py +0 -0
  671. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/src/monkeybot_cli/commands/loop.py +0 -0
  672. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/src/monkeybot_cli/commands/new.py +0 -0
  673. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/src/monkeybot_cli/commands/talk.py +0 -0
  674. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/src/monkeybot_cli/config_resolve.py +0 -0
  675. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/src/monkeybot_cli/exit_commands.py +0 -0
  676. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/src/monkeybot_cli/gateway_health.py +0 -0
  677. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/src/monkeybot_cli/output.py +0 -0
  678. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/src/monkeybot_cli/realtime/__init__.py +0 -0
  679. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/src/monkeybot_cli/realtime/audio_io.py +0 -0
  680. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/src/monkeybot_cli/realtime/client.py +0 -0
  681. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/src/monkeybot_cli/realtime/push_to_talk.py +0 -0
  682. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/src/monkeybot_cli/realtime/wire_encode.py +0 -0
  683. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/src/monkeybot_cli/scaffold_defaults/AGENT.md +0 -0
  684. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/src/monkeybot_cli/scaffold_defaults/__init__.py +0 -0
  685. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/src/monkeybot_cli/scaffold_defaults/dockerignore +0 -0
  686. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/src/monkeybot_cli/scaffold_defaults/otel-collector.example.yaml +0 -0
  687. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/src/monkeybot_cli/scaffold_defaults/permissions.yaml +0 -0
  688. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/src/monkeybot_cli/session_controller.py +0 -0
  689. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/src/monkeybot_cli/terminal_markdown.py +0 -0
  690. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/tests/test_chat_e2e.py +0 -0
  691. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/tests/test_chat_errors.py +0 -0
  692. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/tests/test_chat_grounding.py +0 -0
  693. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/tests/test_chat_renderer_parity.py +0 -0
  694. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/tests/test_chat_status_bar.py +0 -0
  695. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/tests/test_chat_theme.py +0 -0
  696. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/tests/test_chat_tool_display.py +0 -0
  697. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/tests/test_config_resolve.py +0 -0
  698. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/tests/test_opensandbox_lifecycle.py +0 -0
  699. {monkeybot-2.2.0 → monkeybot-3.0.0}/cli/tests/test_terminal_markdown.py +0 -0
  700. {monkeybot-2.2.0 → monkeybot-3.0.0}/docker/Dockerfile +0 -0
  701. {monkeybot-2.2.0 → monkeybot-3.0.0}/docker/opensandbox.docker.toml +0 -0
  702. {monkeybot-2.2.0 → monkeybot-3.0.0}/docker/sandbox.Dockerfile +0 -0
  703. {monkeybot-2.2.0 → monkeybot-3.0.0}/docker-compose.yml +0 -0
  704. {monkeybot-2.2.0 → monkeybot-3.0.0}/docs/assets/logo.png +0 -0
  705. {monkeybot-2.2.0 → monkeybot-3.0.0}/docs/observability-runbook.md +0 -0
  706. {monkeybot-2.2.0 → monkeybot-3.0.0}/docs/otel-collector.example.yaml +0 -0
  707. {monkeybot-2.2.0 → monkeybot-3.0.0}/docs/skills.md +0 -0
  708. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/assertions.py +0 -0
  709. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/diff.py +0 -0
  710. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/eval_config.yaml +0 -0
  711. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/persistence.py +0 -0
  712. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/runner.py +0 -0
  713. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/scenario_loader.py +0 -0
  714. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/scenarios/context/summarization_trigger.yaml +0 -0
  715. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/scenarios/memory/recall_cross_session.yaml +0 -0
  716. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/scenarios/multi_turn/task_tracking.yaml +0 -0
  717. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/scenarios/skills/skill_invocation.yaml +0 -0
  718. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/scenarios/subagents/dispatch_complete.yaml +0 -0
  719. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/scenarios/tools/core_read.yaml +0 -0
  720. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/scenarios/tools/core_read_error.yaml +0 -0
  721. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/scorer.py +0 -0
  722. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/smoke_agent/.env.example +0 -0
  723. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/smoke_agent/.gitignore +0 -0
  724. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/smoke_agent/monkeybot_config/AGENT.md +0 -0
  725. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/smoke_agent/monkeybot_config/permissions.yaml +0 -0
  726. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/smoke_agent/pyproject.toml +0 -0
  727. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/smoke_agent/skills/browser/SKILL.md +0 -0
  728. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/smoke_agent/workspace/.gitkeep +0 -0
  729. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/smoke_agent/workspace/skills/browser/playbooks/.gitkeep +0 -0
  730. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/test_diff.py +0 -0
  731. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/test_judge.py +0 -0
  732. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/test_report.py +0 -0
  733. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/test_runner_sse.py +0 -0
  734. {monkeybot-2.2.0 → monkeybot-3.0.0}/evals/test_scorer.py +0 -0
  735. {monkeybot-2.2.0 → monkeybot-3.0.0}/examples/skills/browser/playbooks/.gitkeep +0 -0
  736. {monkeybot-2.2.0 → monkeybot-3.0.0}/examples/skills/diagnostics/SKILL.md +0 -0
  737. {monkeybot-2.2.0 → monkeybot-3.0.0}/examples/skills/diagnostics/__init__.py +0 -0
  738. {monkeybot-2.2.0 → monkeybot-3.0.0}/integrations/browser-mcp/src/browser_mcp/__init__.py +0 -0
  739. {monkeybot-2.2.0 → monkeybot-3.0.0}/integrations/browser-mcp/src/browser_mcp/assets/NOTICE.md +0 -0
  740. {monkeybot-2.2.0 → monkeybot-3.0.0}/integrations/browser-mcp/src/browser_mcp/assets/dom_tree.js +0 -0
  741. {monkeybot-2.2.0 → monkeybot-3.0.0}/integrations/browser-mcp/src/browser_mcp/assets/pa_driver.js +0 -0
  742. {monkeybot-2.2.0 → monkeybot-3.0.0}/integrations/browser-mcp/src/browser_mcp/dom_indexing.py +0 -0
  743. {monkeybot-2.2.0 → monkeybot-3.0.0}/integrations/browser-mcp/src/browser_mcp/playbooks.py +0 -0
  744. {monkeybot-2.2.0 → monkeybot-3.0.0}/integrations/browser-mcp/tests/test_dom_indexing.py +0 -0
  745. {monkeybot-2.2.0 → monkeybot-3.0.0}/integrations/browser-mcp/tests/test_playbooks.py +0 -0
  746. {monkeybot-2.2.0 → monkeybot-3.0.0}/integrations/browser-mcp/tests/test_screenshots.py +0 -0
  747. {monkeybot-2.2.0 → monkeybot-3.0.0}/pytest.ini +0 -0
  748. {monkeybot-2.2.0 → monkeybot-3.0.0}/scripts/create_schema.py +0 -0
  749. {monkeybot-2.2.0 → monkeybot-3.0.0}/scripts/smoke_global_cli.sh +0 -0
  750. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/__init__.py +0 -0
  751. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/cli/__init__.py +0 -0
  752. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/cli/__main__.py +0 -0
  753. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/cli/audio_io.py +0 -0
  754. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/cli/gateway_manager.py +0 -0
  755. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/cli/main.py +0 -0
  756. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/cli/push_to_talk.py +0 -0
  757. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/cli/realtime_client.py +0 -0
  758. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/attachments/config.py +0 -0
  759. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/attachments/resolve.py +0 -0
  760. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/config/realtime_config.py +0 -0
  761. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/config/yaml_loader.py +0 -0
  762. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/context/campaign_context.py +0 -0
  763. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/context/common.py +0 -0
  764. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/context/tool_output_policy.py +0 -0
  765. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/hooks/__init__.py +0 -0
  766. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/llm/__init__.py +0 -0
  767. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/llm/realtime_provider.py +0 -0
  768. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/logging_utils.py +0 -0
  769. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/mcp/__init__.py +0 -0
  770. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/messages/__init__.py +0 -0
  771. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/messages/convert_provider.py +0 -0
  772. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/path_safety.py +0 -0
  773. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/persistence/db.py +0 -0
  774. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/persistence/firestore_scheduled_loops.py +0 -0
  775. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/persistence/runs.py +0 -0
  776. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/prompts/__init__.py +0 -0
  777. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/runtime/input_admission.py +0 -0
  778. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/runtime/provider_stream_mapper.py +0 -0
  779. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/runtime/utterance_buffer.py +0 -0
  780. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/subagents/__init__.py +0 -0
  781. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/testing/__init__.py +0 -0
  782. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/testing/mocks_provider.py +0 -0
  783. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/testing/mocks_realtime_provider.py +0 -0
  784. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/tools/__init__.py +0 -0
  785. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/tools/loop_inspector.py +0 -0
  786. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/tools/text_normalize.py +0 -0
  787. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/tools/types.py +0 -0
  788. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/types/__init__.py +0 -0
  789. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/types/content_blocks.py +0 -0
  790. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/types/interfaces.py +0 -0
  791. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/workspace/__init__.py +0 -0
  792. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/core/workspace/factory.py +0 -0
  793. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/gateway/__init__.py +0 -0
  794. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/gateway/bootstrap.py +0 -0
  795. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/gateway/main.py +0 -0
  796. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/gateway/realtime/__init__.py +0 -0
  797. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/gateway/realtime/errors.py +0 -0
  798. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/gateway/realtime/guardrails.py +0 -0
  799. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/gateway/realtime/wire.py +0 -0
  800. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/gateway/realtime_main.py +0 -0
  801. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/gateway/sse/__init__.py +0 -0
  802. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/gateway/sse/reply_body.py +0 -0
  803. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/gateway/sse/scheduler_wiring.py +0 -0
  804. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/gateway/sse/sse.py +0 -0
  805. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/gateway/sse/workspace_layout.py +0 -0
  806. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/observability/_state.py +0 -0
  807. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/observability/propagation.py +0 -0
  808. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/providers/gemini_live.py +0 -0
  809. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/providers/huggingface.py +0 -0
  810. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/providers/nvidia.py +0 -0
  811. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/providers/sampling.py +0 -0
  812. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/scaffold/__init__.py +0 -0
  813. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/scheduler/__init__.py +0 -0
  814. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/scheduler/__main__.py +0 -0
  815. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/scheduler/engine.py +0 -0
  816. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/scheduler/http_invoker.py +0 -0
  817. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/scheduler/interval.py +0 -0
  818. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/scheduler/tick_result.py +0 -0
  819. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/subagents/__init__.py +0 -0
  820. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/subagents/worker/__init__.py +0 -0
  821. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/subagents/worker/__main__.py +0 -0
  822. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/web_search/__init__.py +0 -0
  823. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/web_search/backends/__init__.py +0 -0
  824. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/web_search/backends/duckduckgo.py +0 -0
  825. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/web_search/backends/firecrawl.py +0 -0
  826. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/web_search/backends/tavily.py +0 -0
  827. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/web_search/protocol.py +0 -0
  828. {monkeybot-2.2.0 → monkeybot-3.0.0}/src/monkeybot/web_search/tool.py +0 -0
  829. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/__init__.py +0 -0
  830. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/acceptance/test_observability_acceptance.py +0 -0
  831. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/cli/__init__.py +0 -0
  832. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/cli/test_gateway_manager.py +0 -0
  833. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/cli/test_push_to_talk.py +0 -0
  834. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/cli/test_realtime_client.py +0 -0
  835. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/core/__init__.py +0 -0
  836. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/core/test_content_blocks.py +0 -0
  837. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/core/test_firestore_scheduled_loops.py +0 -0
  838. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/core/test_hooks.py +0 -0
  839. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/core/test_input_admission.py +0 -0
  840. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/core/test_logging_utils.py +0 -0
  841. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/core/test_mocks_realtime_provider.py +0 -0
  842. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/core/test_permission.py +0 -0
  843. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/core/test_provider_contract.py +0 -0
  844. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/core/test_provider_stream_mapper.py +0 -0
  845. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/core/test_replace_fuzzy.py +0 -0
  846. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/core/test_runs.py +0 -0
  847. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/core/test_scheduled_loops.py +0 -0
  848. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/core/test_session_turn_locks.py +0 -0
  849. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/core/test_settlement.py +0 -0
  850. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/core/test_tool_shapers.py +0 -0
  851. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/core/test_usage_migration.py +0 -0
  852. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/core/test_utterance_buffer.py +0 -0
  853. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/core/test_workspace_symlinks.py +0 -0
  854. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/core/workspace/test_factory.py +0 -0
  855. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/core/workspace/test_local_storage.py +0 -0
  856. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/core/workspace/test_protocol_contract.py +0 -0
  857. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/evals/__init__.py +0 -0
  858. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/evals/eval_hook.py +0 -0
  859. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/evals/scenarios/context_curation.yaml +0 -0
  860. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/evals/scenarios/memory_write_inject.yaml +0 -0
  861. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/evals/scenarios/subagent_roundtrip.yaml +0 -0
  862. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/evals/scenarios/tool_read.yaml +0 -0
  863. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/evals/scenarios/turn_completion.yaml +0 -0
  864. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/gateway/__init__.py +0 -0
  865. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/gateway/realtime/__init__.py +0 -0
  866. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/gateway/realtime/test_deps.py +0 -0
  867. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/gateway/realtime/test_guardrails.py +0 -0
  868. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/gateway/realtime/test_metrics.py +0 -0
  869. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/gateway/realtime/test_session.py +0 -0
  870. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/gateway/realtime/test_wire.py +0 -0
  871. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/gateway/sse/test_attachments.py +0 -0
  872. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/gateway/test_otel_fastapi.py +0 -0
  873. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/gateway/test_pending_response_endpoints.py +0 -0
  874. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/gateway/test_realtime_main.py +0 -0
  875. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/integration/__init__.py +0 -0
  876. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/integration/test_mb_e2e_simple_reply.py +0 -0
  877. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/integration/test_prompt_caching_integration.py +0 -0
  878. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/observability/conftest.py +0 -0
  879. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/observability/test_instrumentation.py +0 -0
  880. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/observability/test_loop_hook_spans.py +0 -0
  881. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/observability/test_propagation.py +0 -0
  882. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/observability/test_span_contract.py +0 -0
  883. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/observability/test_spans.py +0 -0
  884. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/observability/test_truncate.py +0 -0
  885. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/observability/test_turn_complete_trace.py +0 -0
  886. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/providers/test_anthropic_history.py +0 -0
  887. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/providers/test_gemini_live.py +0 -0
  888. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/providers/test_huggingface.py +0 -0
  889. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/providers/test_nvidia.py +0 -0
  890. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/providers/test_safe_parse_tool_args.py +0 -0
  891. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/providers/test_sampling.py +0 -0
  892. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/providers/test_source_grep_gates.py +0 -0
  893. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/providers/test_vertex_claude_history.py +0 -0
  894. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/scheduler/test_engine.py +0 -0
  895. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/scheduler/test_interval.py +0 -0
  896. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/skills/__init__.py +0 -0
  897. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/skills/test_generate_image_script.py +0 -0
  898. {monkeybot-2.2.0 → monkeybot-3.0.0}/tests/web_search/__init__.py +0 -0
@@ -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,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