monkeybot 3.8.0__tar.gz → 3.9.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- monkeybot-3.9.0/.cursor/hooks/pre-pr.py +147 -0
- monkeybot-3.9.0/.cursor/hooks.json +21 -0
- monkeybot-3.9.0/.github/workflows/ci.yml +51 -0
- monkeybot-3.9.0/.pre-commit-config.yaml +36 -0
- monkeybot-3.9.0/CHANGELOG.md +530 -0
- monkeybot-3.9.0/CONTRIBUTING.md +43 -0
- monkeybot-3.9.0/PKG-INFO +202 -0
- monkeybot-3.9.0/cli/pyproject.toml +44 -0
- monkeybot-3.9.0/cli/skills/monkeybot/references/config-sections.md +168 -0
- monkeybot-3.9.0/cli/src/monkeybot_cli/chat_session.py +967 -0
- monkeybot-3.9.0/cli/src/monkeybot_cli/chat_tool_display.py +238 -0
- monkeybot-3.9.0/cli/src/monkeybot_cli/chat_tui.py +1909 -0
- monkeybot-3.9.0/cli/src/monkeybot_cli/commands/chat.py +887 -0
- monkeybot-3.9.0/cli/src/monkeybot_cli/commands/doctor.py +655 -0
- monkeybot-3.9.0/cli/src/monkeybot_cli/commands/loop.py +212 -0
- monkeybot-3.9.0/cli/src/monkeybot_cli/commands/new.py +205 -0
- monkeybot-3.9.0/cli/src/monkeybot_cli/commands/validate.py +416 -0
- monkeybot-3.9.0/cli/src/monkeybot_cli/compat.py +26 -0
- monkeybot-3.9.0/cli/src/monkeybot_cli/extras_catalog.py +99 -0
- monkeybot-3.9.0/cli/src/monkeybot_cli/gateway_health.py +69 -0
- monkeybot-3.9.0/cli/src/monkeybot_cli/opensandbox_lifecycle.py +325 -0
- monkeybot-3.9.0/cli/src/monkeybot_cli/output.py +112 -0
- monkeybot-3.9.0/cli/src/monkeybot_cli/providers.py +146 -0
- monkeybot-3.9.0/cli/src/monkeybot_cli/realtime/push_to_talk.py +127 -0
- monkeybot-3.9.0/cli/src/monkeybot_cli/realtime/session_controller.py +499 -0
- monkeybot-3.9.0/cli/src/monkeybot_cli/scaffold_defaults/env.example +46 -0
- monkeybot-3.9.0/cli/src/monkeybot_cli/scaffold_defaults/monkeybot.example.yaml +262 -0
- monkeybot-3.9.0/cli/tests/test_chat_continue.py +196 -0
- monkeybot-3.9.0/cli/tests/test_chat_errors.py +227 -0
- monkeybot-3.9.0/cli/tests/test_chat_local_shell.py +160 -0
- monkeybot-3.9.0/cli/tests/test_chat_renderer_parity.py +24 -0
- monkeybot-3.9.0/cli/tests/test_chat_session.py +450 -0
- monkeybot-3.9.0/cli/tests/test_chat_tui.py +2389 -0
- monkeybot-3.9.0/cli/tests/test_cli.py +325 -0
- monkeybot-3.9.0/cli/tests/test_config_resolve.py +34 -0
- monkeybot-3.9.0/cli/tests/test_doctor.py +269 -0
- monkeybot-3.9.0/cli/tests/test_realtime_session_controller.py +317 -0
- monkeybot-3.9.0/cli/tests/test_run_cmd.py +281 -0
- monkeybot-3.9.0/cli/tests/test_runtime_python.py +1078 -0
- monkeybot-3.9.0/cli/tests/test_terminal_markdown.py +43 -0
- monkeybot-3.9.0/cli/uv.lock +1767 -0
- monkeybot-3.9.0/docs/features.md +832 -0
- monkeybot-3.9.0/docs/verifier-agent-design.md +831 -0
- monkeybot-3.9.0/evals/diff.py +130 -0
- monkeybot-3.9.0/evals/report.py +374 -0
- monkeybot-3.9.0/evals/scenario_loader.py +93 -0
- monkeybot-3.9.0/evals/scorer.py +382 -0
- monkeybot-3.9.0/evals/test_assertions.py +264 -0
- monkeybot-3.9.0/evals/test_diff.py +88 -0
- monkeybot-3.9.0/evals/test_judge.py +82 -0
- monkeybot-3.9.0/evals/test_report.py +194 -0
- monkeybot-3.9.0/examples/agentcore/runtime_app.py +106 -0
- monkeybot-3.9.0/examples/cloud-functions/main.py +73 -0
- monkeybot-3.9.0/integrations/browser-mcp/scripts/perf_bench.py +298 -0
- monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/actions.py +639 -0
- monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/app.py +193 -0
- monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/backend.py +261 -0
- monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/chat_context.py +373 -0
- monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/dom_indexing.py +613 -0
- monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/in_app_cdp.py +281 -0
- monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/observe.py +435 -0
- monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/playbooks.py +320 -0
- monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/playwright_helpers.py +427 -0
- monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/results.py +34 -0
- monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/tab_ops.py +233 -0
- monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/tabs.py +619 -0
- monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/tools/batch.py +61 -0
- monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/tools/interact.py +293 -0
- monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/tools/navigate.py +62 -0
- monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/tools/playbook.py +131 -0
- monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/tools/read.py +173 -0
- monkeybot-3.9.0/integrations/browser-mcp/src/browser_mcp/tools/tab_control.py +260 -0
- monkeybot-3.9.0/integrations/browser-mcp/tests/integration/test_act_observe.py +48 -0
- monkeybot-3.9.0/integrations/browser-mcp/tests/integration/test_driver_persist.py +52 -0
- monkeybot-3.9.0/integrations/browser-mcp/tests/integration/test_intent_tools.py +132 -0
- monkeybot-3.9.0/integrations/browser-mcp/tests/integration/test_observation.py +85 -0
- monkeybot-3.9.0/integrations/browser-mcp/tests/integration/test_wait_for.py +55 -0
- monkeybot-3.9.0/integrations/browser-mcp/tests/test_act.py +233 -0
- monkeybot-3.9.0/integrations/browser-mcp/tests/test_agentcore.py +366 -0
- monkeybot-3.9.0/integrations/browser-mcp/tests/test_chat_isolation.py +375 -0
- monkeybot-3.9.0/integrations/browser-mcp/tests/test_chat_scope.py +289 -0
- monkeybot-3.9.0/integrations/browser-mcp/tests/test_fill_form.py +112 -0
- monkeybot-3.9.0/integrations/browser-mcp/tests/test_in_app_cdp.py +1206 -0
- monkeybot-3.9.0/integrations/browser-mcp/tests/test_indexed_tools.py +324 -0
- monkeybot-3.9.0/integrations/browser-mcp/tests/test_observe_after.py +332 -0
- monkeybot-3.9.0/integrations/browser-mcp/tests/test_perf.py +232 -0
- monkeybot-3.9.0/integrations/browser-mcp/tests/test_playbook_flows.py +295 -0
- monkeybot-3.9.0/integrations/browser-mcp/tests/test_playbooks.py +118 -0
- monkeybot-3.9.0/integrations/browser-mcp/tests/test_screenshots.py +121 -0
- monkeybot-3.9.0/integrations/browser-mcp/tests/test_tabs.py +414 -0
- monkeybot-3.9.0/integrations/browser-mcp/uv.lock +1212 -0
- monkeybot-3.9.0/pyproject.toml +135 -0
- monkeybot-3.9.0/scripts/ci-local.sh +76 -0
- monkeybot-3.9.0/scripts/release.py +244 -0
- monkeybot-3.9.0/src/monkeybot/core/attachments/catalog.py +75 -0
- monkeybot-3.9.0/src/monkeybot/core/attachments/config.py +81 -0
- monkeybot-3.9.0/src/monkeybot/core/attachments/resolve.py +155 -0
- monkeybot-3.9.0/src/monkeybot/core/attachments/text.py +81 -0
- monkeybot-3.9.0/src/monkeybot/core/config/runtime_env.py +548 -0
- monkeybot-3.9.0/src/monkeybot/core/config/settings.py +899 -0
- monkeybot-3.9.0/src/monkeybot/core/config/snapshot.py +1025 -0
- monkeybot-3.9.0/src/monkeybot/core/config/validation.py +271 -0
- monkeybot-3.9.0/src/monkeybot/core/config/yaml_loader.py +44 -0
- monkeybot-3.9.0/src/monkeybot/core/context/epoch.py +241 -0
- monkeybot-3.9.0/src/monkeybot/core/context/secret_egress.py +445 -0
- monkeybot-3.9.0/src/monkeybot/core/context/tool_shapers.py +369 -0
- monkeybot-3.9.0/src/monkeybot/core/hooks/__init__.py +261 -0
- monkeybot-3.9.0/src/monkeybot/core/llm/provider.py +319 -0
- monkeybot-3.9.0/src/monkeybot/core/memory/hook.py +75 -0
- monkeybot-3.9.0/src/monkeybot/core/memory/migrate_layout.py +437 -0
- monkeybot-3.9.0/src/monkeybot/core/memory/subsystem.py +355 -0
- monkeybot-3.9.0/src/monkeybot/core/messages/transform_context.py +111 -0
- monkeybot-3.9.0/src/monkeybot/core/runtime/context_budget.py +239 -0
- monkeybot-3.9.0/src/monkeybot/core/runtime/doom_loop.py +118 -0
- monkeybot-3.9.0/src/monkeybot/core/runtime/events.py +1451 -0
- monkeybot-3.9.0/src/monkeybot/core/runtime/history_compaction.py +554 -0
- monkeybot-3.9.0/src/monkeybot/core/runtime/loop_messages.py +265 -0
- monkeybot-3.9.0/src/monkeybot/core/runtime/loop_usage.py +176 -0
- monkeybot-3.9.0/src/monkeybot/core/runtime/tool_dispatch.py +1187 -0
- monkeybot-3.9.0/src/monkeybot/core/runtime/turn_loop.py +1996 -0
- monkeybot-3.9.0/src/monkeybot/core/runtime/utterance_buffer.py +177 -0
- monkeybot-3.9.0/src/monkeybot/core/subagents/worker_pool.py +570 -0
- monkeybot-3.9.0/src/monkeybot/core/tools/core_tool_executor.py +2724 -0
- monkeybot-3.9.0/src/monkeybot/core/tools/fs_isolation.py +962 -0
- monkeybot-3.9.0/src/monkeybot/core/tools/patch.py +559 -0
- monkeybot-3.9.0/src/monkeybot/core/tools/permission.py +349 -0
- monkeybot-3.9.0/src/monkeybot/core/tools/spill_inventory.py +618 -0
- monkeybot-3.9.0/src/monkeybot/core/types/content_blocks.py +632 -0
- monkeybot-3.9.0/src/monkeybot/core/types/interfaces.py +156 -0
- monkeybot-3.9.0/src/monkeybot/core/workspace/gcs.py +146 -0
- monkeybot-3.9.0/src/monkeybot/core/workspace/s3.py +171 -0
- monkeybot-3.9.0/src/monkeybot/gateway/bootstrap.py +69 -0
- monkeybot-3.9.0/src/monkeybot/gateway/realtime/__init__.py +45 -0
- monkeybot-3.9.0/src/monkeybot/gateway/realtime/metrics.py +147 -0
- monkeybot-3.9.0/src/monkeybot/gateway/realtime/wire.py +410 -0
- monkeybot-3.9.0/src/monkeybot/gateway/sse/app.py +1507 -0
- monkeybot-3.9.0/src/monkeybot/gateway/sse/routes.py +1450 -0
- monkeybot-3.9.0/src/monkeybot/gateway/sse/sse.py +44 -0
- monkeybot-3.9.0/src/monkeybot/observability/sqlite_exporter.py +737 -0
- monkeybot-3.9.0/src/monkeybot/providers/__init__.py +23 -0
- monkeybot-3.9.0/src/monkeybot/providers/_openai_compat.py +1534 -0
- monkeybot-3.9.0/src/monkeybot/providers/_sdk_client.py +165 -0
- monkeybot-3.9.0/src/monkeybot/providers/_utils.py +808 -0
- monkeybot-3.9.0/src/monkeybot/providers/bedrock.py +248 -0
- monkeybot-3.9.0/src/monkeybot/providers/claude.py +153 -0
- monkeybot-3.9.0/src/monkeybot/providers/fireworks.py +126 -0
- monkeybot-3.9.0/src/monkeybot/providers/gemini.py +989 -0
- monkeybot-3.9.0/src/monkeybot/providers/huggingface.py +148 -0
- monkeybot-3.9.0/src/monkeybot/providers/nvidia.py +123 -0
- monkeybot-3.9.0/src/monkeybot/providers/ollama.py +342 -0
- monkeybot-3.9.0/src/monkeybot/providers/openai.py +179 -0
- monkeybot-3.9.0/src/monkeybot/providers/openrouter.py +125 -0
- monkeybot-3.9.0/src/monkeybot/providers/rejected_sampling.py +140 -0
- monkeybot-3.9.0/src/monkeybot/providers/sampling.py +92 -0
- monkeybot-3.9.0/src/monkeybot/providers/vertex_claude.py +178 -0
- monkeybot-3.9.0/src/monkeybot/scheduler/http_invoker.py +59 -0
- monkeybot-3.9.0/src/monkeybot/todo_list/store.py +262 -0
- monkeybot-3.9.0/src/monkeybot/todo_list/tool.py +130 -0
- monkeybot-3.9.0/src/monkeybot/web_search/backends/duckduckgo.py +29 -0
- monkeybot-3.9.0/src/monkeybot/web_search/backends/firecrawl.py +42 -0
- monkeybot-3.9.0/src/monkeybot/web_search/backends/tavily.py +44 -0
- monkeybot-3.9.0/tests/conftest.py +101 -0
- monkeybot-3.9.0/tests/core/memory/test_mempalace.py +489 -0
- monkeybot-3.9.0/tests/core/memory/test_review_fixes.py +1235 -0
- monkeybot-3.9.0/tests/core/test_bootstrap.py +396 -0
- monkeybot-3.9.0/tests/core/test_config_extensions.py +908 -0
- monkeybot-3.9.0/tests/core/test_core_tool_executor.py +5072 -0
- monkeybot-3.9.0/tests/core/test_doom_loop.py +515 -0
- monkeybot-3.9.0/tests/core/test_durable_events.py +94 -0
- monkeybot-3.9.0/tests/core/test_firestore_history.py +361 -0
- monkeybot-3.9.0/tests/core/test_fs_isolation.py +997 -0
- monkeybot-3.9.0/tests/core/test_grant_store.py +185 -0
- monkeybot-3.9.0/tests/core/test_history.py +436 -0
- monkeybot-3.9.0/tests/core/test_history_compaction_split.py +265 -0
- monkeybot-3.9.0/tests/core/test_history_row_ids.py +444 -0
- monkeybot-3.9.0/tests/core/test_hooks.py +219 -0
- monkeybot-3.9.0/tests/core/test_image_preview.py +200 -0
- monkeybot-3.9.0/tests/core/test_inspector.py +283 -0
- monkeybot-3.9.0/tests/core/test_loop.py +3582 -0
- monkeybot-3.9.0/tests/core/test_loop_hooks.py +767 -0
- monkeybot-3.9.0/tests/core/test_loop_observability.py +204 -0
- monkeybot-3.9.0/tests/core/test_loop_transcript.py +288 -0
- monkeybot-3.9.0/tests/core/test_memory_layout_migrate.py +201 -0
- monkeybot-3.9.0/tests/core/test_message_pipeline.py +138 -0
- monkeybot-3.9.0/tests/core/test_patch.py +399 -0
- monkeybot-3.9.0/tests/core/test_path_grant_inspector.py +224 -0
- monkeybot-3.9.0/tests/core/test_permission.py +259 -0
- monkeybot-3.9.0/tests/core/test_progress_publish.py +253 -0
- monkeybot-3.9.0/tests/core/test_provider_contract.py +259 -0
- monkeybot-3.9.0/tests/core/test_provider_stream_mapper.py +88 -0
- monkeybot-3.9.0/tests/core/test_realtime_loop.py +745 -0
- monkeybot-3.9.0/tests/core/test_runtime_env.py +550 -0
- monkeybot-3.9.0/tests/core/test_secret_egress.py +462 -0
- monkeybot-3.9.0/tests/core/test_spill_dynamic.py +399 -0
- monkeybot-3.9.0/tests/core/test_spill_inventory.py +244 -0
- monkeybot-3.9.0/tests/core/test_storage_backends.py +1285 -0
- monkeybot-3.9.0/tests/core/test_subagent_proto.py +490 -0
- monkeybot-3.9.0/tests/core/test_subagent_trace_propagation.py +659 -0
- monkeybot-3.9.0/tests/core/test_terminal.py +1166 -0
- monkeybot-3.9.0/tests/core/test_truncated_tool_batch.py +201 -0
- monkeybot-3.9.0/tests/core/test_usage.py +372 -0
- monkeybot-3.9.0/tests/core/test_utterance_buffer.py +133 -0
- monkeybot-3.9.0/tests/core/test_worker_pool.py +791 -0
- monkeybot-3.9.0/tests/gateway/realtime/test_app.py +44 -0
- monkeybot-3.9.0/tests/gateway/realtime/test_session.py +209 -0
- monkeybot-3.9.0/tests/gateway/realtime/test_wire.py +274 -0
- monkeybot-3.9.0/tests/gateway/sse/test_attachments.py +251 -0
- monkeybot-3.9.0/tests/gateway/sse/test_gateway_runtime.py +856 -0
- monkeybot-3.9.0/tests/gateway/sse/test_routes.py +733 -0
- monkeybot-3.9.0/tests/gateway/sse/test_session_bus.py +242 -0
- monkeybot-3.9.0/tests/gateway/sse/test_start_turn_setup_failure.py +177 -0
- monkeybot-3.9.0/tests/gateway/test_otel_lifespan.py +108 -0
- monkeybot-3.9.0/tests/gateway/test_resolve_provider.py +118 -0
- monkeybot-3.9.0/tests/gateway/test_sdk_client_shutdown.py +78 -0
- monkeybot-3.9.0/tests/integration/test_prompt_caching_integration.py +140 -0
- monkeybot-3.9.0/tests/observability/test_init.py +152 -0
- monkeybot-3.9.0/tests/observability/test_loop_hook_spans.py +76 -0
- monkeybot-3.9.0/tests/observability/test_span_contract.py +238 -0
- monkeybot-3.9.0/tests/observability/test_spans.py +192 -0
- monkeybot-3.9.0/tests/observability/test_sqlite_exporter.py +705 -0
- monkeybot-3.9.0/tests/providers/conftest.py +119 -0
- monkeybot-3.9.0/tests/providers/test_anthropic_cache.py +745 -0
- monkeybot-3.9.0/tests/providers/test_bedrock_converse.py +613 -0
- monkeybot-3.9.0/tests/providers/test_fireworks.py +27 -0
- monkeybot-3.9.0/tests/providers/test_gemini_live.py +268 -0
- monkeybot-3.9.0/tests/providers/test_gemini_usage.py +615 -0
- monkeybot-3.9.0/tests/providers/test_huggingface.py +62 -0
- monkeybot-3.9.0/tests/providers/test_ollama.py +372 -0
- monkeybot-3.9.0/tests/providers/test_openai_byte_budget.py +419 -0
- monkeybot-3.9.0/tests/providers/test_openai_compat_usage.py +1254 -0
- monkeybot-3.9.0/tests/providers/test_openai_history.py +489 -0
- monkeybot-3.9.0/tests/providers/test_sampling.py +490 -0
- monkeybot-3.9.0/tests/providers/test_sdk_client_reuse.py +743 -0
- monkeybot-3.9.0/tests/providers/test_sonnet5_sampling.py +568 -0
- monkeybot-3.9.0/tests/providers/test_source_grep_gates.py +68 -0
- monkeybot-3.9.0/tests/test_packaging_config.py +85 -0
- monkeybot-3.9.0/tests/test_release_script.py +192 -0
- monkeybot-3.9.0/tests/todo_list/test_todo_list.py +306 -0
- monkeybot-3.9.0/tests/web_search/test_web_search.py +298 -0
- monkeybot-3.9.0/uv.lock +5362 -0
- monkeybot-3.8.0/.github/workflows/ci.yml +0 -47
- monkeybot-3.8.0/.pre-commit-config.yaml +0 -20
- monkeybot-3.8.0/CHANGELOG.md +0 -501
- monkeybot-3.8.0/CONTRIBUTING.md +0 -42
- monkeybot-3.8.0/PKG-INFO +0 -198
- monkeybot-3.8.0/cli/pyproject.toml +0 -44
- monkeybot-3.8.0/cli/skills/monkeybot/references/config-sections.md +0 -167
- monkeybot-3.8.0/cli/src/monkeybot_cli/chat_session.py +0 -973
- monkeybot-3.8.0/cli/src/monkeybot_cli/chat_tool_display.py +0 -240
- monkeybot-3.8.0/cli/src/monkeybot_cli/chat_tui.py +0 -1917
- monkeybot-3.8.0/cli/src/monkeybot_cli/commands/chat.py +0 -888
- monkeybot-3.8.0/cli/src/monkeybot_cli/commands/doctor.py +0 -592
- monkeybot-3.8.0/cli/src/monkeybot_cli/commands/loop.py +0 -207
- monkeybot-3.8.0/cli/src/monkeybot_cli/commands/new.py +0 -207
- monkeybot-3.8.0/cli/src/monkeybot_cli/commands/validate.py +0 -383
- monkeybot-3.8.0/cli/src/monkeybot_cli/compat.py +0 -30
- monkeybot-3.8.0/cli/src/monkeybot_cli/extras_catalog.py +0 -98
- monkeybot-3.8.0/cli/src/monkeybot_cli/gateway_health.py +0 -71
- monkeybot-3.8.0/cli/src/monkeybot_cli/opensandbox_lifecycle.py +0 -324
- monkeybot-3.8.0/cli/src/monkeybot_cli/output.py +0 -110
- monkeybot-3.8.0/cli/src/monkeybot_cli/providers.py +0 -144
- monkeybot-3.8.0/cli/src/monkeybot_cli/realtime/push_to_talk.py +0 -128
- monkeybot-3.8.0/cli/src/monkeybot_cli/realtime/session_controller.py +0 -501
- monkeybot-3.8.0/cli/src/monkeybot_cli/scaffold_defaults/env.example +0 -43
- monkeybot-3.8.0/cli/src/monkeybot_cli/scaffold_defaults/monkeybot.example.yaml +0 -253
- monkeybot-3.8.0/cli/tests/test_chat_continue.py +0 -198
- monkeybot-3.8.0/cli/tests/test_chat_errors.py +0 -219
- monkeybot-3.8.0/cli/tests/test_chat_local_shell.py +0 -158
- monkeybot-3.8.0/cli/tests/test_chat_renderer_parity.py +0 -26
- monkeybot-3.8.0/cli/tests/test_chat_session.py +0 -452
- monkeybot-3.8.0/cli/tests/test_chat_tui.py +0 -2392
- monkeybot-3.8.0/cli/tests/test_cli.py +0 -319
- monkeybot-3.8.0/cli/tests/test_config_resolve.py +0 -32
- monkeybot-3.8.0/cli/tests/test_doctor.py +0 -217
- monkeybot-3.8.0/cli/tests/test_realtime_session_controller.py +0 -319
- monkeybot-3.8.0/cli/tests/test_run_cmd.py +0 -277
- monkeybot-3.8.0/cli/tests/test_runtime_python.py +0 -1076
- monkeybot-3.8.0/cli/tests/test_terminal_markdown.py +0 -47
- monkeybot-3.8.0/cli/uv.lock +0 -1763
- monkeybot-3.8.0/docs/features.md +0 -832
- monkeybot-3.8.0/docs/verifier-agent-design.md +0 -831
- monkeybot-3.8.0/evals/diff.py +0 -123
- monkeybot-3.8.0/evals/report.py +0 -363
- monkeybot-3.8.0/evals/scenario_loader.py +0 -87
- monkeybot-3.8.0/evals/scorer.py +0 -366
- monkeybot-3.8.0/evals/test_assertions.py +0 -249
- monkeybot-3.8.0/evals/test_diff.py +0 -86
- monkeybot-3.8.0/evals/test_judge.py +0 -79
- monkeybot-3.8.0/evals/test_report.py +0 -156
- monkeybot-3.8.0/examples/agentcore/runtime_app.py +0 -104
- monkeybot-3.8.0/examples/cloud-functions/main.py +0 -77
- monkeybot-3.8.0/integrations/browser-mcp/scripts/perf_bench.py +0 -304
- monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/actions.py +0 -645
- monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/app.py +0 -190
- monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/backend.py +0 -257
- monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/chat_context.py +0 -375
- monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/dom_indexing.py +0 -616
- monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/in_app_cdp.py +0 -283
- monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/observe.py +0 -441
- monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/playbooks.py +0 -321
- monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/playwright_helpers.py +0 -418
- monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/results.py +0 -36
- monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/tab_ops.py +0 -235
- monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/tabs.py +0 -623
- monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/tools/batch.py +0 -62
- monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/tools/interact.py +0 -309
- monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/tools/navigate.py +0 -61
- monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/tools/playbook.py +0 -126
- monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/tools/read.py +0 -169
- monkeybot-3.8.0/integrations/browser-mcp/src/browser_mcp/tools/tab_control.py +0 -256
- monkeybot-3.8.0/integrations/browser-mcp/tests/integration/test_act_observe.py +0 -53
- monkeybot-3.8.0/integrations/browser-mcp/tests/integration/test_driver_persist.py +0 -54
- monkeybot-3.8.0/integrations/browser-mcp/tests/integration/test_intent_tools.py +0 -134
- monkeybot-3.8.0/integrations/browser-mcp/tests/integration/test_observation.py +0 -97
- monkeybot-3.8.0/integrations/browser-mcp/tests/integration/test_wait_for.py +0 -57
- monkeybot-3.8.0/integrations/browser-mcp/tests/test_act.py +0 -230
- monkeybot-3.8.0/integrations/browser-mcp/tests/test_agentcore.py +0 -360
- monkeybot-3.8.0/integrations/browser-mcp/tests/test_chat_isolation.py +0 -369
- monkeybot-3.8.0/integrations/browser-mcp/tests/test_chat_scope.py +0 -293
- monkeybot-3.8.0/integrations/browser-mcp/tests/test_fill_form.py +0 -116
- monkeybot-3.8.0/integrations/browser-mcp/tests/test_in_app_cdp.py +0 -1205
- monkeybot-3.8.0/integrations/browser-mcp/tests/test_indexed_tools.py +0 -326
- monkeybot-3.8.0/integrations/browser-mcp/tests/test_observe_after.py +0 -332
- monkeybot-3.8.0/integrations/browser-mcp/tests/test_perf.py +0 -230
- monkeybot-3.8.0/integrations/browser-mcp/tests/test_playbook_flows.py +0 -285
- monkeybot-3.8.0/integrations/browser-mcp/tests/test_playbooks.py +0 -110
- monkeybot-3.8.0/integrations/browser-mcp/tests/test_screenshots.py +0 -117
- monkeybot-3.8.0/integrations/browser-mcp/tests/test_tabs.py +0 -416
- monkeybot-3.8.0/integrations/browser-mcp/uv.lock +0 -1212
- monkeybot-3.8.0/pyproject.toml +0 -134
- monkeybot-3.8.0/scripts/release.py +0 -238
- monkeybot-3.8.0/src/monkeybot/core/attachments/catalog.py +0 -77
- monkeybot-3.8.0/src/monkeybot/core/attachments/config.py +0 -62
- monkeybot-3.8.0/src/monkeybot/core/attachments/resolve.py +0 -157
- monkeybot-3.8.0/src/monkeybot/core/attachments/text.py +0 -84
- monkeybot-3.8.0/src/monkeybot/core/config/runtime_env.py +0 -546
- monkeybot-3.8.0/src/monkeybot/core/config/settings.py +0 -873
- monkeybot-3.8.0/src/monkeybot/core/config/snapshot.py +0 -1023
- monkeybot-3.8.0/src/monkeybot/core/config/validation.py +0 -270
- monkeybot-3.8.0/src/monkeybot/core/config/yaml_loader.py +0 -39
- monkeybot-3.8.0/src/monkeybot/core/context/epoch.py +0 -243
- monkeybot-3.8.0/src/monkeybot/core/context/secret_egress.py +0 -443
- monkeybot-3.8.0/src/monkeybot/core/context/tool_shapers.py +0 -367
- monkeybot-3.8.0/src/monkeybot/core/hooks/__init__.py +0 -263
- monkeybot-3.8.0/src/monkeybot/core/llm/provider.py +0 -306
- monkeybot-3.8.0/src/monkeybot/core/memory/hook.py +0 -77
- monkeybot-3.8.0/src/monkeybot/core/memory/migrate_layout.py +0 -439
- monkeybot-3.8.0/src/monkeybot/core/memory/subsystem.py +0 -357
- monkeybot-3.8.0/src/monkeybot/core/messages/transform_context.py +0 -122
- monkeybot-3.8.0/src/monkeybot/core/runtime/context_budget.py +0 -237
- monkeybot-3.8.0/src/monkeybot/core/runtime/doom_loop.py +0 -121
- monkeybot-3.8.0/src/monkeybot/core/runtime/events.py +0 -1449
- monkeybot-3.8.0/src/monkeybot/core/runtime/history_compaction.py +0 -533
- monkeybot-3.8.0/src/monkeybot/core/runtime/loop_messages.py +0 -263
- monkeybot-3.8.0/src/monkeybot/core/runtime/loop_usage.py +0 -174
- monkeybot-3.8.0/src/monkeybot/core/runtime/tool_dispatch.py +0 -1215
- monkeybot-3.8.0/src/monkeybot/core/runtime/turn_loop.py +0 -1969
- monkeybot-3.8.0/src/monkeybot/core/runtime/utterance_buffer.py +0 -179
- monkeybot-3.8.0/src/monkeybot/core/subagents/worker_pool.py +0 -576
- monkeybot-3.8.0/src/monkeybot/core/tools/core_tool_executor.py +0 -2706
- monkeybot-3.8.0/src/monkeybot/core/tools/fs_isolation.py +0 -845
- monkeybot-3.8.0/src/monkeybot/core/tools/patch.py +0 -567
- monkeybot-3.8.0/src/monkeybot/core/tools/permission.py +0 -355
- monkeybot-3.8.0/src/monkeybot/core/tools/spill_inventory.py +0 -605
- monkeybot-3.8.0/src/monkeybot/core/types/content_blocks.py +0 -652
- monkeybot-3.8.0/src/monkeybot/core/types/interfaces.py +0 -156
- monkeybot-3.8.0/src/monkeybot/core/workspace/gcs.py +0 -144
- monkeybot-3.8.0/src/monkeybot/core/workspace/s3.py +0 -169
- monkeybot-3.8.0/src/monkeybot/gateway/bootstrap.py +0 -67
- monkeybot-3.8.0/src/monkeybot/gateway/realtime/__init__.py +0 -44
- monkeybot-3.8.0/src/monkeybot/gateway/realtime/metrics.py +0 -147
- monkeybot-3.8.0/src/monkeybot/gateway/realtime/wire.py +0 -412
- monkeybot-3.8.0/src/monkeybot/gateway/sse/app.py +0 -1409
- monkeybot-3.8.0/src/monkeybot/gateway/sse/routes.py +0 -1449
- monkeybot-3.8.0/src/monkeybot/gateway/sse/sse.py +0 -46
- monkeybot-3.8.0/src/monkeybot/observability/sqlite_exporter.py +0 -748
- monkeybot-3.8.0/src/monkeybot/providers/__init__.py +0 -21
- monkeybot-3.8.0/src/monkeybot/providers/_openai_compat.py +0 -1354
- monkeybot-3.8.0/src/monkeybot/providers/_utils.py +0 -718
- monkeybot-3.8.0/src/monkeybot/providers/bedrock.py +0 -211
- monkeybot-3.8.0/src/monkeybot/providers/claude.py +0 -135
- monkeybot-3.8.0/src/monkeybot/providers/gemini.py +0 -809
- monkeybot-3.8.0/src/monkeybot/providers/huggingface.py +0 -136
- monkeybot-3.8.0/src/monkeybot/providers/nvidia.py +0 -111
- monkeybot-3.8.0/src/monkeybot/providers/ollama.py +0 -322
- monkeybot-3.8.0/src/monkeybot/providers/openai.py +0 -151
- monkeybot-3.8.0/src/monkeybot/providers/openrouter.py +0 -113
- monkeybot-3.8.0/src/monkeybot/providers/sampling.py +0 -53
- monkeybot-3.8.0/src/monkeybot/providers/vertex_claude.py +0 -151
- monkeybot-3.8.0/src/monkeybot/scheduler/http_invoker.py +0 -61
- monkeybot-3.8.0/src/monkeybot/todo_list/store.py +0 -264
- monkeybot-3.8.0/src/monkeybot/todo_list/tool.py +0 -132
- monkeybot-3.8.0/src/monkeybot/web_search/backends/duckduckgo.py +0 -32
- monkeybot-3.8.0/src/monkeybot/web_search/backends/firecrawl.py +0 -43
- monkeybot-3.8.0/src/monkeybot/web_search/backends/tavily.py +0 -45
- monkeybot-3.8.0/tests/conftest.py +0 -91
- monkeybot-3.8.0/tests/core/memory/test_mempalace.py +0 -485
- monkeybot-3.8.0/tests/core/memory/test_review_fixes.py +0 -1234
- monkeybot-3.8.0/tests/core/test_bootstrap.py +0 -394
- monkeybot-3.8.0/tests/core/test_config_extensions.py +0 -907
- monkeybot-3.8.0/tests/core/test_core_tool_executor.py +0 -4832
- monkeybot-3.8.0/tests/core/test_doom_loop.py +0 -525
- monkeybot-3.8.0/tests/core/test_durable_events.py +0 -97
- monkeybot-3.8.0/tests/core/test_firestore_history.py +0 -352
- monkeybot-3.8.0/tests/core/test_fs_isolation.py +0 -779
- monkeybot-3.8.0/tests/core/test_grant_store.py +0 -183
- monkeybot-3.8.0/tests/core/test_history.py +0 -433
- monkeybot-3.8.0/tests/core/test_history_compaction_split.py +0 -226
- monkeybot-3.8.0/tests/core/test_history_row_ids.py +0 -409
- monkeybot-3.8.0/tests/core/test_hooks.py +0 -220
- monkeybot-3.8.0/tests/core/test_image_preview.py +0 -169
- monkeybot-3.8.0/tests/core/test_inspector.py +0 -281
- monkeybot-3.8.0/tests/core/test_loop.py +0 -3398
- monkeybot-3.8.0/tests/core/test_loop_hooks.py +0 -769
- monkeybot-3.8.0/tests/core/test_loop_observability.py +0 -196
- monkeybot-3.8.0/tests/core/test_loop_transcript.py +0 -279
- monkeybot-3.8.0/tests/core/test_memory_layout_migrate.py +0 -210
- monkeybot-3.8.0/tests/core/test_message_pipeline.py +0 -143
- monkeybot-3.8.0/tests/core/test_patch.py +0 -403
- monkeybot-3.8.0/tests/core/test_path_grant_inspector.py +0 -230
- monkeybot-3.8.0/tests/core/test_permission.py +0 -267
- monkeybot-3.8.0/tests/core/test_progress_publish.py +0 -255
- monkeybot-3.8.0/tests/core/test_provider_contract.py +0 -253
- monkeybot-3.8.0/tests/core/test_provider_stream_mapper.py +0 -90
- monkeybot-3.8.0/tests/core/test_realtime_loop.py +0 -740
- monkeybot-3.8.0/tests/core/test_runtime_env.py +0 -552
- monkeybot-3.8.0/tests/core/test_secret_egress.py +0 -466
- monkeybot-3.8.0/tests/core/test_spill_dynamic.py +0 -386
- monkeybot-3.8.0/tests/core/test_spill_inventory.py +0 -248
- monkeybot-3.8.0/tests/core/test_storage_backends.py +0 -1247
- monkeybot-3.8.0/tests/core/test_subagent_proto.py +0 -490
- monkeybot-3.8.0/tests/core/test_subagent_trace_propagation.py +0 -647
- monkeybot-3.8.0/tests/core/test_terminal.py +0 -1193
- monkeybot-3.8.0/tests/core/test_truncated_tool_batch.py +0 -205
- monkeybot-3.8.0/tests/core/test_usage.py +0 -375
- monkeybot-3.8.0/tests/core/test_utterance_buffer.py +0 -131
- monkeybot-3.8.0/tests/core/test_worker_pool.py +0 -789
- monkeybot-3.8.0/tests/gateway/realtime/test_app.py +0 -40
- monkeybot-3.8.0/tests/gateway/realtime/test_session.py +0 -211
- monkeybot-3.8.0/tests/gateway/realtime/test_wire.py +0 -272
- monkeybot-3.8.0/tests/gateway/sse/test_attachments.py +0 -205
- monkeybot-3.8.0/tests/gateway/sse/test_gateway_runtime.py +0 -858
- monkeybot-3.8.0/tests/gateway/sse/test_routes.py +0 -729
- monkeybot-3.8.0/tests/gateway/sse/test_session_bus.py +0 -246
- monkeybot-3.8.0/tests/gateway/test_otel_lifespan.py +0 -107
- monkeybot-3.8.0/tests/gateway/test_resolve_provider.py +0 -102
- monkeybot-3.8.0/tests/integration/test_prompt_caching_integration.py +0 -139
- monkeybot-3.8.0/tests/observability/test_init.py +0 -154
- monkeybot-3.8.0/tests/observability/test_loop_hook_spans.py +0 -74
- monkeybot-3.8.0/tests/observability/test_span_contract.py +0 -240
- monkeybot-3.8.0/tests/observability/test_spans.py +0 -186
- monkeybot-3.8.0/tests/observability/test_sqlite_exporter.py +0 -709
- monkeybot-3.8.0/tests/providers/conftest.py +0 -106
- monkeybot-3.8.0/tests/providers/test_anthropic_cache.py +0 -747
- monkeybot-3.8.0/tests/providers/test_bedrock_converse.py +0 -605
- monkeybot-3.8.0/tests/providers/test_gemini_live.py +0 -272
- monkeybot-3.8.0/tests/providers/test_gemini_usage.py +0 -355
- monkeybot-3.8.0/tests/providers/test_huggingface.py +0 -61
- monkeybot-3.8.0/tests/providers/test_ollama.py +0 -362
- monkeybot-3.8.0/tests/providers/test_openai_byte_budget.py +0 -415
- monkeybot-3.8.0/tests/providers/test_openai_compat_usage.py +0 -1195
- monkeybot-3.8.0/tests/providers/test_openai_history.py +0 -437
- monkeybot-3.8.0/tests/providers/test_sampling.py +0 -156
- monkeybot-3.8.0/tests/providers/test_sonnet5_sampling.py +0 -435
- monkeybot-3.8.0/tests/providers/test_source_grep_gates.py +0 -66
- monkeybot-3.8.0/tests/test_packaging_config.py +0 -85
- monkeybot-3.8.0/tests/test_release_script.py +0 -190
- monkeybot-3.8.0/tests/todo_list/test_todo_list.py +0 -308
- monkeybot-3.8.0/tests/web_search/test_web_search.py +0 -293
- monkeybot-3.8.0/uv.lock +0 -5354
- {monkeybot-3.8.0 → monkeybot-3.9.0}/.cursor/skills/mb-retro/SKILL.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/.dockerignore +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/.github/workflows/live-eval-smoke.yml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/.github/workflows/prepare-release.yml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/.github/workflows/publish-release.yml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/.gitignore +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/BACKLOG.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/LICENSE +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/README.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/skills/monkeybot/SKILL.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/chat_file_index.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/chat_local_shell.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/chat_renderer.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/chat_status_bar.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/chat_theme.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/chat_tui_widgets.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/commands/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/commands/refresh.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/commands/run_cmd.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/commands/talk.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/commands/trace.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/config_resolve.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/exit_commands.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/main.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/process_tree.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/realtime/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/realtime/audio_io.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/realtime/client.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/realtime/gateway_manager.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/realtime/session.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/realtime/talk_ui.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/realtime/wire_encode.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/runtime_python.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/AGENT.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/Dockerfile +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/browser/SKILL.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/command_allowlist.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/dockerignore +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/goal/SKILL.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/image-generator/SKILL.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/image-generator/generate_image.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/loop/SKILL.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/mcp.json +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/opensandbox.docker.toml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/otel-collector.example.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/scaffold_defaults/permissions.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/session_controller.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/src/monkeybot_cli/terminal_markdown.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/tests/test_chat_e2e.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/tests/test_chat_file_index.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/tests/test_chat_grounding.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/tests/test_chat_status_bar.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/tests/test_chat_theme.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/tests/test_chat_tool_display.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/tests/test_extras_catalog.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/tests/test_gateway_health.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/tests/test_opensandbox_lifecycle.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/tests/test_scaffold.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/cli/tests/test_trace_cmd.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docker/Dockerfile +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docker/demo-model.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docker/demo.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docker/docker-compose.sandbox.yml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docker/opensandbox.docker.toml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docker/sandbox.Dockerfile +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docker-compose.yml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/agent-layout.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/assets/logo.png +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/browser-mcp-perf-baseline.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/browser-mcp-performance-plan.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/browser-mcp.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/cloud-deployment-design.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/deploy-aws-agentcore.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/deploy-pattern-a-container.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/deploy-pattern-b-serverless.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/deploy-pattern-c-agent-platform.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/deploy-pattern-d-realtime.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/getting-started.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/live-evals.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/mcp.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/migrations/agent-scope-namespacing.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/migrations/history-row-id.sql +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/migrations/memory-outbox.sql +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/migrations/session-branches.sql +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/observability-runbook.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/ollama-local.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/otel-collector.example.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/progressive-loop-tools.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/progressive-mcp-tools.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/skills.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/spill-dynamic-design.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/docs/sse-gateway-ui.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/TEST_COVERAGE.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/assertions.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/baselines/smoke.json +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/baselines/smoke.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/eval_config.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/models.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/persistence.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/runner.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/context/summarization_trigger.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/drift/declares_done.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/drift/path_constraint.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/drift/preempt.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/drift/repeat_correction.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/drift/supersession.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/mcp/get_prompt.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/mcp/list_resources.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/mcp/tool_invoke.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/memory/recall_cross_session.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/memory/recall_single_session.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/multi_turn/task_tracking.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/skills/skill_invocation.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/subagents/dispatch_complete.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/tools/core_read.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/tools/core_read_error.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/tools/core_run_command.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/tools/core_run_command_sandbox.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/scenarios/tools/core_write.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/.env.example +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/.gitignore +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/fixture_mcp_server.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/monkeybot_config/AGENT.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/monkeybot_config/command_allowlist.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/monkeybot_config/mcp.json +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/monkeybot_config/monkeybot.verifier-on.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/monkeybot_config/monkeybot.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/monkeybot_config/permissions.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/pyproject.toml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/skills/browser/SKILL.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/uv.lock +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/workspace/.gitkeep +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/smoke_agent/workspace/skills/browser/playbooks/.gitkeep +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/suites/drift.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/suites/smoke.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/test_runner_sse.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/evals/test_scorer.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/examples/README.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/examples/agentcore/handler.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/examples/agentengine/handler.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/examples/lambda/handler.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/examples/ollama/PrefixStable.Modelfile +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/examples/skills/browser/SKILL.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/examples/skills/browser/playbooks/.gitkeep +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/examples/skills/diagnostics/README.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/examples/skills/diagnostics/SKILL.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/examples/skills/diagnostics/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/examples/skills/diagnostics/diagnostics.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/examples/skills/image-generator/SKILL.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/examples/skills/image-generator/generate_image.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/pyproject.toml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/scripts/agentcore_smoke.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/scripts/dump_tool_surface.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/agentcore.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/assets/NOTICE.md +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/assets/dom_tree.js +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/assets/pa_driver.js +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/chat_scope.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/login.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/perf.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/screenshots.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/server.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/tools/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/src/browser_mcp/tools/capture.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/conftest.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/fixtures/api.json +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/fixtures/article.html +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/fixtures/cards.html +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/fixtures/form.html +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/fixtures/long_list.html +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/fixtures/spa.html +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/fixtures/tool_surface.json +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/integration/conftest.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/integration/test_multi_tab.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/integration/test_run_playbook.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/test_dom_indexing.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/test_observe.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/test_playwright_helpers.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/test_server_shutdown.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/test_tool_surface.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/integrations/browser-mcp/tests/test_wait_tools.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/pytest.ini +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/scripts/create_schema.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/scripts/precommit-pytest.sh +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/scripts/smoke_global_cli.sh +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/cli/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/cli/__main__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/cli/audio_io.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/cli/gateway_manager.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/cli/main.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/cli/push_to_talk.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/cli/realtime_client.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/computer/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/computer/approvals.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/computer/permissions.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/computer/safety.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/computer/tools.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/attachments/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/attachments/freeze.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/attachments/image_preview.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/attachments/store.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/attachments/tools.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/bootstrap.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/config/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/config/realtime_config.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/context/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/context/campaign_context.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/context/common.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/context/slash_skills.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/context/tool_output_policy.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/context/tool_result_ingress.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/goals/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/goals/service.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/hooks/evidence_guard.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/layout.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/llm/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/llm/realtime_provider.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/llm/usage.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/lockfile_names.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/logging_utils.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/mcp/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/mcp/mcp_client.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/mcp/ports_mcp.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/config.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/ids.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/ingest.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/observability.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/outbox.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/palace.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/uri.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/memory/writer.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/messages/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/messages/convert_provider.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/messages/tool_integrity.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/path_safety.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/backends.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/branches.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/db.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/durable_runs.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/errors.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/firestore.indexes.json +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/firestore.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/firestore_scheduled_loops.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/goal_ledger.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/history.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/postgres.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/row_ids.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/runs.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/scheduled_loops.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/session_turn_locks.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/sqlite.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/sqlite_backend.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/thread_summary.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/transcript.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/transcript_reader.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/usage.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/persistence/usage_buckets.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/prompts/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/prompts/harness_prompt.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/prompts/headings.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/prompts/prompt.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/runtime/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/runtime/history_rewrite.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/runtime/input_admission.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/runtime/loop.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/runtime/loop_hooks.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/runtime/loop_ports.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/runtime/provider_stream_mapper.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/runtime/realtime_loop.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/runtime/tool_batch.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/subagents/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/subagents/progress_publish.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/subagents/subagent_proto.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/subagents/subagent_worker.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/subprocess_groups.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/testing/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/testing/mocks_provider.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/testing/mocks_realtime_provider.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/ask_user.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/background_jobs.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/command_executor.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/grant_store.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/inspector.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/loop_inspector.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/path_grant_inspector.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/sandbox_executor.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/terminal.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/text_normalize.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/tool_hint.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/tool_kind.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/types.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/tools/workspace_service.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/types/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/types/types_tools.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/actuator.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/binding.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/classify.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/inspector.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/intervention.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/judge.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/ledger.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/mailbox.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/match.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/port.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/rewrite_effects.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/severity.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/verifier/tracker.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/workspace/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/workspace/factory.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/workspace/local.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/workspace/protocol.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/core/workspace_layout.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/main.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/pending_response_bus.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/realtime/app.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/realtime/deps.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/realtime/errors.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/realtime/guardrails.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/realtime/manager.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/realtime/routes.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/realtime/session.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/realtime_main.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/goal_routes.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/history_routes.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/loop_port.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/models.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/reload.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/reply_body.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/request_storage.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/scheduler_routes.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/scheduler_wiring.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/session_bus.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/gateway/sse/workspace_layout.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/observability/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/observability/_state.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/observability/instrumentation.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/observability/propagation.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/observability/spans.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/providers/_bedrock_converse.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/providers/gemini_live.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/providers/model_capabilities.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/providers/pricing.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/providers/request_budget.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/scaffold/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/scheduler/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/scheduler/__main__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/scheduler/engine.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/scheduler/interval.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/scheduler/tick_result.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/scheduler/worker.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/subagents/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/subagents/worker/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/subagents/worker/__main__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/todo_list/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/web_search/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/web_search/backends/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/web_search/protocol.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/src/monkeybot/web_search/tool.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/acceptance/test_observability_acceptance.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/cli/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/cli/test_gateway_manager.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/cli/test_main.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/cli/test_push_to_talk.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/cli/test_realtime_client.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/computer/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/computer/test_approvals.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/computer/test_computer_tools.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/computer/test_package_init.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/computer/test_path_policy.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/computer/test_permissions.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/computer/test_subagent_exclusion.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/computer/test_wiring.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/fixtures/bitbucket_dc_style_pr.diff +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/memory/helpers.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/memory/in_memory_palace.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_agent_layout.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_ask_user.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_attachment_freeze.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_attachment_store.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_background_jobs.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_branch_store_backends.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_content_blocks.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_context.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_context_budget.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_context_epoch.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_durable_runs.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_empty_completion.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_env_map_grep_gates.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_events.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_evidence_guard.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_firestore_scheduled_loops.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_firestore_usage.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_gemini_history_replay.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_goal_ledger.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_goal_persistence.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_goals.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_harness_prompt.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_history_branches.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_input_admission.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_layout.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_logging_utils.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_mcp_client.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_mocks_realtime_provider.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_path_safety.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_pricing.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_progress_tracker.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_prompt.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_replace_fuzzy.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_run_command_parse.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_runs.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_runtime_config_snapshot.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_sandbox_executor.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_scheduled_loops.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_session_branches_migration.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_session_turn_locks.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_settlement.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_slash_skills.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_subagent_transcript.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_subagent_worker_paths.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_thread_summary_wire.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_tool_def_schema.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_tool_integrity.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_tool_result_ingress.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_tool_shapers.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_transcript.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_transcript_reader.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_turn_session_id.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_usage_migration.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_verifier_binding.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_verifier_inspector.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_verifier_judge.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_verifier_mailbox_lifecycle.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_verifier_rewrite_effects.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_verifier_sticky_nudge.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_workspace_extra_read_roots.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_workspace_layout.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_workspace_symlinks.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/test_workspace_write_scope.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/workspace/test_factory.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/workspace/test_local_storage.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/core/workspace/test_protocol_contract.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/eval_hook.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenario_runner.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/memory_wake_up_large.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/memory_write_inject.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/subagent_roundtrip.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_glob_grep.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_load_file.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_loops.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_read.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_replace_apply_patch.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_run_command.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_search_memory.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_todo_list.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_web_search.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/tool_write.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/scenarios/turn_completion.yaml +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/test_agent_behavior.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/evals/test_verifier_port.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/realtime/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/realtime/test_deps.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/realtime/test_guardrails.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/realtime/test_manager.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/realtime/test_metrics.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/realtime/test_routes_client_text.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/sse/test_config_reload.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/sse/test_create_session_model.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/sse/test_history_routes.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/sse/test_scheduler_routes.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/sse/test_transcript_wiring.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/test_otel_fastapi.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/test_pending_response_endpoints.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/test_realtime_main.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/test_sse_events.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/gateway/test_subagent_event_publisher.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/integration/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/integration/test_mb_e2e_simple_reply.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/integration/test_observability_integration.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/observability/conftest.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/observability/test_instrumentation.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/observability/test_propagation.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/observability/test_truncate.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/observability/test_turn_complete_trace.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/providers/test_anthropic_history.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/providers/test_bedrock_estimate.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/providers/test_gemini_history.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/providers/test_model_capabilities.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/providers/test_nvidia.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/providers/test_pricing.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/providers/test_request_budget.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/providers/test_safe_parse_tool_args.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/providers/test_vertex_claude_history.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/scheduler/test_engine.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/scheduler/test_interval.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/skills/__init__.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/skills/test_generate_image_script.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/test_cold_start.py +0 -0
- {monkeybot-3.8.0 → monkeybot-3.9.0}/tests/web_search/__init__.py +0 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Block pull-request creation until local CI has passed for this repo."""
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
import json
|
|
7
|
+
import os
|
|
8
|
+
import re
|
|
9
|
+
import subprocess
|
|
10
|
+
import sys
|
|
11
|
+
|
|
12
|
+
ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", ".."))
|
|
13
|
+
REPO_NAME = os.path.basename(ROOT)
|
|
14
|
+
CREATE_PR = re.compile(r"(?:^|[^\w./-])gh\s+pr\s+create\b")
|
|
15
|
+
REPO_FLAG = re.compile(r"(?:^|\s)(?:-R|--repo)(?:=|\s+)(\S+)")
|
|
16
|
+
CD = re.compile(r"(?:^|[;&|]\s*)cd\s+([^;&|\n]+)")
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def emit(permission: str, message: str | None = None) -> None:
|
|
20
|
+
payload: dict[str, str] = {"permission": permission}
|
|
21
|
+
if message:
|
|
22
|
+
payload["user_message"] = message
|
|
23
|
+
payload["agent_message"] = message
|
|
24
|
+
json.dump(payload, sys.stdout)
|
|
25
|
+
sys.stdout.write("\n")
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def allow() -> None:
|
|
29
|
+
emit("allow")
|
|
30
|
+
raise SystemExit(0)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def deny(message: str) -> None:
|
|
34
|
+
emit("deny", message)
|
|
35
|
+
raise SystemExit(0)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def in_repo(path: str) -> bool:
|
|
39
|
+
try:
|
|
40
|
+
return os.path.commonpath(
|
|
41
|
+
[os.path.realpath(path), os.path.realpath(ROOT)]
|
|
42
|
+
) == os.path.realpath(ROOT)
|
|
43
|
+
except ValueError:
|
|
44
|
+
return False
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def is_this_repo(value: str) -> bool:
|
|
48
|
+
name = value.rstrip("/").split("/")[-1]
|
|
49
|
+
if name.endswith(".git"):
|
|
50
|
+
name = name[: -len(".git")]
|
|
51
|
+
return name == REPO_NAME
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def effective_cwd(cwd: str, command: str) -> str:
|
|
55
|
+
base = cwd or ROOT
|
|
56
|
+
matches = CD.findall(command)
|
|
57
|
+
if not matches:
|
|
58
|
+
return base
|
|
59
|
+
target = matches[-1].strip().strip('"').strip("'")
|
|
60
|
+
target = os.path.expanduser(target)
|
|
61
|
+
if not os.path.isabs(target):
|
|
62
|
+
target = os.path.normpath(os.path.join(base, target))
|
|
63
|
+
return target
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def run_ci() -> int:
|
|
67
|
+
completed = subprocess.run(
|
|
68
|
+
["bash", "scripts/ci-local.sh", "--if-needed"],
|
|
69
|
+
cwd=ROOT,
|
|
70
|
+
stdout=sys.stderr,
|
|
71
|
+
)
|
|
72
|
+
return completed.returncode
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def gate_shell(data: dict) -> None:
|
|
76
|
+
command = str(data.get("command") or "")
|
|
77
|
+
if CREATE_PR.search(command) is None:
|
|
78
|
+
allow()
|
|
79
|
+
|
|
80
|
+
flagged = REPO_FLAG.search(command)
|
|
81
|
+
if flagged is not None:
|
|
82
|
+
if not is_this_repo(flagged.group(1)):
|
|
83
|
+
allow()
|
|
84
|
+
else:
|
|
85
|
+
cwd = str(data.get("cwd") or "")
|
|
86
|
+
if cwd or CD.search(command):
|
|
87
|
+
if not in_repo(effective_cwd(cwd, command)):
|
|
88
|
+
allow()
|
|
89
|
+
else:
|
|
90
|
+
roots = data.get("workspace_roots") or []
|
|
91
|
+
if len(roots) != 1 or not in_repo(str(roots[0])):
|
|
92
|
+
deny(
|
|
93
|
+
"Set the shell working directory to the repository before creating a pull request "
|
|
94
|
+
"so local CI runs in the right project."
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
if run_ci() != 0:
|
|
98
|
+
deny("Local CI failed, so the pull request was not created.")
|
|
99
|
+
allow()
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def gate_mcp(data: dict) -> None:
|
|
103
|
+
if data.get("tool_name") != "create_pull_request":
|
|
104
|
+
allow()
|
|
105
|
+
raw = data.get("tool_input") or {}
|
|
106
|
+
if isinstance(raw, str):
|
|
107
|
+
try:
|
|
108
|
+
payload = json.loads(raw) if raw else {}
|
|
109
|
+
except json.JSONDecodeError:
|
|
110
|
+
deny("create_pull_request input was not valid JSON, so local CI did not run.")
|
|
111
|
+
elif isinstance(raw, dict):
|
|
112
|
+
payload = raw
|
|
113
|
+
else:
|
|
114
|
+
payload = {}
|
|
115
|
+
repo = str(payload.get("repo") or "")
|
|
116
|
+
if not repo:
|
|
117
|
+
deny(
|
|
118
|
+
"create_pull_request is missing a repo, so local CI cannot tell which project to test."
|
|
119
|
+
)
|
|
120
|
+
if not is_this_repo(repo):
|
|
121
|
+
allow()
|
|
122
|
+
if run_ci() != 0:
|
|
123
|
+
deny("Local CI failed, so the pull request was not created.")
|
|
124
|
+
allow()
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
def main() -> None:
|
|
128
|
+
try:
|
|
129
|
+
data = json.load(sys.stdin)
|
|
130
|
+
except json.JSONDecodeError:
|
|
131
|
+
deny("Local CI hook received invalid input.")
|
|
132
|
+
event = str(data.get("hook_event_name") or "")
|
|
133
|
+
if event == "beforeMCPExecution" or (
|
|
134
|
+
not event and data.get("tool_name") == "create_pull_request"
|
|
135
|
+
):
|
|
136
|
+
gate_mcp(data)
|
|
137
|
+
else:
|
|
138
|
+
gate_shell(data)
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
if __name__ == "__main__":
|
|
142
|
+
try:
|
|
143
|
+
main()
|
|
144
|
+
except SystemExit:
|
|
145
|
+
raise
|
|
146
|
+
except Exception as exc:
|
|
147
|
+
deny(f"Local CI hook failed: {exc}")
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"hooks": {
|
|
4
|
+
"beforeShellExecution": [
|
|
5
|
+
{
|
|
6
|
+
"command": ".cursor/hooks/pre-pr.py",
|
|
7
|
+
"matcher": "gh\\s+pr\\s+create",
|
|
8
|
+
"timeout": 2400,
|
|
9
|
+
"failClosed": true
|
|
10
|
+
}
|
|
11
|
+
],
|
|
12
|
+
"beforeMCPExecution": [
|
|
13
|
+
{
|
|
14
|
+
"command": ".cursor/hooks/pre-pr.py",
|
|
15
|
+
"matcher": "create_pull_request",
|
|
16
|
+
"timeout": 2400,
|
|
17
|
+
"failClosed": true
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Automatic runs are off. Pushing a branch runs this same suite locally
|
|
2
|
+
# (scripts/ci-local.sh via the pre-push hook). Dispatch this workflow from the
|
|
3
|
+
# Actions tab only when you want a GitHub-hosted run.
|
|
4
|
+
name: CI
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
python:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v4
|
|
14
|
+
|
|
15
|
+
- name: Install ripgrep and GitHub CLI
|
|
16
|
+
run: sudo apt-get update && sudo apt-get install -y ripgrep gh
|
|
17
|
+
|
|
18
|
+
- uses: astral-sh/setup-uv@v5
|
|
19
|
+
with:
|
|
20
|
+
version: "latest"
|
|
21
|
+
|
|
22
|
+
- name: Sync dependencies
|
|
23
|
+
run: uv sync --extra claude --extra vertex-claude --extra bedrock --extra firestore
|
|
24
|
+
|
|
25
|
+
- name: Ruff format
|
|
26
|
+
run: uv run ruff format --check .
|
|
27
|
+
|
|
28
|
+
- name: Mypy
|
|
29
|
+
run: uv run mypy src/monkeybot
|
|
30
|
+
|
|
31
|
+
- name: Pytest
|
|
32
|
+
run: uv run pytest tests/ -q
|
|
33
|
+
|
|
34
|
+
- name: CLI pytest
|
|
35
|
+
working-directory: cli
|
|
36
|
+
run: |
|
|
37
|
+
uv sync
|
|
38
|
+
uv run pytest -q
|
|
39
|
+
|
|
40
|
+
- name: Browser MCP pytest
|
|
41
|
+
working-directory: integrations/browser-mcp
|
|
42
|
+
run: |
|
|
43
|
+
uv sync --dev
|
|
44
|
+
uv run pytest -q
|
|
45
|
+
|
|
46
|
+
- name: Evals self-checks (no live agent, no model calls)
|
|
47
|
+
run: |
|
|
48
|
+
uv sync --extra evals
|
|
49
|
+
uv run python evals/test_assertions.py
|
|
50
|
+
uv run python evals/test_report.py
|
|
51
|
+
uv run python evals/test_runner_sse.py
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Pre-commit hooks for monkeybot
|
|
2
|
+
# Install: uv run pre-commit install && uv run pre-commit install --hook-type pre-push
|
|
3
|
+
# Run the commit hooks manually: uv run pre-commit run --all-files
|
|
4
|
+
# Run the full pull-request suite: bash scripts/ci-local.sh
|
|
5
|
+
|
|
6
|
+
repos:
|
|
7
|
+
- repo: local
|
|
8
|
+
hooks:
|
|
9
|
+
- id: ruff-format
|
|
10
|
+
name: ruff format
|
|
11
|
+
entry: uv run ruff format --check .
|
|
12
|
+
language: system
|
|
13
|
+
pass_filenames: false
|
|
14
|
+
always_run: true
|
|
15
|
+
|
|
16
|
+
- id: mypy
|
|
17
|
+
name: mypy (src/monkeybot)
|
|
18
|
+
entry: uv run mypy src/monkeybot
|
|
19
|
+
language: system
|
|
20
|
+
pass_filenames: false
|
|
21
|
+
always_run: true
|
|
22
|
+
|
|
23
|
+
- id: pytest
|
|
24
|
+
name: pytest (changed tests or collection check)
|
|
25
|
+
entry: bash scripts/precommit-pytest.sh
|
|
26
|
+
language: system
|
|
27
|
+
files: ^(src/monkeybot|tests)/.*\.py$
|
|
28
|
+
pass_filenames: true
|
|
29
|
+
|
|
30
|
+
- id: local-ci
|
|
31
|
+
name: local CI (ruff format, mypy, pytest, cli, browser MCP, eval self-checks)
|
|
32
|
+
entry: bash scripts/ci-local.sh --if-needed
|
|
33
|
+
language: system
|
|
34
|
+
pass_filenames: false
|
|
35
|
+
always_run: true
|
|
36
|
+
stages: [pre-push]
|