monkeybot 3.12.0__tar.gz → 3.14.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 (1591) hide show
  1. monkeybot-3.14.0/CHANGELOG.md +662 -0
  2. monkeybot-3.14.0/CONTRIBUTING.md +43 -0
  3. monkeybot-3.14.0/PKG-INFO +206 -0
  4. monkeybot-3.14.0/README.md +109 -0
  5. monkeybot-3.14.0/cli/pyproject.toml +50 -0
  6. monkeybot-3.14.0/cli/skills/monkeybot/SKILL.md +206 -0
  7. monkeybot-3.14.0/cli/src/monkeybot_cli/chat_session.py +1064 -0
  8. monkeybot-3.14.0/cli/src/monkeybot_cli/commands/doctor.py +667 -0
  9. monkeybot-3.14.0/cli/src/monkeybot_cli/scaffold_defaults/image-generator/SKILL.md +72 -0
  10. monkeybot-3.14.0/cli/tests/test_chat_session.py +474 -0
  11. monkeybot-3.14.0/cli/tests/test_doctor.py +273 -0
  12. monkeybot-3.14.0/docs/cloud-deployment-design.md +92 -0
  13. monkeybot-3.14.0/docs/deploy-pattern-d-realtime.md +307 -0
  14. monkeybot-3.14.0/docs/features.md +860 -0
  15. monkeybot-3.14.0/docs/getting-started.md +186 -0
  16. monkeybot-3.14.0/docs/observability-runbook.md +67 -0
  17. monkeybot-3.14.0/docs/testing.md +778 -0
  18. monkeybot-3.14.0/examples/skills/image-generator/SKILL.md +72 -0
  19. monkeybot-3.14.0/pyproject.toml +145 -0
  20. monkeybot-3.14.0/regression/drivers/bundles/mcp.py +106 -0
  21. monkeybot-3.14.0/regression/drivers/bundles/protocol.py +87 -0
  22. monkeybot-3.14.0/regression/drivers/bundles/session.py +354 -0
  23. monkeybot-3.14.0/regression/drivers/loop.py +700 -0
  24. monkeybot-3.14.0/regression/plan/reference/06-coverage/6W-ops.md +20 -0
  25. monkeybot-3.14.0/regression/plan/reference/appendices.md +29 -0
  26. monkeybot-3.14.0/regression/schema/assertions.py +2247 -0
  27. monkeybot-3.14.0/regression/t2/gateway/test_cases.py +1414 -0
  28. monkeybot-3.14.0/regression/t2/loop/scenarios/file/file_change_absent_on_error.yaml +35 -0
  29. monkeybot-3.14.0/regression/t2/loop/scenarios/file/file_change_binary.yaml +32 -0
  30. monkeybot-3.14.0/regression/t2/loop/scenarios/file/file_change_patch.yaml +84 -0
  31. monkeybot-3.14.0/regression/t2/loop/scenarios/file/file_change_review.yaml +52 -0
  32. monkeybot-3.14.0/regression/t2/loop/scenarios/loop/ui_row_between_tool_pair.yaml +58 -0
  33. monkeybot-3.14.0/regression/t2/loop/scenarios/loop/ui_row_splits_a_batch.yaml +76 -0
  34. monkeybot-3.14.0/regression/t2/loop/scenarios/mcp/child_calls_fixture.yml +15 -0
  35. monkeybot-3.14.0/regression/t2/loop/scenarios/mcp/child_keeps_calling_hidden_server.yaml +114 -0
  36. monkeybot-3.14.0/regression/t2/loop/scenarios/mcp/enable_other_keeps_hidden.yaml +93 -0
  37. monkeybot-3.14.0/regression/t2/loop/scenarios/mcp/enable_restores_hidden.yaml +110 -0
  38. monkeybot-3.14.0/regression/t2/loop/scenarios/mcp/hidden_tool_call_rejected.yaml +124 -0
  39. monkeybot-3.14.0/regression/t2/loop/scenarios/mcp/idle_count_spans_user_messages.yaml +103 -0
  40. monkeybot-3.14.0/regression/t2/loop/scenarios/mcp/idle_hides_after_ten.yaml +111 -0
  41. monkeybot-3.14.0/regression/t2/loop/scenarios/mcp/meta_tools_drop_when_all_hidden.yaml +109 -0
  42. monkeybot-3.14.0/regression/t2/loop/scenarios/mcp/only_idle_server_hidden.yaml +92 -0
  43. monkeybot-3.14.0/regression/t2/loop/scenarios/mcp/second_session_still_sees_server.yaml +116 -0
  44. monkeybot-3.14.0/regression/t2/loop/scenarios/mcp/use_resets_idle_count.yaml +168 -0
  45. monkeybot-3.14.0/regression/t2/loop/scenarios/subagents/queue_pending_not_success.yaml +33 -0
  46. monkeybot-3.14.0/regression/t2/python/test_change_parent_session.py +43 -0
  47. monkeybot-3.14.0/regression/t2/python/test_mcp_idle_hide.py +245 -0
  48. monkeybot-3.14.0/regression/t2/python/test_ops_observability.py +246 -0
  49. monkeybot-3.14.0/scripts/ci-local.sh +91 -0
  50. monkeybot-3.14.0/src/monkeybot/core/config/settings.py +1044 -0
  51. monkeybot-3.14.0/src/monkeybot/core/context/__init__.py +1334 -0
  52. monkeybot-3.14.0/src/monkeybot/core/mcp/session_visibility.py +155 -0
  53. monkeybot-3.14.0/src/monkeybot/core/messages/tool_integrity.py +307 -0
  54. monkeybot-3.14.0/src/monkeybot/core/messages/transform_context.py +116 -0
  55. monkeybot-3.14.0/src/monkeybot/core/persistence/backends.py +315 -0
  56. monkeybot-3.14.0/src/monkeybot/core/persistence/durable_runs.py +293 -0
  57. monkeybot-3.14.0/src/monkeybot/core/persistence/firestore.py +1676 -0
  58. monkeybot-3.14.0/src/monkeybot/core/persistence/goal_ledger.py +557 -0
  59. monkeybot-3.14.0/src/monkeybot/core/persistence/postgres.py +1965 -0
  60. monkeybot-3.14.0/src/monkeybot/core/prompts/headings.py +69 -0
  61. monkeybot-3.14.0/src/monkeybot/core/prompts/prompt.py +260 -0
  62. monkeybot-3.14.0/src/monkeybot/core/runtime/events.py +1506 -0
  63. monkeybot-3.14.0/src/monkeybot/core/runtime/input_admission.py +321 -0
  64. monkeybot-3.14.0/src/monkeybot/core/runtime/loop.py +182 -0
  65. monkeybot-3.14.0/src/monkeybot/core/runtime/realtime_loop.py +801 -0
  66. monkeybot-3.14.0/src/monkeybot/core/runtime/tool_dispatch.py +1283 -0
  67. monkeybot-3.14.0/src/monkeybot/core/runtime/turn_loop.py +2257 -0
  68. monkeybot-3.14.0/src/monkeybot/core/subagents/subagent_proto.py +398 -0
  69. monkeybot-3.14.0/src/monkeybot/core/subagents/subagent_worker.py +556 -0
  70. monkeybot-3.14.0/src/monkeybot/core/subagents/supervisor.py +564 -0
  71. monkeybot-3.14.0/src/monkeybot/core/subprocess_groups.py +261 -0
  72. monkeybot-3.14.0/src/monkeybot/core/tools/change_recorder.py +821 -0
  73. monkeybot-3.14.0/src/monkeybot/core/tools/core_tool_executor.py +3479 -0
  74. monkeybot-3.14.0/src/monkeybot/core/tools/permission.py +387 -0
  75. monkeybot-3.14.0/src/monkeybot/core/tools/tool_kind.py +42 -0
  76. monkeybot-3.14.0/src/monkeybot/core/tools/types.py +38 -0
  77. monkeybot-3.14.0/src/monkeybot/gateway/realtime/routes.py +1079 -0
  78. monkeybot-3.14.0/src/monkeybot/gateway/sse/app.py +1610 -0
  79. monkeybot-3.14.0/src/monkeybot/gateway/sse/loop_port.py +39 -0
  80. monkeybot-3.14.0/src/monkeybot/gateway/sse/models.py +310 -0
  81. monkeybot-3.14.0/src/monkeybot/gateway/sse/routes.py +1615 -0
  82. monkeybot-3.14.0/src/monkeybot/gateway/sse/session_bus.py +416 -0
  83. monkeybot-3.14.0/src/monkeybot/observability/__init__.py +272 -0
  84. monkeybot-3.14.0/src/monkeybot/observability/spans.py +503 -0
  85. monkeybot-3.14.0/src/monkeybot/observability/sqlite_exporter.py +747 -0
  86. monkeybot-3.14.0/src/monkeybot/scaffold/__init__.py +33 -0
  87. monkeybot-3.14.0/testkit/gateway.py +262 -0
  88. monkeybot-3.14.0/testkit/gateway_ports.py +56 -0
  89. monkeybot-3.14.0/testkit/subagent_worker.py +290 -0
  90. monkeybot-3.14.0/tests/contracts/goldens/prompts/volatile_tail_parts.json +9 -0
  91. monkeybot-3.14.0/tests/contracts/goldens/routes.txt +56 -0
  92. monkeybot-3.14.0/tests/contracts/goldens/sse/schema.json +1324 -0
  93. monkeybot-3.14.0/tests/contracts/test_catalog_pairing.py +177 -0
  94. monkeybot-3.14.0/tests/contracts/test_harness_prompt_golden.py +187 -0
  95. monkeybot-3.14.0/tests/contracts/test_realtime_divergence.py +124 -0
  96. monkeybot-3.14.0/tests/contracts/test_sse_schema.py +573 -0
  97. monkeybot-3.14.0/tests/contracts/test_storage_parity.py +512 -0
  98. monkeybot-3.14.0/tests/contracts/test_tool_error_catalog.py +255 -0
  99. monkeybot-3.14.0/tests/unit/core/context/test_context.py +779 -0
  100. monkeybot-3.14.0/tests/unit/core/goals/test_goals.py +503 -0
  101. monkeybot-3.14.0/tests/unit/core/mcp/test_session_visibility.py +95 -0
  102. monkeybot-3.14.0/tests/unit/core/messages/test_message_pipeline.py +337 -0
  103. monkeybot-3.14.0/tests/unit/core/messages/test_tool_integrity.py +272 -0
  104. monkeybot-3.14.0/tests/unit/core/persistence/test_durable_runs.py +200 -0
  105. monkeybot-3.14.0/tests/unit/core/persistence/test_storage_backends.py +967 -0
  106. monkeybot-3.14.0/tests/unit/core/runtime/test_durable_events.py +123 -0
  107. monkeybot-3.14.0/tests/unit/core/runtime/test_input_admission.py +948 -0
  108. monkeybot-3.14.0/tests/unit/core/runtime/test_loop.py +3738 -0
  109. monkeybot-3.14.0/tests/unit/core/runtime/test_loop_observability.py +202 -0
  110. monkeybot-3.14.0/tests/unit/core/subagents/test_subagent_proto.py +520 -0
  111. monkeybot-3.14.0/tests/unit/core/subagents/test_supervisor.py +120 -0
  112. monkeybot-3.14.0/tests/unit/core/tools/test_change_recorder.py +461 -0
  113. monkeybot-3.14.0/tests/unit/core/tools/test_core_tool_executor.py +5885 -0
  114. monkeybot-3.14.0/tests/unit/core/tools/test_path_grant_inspector.py +277 -0
  115. monkeybot-3.14.0/tests/unit/gateway/sse/test_attachments.py +253 -0
  116. monkeybot-3.14.0/tests/unit/gateway/sse/test_create_session_model.py +372 -0
  117. monkeybot-3.14.0/tests/unit/gateway/sse/test_history_routes.py +364 -0
  118. monkeybot-3.14.0/tests/unit/gateway/sse/test_routes.py +851 -0
  119. monkeybot-3.14.0/tests/unit/gateway/sse/test_scheduler_routes.py +174 -0
  120. monkeybot-3.14.0/tests/unit/observability/test_init.py +204 -0
  121. monkeybot-3.14.0/tests/unit/observability/test_spans.py +262 -0
  122. monkeybot-3.14.0/tests/unit/observability/test_sqlite_exporter.py +827 -0
  123. monkeybot-3.14.0/uv.lock +5578 -0
  124. monkeybot-3.12.0/CHANGELOG.md +0 -625
  125. monkeybot-3.12.0/CONTRIBUTING.md +0 -43
  126. monkeybot-3.12.0/PKG-INFO +0 -202
  127. monkeybot-3.12.0/README.md +0 -105
  128. monkeybot-3.12.0/cli/pyproject.toml +0 -50
  129. monkeybot-3.12.0/cli/skills/monkeybot/SKILL.md +0 -202
  130. monkeybot-3.12.0/cli/src/monkeybot_cli/chat_session.py +0 -967
  131. monkeybot-3.12.0/cli/src/monkeybot_cli/commands/doctor.py +0 -655
  132. monkeybot-3.12.0/cli/src/monkeybot_cli/scaffold_defaults/image-generator/SKILL.md +0 -72
  133. monkeybot-3.12.0/cli/tests/test_chat_session.py +0 -450
  134. monkeybot-3.12.0/cli/tests/test_doctor.py +0 -269
  135. monkeybot-3.12.0/docs/cloud-deployment-design.md +0 -96
  136. monkeybot-3.12.0/docs/deploy-pattern-d-realtime.md +0 -306
  137. monkeybot-3.12.0/docs/features.md +0 -865
  138. monkeybot-3.12.0/docs/getting-started.md +0 -182
  139. monkeybot-3.12.0/docs/observability-runbook.md +0 -64
  140. monkeybot-3.12.0/docs/testing.md +0 -756
  141. monkeybot-3.12.0/examples/skills/image-generator/SKILL.md +0 -72
  142. monkeybot-3.12.0/pyproject.toml +0 -145
  143. monkeybot-3.12.0/regression/drivers/bundles/mcp.py +0 -103
  144. monkeybot-3.12.0/regression/drivers/bundles/protocol.py +0 -86
  145. monkeybot-3.12.0/regression/drivers/bundles/session.py +0 -339
  146. monkeybot-3.12.0/regression/drivers/loop.py +0 -682
  147. monkeybot-3.12.0/regression/plan/reference/06-coverage/6W-ops.md +0 -20
  148. monkeybot-3.12.0/regression/plan/reference/appendices.md +0 -29
  149. monkeybot-3.12.0/regression/schema/assertions.py +0 -2238
  150. monkeybot-3.12.0/regression/t2/gateway/test_cases.py +0 -1246
  151. monkeybot-3.12.0/regression/t2/loop/scenarios/subagents/queue_pending_not_success.yaml +0 -33
  152. monkeybot-3.12.0/regression/t2/python/test_ops_observability.py +0 -245
  153. monkeybot-3.12.0/regression/t2/python/test_subagent_worker_pool.py +0 -155
  154. monkeybot-3.12.0/scripts/ci-local.sh +0 -83
  155. monkeybot-3.12.0/src/monkeybot/core/config/settings.py +0 -1024
  156. monkeybot-3.12.0/src/monkeybot/core/context/__init__.py +0 -1227
  157. monkeybot-3.12.0/src/monkeybot/core/messages/tool_integrity.py +0 -281
  158. monkeybot-3.12.0/src/monkeybot/core/messages/transform_context.py +0 -111
  159. monkeybot-3.12.0/src/monkeybot/core/persistence/backends.py +0 -334
  160. monkeybot-3.12.0/src/monkeybot/core/persistence/durable_runs.py +0 -376
  161. monkeybot-3.12.0/src/monkeybot/core/persistence/firestore.py +0 -1778
  162. monkeybot-3.12.0/src/monkeybot/core/persistence/goal_ledger.py +0 -556
  163. monkeybot-3.12.0/src/monkeybot/core/persistence/postgres.py +0 -2046
  164. monkeybot-3.12.0/src/monkeybot/core/prompts/headings.py +0 -67
  165. monkeybot-3.12.0/src/monkeybot/core/prompts/prompt.py +0 -245
  166. monkeybot-3.12.0/src/monkeybot/core/runtime/events.py +0 -1451
  167. monkeybot-3.12.0/src/monkeybot/core/runtime/input_admission.py +0 -305
  168. monkeybot-3.12.0/src/monkeybot/core/runtime/loop.py +0 -180
  169. monkeybot-3.12.0/src/monkeybot/core/runtime/realtime_loop.py +0 -778
  170. monkeybot-3.12.0/src/monkeybot/core/runtime/tool_dispatch.py +0 -1198
  171. monkeybot-3.12.0/src/monkeybot/core/runtime/turn_loop.py +0 -2204
  172. monkeybot-3.12.0/src/monkeybot/core/subagents/subagent_proto.py +0 -388
  173. monkeybot-3.12.0/src/monkeybot/core/subagents/subagent_worker.py +0 -552
  174. monkeybot-3.12.0/src/monkeybot/core/subagents/worker_pool.py +0 -570
  175. monkeybot-3.12.0/src/monkeybot/core/subprocess_groups.py +0 -161
  176. monkeybot-3.12.0/src/monkeybot/core/tools/core_tool_executor.py +0 -3193
  177. monkeybot-3.12.0/src/monkeybot/core/tools/permission.py +0 -349
  178. monkeybot-3.12.0/src/monkeybot/core/tools/tool_kind.py +0 -40
  179. monkeybot-3.12.0/src/monkeybot/core/tools/types.py +0 -33
  180. monkeybot-3.12.0/src/monkeybot/gateway/realtime/routes.py +0 -1070
  181. monkeybot-3.12.0/src/monkeybot/gateway/sse/app.py +0 -1554
  182. monkeybot-3.12.0/src/monkeybot/gateway/sse/loop_port.py +0 -37
  183. monkeybot-3.12.0/src/monkeybot/gateway/sse/models.py +0 -302
  184. monkeybot-3.12.0/src/monkeybot/gateway/sse/routes.py +0 -1517
  185. monkeybot-3.12.0/src/monkeybot/gateway/sse/session_bus.py +0 -397
  186. monkeybot-3.12.0/src/monkeybot/observability/__init__.py +0 -240
  187. monkeybot-3.12.0/src/monkeybot/observability/spans.py +0 -473
  188. monkeybot-3.12.0/src/monkeybot/observability/sqlite_exporter.py +0 -737
  189. monkeybot-3.12.0/src/monkeybot/scaffold/__init__.py +0 -31
  190. monkeybot-3.12.0/src/monkeybot/subagents/__init__.py +0 -1
  191. monkeybot-3.12.0/src/monkeybot/subagents/worker/__init__.py +0 -1
  192. monkeybot-3.12.0/src/monkeybot/subagents/worker/__main__.py +0 -22
  193. monkeybot-3.12.0/testkit/gateway.py +0 -263
  194. monkeybot-3.12.0/testkit/gateway_ports.py +0 -54
  195. monkeybot-3.12.0/testkit/subagent_worker.py +0 -261
  196. monkeybot-3.12.0/tests/contracts/goldens/prompts/volatile_tail_parts.json +0 -8
  197. monkeybot-3.12.0/tests/contracts/goldens/routes.txt +0 -53
  198. monkeybot-3.12.0/tests/contracts/goldens/sse/schema.json +0 -1270
  199. monkeybot-3.12.0/tests/contracts/test_catalog_pairing.py +0 -177
  200. monkeybot-3.12.0/tests/contracts/test_harness_prompt_golden.py +0 -186
  201. monkeybot-3.12.0/tests/contracts/test_realtime_divergence.py +0 -122
  202. monkeybot-3.12.0/tests/contracts/test_sse_schema.py +0 -572
  203. monkeybot-3.12.0/tests/contracts/test_storage_parity.py +0 -503
  204. monkeybot-3.12.0/tests/contracts/test_tool_error_catalog.py +0 -254
  205. monkeybot-3.12.0/tests/unit/core/context/test_context.py +0 -692
  206. monkeybot-3.12.0/tests/unit/core/goals/test_goals.py +0 -496
  207. monkeybot-3.12.0/tests/unit/core/messages/test_message_pipeline.py +0 -138
  208. monkeybot-3.12.0/tests/unit/core/messages/test_tool_integrity.py +0 -198
  209. monkeybot-3.12.0/tests/unit/core/persistence/test_durable_runs.py +0 -217
  210. monkeybot-3.12.0/tests/unit/core/persistence/test_storage_backends.py +0 -1285
  211. monkeybot-3.12.0/tests/unit/core/runtime/test_durable_events.py +0 -94
  212. monkeybot-3.12.0/tests/unit/core/runtime/test_input_admission.py +0 -924
  213. monkeybot-3.12.0/tests/unit/core/runtime/test_loop.py +0 -3731
  214. monkeybot-3.12.0/tests/unit/core/runtime/test_loop_observability.py +0 -202
  215. monkeybot-3.12.0/tests/unit/core/subagents/test_subagent_proto.py +0 -505
  216. monkeybot-3.12.0/tests/unit/core/subagents/test_worker_pool.py +0 -794
  217. monkeybot-3.12.0/tests/unit/core/tools/test_core_tool_executor.py +0 -5682
  218. monkeybot-3.12.0/tests/unit/core/tools/test_path_grant_inspector.py +0 -247
  219. monkeybot-3.12.0/tests/unit/gateway/sse/test_attachments.py +0 -251
  220. monkeybot-3.12.0/tests/unit/gateway/sse/test_create_session_model.py +0 -370
  221. monkeybot-3.12.0/tests/unit/gateway/sse/test_history_routes.py +0 -359
  222. monkeybot-3.12.0/tests/unit/gateway/sse/test_routes.py +0 -686
  223. monkeybot-3.12.0/tests/unit/gateway/sse/test_scheduler_routes.py +0 -167
  224. monkeybot-3.12.0/tests/unit/observability/test_init.py +0 -152
  225. monkeybot-3.12.0/tests/unit/observability/test_spans.py +0 -192
  226. monkeybot-3.12.0/tests/unit/observability/test_sqlite_exporter.py +0 -709
  227. monkeybot-3.12.0/uv.lock +0 -5578
  228. {monkeybot-3.12.0 → monkeybot-3.14.0}/.cursor/hooks/pre-pr.py +0 -0
  229. {monkeybot-3.12.0 → monkeybot-3.14.0}/.cursor/hooks/test-failure-notice.py +0 -0
  230. {monkeybot-3.12.0 → monkeybot-3.14.0}/.cursor/hooks.json +0 -0
  231. {monkeybot-3.12.0 → monkeybot-3.14.0}/.cursor/rules/test-failures.mdc +0 -0
  232. {monkeybot-3.12.0 → monkeybot-3.14.0}/.cursor/skills/mb-retro/SKILL.md +0 -0
  233. {monkeybot-3.12.0 → monkeybot-3.14.0}/.dockerignore +0 -0
  234. {monkeybot-3.12.0 → monkeybot-3.14.0}/.github/CODEOWNERS +0 -0
  235. {monkeybot-3.12.0 → monkeybot-3.14.0}/.github/workflows/ci.yml +0 -0
  236. {monkeybot-3.12.0 → monkeybot-3.14.0}/.github/workflows/live-eval-smoke.yml +0 -0
  237. {monkeybot-3.12.0 → monkeybot-3.14.0}/.github/workflows/prepare-release.yml +0 -0
  238. {monkeybot-3.12.0 → monkeybot-3.14.0}/.github/workflows/publish-release.yml +0 -0
  239. {monkeybot-3.12.0 → monkeybot-3.14.0}/.gitignore +0 -0
  240. {monkeybot-3.12.0 → monkeybot-3.14.0}/.pre-commit-config.yaml +0 -0
  241. {monkeybot-3.12.0 → monkeybot-3.14.0}/BACKLOG.md +0 -0
  242. {monkeybot-3.12.0 → monkeybot-3.14.0}/LICENSE +0 -0
  243. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/skills/monkeybot/references/config-sections.md +0 -0
  244. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/__init__.py +0 -0
  245. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/chat_file_index.py +0 -0
  246. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/chat_local_shell.py +0 -0
  247. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/chat_renderer.py +0 -0
  248. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/chat_status_bar.py +0 -0
  249. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/chat_theme.py +0 -0
  250. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/chat_tool_display.py +0 -0
  251. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/chat_tui.py +0 -0
  252. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/chat_tui_widgets.py +0 -0
  253. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/commands/__init__.py +0 -0
  254. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/commands/chat.py +0 -0
  255. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/commands/loop.py +0 -0
  256. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/commands/mcp_login.py +0 -0
  257. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/commands/new.py +0 -0
  258. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/commands/refresh.py +0 -0
  259. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/commands/run_cmd.py +0 -0
  260. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/commands/talk.py +0 -0
  261. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/commands/trace.py +0 -0
  262. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/commands/validate.py +0 -0
  263. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/compat.py +0 -0
  264. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/config_resolve.py +0 -0
  265. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/exit_commands.py +0 -0
  266. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/extras_catalog.py +0 -0
  267. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/gateway_health.py +0 -0
  268. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/main.py +0 -0
  269. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/opensandbox_lifecycle.py +0 -0
  270. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/output.py +0 -0
  271. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/overrides.txt +0 -0
  272. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/process_tree.py +0 -0
  273. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/providers.py +0 -0
  274. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/realtime/__init__.py +0 -0
  275. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/realtime/audio_io.py +0 -0
  276. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/realtime/client.py +0 -0
  277. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/realtime/gateway_manager.py +0 -0
  278. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/realtime/push_to_talk.py +0 -0
  279. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/realtime/session.py +0 -0
  280. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/realtime/session_controller.py +0 -0
  281. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/realtime/talk_ui.py +0 -0
  282. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/realtime/wire_encode.py +0 -0
  283. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/runtime_python.py +0 -0
  284. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/scaffold.py +0 -0
  285. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/scaffold_defaults/AGENT.md +0 -0
  286. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/scaffold_defaults/Dockerfile +0 -0
  287. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/scaffold_defaults/__init__.py +0 -0
  288. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/scaffold_defaults/browser/SKILL.md +0 -0
  289. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/scaffold_defaults/command_allowlist.yaml +0 -0
  290. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/scaffold_defaults/dockerignore +0 -0
  291. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/scaffold_defaults/env.example +0 -0
  292. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/scaffold_defaults/goal/SKILL.md +0 -0
  293. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/scaffold_defaults/image-generator/generate_image.py +0 -0
  294. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/scaffold_defaults/loop/SKILL.md +0 -0
  295. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/scaffold_defaults/mcp.json +0 -0
  296. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/scaffold_defaults/monkeybot.example.yaml +0 -0
  297. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/scaffold_defaults/opensandbox.docker.toml +0 -0
  298. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/scaffold_defaults/otel-collector.example.yaml +0 -0
  299. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/scaffold_defaults/permissions.yaml +0 -0
  300. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/scaffold_defaults/templates/coding/AGENT.md +0 -0
  301. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/scaffold_defaults/templates/coding/command_allowlist.yaml +0 -0
  302. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/scaffold_defaults/templates/coding/monkeybot.overrides.yaml +0 -0
  303. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/scaffold_defaults/templates/coding/permissions.yaml +0 -0
  304. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/session_controller.py +0 -0
  305. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/src/monkeybot_cli/terminal_markdown.py +0 -0
  306. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/tests/test_chat_continue.py +0 -0
  307. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/tests/test_chat_e2e.py +0 -0
  308. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/tests/test_chat_errors.py +0 -0
  309. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/tests/test_chat_file_index.py +0 -0
  310. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/tests/test_chat_grounding.py +0 -0
  311. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/tests/test_chat_local_shell.py +0 -0
  312. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/tests/test_chat_renderer_parity.py +0 -0
  313. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/tests/test_chat_status_bar.py +0 -0
  314. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/tests/test_chat_theme.py +0 -0
  315. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/tests/test_chat_tool_display.py +0 -0
  316. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/tests/test_chat_tui.py +0 -0
  317. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/tests/test_cli.py +0 -0
  318. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/tests/test_config_resolve.py +0 -0
  319. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/tests/test_extras_catalog.py +0 -0
  320. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/tests/test_gateway_health.py +0 -0
  321. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/tests/test_opensandbox_lifecycle.py +0 -0
  322. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/tests/test_realtime_session_controller.py +0 -0
  323. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/tests/test_run_cmd.py +0 -0
  324. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/tests/test_runtime_python.py +0 -0
  325. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/tests/test_scaffold.py +0 -0
  326. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/tests/test_terminal_markdown.py +0 -0
  327. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/tests/test_trace_cmd.py +0 -0
  328. {monkeybot-3.12.0 → monkeybot-3.14.0}/cli/uv.lock +0 -0
  329. {monkeybot-3.12.0 → monkeybot-3.14.0}/conftest.py +0 -0
  330. {monkeybot-3.12.0 → monkeybot-3.14.0}/docker/Dockerfile +0 -0
  331. {monkeybot-3.12.0 → monkeybot-3.14.0}/docker/demo-model.yaml +0 -0
  332. {monkeybot-3.12.0 → monkeybot-3.14.0}/docker/demo.yaml +0 -0
  333. {monkeybot-3.12.0 → monkeybot-3.14.0}/docker/docker-compose.sandbox.yml +0 -0
  334. {monkeybot-3.12.0 → monkeybot-3.14.0}/docker/opensandbox.docker.toml +0 -0
  335. {monkeybot-3.12.0 → monkeybot-3.14.0}/docker/sandbox.Dockerfile +0 -0
  336. {monkeybot-3.12.0 → monkeybot-3.14.0}/docker-compose.yml +0 -0
  337. {monkeybot-3.12.0 → monkeybot-3.14.0}/docs/agent-layout.md +0 -0
  338. {monkeybot-3.12.0 → monkeybot-3.14.0}/docs/assets/logo.png +0 -0
  339. {monkeybot-3.12.0 → monkeybot-3.14.0}/docs/browser-mcp-perf-baseline.md +0 -0
  340. {monkeybot-3.12.0 → monkeybot-3.14.0}/docs/browser-mcp-performance-plan.md +0 -0
  341. {monkeybot-3.12.0 → monkeybot-3.14.0}/docs/browser-mcp.md +0 -0
  342. {monkeybot-3.12.0 → monkeybot-3.14.0}/docs/deploy-aws-agentcore.md +0 -0
  343. {monkeybot-3.12.0 → monkeybot-3.14.0}/docs/deploy-pattern-a-container.md +0 -0
  344. {monkeybot-3.12.0 → monkeybot-3.14.0}/docs/deploy-pattern-b-serverless.md +0 -0
  345. {monkeybot-3.12.0 → monkeybot-3.14.0}/docs/deploy-pattern-c-agent-platform.md +0 -0
  346. {monkeybot-3.12.0 → monkeybot-3.14.0}/docs/live-evals.md +0 -0
  347. {monkeybot-3.12.0 → monkeybot-3.14.0}/docs/mcp.md +0 -0
  348. {monkeybot-3.12.0 → monkeybot-3.14.0}/docs/migrations/agent-scope-namespacing.md +0 -0
  349. {monkeybot-3.12.0 → monkeybot-3.14.0}/docs/migrations/history-row-id.sql +0 -0
  350. {monkeybot-3.12.0 → monkeybot-3.14.0}/docs/migrations/memory-outbox.sql +0 -0
  351. {monkeybot-3.12.0 → monkeybot-3.14.0}/docs/migrations/session-branches.sql +0 -0
  352. {monkeybot-3.12.0 → monkeybot-3.14.0}/docs/ollama-local.md +0 -0
  353. {monkeybot-3.12.0 → monkeybot-3.14.0}/docs/otel-collector.example.yaml +0 -0
  354. {monkeybot-3.12.0 → monkeybot-3.14.0}/docs/progressive-loop-tools.md +0 -0
  355. {monkeybot-3.12.0 → monkeybot-3.14.0}/docs/progressive-mcp-tools.md +0 -0
  356. {monkeybot-3.12.0 → monkeybot-3.14.0}/docs/skills.md +0 -0
  357. {monkeybot-3.12.0 → monkeybot-3.14.0}/docs/spill-dynamic-design.md +0 -0
  358. {monkeybot-3.12.0 → monkeybot-3.14.0}/docs/sse-gateway-ui.md +0 -0
  359. {monkeybot-3.12.0 → monkeybot-3.14.0}/docs/verifier-agent-design.md +0 -0
  360. {monkeybot-3.12.0 → monkeybot-3.14.0}/examples/README.md +0 -0
  361. {monkeybot-3.12.0 → monkeybot-3.14.0}/examples/agentcore/handler.py +0 -0
  362. {monkeybot-3.12.0 → monkeybot-3.14.0}/examples/agentcore/runtime_app.py +0 -0
  363. {monkeybot-3.12.0 → monkeybot-3.14.0}/examples/agentengine/handler.py +0 -0
  364. {monkeybot-3.12.0 → monkeybot-3.14.0}/examples/cloud-functions/main.py +0 -0
  365. {monkeybot-3.12.0 → monkeybot-3.14.0}/examples/lambda/handler.py +0 -0
  366. {monkeybot-3.12.0 → monkeybot-3.14.0}/examples/ollama/PrefixStable.Modelfile +0 -0
  367. {monkeybot-3.12.0 → monkeybot-3.14.0}/examples/skills/browser/SKILL.md +0 -0
  368. {monkeybot-3.12.0 → monkeybot-3.14.0}/examples/skills/browser/playbooks/.gitkeep +0 -0
  369. {monkeybot-3.12.0 → monkeybot-3.14.0}/examples/skills/diagnostics/README.md +0 -0
  370. {monkeybot-3.12.0 → monkeybot-3.14.0}/examples/skills/diagnostics/SKILL.md +0 -0
  371. {monkeybot-3.12.0 → monkeybot-3.14.0}/examples/skills/diagnostics/__init__.py +0 -0
  372. {monkeybot-3.12.0 → monkeybot-3.14.0}/examples/skills/diagnostics/diagnostics.py +0 -0
  373. {monkeybot-3.12.0 → monkeybot-3.14.0}/examples/skills/image-generator/generate_image.py +0 -0
  374. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/pyproject.toml +0 -0
  375. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/scripts/agentcore_smoke.py +0 -0
  376. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/scripts/dump_tool_surface.py +0 -0
  377. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/scripts/perf_bench.py +0 -0
  378. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/__init__.py +0 -0
  379. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/actions.py +0 -0
  380. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/agentcore.py +0 -0
  381. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/app.py +0 -0
  382. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/assets/NOTICE.md +0 -0
  383. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/assets/dom_tree.js +0 -0
  384. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/assets/pa_driver.js +0 -0
  385. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/backend.py +0 -0
  386. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/chat_context.py +0 -0
  387. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/chat_scope.py +0 -0
  388. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/dom_indexing.py +0 -0
  389. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/in_app_cdp.py +0 -0
  390. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/login.py +0 -0
  391. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/observe.py +0 -0
  392. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/perf.py +0 -0
  393. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/playbooks.py +0 -0
  394. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/playwright_helpers.py +0 -0
  395. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/results.py +0 -0
  396. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/screenshots.py +0 -0
  397. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/server.py +0 -0
  398. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/tab_ops.py +0 -0
  399. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/tabs.py +0 -0
  400. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/tools/__init__.py +0 -0
  401. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/tools/batch.py +0 -0
  402. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/tools/capture.py +0 -0
  403. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/tools/interact.py +0 -0
  404. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/tools/navigate.py +0 -0
  405. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/tools/playbook.py +0 -0
  406. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/tools/read.py +0 -0
  407. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/src/browser_mcp/tools/tab_control.py +0 -0
  408. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/conftest.py +0 -0
  409. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/fixtures/api.json +0 -0
  410. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/fixtures/article.html +0 -0
  411. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/fixtures/cards.html +0 -0
  412. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/fixtures/form.html +0 -0
  413. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/fixtures/long_list.html +0 -0
  414. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/fixtures/spa.html +0 -0
  415. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/fixtures/tool_surface.json +0 -0
  416. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/integration/conftest.py +0 -0
  417. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/integration/test_act_observe.py +0 -0
  418. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/integration/test_driver_persist.py +0 -0
  419. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/integration/test_intent_tools.py +0 -0
  420. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/integration/test_multi_tab.py +0 -0
  421. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/integration/test_observation.py +0 -0
  422. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/integration/test_run_playbook.py +0 -0
  423. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/integration/test_wait_for.py +0 -0
  424. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/test_act.py +0 -0
  425. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/test_agentcore.py +0 -0
  426. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/test_chat_isolation.py +0 -0
  427. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/test_chat_scope.py +0 -0
  428. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/test_dom_indexing.py +0 -0
  429. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/test_fill_form.py +0 -0
  430. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/test_in_app_cdp.py +0 -0
  431. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/test_indexed_tools.py +0 -0
  432. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/test_observe.py +0 -0
  433. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/test_observe_after.py +0 -0
  434. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/test_perf.py +0 -0
  435. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/test_playbook_flows.py +0 -0
  436. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/test_playbooks.py +0 -0
  437. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/test_playwright_helpers.py +0 -0
  438. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/test_screenshots.py +0 -0
  439. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/test_server_shutdown.py +0 -0
  440. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/test_tabs.py +0 -0
  441. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/test_tool_surface.py +0 -0
  442. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/tests/test_wait_tools.py +0 -0
  443. {monkeybot-3.12.0 → monkeybot-3.14.0}/integrations/browser-mcp/uv.lock +0 -0
  444. {monkeybot-3.12.0 → monkeybot-3.14.0}/pytest.ini +0 -0
  445. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/__init__.py +0 -0
  446. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/conftest.py +0 -0
  447. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/drivers/__init__.py +0 -0
  448. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/drivers/bundles/__init__.py +0 -0
  449. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/drivers/bundles/git.py +0 -0
  450. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/drivers/bundles/hooks.py +0 -0
  451. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/drivers/bundles/host_tools.py +0 -0
  452. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/drivers/bundles/memory.py +0 -0
  453. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/drivers/bundles/policy.py +0 -0
  454. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/drivers/bundles/prompt_context.py +0 -0
  455. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/drivers/bundles/store.py +0 -0
  456. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/drivers/bundles/subagents.py +0 -0
  457. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/drivers/bundles/verifier.py +0 -0
  458. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/drivers/bundles/workspace.py +0 -0
  459. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/drivers/gateway.py +0 -0
  460. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/drivers/realtime.py +0 -0
  461. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/drivers/record.py +0 -0
  462. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/drivers/replay.py +0 -0
  463. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/drivers/support/__init__.py +0 -0
  464. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/drivers/support/config.py +0 -0
  465. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/drivers/support/env.py +0 -0
  466. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/drivers/support/executor.py +0 -0
  467. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/drivers/support/paths.py +0 -0
  468. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/drivers/support/tokens.py +0 -0
  469. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/__init__.py +0 -0
  470. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/build.py +0 -0
  471. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/configs/agent.base.yaml +0 -0
  472. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/configs/command_allowlist.default.yaml +0 -0
  473. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/configs/command_allowlist.empty.yaml +0 -0
  474. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/configs/command_allowlist.no_deny_patterns.yaml +0 -0
  475. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/configs/command_allowlist.strict.yaml +0 -0
  476. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/configs/grants.corrupt.json +0 -0
  477. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/configs/grants.json +0 -0
  478. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/configs/mcp.autoconnect.json +0 -0
  479. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/configs/mcp.broken.json +0 -0
  480. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/configs/mcp.progressive.json +0 -0
  481. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/configs/mcp.two_prefix.json +0 -0
  482. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/configs/permissions.ask.yaml +0 -0
  483. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/configs/permissions.default.yaml +0 -0
  484. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/configs/permissions.overlap.yaml +0 -0
  485. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/configs/verifier.block.yaml +0 -0
  486. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/configs/verifier.judge.yaml +0 -0
  487. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/configs/verifier.replan.yaml +0 -0
  488. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/configs/verifier.tracker.yaml +0 -0
  489. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/configs/{workspace}/child.db +0 -0
  490. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/conftest.py +0 -0
  491. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/mcp/fixture_mcp_server.py +0 -0
  492. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/scripts/one_turn.yaml +0 -0
  493. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/skills/a/nested/SKILL.md +0 -0
  494. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/skills/diagnostics/SKILL.md +0 -0
  495. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/skills/plain/SKILL.md +0 -0
  496. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/subagent_tapes/.gitkeep +0 -0
  497. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/subagent_tapes/absent_file.ndjson +0 -0
  498. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/subagent_tapes/child_error.ndjson +0 -0
  499. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/subagent_tapes/echo.ndjson +0 -0
  500. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/subagent_tapes/hold.ndjson +0 -0
  501. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/subagent_tapes/large_line.ndjson +0 -0
  502. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/subagent_tapes/nested_task.ndjson +0 -0
  503. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/subagent_tapes/present_file.ndjson +0 -0
  504. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/subagent_tapes/roundtrip.ndjson +0 -0
  505. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/subagent_tapes/system_prompt.ndjson +0 -0
  506. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/att_secret.txt +0 -0
  507. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/att_ws/.monkeybot/attachments/loop-scenario/att-link +0 -0
  508. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/att_ws/.monkeybot/attachments/loop-scenario/att-link.json +0 -0
  509. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/att_ws/.monkeybot/attachments/loop-scenario/att-pdf +0 -0
  510. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/att_ws/.monkeybot/attachments/loop-scenario/att-pdf.json +0 -0
  511. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/att_ws/i1.png +0 -0
  512. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/att_ws/i2.png +0 -0
  513. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/att_ws/i3.png +0 -0
  514. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/att_ws/i4.png +0 -0
  515. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/att_ws/i5.png +0 -0
  516. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/att_ws/i6.png +0 -0
  517. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/att_ws/tiny.png +0 -0
  518. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/calc_repo/.gitignore +0 -0
  519. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/calc_repo/AGENTS.md +0 -0
  520. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/calc_repo/build/calc/ops.py +0 -0
  521. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/calc_repo/calc/__init__.py +0 -0
  522. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/calc_repo/calc/ops.py +0 -0
  523. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/calc_repo/node_modules/left-pad/index.js +0 -0
  524. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/calc_repo/node_modules/left-pad/package.json +0 -0
  525. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/calc_repo/pyproject.toml +0 -0
  526. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/calc_repo/tests/test_ops.py +0 -0
  527. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/calc_repo_green/.gitignore +0 -0
  528. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/calc_repo_green/AGENTS.md +0 -0
  529. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/calc_repo_green/build/calc/ops.py +0 -0
  530. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/calc_repo_green/calc/__init__.py +0 -0
  531. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/calc_repo_green/calc/ops.py +0 -0
  532. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/calc_repo_green/node_modules/left-pad/index.js +0 -0
  533. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/calc_repo_green/node_modules/left-pad/package.json +0 -0
  534. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/calc_repo_green/pyproject.toml +0 -0
  535. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/calc_repo_green/tests/test_ops.py +0 -0
  536. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/drift_ws/DONE.txt +0 -0
  537. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/drift_ws/db/migrations/001_init.sql +0 -0
  538. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/drift_ws/src/models.py +0 -0
  539. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/grants_ws/granted/.env +0 -0
  540. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/grants_ws/granted/notes.md +0 -0
  541. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/grants_ws/workspace/src/app.txt +0 -0
  542. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/hostile_ws/.gitignore +0 -0
  543. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/hostile_ws/AGENTS.md +0 -0
  544. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/hostile_ws/node_modules/left.js +0 -0
  545. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/hostile_ws/notes.txt +0 -0
  546. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/hostile_ws/pkg/.gitignore +0 -0
  547. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/hostile_ws/pkg/hidden.txt +0 -0
  548. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/hostile_ws/pkg/visible.txt +0 -0
  549. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/hostile_ws/secret.txt +0 -0
  550. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/hostile_ws/src/app.py +0 -0
  551. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/hostile_ws/wide.txt +0 -0
  552. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/overlays/bug_discount/shop/pricing.py +0 -0
  553. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/overlays/noisy_tests/shop/taxes.py +0 -0
  554. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/overlays/noisy_tests/tests/conftest.py +0 -0
  555. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/overlays/offline_gateway/tests/test_gateway.py +0 -0
  556. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/.gitignore +0 -0
  557. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/AGENTS.md +0 -0
  558. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/CHANGELOG.md +0 -0
  559. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/README.md +0 -0
  560. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/build/shop/shipping.py +0 -0
  561. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/pyproject.toml +0 -0
  562. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/shop/__init__.py +0 -0
  563. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/shop/cart.py +0 -0
  564. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/shop/coupons.py +0 -0
  565. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/shop/gateway.py +0 -0
  566. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/shop/inventory.py +0 -0
  567. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/shop/legacy/__init__.py +0 -0
  568. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/shop/legacy/pricing_v1.py +0 -0
  569. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/shop/legacy/shipping_v1.py +0 -0
  570. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/shop/models.py +0 -0
  571. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/shop/orders.py +0 -0
  572. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/shop/pricing.py +0 -0
  573. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/shop/reports.py +0 -0
  574. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/shop/shipping.py +0 -0
  575. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/shop/taxes.py +0 -0
  576. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/shop/utils/__init__.py +0 -0
  577. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/shop/utils/money.py +0 -0
  578. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/shop/utils/text.py +0 -0
  579. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/tests/test_cart.py +0 -0
  580. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/tests/test_coupons.py +0 -0
  581. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/tests/test_inventory.py +0 -0
  582. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/tests/test_money.py +0 -0
  583. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/tests/test_orders.py +0 -0
  584. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/tests/test_pricing.py +0 -0
  585. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/tests/test_reports.py +0 -0
  586. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/tests/test_shipping.py +0 -0
  587. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/tests/test_taxes.py +0 -0
  588. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/fixtures/workspaces/shop_repo/vendor/pricekit/__init__.py +0 -0
  589. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/AGENT_GUIDE.md +0 -0
  590. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/README.md +0 -0
  591. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/phases/phase-0a-tier1-reorg.md +0 -0
  592. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/phases/phase-0b-foundations.md +0 -0
  593. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/phases/phase-1-t2-harness-logic.md +0 -0
  594. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/phases/phase-2-contracts-and-gateway.md +0 -0
  595. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/phases/phase-3-record-replay.md +0 -0
  596. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/phases/phase-4-live.md +0 -0
  597. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/phases/phase-5-trials.md +0 -0
  598. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/phases/phase-6-cutover.md +0 -0
  599. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/01-goals-and-principles.md +0 -0
  600. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/03-tiers.md +0 -0
  601. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/04-file-structure.md +0 -0
  602. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/05.1-doubles.md +0 -0
  603. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/05.10-testing-doc.md +0 -0
  604. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/05.11-live-provider.md +0 -0
  605. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/05.2-scenario-schema.md +0 -0
  606. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/05.3-assertions-and-invariants.md +0 -0
  607. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/05.4-fixtures.md +0 -0
  608. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/05.5-cassettes.md +0 -0
  609. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/05.6-pytest-reporting-trials.md +0 -0
  610. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/05.9-failure-ledger.md +0 -0
  611. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/06-coverage/00-index.md +0 -0
  612. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/06-coverage/6A-loop.md +0 -0
  613. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/06-coverage/6B-ctx.md +0 -0
  614. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/06-coverage/6C-hook.md +0 -0
  615. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/06-coverage/6D-file.md +0 -0
  616. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/06-coverage/6E-shell.md +0 -0
  617. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/06-coverage/6F-pol.md +0 -0
  618. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/06-coverage/6G-code.md +0 -0
  619. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/06-coverage/6H-att.md +0 -0
  620. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/06-coverage/6I-comp.md +0 -0
  621. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/06-coverage/6J-sub.md +0 -0
  622. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/06-coverage/6K-ver.md +0 -0
  623. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/06-coverage/6L-sched.md +0 -0
  624. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/06-coverage/6M-skill.md +0 -0
  625. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/06-coverage/6N-mcp.md +0 -0
  626. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/06-coverage/6O-web.md +0 -0
  627. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/06-coverage/6P-mem.md +0 -0
  628. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/06-coverage/6Q-store.md +0 -0
  629. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/06-coverage/6R-cfg.md +0 -0
  630. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/06-coverage/6S-todo.md +0 -0
  631. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/06-coverage/6T-prov.md +0 -0
  632. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/06-coverage/6U-gw.md +0 -0
  633. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/06-coverage/6V-rt.md +0 -0
  634. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/07-migration-map.md +0 -0
  635. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/09-ci.md +0 -0
  636. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/10-policies.md +0 -0
  637. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/11-known-issues.md +0 -0
  638. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/reference/12-decisions.md +0 -0
  639. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/status.md +0 -0
  640. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plan/tasks.md +0 -0
  641. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/plugin.py +0 -0
  642. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/schema/__init__.py +0 -0
  643. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/schema/events.py +0 -0
  644. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/schema/invariants.py +0 -0
  645. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/schema/scenario.py +0 -0
  646. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/schema/sse_norm.py +0 -0
  647. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/schema/steps.py +0 -0
  648. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/selftest/__init__.py +0 -0
  649. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/selftest/recorded/t4_run_smoke_sample.json +0 -0
  650. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/selftest/test_agent_project.py +0 -0
  651. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/selftest/test_assertions.py +0 -0
  652. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/selftest/test_bundle_order.py +0 -0
  653. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/selftest/test_coding_hard_oracle.py +0 -0
  654. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/selftest/test_diff.py +0 -0
  655. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/selftest/test_fixtures.py +0 -0
  656. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/selftest/test_from_transcript.py +0 -0
  657. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/selftest/test_gateway_driver.py +0 -0
  658. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/selftest/test_invariants.py +0 -0
  659. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/selftest/test_judge.py +0 -0
  660. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/selftest/test_live_engine.py +0 -0
  661. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/selftest/test_live_ledger.py +0 -0
  662. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/selftest/test_live_scenarios.py +0 -0
  663. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/selftest/test_preflight.py +0 -0
  664. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/selftest/test_report.py +0 -0
  665. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/selftest/test_runner_sse.py +0 -0
  666. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/selftest/test_scenario_schema.py +0 -0
  667. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/selftest/test_scorer.py +0 -0
  668. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/selftest/test_steps.py +0 -0
  669. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/selftest/test_trials_stats.py +0 -0
  670. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/__init__.py +0 -0
  671. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/gateway/harness.py +0 -0
  672. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/gateway/scenarios/gw/reconnect_last_event_id.yaml +0 -0
  673. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/gateway/scenarios/gw/scripted_turn_golden_sse.yaml +0 -0
  674. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/gateway/scenarios/gw/tool_turn_golden_sse.yaml +0 -0
  675. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/attachments/attachment_symlink_leaf_rejected.yaml +0 -0
  676. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/attachments/freeze_descriptors_in_history.yaml +0 -0
  677. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/attachments/load_both_args.yaml +0 -0
  678. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/attachments/load_image_preview.yaml +0 -0
  679. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/attachments/load_pdf.yaml +0 -0
  680. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/attachments/load_per_reply_cap.yaml +0 -0
  681. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/attachments/load_text_rejected.yaml +0 -0
  682. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/coding/compaction_forgets_reads.yaml +0 -0
  683. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/coding/fix_failing_test.yaml +0 -0
  684. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/coding/gate_background_verify_not_counted.yaml +0 -0
  685. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/coding/gate_cap_then_accept.yaml +0 -0
  686. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/coding/gate_custom_verify_commands.yaml +0 -0
  687. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/coding/gate_masked_exit.yaml +0 -0
  688. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/coding/gate_non_executing_wrapper.yaml +0 -0
  689. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/coding/gate_open_todos_reject.yaml +0 -0
  690. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/coding/gate_passes_when_verified.yaml +0 -0
  691. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/coding/gate_question_not_gated.yaml +0 -0
  692. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/coding/gate_rejected_answer_not_persisted.yaml +0 -0
  693. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/coding/gate_rejects_unverified.yaml +0 -0
  694. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/coding/gate_write_after_verify.yaml +0 -0
  695. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/coding/git_context_absent.yaml +0 -0
  696. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/coding/git_context_note.yaml +0 -0
  697. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/coding/git_env_isolation.yaml +0 -0
  698. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/coding/read_before_write.yaml +0 -0
  699. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/coding/subagent_has_ledger_no_gate.yaml +0 -0
  700. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/coding/subagent_ledger_child.yml +0 -0
  701. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/computer/clipboard_cap.yaml +0 -0
  702. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/computer/denied_apps_and_schemes.yaml +0 -0
  703. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/computer/denied_dirs_and_globs.yaml +0 -0
  704. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/computer/move_trash_not_always_scoped.yaml +0 -0
  705. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/computer/open_exec_suffix_denied.yaml +0 -0
  706. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/computer/trash_huge_tree_refused.yaml +0 -0
  707. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/computer/x.sh +0 -0
  708. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/ctx/background_summary_applied.yaml +0 -0
  709. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/ctx/background_summary_stale_fallback.yaml +0 -0
  710. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/ctx/base64_sanitized.yaml +0 -0
  711. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/ctx/compact_at_trigger.yaml +0 -0
  712. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/ctx/compact_does_not_persist_repairs.yaml +0 -0
  713. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/ctx/compact_fallback.yaml +0 -0
  714. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/ctx/compact_keep_tail_ratio.yaml +0 -0
  715. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/ctx/compact_pins_verdict_attachment_thinking.yaml +0 -0
  716. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/ctx/compact_trailer_from_goal_ledger.yaml +0 -0
  717. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/ctx/context_usage_current_not_peak.yaml +0 -0
  718. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/ctx/epoch_after_compaction.yaml +0 -0
  719. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/ctx/epoch_stable_change.yaml +0 -0
  720. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/ctx/epoch_volatile_update.yaml +0 -0
  721. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/ctx/memory_wake_up_large.yaml +0 -0
  722. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/ctx/project_instructions_spoof_heading.yaml +0 -0
  723. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/ctx/slash_skill_turn_scoped.yaml +0 -0
  724. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/ctx/stable_prefix_byte_stable.yaml +0 -0
  725. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/ctx/summarizer_model_override.yaml +0 -0
  726. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/ctx/tool_result_shaping_under_pressure.yaml +0 -0
  727. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/glob_cap_incomplete.yaml +0 -0
  728. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/glob_skips_noise.yaml +0 -0
  729. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/grep_gitignore_default.yaml +0 -0
  730. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/grep_incomplete_scan.yaml +0 -0
  731. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/grep_invalid_regex.yaml +0 -0
  732. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/grep_pagination.yaml +0 -0
  733. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/list_dir_truncate.yaml +0 -0
  734. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/overwrite_unread_rejected.yaml +0 -0
  735. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/patch_add_existing.yaml +0 -0
  736. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/patch_fail_closed.yaml +0 -0
  737. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/patch_move_dest_exists.yaml +0 -0
  738. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/patch_rollback.yaml +0 -0
  739. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/patch_update_requires_read.yaml +0 -0
  740. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/read_absolute_needs_grant.yaml +0 -0
  741. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/read_escape_dotdot.yaml +0 -0
  742. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/read_escape_symlink.yaml +0 -0
  743. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/read_huge_single_line.yaml +0 -0
  744. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/read_offset_past_eof.yaml +0 -0
  745. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/read_paging_no_gap.yaml +0 -0
  746. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/replace_error_codes.yaml +0 -0
  747. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/replace_fuzzy_unicode.yaml +0 -0
  748. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/skills_read_only.yaml +0 -0
  749. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/spill_large_tool_output.yaml +0 -0
  750. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/spill_session_id_sanitized.yaml +0 -0
  751. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/stale_read_rejected.yaml +0 -0
  752. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/tool_glob_grep.yaml +0 -0
  753. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/tool_read.yaml +0 -0
  754. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/tool_replace_apply_patch.yaml +0 -0
  755. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/tool_write.yaml +0 -0
  756. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/virtual_mounts.yaml +0 -0
  757. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/write_new_without_read_ok.yaml +0 -0
  758. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/write_outside_scope.yaml +0 -0
  759. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/file/write_payload_too_large.yaml +0 -0
  760. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/hook/evidence_grep_only_not_accepted.yaml +0 -0
  761. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/hook/evidence_missing_path.yaml +0 -0
  762. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/hook/evidence_thread_isolation.yaml +0 -0
  763. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/hook/evidence_unread_then_read.yaml +0 -0
  764. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/hook/secret_ends_routine_turn.yaml +0 -0
  765. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/hook/secret_in_tool_args.yaml +0 -0
  766. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/hook/secret_redacted_interactive.yaml +0 -0
  767. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/hook/secret_scanner_failure_fails_closed.yaml +0 -0
  768. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/all_parse_error_batch_rejected.yaml +0 -0
  769. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/ask_user_non_interactive.yaml +0 -0
  770. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/ask_user_roundtrip.yaml +0 -0
  771. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/background_check_raises_fails_closed.yaml +0 -0
  772. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/background_nudge_then_release.yaml +0 -0
  773. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/background_nudges_exhausted.yaml +0 -0
  774. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/cancel_after_tool_call_before_execute.yaml +0 -0
  775. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/cancel_mid_stream.yaml +0 -0
  776. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/confirm_always_remembered.yaml +0 -0
  777. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/confirm_approve.yaml +0 -0
  778. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/confirm_deny.yaml +0 -0
  779. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/confirm_timeout.yaml +0 -0
  780. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/doom_disabled.yaml +0 -0
  781. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/doom_exempt_poll.yaml +0 -0
  782. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/doom_identical_read.yaml +0 -0
  783. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/doom_path_reset_on_success.yaml +0 -0
  784. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/doom_path_retry_spelling.yaml +0 -0
  785. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/empty_exhausted.yaml +0 -0
  786. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/empty_then_text.yaml +0 -0
  787. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/grounding_event_passthrough.yaml +0 -0
  788. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/max_turns_cap.yaml +0 -0
  789. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/max_turns_not_on_clean_finish.yaml +0 -0
  790. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/mixed_parse_error_batch_runs_valid.yaml +0 -0
  791. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/parallel_concurrency_cap.yaml +0 -0
  792. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/parallel_results_in_submission_order.yaml +0 -0
  793. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/post_tool_empty_retry.yaml +0 -0
  794. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/promote_follow_up_provenance.yaml +0 -0
  795. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/provider_raises.yaml +0 -0
  796. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/registry_refresh_same_turn.yaml +0 -0
  797. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/repair_missing_tool_result.yaml +0 -0
  798. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/repair_orphan_tool_response.yaml +0 -0
  799. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/resume_thinking_budget_routine.yaml +0 -0
  800. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/steer_mid_turn.yaml +0 -0
  801. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/thinking_block_order.yaml +0 -0
  802. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/thinking_only_is_empty.yaml +0 -0
  803. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/thought_signature_preserved.yaml +0 -0
  804. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/tool_input_delta_passthrough.yaml +0 -0
  805. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/truncated_batch_rejected.yaml +0 -0
  806. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/turn_completion.yaml +0 -0
  807. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/loop/usage_totals.yaml +0 -0
  808. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/mcp/autoconnect_failure_is_status.yaml +0 -0
  809. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/mcp/catalog_diff_reload.yaml +0 -0
  810. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/mcp/disable_removes_tools.yaml +0 -0
  811. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/mcp/disabled_server_not_catalogued.yaml +0 -0
  812. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/mcp/enable_then_call.yaml +0 -0
  813. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/mcp/enable_unknown_server.yaml +0 -0
  814. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/mcp/env_interpolation_missing.yaml +0 -0
  815. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/mcp/meta_tools_only_when_connected.yaml +0 -0
  816. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/mcp/name_prefix_split.yaml +0 -0
  817. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/mcp/resources_and_prompts.yaml +0 -0
  818. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/mcp/strict_load_rolls_back.yaml +0 -0
  819. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/memory/ephemeral_palace_shared_outbox_rejected.yaml +0 -0
  820. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/memory/memory_off.yaml +0 -0
  821. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/memory/memory_write_inject.yaml +0 -0
  822. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/memory/mempalace_search_real.yaml +0 -0
  823. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/memory/outbox_failure_does_not_fail_turn.yaml +0 -0
  824. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/memory/outbox_ingest_then_inject.yaml +0 -0
  825. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/memory/outbox_thread_isolation.yaml +0 -0
  826. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/memory/subagent_no_ingest.yaml +0 -0
  827. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/policy/command_grant_from_store.yaml +0 -0
  828. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/policy/default_deny_patterns.yaml +0 -0
  829. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/policy/grant_revocation_clears.yaml +0 -0
  830. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/policy/granted_folder_credential_denied.yaml +0 -0
  831. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/policy/path_grant_read.yaml +0 -0
  832. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/policy/permissions_last_match_wins.yaml +0 -0
  833. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/policy/permissions_missing_file_fail_open.yaml +0 -0
  834. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/policy/start_loop_always_confirms.yaml +0 -0
  835. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/policy/symlink_in_grant_does_not_widen.yaml +0 -0
  836. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/policy/unknown_binary_confirm_approve.yaml +0 -0
  837. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/policy/unknown_binary_confirm_deny.yaml +0 -0
  838. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/scheduler/create_goal_requires_slash_goal.yaml +0 -0
  839. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/scheduler/create_goal_with_slash_goal.yaml +0 -0
  840. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/scheduler/enable_loops_progressive.yaml +0 -0
  841. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/scheduler/loop_goal_isolation.yaml +0 -0
  842. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/scheduler/loop_lifecycle_real_store.yaml +0 -0
  843. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/scheduler/one_open_goal_per_session.yaml +0 -0
  844. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/scheduler/start_loop_requires_stop_guard.yaml +0 -0
  845. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/scheduler/tool_loops.yaml +0 -0
  846. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/shell/allowlist_deny.yaml +0 -0
  847. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/shell/argv_forms.yaml +0 -0
  848. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/shell/bg_job_cap.yaml +0 -0
  849. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/shell/bg_kill_command.yaml +0 -0
  850. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/shell/bg_killed_at_turn_end.yaml +0 -0
  851. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/shell/bg_start_await_cursor.yaml +0 -0
  852. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/shell/cwd_escape.yaml +0 -0
  853. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/shell/home_escape.yaml +0 -0
  854. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/shell/large_stdout_spill_keeps_exit.yaml +0 -0
  855. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/shell/mempalace_refused_memory_off.yaml +0 -0
  856. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/shell/mempalace_search_only.yaml +0 -0
  857. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/shell/nonzero_exit.yaml +0 -0
  858. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/shell/run_command.yaml +0 -0
  859. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/shell/shell_wrapper_bypass.yaml +0 -0
  860. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/shell/timeout_partial_output.yaml +0 -0
  861. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/shell/unscreenable_script_fails_closed.yaml +0 -0
  862. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/skills/list_then_read_skill.yaml +0 -0
  863. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/skills/skill_symlink_escape.yaml +0 -0
  864. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/skills/skill_write_denied.yaml +0 -0
  865. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/skills/skills_in_prompt.yaml +0 -0
  866. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/skills/skills_path_hot_reload.yaml +0 -0
  867. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/skills/slash_unknown_skill.yaml +0 -0
  868. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/store/compaction_reset_row_ids.yaml +0 -0
  869. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/store/transcript_convertible.yaml +0 -0
  870. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/store/usage_recorded_on_turn_complete.yaml +0 -0
  871. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/subagents/child_errors_record_failed.yaml +0 -0
  872. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/subagents/child_memory_read_only.yaml +0 -0
  873. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/subagents/expect_files_absent.yaml +0 -0
  874. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/subagents/expect_files_escape.yaml +0 -0
  875. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/subagents/expect_files_present.yaml +0 -0
  876. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/subagents/large_ndjson_line.yaml +0 -0
  877. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/subagents/ledger_context_forwarded.yaml +0 -0
  878. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/subagents/nested_task_refused.yaml +0 -0
  879. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/subagents/parallel_task_cap.yaml +0 -0
  880. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/subagents/parent_cancel.yaml +0 -0
  881. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/subagents/persona_applied.yaml +0 -0
  882. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/subagents/subagent_roundtrip.yaml +0 -0
  883. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/subagents/subagent_timeout.yaml +0 -0
  884. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/subagents/system_prompt_redacted_on_pipe.yaml +0 -0
  885. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/subagents/unknown_subagent_type.yaml +0 -0
  886. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/todo/caps.yaml +0 -0
  887. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/todo/ids_stable.yaml +0 -0
  888. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/todo/mirror_hydrate.yaml +0 -0
  889. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/todo/reminder_once.yaml +0 -0
  890. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/todo/single_in_progress.yaml +0 -0
  891. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/todo/todo_list.yaml +0 -0
  892. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/todo/todo_list_steps.yaml +0 -0
  893. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/verifier/block_denies_mutating_tools.yaml +0 -0
  894. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/verifier/constraint_touch_negative.yaml +0 -0
  895. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/verifier/constraint_touch_positive.yaml +0 -0
  896. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/verifier/done_unmet_positive.yaml +0 -0
  897. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/verifier/error_streak_negative.yaml +0 -0
  898. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/verifier/error_streak_positive.yaml +0 -0
  899. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/verifier/free_text_constraint_never_matches.yaml +0 -0
  900. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/verifier/judge_malformed_fails_open.yaml +0 -0
  901. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/verifier/judge_rate_limits.yaml +0 -0
  902. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/verifier/judge_replay_valid.yaml +0 -0
  903. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/verifier/judge_spend_ratio.yaml +0 -0
  904. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/verifier/mailbox_stale_checkpoint_dropped.yaml +0 -0
  905. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/verifier/min_turn_before_verdict.yaml +0 -0
  906. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/verifier/no_progress_budget_burn_not_mailboxed.yaml +0 -0
  907. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/verifier/preempt_negative.yaml +0 -0
  908. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/verifier/repeat_correction_positive.yaml +0 -0
  909. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/verifier/replan_one_turn.yaml +0 -0
  910. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/verifier/rewrite_churn_positive.yaml +0 -0
  911. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/verifier/rewrite_effects_branch_copy.yaml +0 -0
  912. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/verifier/severity_cap_nudge.yaml +0 -0
  913. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/verifier/sticky_nudge.yaml +0 -0
  914. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/verifier/supersession_negative.yaml +0 -0
  915. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/verifier/verdict_in_history_stripped_for_provider.yaml +0 -0
  916. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/verifier/verifier_off_no_effect.yaml +0 -0
  917. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/verifier/write_without_read_negative.yaml +0 -0
  918. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/verifier/write_without_read_positive.yaml +0 -0
  919. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/web/backend_none_not_advertised.yaml +0 -0
  920. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/web/browser_mcp.json +0 -0
  921. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/web/browser_stop_on_disconnect.yaml +0 -0
  922. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/web/browser_stop_server.py +0 -0
  923. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/web/empty_query.yaml +0 -0
  924. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/web/max_results.yaml +0 -0
  925. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/loop/scenarios/web/web_search.yaml +0 -0
  926. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/python/__init__.py +0 -0
  927. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/python/test_drift_confusion_matrix.py +0 -0
  928. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/python/test_e2e_simple_reply.py +0 -0
  929. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/python/test_grep_parity.py +0 -0
  930. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/python/test_hooks_lifecycle.py +0 -0
  931. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/python/test_jail.py +0 -0
  932. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/python/test_memory_commit.py +0 -0
  933. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/python/test_observability_acceptance.py +0 -0
  934. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/python/test_observability_integration.py +0 -0
  935. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/python/test_ops_cli.py +0 -0
  936. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/python/test_prompt_caching_integration.py +0 -0
  937. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/python/test_scheduler_engine.py +0 -0
  938. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/python/test_sse_stream_pressure.py +0 -0
  939. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/realtime/scenarios/ws_blocks_history_rewrite.yaml +0 -0
  940. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/realtime/scenarios/ws_guardrail_budget.yaml +0 -0
  941. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/realtime/scenarios/ws_interrupt.yaml +0 -0
  942. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/realtime/scenarios/ws_slot_limit.yaml +0 -0
  943. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/realtime/scenarios/ws_text_turn.yaml +0 -0
  944. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/realtime/scenarios/ws_tool_confirmation.yaml +0 -0
  945. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t2/realtime/scenarios/ws_tool_turn.yaml +0 -0
  946. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/__init__.py +0 -0
  947. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/mcp/tools_list_call.json +0 -0
  948. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/memory/wake_up_snapshot.json +0 -0
  949. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/sse/basic_turn.sse +0 -0
  950. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/sse/cassette_turn.sse +0 -0
  951. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/sse/tool_turn.sse +0 -0
  952. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/subagents/child_tape.ndjson +0 -0
  953. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/test_golden_sse.py +0 -0
  954. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/test_replay_mcp.py +0 -0
  955. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/test_replay_subagent_tape.py +0 -0
  956. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/test_replay_trajectories.py +0 -0
  957. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/test_replay_wake_up.py +0 -0
  958. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/test_replay_wire.py +0 -0
  959. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/tools/__init__.py +0 -0
  960. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/tools/cassette.py +0 -0
  961. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/tools/check_staleness.py +0 -0
  962. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/tools/from_transcript.py +0 -0
  963. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/tools/record_wire.py +0 -0
  964. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/trajectories/ctx/replay_live_compaction.cassette.json +0 -0
  965. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/trajectories/ctx/replay_live_compaction.yaml +0 -0
  966. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/trajectories/loop/replay_live_doom_loop.cassette.json +0 -0
  967. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/trajectories/loop/replay_live_doom_loop.yaml +0 -0
  968. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/trajectories/loop/replay_live_truncation.cassette.json +0 -0
  969. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/trajectories/loop/replay_live_truncation.yaml +0 -0
  970. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/trajectories/shell/replay_live_pytest_run.cassette.json +0 -0
  971. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/trajectories/shell/replay_live_pytest_run.yaml +0 -0
  972. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/trajectories/verifier/replay_drift_tape.cassette.json +0 -0
  973. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/trajectories/verifier/replay_drift_tape.yaml +0 -0
  974. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/wire/ollama_cloud/glm_tool_turn.json +0 -0
  975. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t3/wire/ollama_cloud/thinking_only_completion.json +0 -0
  976. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/__init__.py +0 -0
  977. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/__main__.py +0 -0
  978. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/.gitignore +0 -0
  979. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/memory/.blob_seq_ids_migrated +0 -0
  980. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/memory/.collection_type_fixed +0 -0
  981. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/memory/.embedder_identity +0 -0
  982. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/memory/.embedding-migrate.lock +0 -0
  983. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/memory/.palace_id +0 -0
  984. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/memory/.palace_write.lock +0 -0
  985. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/memory/2d1891d4-34d0-43bd-8eea-2fb73026046b/data_level0.bin +0 -0
  986. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/memory/2d1891d4-34d0-43bd-8eea-2fb73026046b/header.bin +0 -0
  987. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/memory/2d1891d4-34d0-43bd-8eea-2fb73026046b/length.bin +0 -0
  988. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/memory/2d1891d4-34d0-43bd-8eea-2fb73026046b/link_lists.bin +0 -0
  989. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/memory/identity.txt +0 -0
  990. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/memory/mempalace_embedder.json +0 -0
  991. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/monkeybot_config/.t4-gateway-993b836fb2a9.yaml +0 -0
  992. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/monkeybot_config/AGENT.coding.md +0 -0
  993. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/monkeybot_config/AGENT.md +0 -0
  994. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/monkeybot_config/AGENT.researcher.md +0 -0
  995. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/monkeybot_config/command_allowlist.yaml +0 -0
  996. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/monkeybot_config/grants.json +0 -0
  997. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/monkeybot_config/mcp.json +0 -0
  998. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/monkeybot_config/mcp.progressive.json +0 -0
  999. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/monkeybot_config/monkeybot.coding.yaml +0 -0
  1000. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/monkeybot_config/monkeybot.verifier-judge.yaml +0 -0
  1001. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/monkeybot_config/monkeybot.verifier-tracker.yaml +0 -0
  1002. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/monkeybot_config/monkeybot.yaml +0 -0
  1003. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/monkeybot_config/permissions.yaml +0 -0
  1004. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/pyproject.toml +0 -0
  1005. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/skills/browser/SKILL.md +0 -0
  1006. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/agent/uv.lock +0 -0
  1007. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/assertions.py +0 -0
  1008. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/baselines/smoke.json +0 -0
  1009. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/baselines/smoke.md +0 -0
  1010. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/conftest.py +0 -0
  1011. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/diff.py +0 -0
  1012. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/eval_config.yaml +0 -0
  1013. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/gateway.py +0 -0
  1014. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/models.py +0 -0
  1015. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/persistence.py +0 -0
  1016. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/preflight.py +0 -0
  1017. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/python/__init__.py +0 -0
  1018. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/python/test_docker_image_health.py +0 -0
  1019. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/python/test_provider_live_matrix.py +0 -0
  1020. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/report.py +0 -0
  1021. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/runner.py +0 -0
  1022. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenario_loader.py +0 -0
  1023. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/attachments/describe_image_live.yaml +0 -0
  1024. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/coding/add_feature_with_tests.yaml +0 -0
  1025. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/coding/fix_failing_test.yaml +0 -0
  1026. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/coding/navigate_repo.yaml +0 -0
  1027. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/coding_hard/add_bulk_discount.yaml +0 -0
  1028. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/coding_hard/fix_discount_rounding.yaml +0 -0
  1029. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/coding_hard/honest_unfixable_failure.yaml +0 -0
  1030. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/coding_hard/multi_feature_long.yaml +0 -0
  1031. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/coding_hard/navigate_intl_rate.yaml +0 -0
  1032. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/coding_hard/noisy_test_failure.yaml +0 -0
  1033. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/coding_hard/rename_calc_tax.yaml +0 -0
  1034. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/config/reload_memory_off_live.yaml +0 -0
  1035. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/context/post_compaction_continuity.yaml +0 -0
  1036. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/context/summarization_trigger.yaml +0 -0
  1037. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/drift/declares_done.yaml +0 -0
  1038. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/drift/path_constraint.yaml +0 -0
  1039. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/drift/preempt.yaml +0 -0
  1040. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/drift/repeat_correction.yaml +0 -0
  1041. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/drift/supersession.yaml +0 -0
  1042. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/file/core_read.yaml +0 -0
  1043. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/file/core_read_error.yaml +0 -0
  1044. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/file/core_write.yaml +0 -0
  1045. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/file/grep_absence_honesty.yaml +0 -0
  1046. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/gateway/live_resume.yaml +0 -0
  1047. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/hooks/evidence_citation_live.yaml +0 -0
  1048. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/mcp/enable_then_echo_live.yaml +0 -0
  1049. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/mcp/get_prompt.yaml +0 -0
  1050. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/mcp/list_resources.yaml +0 -0
  1051. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/mcp/tool_invoke.yaml +0 -0
  1052. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/memory/recall_cross_session.yaml +0 -0
  1053. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/memory/recall_single_session.yaml +0 -0
  1054. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/memory/search_past_session.yaml +0 -0
  1055. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/multi_turn/task_tracking.yaml +0 -0
  1056. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/scheduler/http_one_tick_live.yaml +0 -0
  1057. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/scheduler/model_starts_loop.yaml +0 -0
  1058. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/shell/core_run_command.yaml +0 -0
  1059. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/shell/core_run_command_sandbox.yaml +0 -0
  1060. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/skills/skill_invocation.yaml +0 -0
  1061. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/subagents/dispatch_complete.yaml +0 -0
  1062. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/scenarios/subagents/persona_dispatch.yaml +0 -0
  1063. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/score.py +0 -0
  1064. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/suites/coding.yaml +0 -0
  1065. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/suites/coding_hard.yaml +0 -0
  1066. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/suites/context.yaml +0 -0
  1067. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/suites/drift.yaml +0 -0
  1068. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/suites/mcp.yaml +0 -0
  1069. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/suites/memory.yaml +0 -0
  1070. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/suites/nightly.yaml +0 -0
  1071. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/suites/scheduler.yaml +0 -0
  1072. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/suites/smoke.yaml +0 -0
  1073. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t4/suites/subagents.yaml +0 -0
  1074. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t5/__init__.py +0 -0
  1075. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t5/__main__.py +0 -0
  1076. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t5/baselines/subagents__ollama-cloud__glm-5.3-flash.json +0 -0
  1077. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t5/compare.py +0 -0
  1078. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t5/parallel.py +0 -0
  1079. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t5/python/test_cancel_storm.py +0 -0
  1080. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t5/python/test_reconnect_storm.py +0 -0
  1081. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t5/runs/coding.json +0 -0
  1082. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t5/runs/mcp.json +0 -0
  1083. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t5/runs/smoke.json +0 -0
  1084. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t5/runs/subagents.json +0 -0
  1085. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t5/stats.py +0 -0
  1086. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t5/suites/capability.yaml +0 -0
  1087. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t5/suites/drift.yaml +0 -0
  1088. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t5/suites/reliability.yaml +0 -0
  1089. {monkeybot-3.12.0 → monkeybot-3.14.0}/regression/t5/trials.py +0 -0
  1090. {monkeybot-3.12.0 → monkeybot-3.14.0}/scripts/create_schema.py +0 -0
  1091. {monkeybot-3.12.0 → monkeybot-3.14.0}/scripts/precommit-pytest.sh +0 -0
  1092. {monkeybot-3.12.0 → monkeybot-3.14.0}/scripts/release.py +0 -0
  1093. {monkeybot-3.12.0 → monkeybot-3.14.0}/scripts/smoke_global_cli.sh +0 -0
  1094. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/__init__.py +0 -0
  1095. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/cli/__init__.py +0 -0
  1096. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/cli/__main__.py +0 -0
  1097. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/cli/audio_io.py +0 -0
  1098. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/cli/gateway_manager.py +0 -0
  1099. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/cli/main.py +0 -0
  1100. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/cli/push_to_talk.py +0 -0
  1101. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/cli/realtime_client.py +0 -0
  1102. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/computer/__init__.py +0 -0
  1103. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/computer/approvals.py +0 -0
  1104. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/computer/permissions.py +0 -0
  1105. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/computer/safety.py +0 -0
  1106. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/computer/tools.py +0 -0
  1107. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/__init__.py +0 -0
  1108. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/attachments/__init__.py +0 -0
  1109. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/attachments/catalog.py +0 -0
  1110. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/attachments/config.py +0 -0
  1111. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/attachments/freeze.py +0 -0
  1112. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/attachments/image_preview.py +0 -0
  1113. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/attachments/resolve.py +0 -0
  1114. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/attachments/store.py +0 -0
  1115. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/attachments/text.py +0 -0
  1116. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/attachments/tools.py +0 -0
  1117. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/bootstrap.py +0 -0
  1118. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/coding/__init__.py +0 -0
  1119. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/coding/git_context_hook.py +0 -0
  1120. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/coding/read_ledger_hook.py +0 -0
  1121. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/coding/verification_gate.py +0 -0
  1122. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/config/__init__.py +0 -0
  1123. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/config/realtime_config.py +0 -0
  1124. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/config/runtime_env.py +0 -0
  1125. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/config/snapshot.py +0 -0
  1126. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/config/validation.py +0 -0
  1127. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/config/yaml_loader.py +0 -0
  1128. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/context/campaign_context.py +0 -0
  1129. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/context/common.py +0 -0
  1130. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/context/epoch.py +0 -0
  1131. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/context/project_context.py +0 -0
  1132. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/context/secret_egress.py +0 -0
  1133. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/context/slash_skills.py +0 -0
  1134. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/context/tool_output_policy.py +0 -0
  1135. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/context/tool_result_ingress.py +0 -0
  1136. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/context/tool_shapers.py +0 -0
  1137. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/goals/__init__.py +0 -0
  1138. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/goals/service.py +0 -0
  1139. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/hooks/__init__.py +0 -0
  1140. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/hooks/evidence_guard.py +0 -0
  1141. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/layout.py +0 -0
  1142. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/llm/__init__.py +0 -0
  1143. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/llm/provider.py +0 -0
  1144. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/llm/realtime_provider.py +0 -0
  1145. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/llm/usage.py +0 -0
  1146. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/lockfile_names.py +0 -0
  1147. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/logging_utils.py +0 -0
  1148. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/mcp/__init__.py +0 -0
  1149. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/mcp/mcp_client.py +0 -0
  1150. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/mcp/oauth_flow.py +0 -0
  1151. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/mcp/ports_mcp.py +0 -0
  1152. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/memory/__init__.py +0 -0
  1153. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/memory/config.py +0 -0
  1154. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/memory/hook.py +0 -0
  1155. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/memory/ids.py +0 -0
  1156. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/memory/ingest.py +0 -0
  1157. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/memory/migrate_embedding.py +0 -0
  1158. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/memory/migrate_layout.py +0 -0
  1159. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/memory/observability.py +0 -0
  1160. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/memory/outbox.py +0 -0
  1161. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/memory/palace.py +0 -0
  1162. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/memory/subsystem.py +0 -0
  1163. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/memory/uri.py +0 -0
  1164. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/memory/writer.py +0 -0
  1165. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/messages/__init__.py +0 -0
  1166. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/messages/convert_provider.py +0 -0
  1167. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/path_safety.py +0 -0
  1168. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/persistence/__init__.py +0 -0
  1169. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/persistence/branches.py +0 -0
  1170. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/persistence/db.py +0 -0
  1171. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/persistence/errors.py +0 -0
  1172. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/persistence/firestore.indexes.json +0 -0
  1173. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/persistence/firestore_scheduled_loops.py +0 -0
  1174. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/persistence/history.py +0 -0
  1175. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/persistence/row_ids.py +0 -0
  1176. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/persistence/runs.py +0 -0
  1177. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/persistence/scheduled_loops.py +0 -0
  1178. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/persistence/session_turn_locks.py +0 -0
  1179. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/persistence/sqlite.py +0 -0
  1180. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/persistence/sqlite_backend.py +0 -0
  1181. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/persistence/thread_summary.py +0 -0
  1182. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/persistence/transcript.py +0 -0
  1183. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/persistence/transcript_reader.py +0 -0
  1184. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/persistence/usage.py +0 -0
  1185. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/persistence/usage_buckets.py +0 -0
  1186. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/prompts/__init__.py +0 -0
  1187. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/prompts/harness_prompt.py +0 -0
  1188. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/runtime/__init__.py +0 -0
  1189. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/runtime/background_summary.py +0 -0
  1190. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/runtime/chat_title.py +0 -0
  1191. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/runtime/context_budget.py +0 -0
  1192. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/runtime/doom_loop.py +0 -0
  1193. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/runtime/history_compaction.py +0 -0
  1194. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/runtime/history_rewrite.py +0 -0
  1195. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/runtime/loop_hooks.py +0 -0
  1196. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/runtime/loop_messages.py +0 -0
  1197. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/runtime/loop_ports.py +0 -0
  1198. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/runtime/loop_usage.py +0 -0
  1199. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/runtime/provider_stream_mapper.py +0 -0
  1200. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/runtime/tool_batch.py +0 -0
  1201. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/runtime/utterance_buffer.py +0 -0
  1202. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/subagents/__init__.py +0 -0
  1203. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/subagents/progress_publish.py +0 -0
  1204. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/testing/__init__.py +0 -0
  1205. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/testing/mocks_provider.py +0 -0
  1206. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/testing/mocks_realtime_provider.py +0 -0
  1207. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/tools/__init__.py +0 -0
  1208. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/tools/ask_user.py +0 -0
  1209. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/tools/background_jobs.py +0 -0
  1210. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/tools/command_executor.py +0 -0
  1211. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/tools/fs_isolation.py +0 -0
  1212. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/tools/gitignore.py +0 -0
  1213. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/tools/grant_store.py +0 -0
  1214. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/tools/inspector.py +0 -0
  1215. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/tools/loop_inspector.py +0 -0
  1216. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/tools/patch.py +0 -0
  1217. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/tools/path_grant_inspector.py +0 -0
  1218. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/tools/read_ledger.py +0 -0
  1219. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/tools/sandbox_executor.py +0 -0
  1220. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/tools/spill_inventory.py +0 -0
  1221. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/tools/terminal.py +0 -0
  1222. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/tools/text_normalize.py +0 -0
  1223. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/tools/tool_hint.py +0 -0
  1224. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/tools/workspace_service.py +0 -0
  1225. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/types/__init__.py +0 -0
  1226. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/types/content_blocks.py +0 -0
  1227. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/types/interfaces.py +0 -0
  1228. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/types/types_tools.py +0 -0
  1229. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/verifier/__init__.py +0 -0
  1230. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/verifier/actuator.py +0 -0
  1231. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/verifier/binding.py +0 -0
  1232. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/verifier/classify.py +0 -0
  1233. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/verifier/inspector.py +0 -0
  1234. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/verifier/intervention.py +0 -0
  1235. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/verifier/judge.py +0 -0
  1236. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/verifier/ledger.py +0 -0
  1237. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/verifier/mailbox.py +0 -0
  1238. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/verifier/match.py +0 -0
  1239. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/verifier/port.py +0 -0
  1240. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/verifier/rewrite_effects.py +0 -0
  1241. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/verifier/severity.py +0 -0
  1242. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/verifier/tracker.py +0 -0
  1243. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/workspace/__init__.py +0 -0
  1244. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/workspace/factory.py +0 -0
  1245. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/workspace/gcs.py +0 -0
  1246. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/workspace/local.py +0 -0
  1247. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/workspace/protocol.py +0 -0
  1248. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/workspace/s3.py +0 -0
  1249. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/core/workspace_layout.py +0 -0
  1250. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/gateway/__init__.py +0 -0
  1251. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/gateway/bootstrap.py +0 -0
  1252. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/gateway/main.py +0 -0
  1253. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/gateway/pending_response_bus.py +0 -0
  1254. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/gateway/realtime/__init__.py +0 -0
  1255. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/gateway/realtime/app.py +0 -0
  1256. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/gateway/realtime/deps.py +0 -0
  1257. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/gateway/realtime/errors.py +0 -0
  1258. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/gateway/realtime/guardrails.py +0 -0
  1259. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/gateway/realtime/manager.py +0 -0
  1260. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/gateway/realtime/metrics.py +0 -0
  1261. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/gateway/realtime/session.py +0 -0
  1262. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/gateway/realtime/wire.py +0 -0
  1263. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/gateway/realtime_main.py +0 -0
  1264. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/gateway/sse/__init__.py +0 -0
  1265. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/gateway/sse/goal_routes.py +0 -0
  1266. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/gateway/sse/history_routes.py +0 -0
  1267. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/gateway/sse/reload.py +0 -0
  1268. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/gateway/sse/reply_body.py +0 -0
  1269. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/gateway/sse/request_storage.py +0 -0
  1270. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/gateway/sse/scheduler_routes.py +0 -0
  1271. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/gateway/sse/scheduler_wiring.py +0 -0
  1272. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/gateway/sse/sse.py +0 -0
  1273. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/gateway/sse/workspace_layout.py +0 -0
  1274. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/observability/_state.py +0 -0
  1275. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/observability/instrumentation.py +0 -0
  1276. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/observability/propagation.py +0 -0
  1277. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/providers/__init__.py +0 -0
  1278. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/providers/_bedrock_converse.py +0 -0
  1279. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/providers/_openai_compat.py +0 -0
  1280. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/providers/_sdk_client.py +0 -0
  1281. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/providers/_stream_marks.py +0 -0
  1282. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/providers/_utils.py +0 -0
  1283. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/providers/bedrock.py +0 -0
  1284. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/providers/claude.py +0 -0
  1285. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/providers/fireworks.py +0 -0
  1286. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/providers/gemini.py +0 -0
  1287. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/providers/gemini_live.py +0 -0
  1288. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/providers/huggingface.py +0 -0
  1289. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/providers/model_capabilities.py +0 -0
  1290. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/providers/nvidia.py +0 -0
  1291. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/providers/ollama.py +0 -0
  1292. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/providers/openai.py +0 -0
  1293. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/providers/openrouter.py +0 -0
  1294. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/providers/pricing.py +0 -0
  1295. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/providers/rejected_sampling.py +0 -0
  1296. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/providers/request_budget.py +0 -0
  1297. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/providers/sampling.py +0 -0
  1298. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/providers/vertex_claude.py +0 -0
  1299. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/scheduler/__init__.py +0 -0
  1300. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/scheduler/__main__.py +0 -0
  1301. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/scheduler/engine.py +0 -0
  1302. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/scheduler/http_invoker.py +0 -0
  1303. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/scheduler/interval.py +0 -0
  1304. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/scheduler/tick_result.py +0 -0
  1305. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/scheduler/worker.py +0 -0
  1306. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/todo_list/__init__.py +0 -0
  1307. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/todo_list/hook.py +0 -0
  1308. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/todo_list/store.py +0 -0
  1309. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/todo_list/tool.py +0 -0
  1310. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/web_search/__init__.py +0 -0
  1311. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/web_search/backends/__init__.py +0 -0
  1312. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/web_search/backends/duckduckgo.py +0 -0
  1313. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/web_search/backends/firecrawl.py +0 -0
  1314. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/web_search/backends/tavily.py +0 -0
  1315. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/web_search/protocol.py +0 -0
  1316. {monkeybot-3.12.0 → monkeybot-3.14.0}/src/monkeybot/web_search/tool.py +0 -0
  1317. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/__init__.py +0 -0
  1318. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/backends.py +0 -0
  1319. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/clock.py +0 -0
  1320. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/context.py +0 -0
  1321. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/conversations.py +0 -0
  1322. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/data/attachments/tiny.jpg +0 -0
  1323. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/data/attachments/tiny.png +0 -0
  1324. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/data/attachments/with-text.pdf +0 -0
  1325. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/data/attachments/without-text.pdf +0 -0
  1326. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/executors.py +0 -0
  1327. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/failure_ledger.py +0 -0
  1328. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/failures/__init__.py +0 -0
  1329. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/failures/__main__.py +0 -0
  1330. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/failures/catalog.py +0 -0
  1331. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/failures/store.py +0 -0
  1332. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/history.py +0 -0
  1333. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/hooks.py +0 -0
  1334. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/inspectors.py +0 -0
  1335. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/mcp.py +0 -0
  1336. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/memory.py +0 -0
  1337. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/palace.py +0 -0
  1338. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/pending_bus.py +0 -0
  1339. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/provider.py +0 -0
  1340. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/py.typed +0 -0
  1341. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/sandbox.py +0 -0
  1342. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/scrub.py +0 -0
  1343. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/sse.py +0 -0
  1344. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/verifier.py +0 -0
  1345. {monkeybot-3.12.0 → monkeybot-3.14.0}/testkit/web_search.py +0 -0
  1346. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/__init__.py +0 -0
  1347. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/conftest.py +0 -0
  1348. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/contracts/__init__.py +0 -0
  1349. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/contracts/conftest.py +0 -0
  1350. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/contracts/goldens/prompts/harness_prompt.default.txt +0 -0
  1351. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/contracts/goldens/prompts/harness_prompt.emission_terse.txt +0 -0
  1352. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/contracts/goldens/prompts/harness_prompt.mcp_catalog.txt +0 -0
  1353. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/contracts/goldens/prompts/harness_prompt.memory_off.txt +0 -0
  1354. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/contracts/goldens/prompts/harness_prompt.sandbox_on.txt +0 -0
  1355. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/contracts/goldens/prompts/harness_prompt.task_terse.txt +0 -0
  1356. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/contracts/goldens/span_names.txt +0 -0
  1357. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/contracts/goldens/tool_error_codes.txt +0 -0
  1358. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/contracts/tables/config_precedence.yaml +0 -0
  1359. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/contracts/tables/policy_decisions.yaml +0 -0
  1360. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/contracts/tables/provider_error_mapping.yaml +0 -0
  1361. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/contracts/test_config_matrix.py +0 -0
  1362. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/contracts/test_migrations_replay.py +0 -0
  1363. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/contracts/test_policy_decision_table.py +0 -0
  1364. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/contracts/test_provider_conformance.py +0 -0
  1365. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/contracts/test_route_table.py +0 -0
  1366. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/contracts/test_scaffold_reexports.py +0 -0
  1367. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/contracts/test_span_names.py +0 -0
  1368. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/__init__.py +0 -0
  1369. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/cli/__init__.py +0 -0
  1370. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/cli/test_gateway_manager.py +0 -0
  1371. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/cli/test_main.py +0 -0
  1372. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/cli/test_push_to_talk.py +0 -0
  1373. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/cli/test_realtime_client.py +0 -0
  1374. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/computer/__init__.py +0 -0
  1375. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/computer/test_approvals.py +0 -0
  1376. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/computer/test_computer_tools.py +0 -0
  1377. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/computer/test_package_init.py +0 -0
  1378. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/computer/test_path_policy.py +0 -0
  1379. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/computer/test_permissions.py +0 -0
  1380. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/computer/test_platform_gate.py +0 -0
  1381. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/computer/test_subagent_exclusion.py +0 -0
  1382. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/computer/test_wiring.py +0 -0
  1383. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/conftest.py +0 -0
  1384. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/__init__.py +0 -0
  1385. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/attachments/__init__.py +0 -0
  1386. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/attachments/test_attachment_freeze.py +0 -0
  1387. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/attachments/test_attachment_store.py +0 -0
  1388. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/attachments/test_image_preview.py +0 -0
  1389. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/coding/__init__.py +0 -0
  1390. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/coding/test_verification_gate.py +0 -0
  1391. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/config/__init__.py +0 -0
  1392. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/config/test_config_extensions.py +0 -0
  1393. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/config/test_env_map_grep_gates.py +0 -0
  1394. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/config/test_runtime_config_snapshot.py +0 -0
  1395. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/config/test_runtime_env.py +0 -0
  1396. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/context/__init__.py +0 -0
  1397. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/context/test_context_epoch.py +0 -0
  1398. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/context/test_project_context.py +0 -0
  1399. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/context/test_secret_egress.py +0 -0
  1400. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/context/test_skill_discovery_rules.py +0 -0
  1401. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/context/test_slash_skills.py +0 -0
  1402. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/context/test_tool_result_ingress.py +0 -0
  1403. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/context/test_tool_shapers.py +0 -0
  1404. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/fixtures/__init__.py +0 -0
  1405. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/fixtures/bitbucket_dc_style_pr.diff +0 -0
  1406. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/goals/__init__.py +0 -0
  1407. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/goals/test_goal_persistence.py +0 -0
  1408. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/hooks/__init__.py +0 -0
  1409. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/hooks/test_evidence_guard.py +0 -0
  1410. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/hooks/test_hooks.py +0 -0
  1411. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/hooks/test_settlement.py +0 -0
  1412. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/llm/__init__.py +0 -0
  1413. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/llm/test_pricing.py +0 -0
  1414. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/llm/test_provider_contract.py +0 -0
  1415. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/mcp/__init__.py +0 -0
  1416. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/mcp/test_mcp_client.py +0 -0
  1417. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/mcp/test_mcp_oauth.py +0 -0
  1418. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/mcp/test_mcp_oauth_regressions.py +0 -0
  1419. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/memory/__init__.py +0 -0
  1420. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/memory/test_memory_layout_migrate.py +0 -0
  1421. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/memory/test_memory_scoping.py +0 -0
  1422. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/memory/test_mempalace.py +0 -0
  1423. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/memory/test_migrate_embedding.py +0 -0
  1424. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/memory/test_review_fixes.py +0 -0
  1425. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/messages/__init__.py +0 -0
  1426. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/messages/test_gemini_history_replay.py +0 -0
  1427. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/persistence/__init__.py +0 -0
  1428. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/persistence/test_branch_store_backends.py +0 -0
  1429. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/persistence/test_firestore_history.py +0 -0
  1430. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/persistence/test_firestore_scheduled_loops.py +0 -0
  1431. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/persistence/test_firestore_usage.py +0 -0
  1432. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/persistence/test_goal_ledger.py +0 -0
  1433. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/persistence/test_history.py +0 -0
  1434. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/persistence/test_history_branches.py +0 -0
  1435. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/persistence/test_history_row_ids.py +0 -0
  1436. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/persistence/test_runs.py +0 -0
  1437. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/persistence/test_scheduled_loops.py +0 -0
  1438. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/persistence/test_session_branches_migration.py +0 -0
  1439. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/persistence/test_session_turn_locks.py +0 -0
  1440. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/persistence/test_thread_summary_wire.py +0 -0
  1441. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/persistence/test_transcript.py +0 -0
  1442. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/persistence/test_transcript_reader.py +0 -0
  1443. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/persistence/test_usage.py +0 -0
  1444. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/persistence/test_usage_migration.py +0 -0
  1445. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/prompts/__init__.py +0 -0
  1446. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/prompts/test_harness_prompt.py +0 -0
  1447. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/prompts/test_prompt.py +0 -0
  1448. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/runtime/__init__.py +0 -0
  1449. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/runtime/test_background_summary.py +0 -0
  1450. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/runtime/test_chat_title.py +0 -0
  1451. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/runtime/test_context_budget.py +0 -0
  1452. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/runtime/test_doom_loop.py +0 -0
  1453. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/runtime/test_empty_completion.py +0 -0
  1454. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/runtime/test_events.py +0 -0
  1455. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/runtime/test_history_compaction_split.py +0 -0
  1456. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/runtime/test_loop_hooks.py +0 -0
  1457. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/runtime/test_loop_transcript.py +0 -0
  1458. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/runtime/test_provider_stream_mapper.py +0 -0
  1459. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/runtime/test_realtime_loop.py +0 -0
  1460. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/runtime/test_truncated_tool_batch.py +0 -0
  1461. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/runtime/test_turn_session_id.py +0 -0
  1462. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/runtime/test_utterance_buffer.py +0 -0
  1463. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/subagents/__init__.py +0 -0
  1464. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/subagents/test_child_tool_list.py +0 -0
  1465. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/subagents/test_progress_publish.py +0 -0
  1466. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/subagents/test_subagent_trace_propagation.py +0 -0
  1467. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/subagents/test_subagent_transcript.py +0 -0
  1468. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/subagents/test_subagent_worker_paths.py +0 -0
  1469. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/test_agent_layout.py +0 -0
  1470. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/test_bootstrap.py +0 -0
  1471. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/test_layout.py +0 -0
  1472. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/test_logging_utils.py +0 -0
  1473. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/test_path_safety.py +0 -0
  1474. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/test_workspace_layout.py +0 -0
  1475. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/testing/__init__.py +0 -0
  1476. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/testing/test_mocks_realtime_provider.py +0 -0
  1477. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/tools/__init__.py +0 -0
  1478. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/tools/test_ask_user.py +0 -0
  1479. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/tools/test_background_jobs.py +0 -0
  1480. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/tools/test_fs_isolation.py +0 -0
  1481. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/tools/test_gitignore.py +0 -0
  1482. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/tools/test_grant_store.py +0 -0
  1483. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/tools/test_inspector.py +0 -0
  1484. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/tools/test_patch.py +0 -0
  1485. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/tools/test_permission.py +0 -0
  1486. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/tools/test_replace_fuzzy.py +0 -0
  1487. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/tools/test_run_command_parse.py +0 -0
  1488. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/tools/test_sandbox_executor.py +0 -0
  1489. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/tools/test_spill_dynamic.py +0 -0
  1490. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/tools/test_spill_inventory.py +0 -0
  1491. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/tools/test_terminal.py +0 -0
  1492. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/tools/test_workspace_extra_read_roots.py +0 -0
  1493. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/tools/test_workspace_symlinks.py +0 -0
  1494. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/tools/test_workspace_write_scope.py +0 -0
  1495. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/types/__init__.py +0 -0
  1496. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/types/test_content_blocks.py +0 -0
  1497. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/types/test_tool_def_schema.py +0 -0
  1498. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/verifier/__init__.py +0 -0
  1499. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/verifier/test_progress_tracker.py +0 -0
  1500. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/verifier/test_verifier_binding.py +0 -0
  1501. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/verifier/test_verifier_inspector.py +0 -0
  1502. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/verifier/test_verifier_judge.py +0 -0
  1503. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/verifier/test_verifier_mailbox_lifecycle.py +0 -0
  1504. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/verifier/test_verifier_port.py +0 -0
  1505. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/verifier/test_verifier_rewrite_effects.py +0 -0
  1506. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/verifier/test_verifier_sticky_nudge.py +0 -0
  1507. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/verifier/test_verifier_tracker.py +0 -0
  1508. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/workspace/__init__.py +0 -0
  1509. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/workspace/test_factory.py +0 -0
  1510. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/workspace/test_local_storage.py +0 -0
  1511. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/core/workspace/test_protocol_contract.py +0 -0
  1512. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/gateway/__init__.py +0 -0
  1513. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/gateway/realtime/__init__.py +0 -0
  1514. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/gateway/realtime/test_app.py +0 -0
  1515. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/gateway/realtime/test_deps.py +0 -0
  1516. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/gateway/realtime/test_guardrails.py +0 -0
  1517. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/gateway/realtime/test_manager.py +0 -0
  1518. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/gateway/realtime/test_metrics.py +0 -0
  1519. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/gateway/realtime/test_routes_client_text.py +0 -0
  1520. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/gateway/realtime/test_session.py +0 -0
  1521. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/gateway/realtime/test_wire.py +0 -0
  1522. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/gateway/sse/__init__.py +0 -0
  1523. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/gateway/sse/test_chat_title_route.py +0 -0
  1524. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/gateway/sse/test_config_reload.py +0 -0
  1525. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/gateway/sse/test_gateway_runtime.py +0 -0
  1526. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/gateway/sse/test_session_bus.py +0 -0
  1527. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/gateway/sse/test_start_turn_setup_failure.py +0 -0
  1528. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/gateway/sse/test_transcript_wiring.py +0 -0
  1529. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/gateway/test_otel_fastapi.py +0 -0
  1530. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/gateway/test_otel_lifespan.py +0 -0
  1531. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/gateway/test_pending_response_endpoints.py +0 -0
  1532. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/gateway/test_realtime_main.py +0 -0
  1533. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/gateway/test_resolve_provider.py +0 -0
  1534. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/gateway/test_sdk_client_shutdown.py +0 -0
  1535. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/gateway/test_sse_events.py +0 -0
  1536. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/gateway/test_subagent_event_publisher.py +0 -0
  1537. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/observability/conftest.py +0 -0
  1538. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/observability/test_instrumentation.py +0 -0
  1539. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/observability/test_loop_hook_spans.py +0 -0
  1540. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/observability/test_propagation.py +0 -0
  1541. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/observability/test_span_contract.py +0 -0
  1542. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/observability/test_truncate.py +0 -0
  1543. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/observability/test_turn_complete_trace.py +0 -0
  1544. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/packaging/__init__.py +0 -0
  1545. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/packaging/test_cold_start.py +0 -0
  1546. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/packaging/test_packaging_config.py +0 -0
  1547. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/packaging/test_release_script.py +0 -0
  1548. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/__init__.py +0 -0
  1549. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/conftest.py +0 -0
  1550. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/test_anthropic_cache.py +0 -0
  1551. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/test_anthropic_history.py +0 -0
  1552. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/test_bedrock_converse.py +0 -0
  1553. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/test_bedrock_estimate.py +0 -0
  1554. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/test_connection_warm.py +0 -0
  1555. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/test_fireworks.py +0 -0
  1556. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/test_gemini_history.py +0 -0
  1557. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/test_gemini_live.py +0 -0
  1558. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/test_gemini_usage.py +0 -0
  1559. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/test_huggingface.py +0 -0
  1560. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/test_model_capabilities.py +0 -0
  1561. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/test_nvidia.py +0 -0
  1562. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/test_ollama.py +0 -0
  1563. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/test_openai_byte_budget.py +0 -0
  1564. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/test_openai_compat_usage.py +0 -0
  1565. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/test_openai_history.py +0 -0
  1566. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/test_pricing.py +0 -0
  1567. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/test_request_budget.py +0 -0
  1568. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/test_safe_parse_tool_args.py +0 -0
  1569. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/test_sampling.py +0 -0
  1570. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/test_sdk_client_reuse.py +0 -0
  1571. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/test_sonnet5_sampling.py +0 -0
  1572. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/test_source_grep_gates.py +0 -0
  1573. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/test_tiktoken_encoding.py +0 -0
  1574. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/providers/test_vertex_claude_history.py +0 -0
  1575. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/scheduler/__init__.py +0 -0
  1576. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/scheduler/test_engine.py +0 -0
  1577. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/scheduler/test_interval.py +0 -0
  1578. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/skills/__init__.py +0 -0
  1579. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/skills/test_generate_image_script.py +0 -0
  1580. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/testkit/__init__.py +0 -0
  1581. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/testkit/test_clock.py +0 -0
  1582. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/testkit/test_failure_ledger.py +0 -0
  1583. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/testkit/test_failures_cli.py +0 -0
  1584. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/testkit/test_fake_history.py +0 -0
  1585. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/testkit/test_scripted_provider.py +0 -0
  1586. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/testkit/test_scrub.py +0 -0
  1587. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/testkit/test_sse_reader.py +0 -0
  1588. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/todo_list/__init__.py +0 -0
  1589. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/todo_list/test_todo_list.py +0 -0
  1590. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/web_search/__init__.py +0 -0
  1591. {monkeybot-3.12.0 → monkeybot-3.14.0}/tests/unit/web_search/test_web_search.py +0 -0
@@ -0,0 +1,662 @@
1
+ # Changelog
2
+
3
+ All notable changes to monkeybot are documented in this file. The
4
+ format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and
5
+ the project adheres to [Semantic Versioning](https://semver.org/).
6
+
7
+ ## [Unreleased]
8
+
9
+ ## [core v3.14.0] - 2026-11-04
10
+
11
+ ### Added
12
+
13
+ - An MCP server a chat does not use for ten model turns is hidden from that chat. The connection stays up for other chats and for subagents. `enable_mcp` shows that server's tools again. A call to a hidden server is rejected.
14
+
15
+ ### Fixed
16
+
17
+ - A message sent while a background subagent is still running is answered. It is not treated as a request for the child's result. `await_task` runs when the user asks for that result, or when a harness note says the child has finished.
18
+
19
+ ## [cli v0.13.0] - 2026-11-01
20
+
21
+ ### Added
22
+
23
+ - Chat renders a turn the gateway starts while the prompt is idle, including the follow-up when a background subagent finishes. A message sent during that turn reports the session as busy.
24
+
25
+ ### Fixed
26
+
27
+ - `monkeybot doctor` points a config-only tree at the Pillow overrides file shipped with the CLI. A bare `uv tool install` still resolves core 3.10.0.
28
+ - New coding scaffolds tell the image generator to use the `skills` path from `list_skills` instead of an absolute host directory.
29
+
30
+ ## [core v3.13.0] - 2026-11-01
31
+
32
+ ### Added
33
+
34
+ - `task` accepts `background: true`. The child keeps running after the turn ends. `await_task` and `kill_task` read or stop it. A finished child wakes the parent with a `[harness]` follow-up while the session is idle. `MONKEYBOT_TASK_QUEUE` and the subagent worker pool are removed.
35
+ - `write_file`, `replace_in_file`, and `apply_patch` emit a `FileChange` and keep a before/after snapshot under `.monkeybot/changes/{session}` so a client can review the diff and undo. Undo refuses a file that changed since the edit or a snapshot that was too large to keep, and the next turn is told which paths were restored.
36
+
37
+ ### Changed
38
+
39
+ - Tool input and output, tool errors, completions, and turn I/O are no longer clipped at 8 KB in traces or at 4 KB in the SQLite trace DB. Each attribute is capped at 1 MiB instead. The history prompt stays at 8 KB. Full tool I/O now reaches OTLP backends, so redact at the collector. The SQLite DB no longer stores the `langfuse.*` mirror keys. The OTLP and SQLite exporters send 8 spans per request (override OTLP with a positive integer `OTEL_BSP_MAX_EXPORT_BATCH_SIZE`; any other value keeps 8).
40
+
41
+ ### Fixed
42
+
43
+ - A UI-only row between a tool call and its result no longer makes the provider see two results for that call. Bedrock rejected the turn when the counts did not match. Stored history is unchanged.
44
+ - `list_skills` advertises the workspace `skills/` mount instead of the host skills directory. `run_command` paths under `skills/` stay inside that root, so opening a skill file no longer asks for approval.
45
+
46
+ ## [core v3.12.0] - 2026-10-29
47
+
48
+ ### Added
49
+
50
+ - Bedrock Converse models (Grok, Nova, Llama, and other non-Claude ids) send prompt-cache checkpoints when `model.cache_retention` is not `none`. Checkpoints land on the system prompt, the tool list, and the last two user turns, up to Bedrock's limit of four. `short` and `long` both use Converse's default 5-minute cache. A model that rejects cache points is retried once without them.
51
+
52
+ ## [cli v0.12.0] - 2026-10-28
53
+
54
+ ### Changed
55
+
56
+ - Chat shows thoughts, tool calls, and web sources as one collapsed row. The reply no longer carries an assistant label.
57
+
58
+ ## [core v3.11.1] - 2026-10-28
59
+
60
+ ### Fixed
61
+
62
+ - Sandbox volume names stay valid DNS labels and unique per path. The name used to be cut to 63 characters after dashes were stripped, so a cut could leave a trailing `-` and OpenSandbox rejected it with HTTP 422 on long workspace paths. Names now end in an 8-character hash of the path.
63
+
64
+ ## [cli v0.11.1] - 2026-10-28
65
+
66
+ ### Fixed
67
+
68
+ - `uv tool install` of the CLI resolves again. browser-harness 0.1.13 pins Pillow 12.3.0, and declaring Pillow 13 as a normal dependency conflicts with that pin. Lock and sync already override it; tool and pip installs now pass the same override.
69
+ - The managed memory runtime installs `monkeybot-browser-mcp` next to `monkeybot[memory]`. A cached runtime that cannot import `browser_mcp` is rebuilt, so a local CLI gateway can start the browser server with its own interpreter.
70
+ - The managed memory runtime also installs the `web-search` extra. DuckDuckGo is the default search backend, and a cached runtime that cannot import `ddgs` is rebuilt.
71
+ - Chat inserts a newline on Shift+Enter, Alt+Enter, and Ctrl+J. Enter still sends the message. Terminals that report those chords as a modified carriage return are recognized too.
72
+
73
+ ## [core v3.11.0] - 2026-10-28
74
+
75
+ ### Added
76
+
77
+ - `POST /api/chat-title` names a chat from its first user message and first assistant reply. The title is null until that reply exists, or when the model call fails, so the caller can retry.
78
+ - Deployments can price models the harness does not ship with. A `pricing:` section in `monkeybot.yaml` maps a model id to `input`, `output`, `cache_write`, and `cache_read` in USD per 1M tokens, with optional `aliases`. Edits to that file, or to a file it includes, apply on the next lookup without a restart. `monkeybot validate` rejects a missing, negative, unknown, or non-numeric field, a duplicate id, or an alias that is not a list of ids. Embedders can call `monkeybot.providers.pricing.register_model_pricing(...)` instead; registered rates win over YAML, which wins over the built-in table for the same id. The longest matching id wins, and a pinned agent root is not replaced by the working directory.
79
+
80
+ ### Changed
81
+
82
+ - `grep` returns the matches it found when a scan is partial. The result stays `ok: true` with `scan_complete: false`, and `incomplete` says what was not searched and how to finish. An empty match list proves absence only when `scan_complete` is true. Binary files no longer make a scan incomplete. The ripgrep path no longer stops at `WORKSPACE_GREP_MAX_FILES` or re-reads every file to classify it; that cap applies only to the Python walker. A ripgrep timeout is still an `incomplete_scan` error.
83
+ - The `memory` extra requires MemPalace 3.11. Installs take 3.11 bug-fix releases but no longer resolve 3.12 or later.
84
+ - Memory uses MemPalace's default `minilm` embedder. `embeddinggemma-300m` was not a MemPalace model name; older builds filed those palaces with MiniLM. Startup rewrites that name to `minilm` and leaves the existing index in place.
85
+ - An unpriced model logs `unknown model for pricing lookup` once per process instead of on every usage event.
86
+ - MCP servers marked `autoConnect` connect in parallel. Boot returns after reading `mcp.json` and finishes those connects in the background; the first turn waits only for the time still left and still sees the tools. `MCP_STRICT_LOAD` still waits for them and fails startup on a connect error.
87
+ - The gateway opens the model provider's HTTP connection at startup with a models-list request and keeps that socket for 120 seconds, so the first turn does not wait on a cold connection.
88
+ - The harness prompt tells the model to issue independent `read_file` calls in one response instead of one file per turn. `grep` says to read the matching paths together once they are known.
89
+ - OpenAI-compatible token counting loads the tiktoken `cl100k_base` encoding when the provider module is imported, so a turn that counts with that encoding pays the warm count instead of the cold load.
90
+ - A thread past about 70% of its context window summarizes in the background. The turn that crosses the summary bar applies that summary instead of waiting on the summarizer, and falls back to summarizing inline when the summary is missing or the covered history changed.
91
+
92
+ ### Fixed
93
+
94
+ - Jailed headless Chromium can allocate its WebGL backbuffer again. Chrome 145 needs the IOSurface user client, and SwiftShader has to be requested explicitly.
95
+ - OpenAI-compatible providers still import when that tiktoken encoding file cannot be read at startup. Token counting raises the same error on the turn that needs the encoder, and a later successful read is cached as usual.
96
+ - Cancelling gateway, harness, or subagent startup while an `autoConnect` server is still connecting closes that server instead of leaving its process behind.
97
+ - `mempalace search` from `run_command` no longer fails with `Operation not permitted (os error 1)` on a palace using the `minilm` embedder. The command jail now lets `mempalace`, and only `mempalace`, read Chroma's installed MiniLM model under `~/.cache/chroma/onnx_models`.
98
+
99
+ ## [cli v0.11.0] - 2026-10-22
100
+
101
+ ### Added
102
+
103
+ - `monkeybot new --template coding` scaffolds an agent with a coding `AGENT.md`, a toolchain command allowlist (including yarn, with `rm` denied inside `bash -c`), ask-before-push permissions that also match chained commands and `bash -c`, and `coding.verification_gate` turned on.
104
+ - `monkeybot mcp-login` signs in to one remote MCP server in the browser and writes the token file core reuses.
105
+ - New scaffolds list `./tests/` and `./src/` in `command_allowlist.yaml`. `refresh` does not re-add them to an allowlist you already configured.
106
+
107
+ ### Changed
108
+
109
+ - Requires `monkeybot[cli]>=3.10.0,<4`. `monkeybot mcp-login` imports the OAuth flow added in core 3.10.0.
110
+
111
+ ## [core v3.10.0] - 2026-10-22
112
+
113
+ ### Added
114
+
115
+ - Coding mode for agents that work in a repository. It adds an editing & verification protocol to the prompt, puts `AGENTS.md` / `CLAUDE.md` and a short repo overview in the cached prompt prefix, reports git branch and dirty files each turn, refuses edits to files the model has not read (`read_before_write`) or that changed since (`stale_read`), and — with `coding.verification_gate` — refuses a final answer that follows edits no test or lint run has passed since. See `docs/features.md` §22.
116
+ - Hooks: `PRE_FINAL_ANSWER` (a hook may refuse a final answer once the tools are done; `BEFORE_PROVIDER_REQUEST` may hold the text until then) and `HISTORY_COMPACTED` (awaited after history is summarized). A tool failing on the same file repeatedly trips doom-loop recovery even when its other arguments, or the path's spelling, change.
117
+ - New `list_dir` tool. `grep` gains `context`, `files_only` and `respect_gitignore`; `glob` takes `files_only` and no longer walks `node_modules`, `.git`, `build` and similar. `replace_in_file` and `apply_patch` return the edited `line` and a numbered `snippet`. Skills appear in the prompt as `name — description`.
118
+ - Live eval suites `coding` and `coding_hard` (`evals/suites/`) over fixture repos, with workspace-checked assertions (`workspace_command_passes`, `workspace_file_contains`, `workspace_unchanged`, `final_text_regex`, `verified_before_final`), seeded-bug overlays, and `python -m evals.trials` to run a suite repeatedly and compare configurations. The eval runner answers `ask_user` prompts so a run cannot hang waiting for a human.
119
+ - Remote MCP servers can sign in with browser OAuth. Tokens are stored per server and reused on later connects; a failed refresh is reported as an auth error.
120
+
121
+ ### Changed
122
+
123
+ - Coding mode is always on for every agent. `coding.enabled` is retired: a leftover `coding: {enabled: ...}` is ignored with a warning. Every agent now gets the editing & verification protocol, the read-before-write ledger (`read_before_write` / `stale_read` refusals), project instructions and repo overview in the cached prompt prefix, and git state in runtime notes. `coding.verification_gate.enabled` stays opt-in.
124
+ - `glob` returns files only by default; pass `files_only: false` to also list directories. `bash -c` scripts are screened command by command against `deny_patterns`.
125
+
126
+ ### Fixed
127
+
128
+ - `run_command` output over the spill threshold no longer hides `exit_code`, `stderr` and the end of the output behind a truncated JSON prefix. The result stays valid JSON with head/tail excerpts and the full streams at `output_path`.
129
+ - `run_command` accepts `./tests/` and `./src/` path arguments (relative or workspace-absolute) under the built-in defaults, so `pytest ./tests` is no longer rejected. A configured allowlist is not widened.
130
+ - `deny_patterns` that anchor on the start of a command (`^rm\s+-rf`, `^curl`, `^sudo`) now also apply to commands inside `bash -c "…"`. A `bash -c` script that cannot be screened is rejected instead of run.
131
+ - The progress tracker's `write_without_read` / `rewrite_churn` signals never fired for `replace_in_file` (it tracked a tool name that does not exist).
132
+ - `apply_patch` rejects a hunk whose old lines match several places instead of silently editing the first, rejects hunk lines with no valid prefix instead of dropping them, and honors `*** End of File`.
133
+ - Subagent personas' `model` and `vertex_location` are used by `task` instead of the parent's model.
134
+ - A provider call that fails with an empty message (for example an `httpx.ReadTimeout`) now reports `Provider request failed (<ExceptionType>)` instead of a blank error.
135
+ - Over-budget tool text keeps its tail (70% head / 30% tail) instead of only its head.
136
+
137
+ ## [cli v0.10.0] - 2026-10-18
138
+
139
+ ### Added
140
+
141
+ - `monkeybot doctor` reports `model.reasoning_effort`, including when a non-Claude Bedrock model will not receive it.
142
+ - `fireworks` is a scaffold provider choice and validates with `FIREWORKS_API_KEY`.
143
+
144
+ ### Changed
145
+
146
+ - Requires `monkeybot[cli]>=3.9.0,<4`. Doctor imports the reasoning-effort helpers added in core 3.9.0.
147
+
148
+ ## [core v3.9.0] - 2026-10-18
149
+
150
+ ### Added
151
+
152
+ - `fireworks` model provider (`monkeybot[fireworks]`) for Fireworks AI's OpenAI-compatible API. Set `model.provider: fireworks` and `FIREWORKS_API_KEY`; `FIREWORKS_BASE_URL` overrides the default `https://api.fireworks.ai/inference/v1`. Model ids are passed through unchanged, e.g. `accounts/fireworks/models/llama-v3p3-70b-instruct`.
153
+ - `model.reasoning_effort` sends an effort level on the provider's wire field. It wins over `thinking_budget` where the provider accepts it. `none` turns thinking off. A level the API rejects is omitted on later turns. Gemini only sends levels its SDK knows; other values stay on `thinking_budget`.
154
+
155
+ ### Fixed
156
+
157
+ - Token-pressure compaction judges viability on raw stored rows and compacts that history, not the provider-facing view.
158
+ - A turn that fails during setup still persists the user prompt.
159
+ - Jailed commands can launch headless Chrome. Toolchain caches stay in the workspace and are not injected into direct mempalace calls.
160
+
161
+ ### Changed
162
+
163
+ - Provider SDK clients are reused per endpoint and closed when the process shuts down.
164
+ - PDF text extracts are sized by the read window, spills are reused, and markdown uploads are normalized.
165
+
166
+ ## [cli v0.9.0] - 2026-10-07
167
+
168
+ ### Added
169
+
170
+ - `monkeybot trace list` and `monkeybot trace digest` turn a session transcript into a resolved timeline, with each subagent run shown under the `task` call that started it. In chat, `/export-trace` copies the whole session directory. The `mb-retro` skill proposes environment fixes from one hard session and does not edit anything until you pick a candidate.
171
+
172
+ ### Changed
173
+
174
+ - Requires `monkeybot[cli]>=3.8.0,<4`. `monkeybot trace` imports the transcript reader added in core 3.8.0.
175
+
176
+ ## [core v3.8.0] - 2026-10-07
177
+
178
+ ### Added
179
+
180
+ - Stored chat history can branch. Rows keep a stable `row_id`. `POST /sessions/{id}/branches` edits, regenerates, rewinds, or restores from an anchor; truncate shortens the active thread in place; fork copies a prefix into a new session. A summarized prefix stays read-only unless the cut keeps that summary. Queued follow-ups drain onto the branch that becomes active. Goal ledger and tracker state carry across a rewrite. Older databases rebuild `session_branches` on startup, including Postgres.
181
+ - Session transcripts record harness guard hits as `HarnessIntervention` (not sent on SSE) and write each subagent run under the parent session's `subagents/` directory when `runtime.transcript_enabled` is on.
182
+
183
+ ### Fixed
184
+
185
+ - Transcript prompt diffs no longer drop changed lines that start with `--` or `++`, such as a removed `---` rule. Diffs already written that way are flagged as `text_error: diff_mismatch` when read instead of being rebuilt wrong.
186
+ - A background `run_command` in the sandbox keeps running after launch returns.
187
+
188
+ ### Removed
189
+
190
+ - The workspace knowledge index and the `search` tool. Agents explore the workspace with `grep` and `glob`, then `read_file`. Memory search, web search, and browser DOM indexing are unchanged.
191
+ - The `knowledge-ast` and `knowledge-media` extras. Installs that still request them get an unknown-extra warning; drop them from agent deps.
192
+ - `numpy` is no longer a core dependency.
193
+
194
+ ### Changed
195
+
196
+ - A leftover `knowledge:` section in `monkeybot.yaml` is warned once and ignored. Old index files (`index.sqlite`, `.monkeybot/knowledge/`) are no longer read and can be deleted.
197
+ - The `Evidence:` path guard moved to `core/hooks/evidence_guard.py` and is always registered by the gateway. Before, it ran only when `knowledge.enabled` was on.
198
+
199
+ ## [core v3.7.0] - 2026-09-30
200
+
201
+ ### Added
202
+
203
+ - `run_command` can start a long command in the background and return `job_id` and `log_path` immediately. `await_command` pages its output until it exits, and `kill_command` stops it, on the local terminal and in the OpenSandbox executor. A turn cannot finish while a job is still running; leftover jobs are killed when the turn ends. The sandbox renews its lease while a job runs, up to the job time ceiling.
204
+
205
+ ## [browser v0.8.1] - 2026-09-28
206
+
207
+ ### Fixed
208
+
209
+ - The per-chat browser IPC router honors browser-harness 0.1.13's response timeout, so browser tools can drive the page again.
210
+
211
+ ## [browser v0.8.0] - 2026-09-27
212
+
213
+ ### Added
214
+
215
+ - Each Spaces chat gets its own browser daemon, tab registry, and lock, so simultaneous chats no longer restart each other or drop tab aliases. Local Chrome and AgentCore stay on one shared browser. An idle daemon stops after 15 minutes and keeps that chat's tab aliases for the next call.
216
+ - The per-chat tab cap is 10. When Spaces refuses a tab because the app-wide live-tab cap is full, the tool returns `tab_limit_reached` with `"scope": "app"` instead of this chat's limit.
217
+
218
+ ## [core v3.6.1] - 2026-09-26
219
+
220
+ ### Fixed
221
+
222
+ - `run_command`'s macOS jail can launch onefile binaries that live under the home directory. Bundled `yt-dlp` needs to read its own executable and create a SysV semaphore; both were denied, so `/watch-video` died before any download.
223
+ - `run_command` can read an installed on-device Whisper model under the home directory, so `/watch-video` can transcribe with it.
224
+
225
+ ## [cli v0.8.0] - 2026-09-21
226
+
227
+ #### Added
228
+
229
+ - `monkeybot chat` prompts for an `ask_user` question and posts the reply to the gateway.
230
+
231
+ ## [core v3.6.0] - 2026-09-21
232
+
233
+ #### Added
234
+
235
+ - `ask_user` asks the user a question, with an optional list of two to six choices, and waits for the posted answer before the tool returns.
236
+
237
+ ## [core v3.5.0] - 2026-09-20
238
+
239
+ ### Added
240
+
241
+ - Native durable goals beside scheduled loops (`create_goal` / `update_goal`, plus `/goals` pause/resume/stop). Continuations are scheduled automatically until the goal completes or is stopped.
242
+ - `FileBlock` SSE for generated documents (path/filename/mime — clients load from disk). Workspace open/export stays inside the workspace and still denies nested credential directories.
243
+ - HTML (`text/html`) uploads for Files preview, and `text/plain` attachments inlined at resolve.
244
+ - Promote a queued follow-up into the live turn (`POST /sessions/{id}/queue/{request_id}/steer`) or drop it (`DELETE`) so it never drains.
245
+ - Verifier: request-scoped mailbox, sticky nudge until the tracker recovers, nudge armed on judge deposit, concurrent session-bound `ProviderJudge` jobs with scoped budgets and fencing, and staged reload so live workers stay intact.
246
+
247
+ ### Changed
248
+
249
+ - `verifier.enabled: true` turns on omitted nested `ledger` / `tracker` flags. Omitted `judge.enabled` turns on only when the tracker is on. Explicit `enabled: false` still opts a nested section out.
250
+ - Omitted `verifier.ledger.model` / `verifier.judge.model` inherit the agent model (`model.name` / `MODEL_NAME`, then `gemini-2.5-flash`). The live judge worker is session-bound `ProviderJudge`.
251
+
252
+ ### Fixed
253
+
254
+ - Provider requests that exceed the multimodal byte budget drop media rather than sending an oversized body; remaining oversize fails closed. In-flight media is frozen on abort.
255
+ - Promoted follow-ups no longer vanish if the turn ends before they inject — they restore to the front of the follow-up queue.
256
+
257
+ ### Notes
258
+
259
+ - Existing configs that set only `verifier.enabled: true` (or `enabled: true` plus `ledger.enabled: true`) now also get the tracker, and the judge if the tracker stays on. Opt out with `tracker.enabled: false` / `judge.enabled: false`.
260
+
261
+ ## [cli v0.7.0] - 2026-09-20
262
+
263
+ ### Added
264
+
265
+ - New agents install a packaged `skills/goal/SKILL.md` for explicit `/goal` invocations. `monkeybot refresh` adds it when missing.
266
+
267
+ ### Changed
268
+
269
+ - Example YAML documents verifier nested enable-flag inheritance and optional model inherit.
270
+
271
+ ## [browser v0.7.2] - 2026-09-13
272
+
273
+ #### Fixed
274
+
275
+ - Reuse the focused `about:blank` tab when opening a URL so agent `Target.createTarget` does not stack a leftover New tab next to the first real page.
276
+
277
+ ## [browser v0.7.1] - 2026-09-12
278
+
279
+ #### Fixed
280
+
281
+ - Empty in-app browsers report `no page target` so `browser_act` / `run_playbook` can `goto` instead of aborting. Stale sessions still fail closed when other tabs exist.
282
+
283
+ ## [core v3.4.0] - 2026-09-12
284
+
285
+ ### Added
286
+
287
+ - A leading `/slug` in the user turn pins that installed skill for the turn (`## Invoked skill`) without rewriting persisted chat text.
288
+
289
+ ## [browser v0.7.0] - 2026-09-10
290
+
291
+ #### Added
292
+
293
+ - Announces the chat it is acting for to the Spaces in-app bridge (`Monkeybot.setChatScope`) so tabs stay attached to their chat; silently no-op on older apps.
294
+
295
+ #### Fixed
296
+
297
+ - Chat-switch tab drop now fires on real tool calls (`browser_harness()` reuse no longer forgets the last scoped chat).
298
+
299
+ ## [core v3.3.0] - 2026-09-11
300
+
301
+ ### Breaking
302
+
303
+ - `run_command` now runs inside a deny-by-default OS filesystem jail (macOS `sandbox-exec`; Linux mount-namespace, unvalidated on a real host as part of this change) on top of the existing binary/path allowlist. The user's home directory is denied by default; the workspace, artifacts, memory palace, and OS temp dirs stay read+write, and skills/the interpreter prefix/granted folders stay read-only, including when they sit inside the denied home directory (the normal case for a desktop app). This closes a real gap: the old argv-string path screen never caught indirect path expressions a shell or interpreter builds at runtime (`bash -c 'cp "$HOME/Desktop/x" .'`, or a Python `os.path.expanduser(...)` call), so a command that depended on reading/writing somewhere under `$HOME` outside the workspace — by accident or on purpose — will now fail where it previously succeeded. `git` keeps working via a narrow, explicit `~/.gitconfig`/`~/.config/git/ignore` read carve-out (needed even for `--version`); `gh` does not — its own auth config is credential-adjacent and is not carved out, matching the credential-path denylist already established for `computer_*` tools. If the OS jail mechanism itself is unavailable on a host (older kernels without unprivileged user namespaces, some hardened/CI Linux configs), `run_command` falls back to running **unconfined** (logged once, not per call) rather than refusing every command — a deliberate difference from the existing memory-off hide mechanism, which still fails closed, since this is default-on hardening for every deployment rather than a narrow, deliberate opt-out.
304
+
305
+ ### Added
306
+
307
+ - MCP tool calls now carry `_meta.monkeybot` (`thread_id`, `request_id`, `run_id`) so servers can attribute work to a chat. Requires `mcp>=1.27.1` so `ClientSession.call_tool(meta=)` is always available.
308
+ - **Command grants:** an unlisted `run_command` binary now surfaces a "Needs your OK" approval card (`Decision.grant_key`/`grant_kind` on `CommandTierInspector`) instead of silently falling through to a hard `SecurityError` at the executor. "Allow once" covers the rest of the turn; "Always allow" writes a durable rule to a new home-level store, `grants.json` (`core/tools/grant_store.py`), shared by every agent on the machine — deliberately separate from the per-agent, `computer_*`-only `approvals.json`. Same on-disk contract (JSON, `0600`, atomic replace, cross-process exclusive-create locking matched with the Electron side).
309
+ - **Folder read grants:** `read_file`/`load_file`/`glob`/`grep` on an absolute path outside the workspace now ask via a new `PathGrantInspector` rather than rejecting outright — denying credential paths and anything outside `$HOME` hard, never promotable. An approved folder is read in place through `WorkspaceFileService.extra_read_roots` (symlink-escape-protected, read-only — never widens what `write_file`/`replace_in_file` can touch); the same granted folders feed the `run_command` jail's read-only set so the shell tool and the file tools agree on what's reachable. Fixes the failure mode where the model, unable to read a file outside its workspace and told only "use a relative path," would narrate copying the file into the workspace to route around the boundary — tool descriptions, the harness prompt, and the `workspace_error_envelope` hint for this case now say to ask for access instead, explicitly calling relocating-to-route-around-the-boundary a policy violation.
310
+ - Settings → Privacy & access gained **Allowed commands** and **Folder access** sections listing/revoking these new grants, alongside the existing per-agent `computer_*` rules.
311
+
312
+ ## [browser v0.6.0] - 2026-09-07
313
+
314
+ #### Added
315
+
316
+ - `browser_login` now returns fail-closed errors from the Spaces sealed-login path, scopes grants and errors per run (`MONKEYBOT_RUN_ID` / `MONKEYBOT_RUN_LABEL`), and surfaces TOTP outcome (`mfa`: `none` / `completed` / `needed`) plus injection mode (`mode`: `keystroke` / `network`).
317
+ - `browser_passkey` requests a Spaces-saved passkey with the same allowlisted error surface as `browser_login`. Live passkey sites have not been verified yet.
318
+
319
+ #### Fixed
320
+
321
+ - Credential-broker JSON 413 responses fail closed instead of leaking a body, and thinking text is redacted on that path. Tool descriptions are `cleandoc`'d so the golden surface matches CI.
322
+
323
+ ## [core v3.2.0] - 2026-09-07
324
+
325
+ #### Added
326
+
327
+ - Opt-in background verifier (`verifier:` in YAML, defaults off, no env mapping). A SQLite goal ledger plus an off-loop classifier record the user's intent; an observe-only progress tracker emits `VerifierVerdict` events; verdicts persist as pinned `verifierVerdict` history rows through compaction. When `max_severity` allows it, the ladder can nudge on the next system extra, replan by emptying tools for one inner turn, or block mutating tools while `parallel_safe` reads still run. Firestore/Postgres have no ledger (fail closed). See `docs/verifier-agent-design.md`.
328
+ - Credential-egress detection: new assistant text and tool results are scanned against Spaces' `/json/scan` before they reach the LLM, with a separate scan of outbound tool arguments (terminal, file write, browser navigation/input, `web_*`) and a local-SQLite-only trace-value scan. A hit is redacted in place; a routine turn ends visibly and an interactive chat continues with the secret withheld. User-authored text is never scanned. Emits `CredentialEgressBlocked`.
329
+
330
+ ## [core v3.1.0] - 2026-09-05
331
+
332
+ ### Breaking
333
+
334
+ - `context_curation` is retired. The section no longer maps to env or trims MemPalace wake-up lines. Leftover YAML still loads and logs one warning per process; `CONTEXT_CURATION_*` / `MEMORY_INDEX_CAP` process env is unused. Wake-up size is whatever MemPalace L0+L1 returns; `model.context_window` still only bounds history summarization. Subagents now include the same wake-up block as the parent (they previously received none of it).
335
+ - `model.provider`, `model.name`, `model.temperature`, `model.max_tokens`, `model.thinking_budget`, `model.context_window`, `model.summarization_model`, `model.max_turns`, and `model.cache_retention` are YAML-only. Process env `MODEL_PROVIDER`, `MODEL_NAME`, `MODEL_TEMPERATURE`, `MODEL_MAX_TOKENS`, `MODEL_THINKING_BUDGET`, `MODEL_CONTEXT_WINDOW`, `CONTEXT_SUMMARIZATION_MODEL`, `MAX_TURNS`, and `MODEL_CACHE_RETENTION` are ignored (a warning is logged once per process). If leftover `MODEL_PROVIDER` is set and `monkeybot.yaml` has no `model.provider`, startup fails instead of silently defaulting to `google_vertexai` / `gemini-2.5-flash`. Set them under `model:` in `monkeybot.yaml`. Credentials (`GEMINI_API_KEY`, `NVIDIA_API_KEY`, …) stay in `.env`.
336
+
337
+ ### Added
338
+
339
+ - Local Ollama prefix-cache knobs: `ollama-local` sends `keep_alive` (default 24h, `model.keep_alive`) and optional pinned `num_ctx` (`model.num_ctx`) via OpenAI-compat `extra_body`. YAML-only — not mapped from the runtime env. `model.context_window` is never mapped to `num_ctx`. See `docs/ollama-local.md` and `examples/ollama/PrefixStable.Modelfile`.
340
+
341
+ ### Fixed
342
+
343
+ - An image inside a tool result (e.g. `load_file`) now reaches OpenAI-compatible models (OpenAI, Ollama, NVIDIA, HuggingFace, OpenRouter) as a real `image_url` promoted into a synthetic user turn after the tool row, instead of a text placeholder telling the model to guess at content it never saw. Anthropic-family, Bedrock, and Gemini already carried this media natively and are unaffected. Also fixes Gemini replaying a media-only tool result as an empty `functionResponse`, and fixes OpenAI-compat prompt-token counting tokenizing an image's base64 data URL as JSON text (a 1MB image previously counted as ~340K tokens and could trigger spurious compaction).
344
+ - Subagent timeout/cancel now walks and kills the full process tree (including nested `run_command` sessions that use their own `start_new_session` process groups), not only the subagent leader's session. `process_group_id` returns `None` when the PID is gone instead of treating a recycled PID as a process group. The tree walk's non-`/proc` fallback (macOS) now uses `pgrep -P` instead of an invalid BSD `ps -P` invocation that silently returned no children. `stop_subagent_process` `killpg`s the spawn-time `pgid` even after the leader has been reaped, and skips the tree walk in that case so a recycled leader PID cannot be used as a `killpg` target.
345
+ - Scheduled loops: a single malformed record — e.g. `interval_ms <= 0` from legacy/hand-edited data — is skipped and logged on Firestore, SQLite, and Postgres `get`/`list_all`/`list_due` instead of raising out of the mapper and stalling the scheduler (or 500ing the loops API).
346
+ - Progressive MCP: harness catalog + `enable_mcp` schema no longer mention `mcp.json`, which sent models to `read_file` a control-plane file outside the workspace. Catalog names are now an `enable_mcp` enum; the tool is omitted when the catalog is empty.
347
+
348
+ ## [browser v0.5.0] - 2026-09-05
349
+
350
+ ### Added
351
+
352
+ - Opt-in per-tool timing via `BROWSER_MCP_PERF=1` (JSONL to `BROWSER_MCP_PERF_LOG` or `<workspace>/browser/perf/tools.jsonl`). Never logs tool arguments. `scripts/perf_bench.py` records the Phase 0 baseline against static fixtures. See [browser-mcp-perf-baseline.md](docs/browser-mcp-perf-baseline.md).
353
+ - The DOM driver is registered once per tab (`Page.addScriptToEvaluateOnNewDocument` / Playwright `add_init_script`) so `browser_get_elements` after navigation is one harness call. `browser_input_by_index` gains `mode` (`auto`/`keys`/`fast`) and returns `mode_used`; default override `BROWSER_MCP_FILL_MODE`. `browser_goto(url, new_tab=False)` reuses the current tab via `goto_url` and an in-page load/settle wait. `browser_click_by_index` adds `warning` when the target is covered by another element.
354
+ - Tab registry with aliases (`t1`, `t2`, …), `tab=` on interaction tools (omitted = focused tab), `browser_open_tab` / `browser_close_tab` / `browser_read_tabs`, enriched `browser_tabs` (`{ok, focused, tabs}` instead of a raw list), alias-aware `browser_switch_tab`, five-tab cap (`BROWSER_MCP_MAX_TABS`, user chooses what to drop), and serialized tool execution. Reads never move focus; actions do. `browser_stop` closes agent-opened tabs.
355
+ - `browser_screenshot` defaults to JPEG (`max_dim=1200`, `quality=60`) and returns `bytes` + `format`. `annotate=True` draws current `get_elements` index labels so the next action can still use `browser_click_by_index`. PNG remains available via `format="png"`. Inline MCP images (7b) are not included.
356
+ - `browser_wait_for` waits with one in-page `MutationObserver` (chunked at 4s to stay under the harness IPC timeout) instead of polling `wait_for_element`. `browser_wait_idle` still uses network idle on the focused tab, then a DOM settle; `ok`/`idle` stay the network result and the response adds `quiet`/`navigated`.
357
+ - `browser_get_elements` defaults to the viewport (`BROWSER_MCP_VIEWPORT_DEFAULT`), filters with `kind` / `contains` / `max_elements=150`, and returns `truncated` + `below_viewport`. Indices stay valid until navigation. `observe="diff"` diffs against the per-tab cached tree. New `browser_get_text` for readable body copy.
358
+ - Action tools (`click`/`input`/`select`/`fill`/`press`/`scroll`/`switch_tab`) settle then return `{action, page, observation}` (diff by default, `BROWSER_MCP_OBSERVE_DEFAULT`; `observe="none"` keeps the legacy shape). `browser_goto` and focused `browser_open_tab` return a full observation. Timing: `BROWSER_MCP_SETTLE_MS` / `BROWSER_MCP_QUIET_MS`. Legacy top-level keys (`clicked`, `index`, `tagName`, `selected`) stay for this release.
359
+ - `browser_act` runs up to 25 sequential steps in one turn (`fill_form` is a step, not a separate tool); `browser_click_text` clicks by visible text; `browser_extract` scrapes structured rows. Shared `do_*` helpers back both the single tools and the batch executor.
360
+ - Optional `playbook` YAML fences in host markdown are executable via `browser_run_playbook`. `browser_list_playbooks` / `browser_goto` list `flows`. `browser_write_playbook` validates fences before save. Timeout: `BROWSER_MCP_PLAYBOOK_TIMEOUT_S` (default 120). Secrets are never flow params — use `{do: login, expected_origin}`.
361
+
362
+ ## [cli v0.6.0] - 2026-09-05
363
+
364
+ ### Added
365
+
366
+ - `doctor` warns on local Ollama `*-mlx` tags, default thinking on known reasoning tags, and huge `num_ctx`, and fails on unparseable/`<1` `num_ctx`. See `docs/ollama-local.md`.
367
+
368
+ ### Changed
369
+
370
+ - New-agent browser skill documents `fill_form` as a `browser_act` / playbook step.
371
+ - Example YAML documents YAML-only `model.*` knobs and drops retired `context_curation`.
372
+ - Declares `monkeybot[cli]>=3.1.0,<4` and `monkeybot-browser-mcp>=0.5.0,<1` so a global CLI install pulls this train.
373
+
374
+ ## [browser v0.4.0] - 2026-08-29
375
+
376
+ ### Added
377
+
378
+ - `browser_login`: sign in with a Spaces-saved password without exposing the credential. Returns the `origin` it acted on and accepts `expected_origin`, so a login cannot silently land on a tab other than the one the agent is driving. In-app CDP uses a tokenized WebSocket URL so a 403 is not misreported as Chrome's Allow-remote-debugging popup.
379
+
380
+ ### Fixed
381
+
382
+ - Scrubs `?token=` values from every browser tool error rather than only daemon startup, so the in-app CDP token cannot reach the agent transcript through a mid-session harness failure.
383
+
384
+ ## [cli v0.5.1] - 2026-08-28
385
+
386
+ ### Changed
387
+
388
+ - CLI extras catalog / `monkeybot new` provider menu lists `ollama-cloud` and `ollama-local` instead of a single `ollama` row. `--with ollama` and `--provider ollama` still work.
389
+
390
+ ## [core v3.0.4] - 2026-08-28
391
+
392
+ ### Added
393
+
394
+ - Explicit `ollama-cloud` and `ollama-local` provider ids so Cloud always hits `https://ollama.com` even when a leftover local `OLLAMA_BASE_URL` is set. Legacy `ollama` still auto-routes from env.
395
+
396
+ ## [core v3.0.3] - 2026-08-23
397
+
398
+ ### Added
399
+
400
+ - Local computer control: nine opt-in, macOS-only `computer_*` tools (`computer/`) let the agent open/reveal files and folders, launch apps, open URLs, read/write the clipboard, and list/find/move/trash files under the user's home directory. Off by default (`computer.enabled: false` / `MONKEYBOT_COMPUTER_TOOLS`); intended for the Monkeybot desktop app, never a server deployment. Every call asks for approval by default via a built-in ruleset baseline (not `permissions.yaml`, which is fail-open); "Always allow" is scoped to the exact `(tool, resource)` approved and persists durably to `monkeybot_config/approvals.json` (a new machine-written file — never hand-edit). Hard security limits (home-directory confinement, credential-path denylist, exec-surface refusal on `open`, trash-not-delete) live in the tool bodies and cannot be bypassed by permission rules. See `docs/features.md` §22.
401
+ - `permissions.yaml`'s `tool-confirmations` approval now supports a durable `persist` hook (`remember_always_approval(..., persist=...)`) in addition to the existing in-session `SessionApprovals` cache; `resource_for_call` gained `url`/`app` argument lookups for readable permission resource strings on tools with no `path` arg.
402
+
403
+ ### Fixed
404
+
405
+ - Anthropic SDK 1.0 removed `temperature` / `top_p` / `top_k` from `messages.stream()`. Filter stream kwargs to the callable signature and retry `TypeError: unexpected keyword argument` so Claude/Bedrock streams no longer die before the request.
406
+ - Stop during a tool confirmation sets the turn cancel Event in `POST /cancel` (and on realtime interrupt) before pending futures are cancelled, so completed tool results settle into history instead of racing a 50ms poller. Session DELETE and websocket teardown leave the Event unset and propagate cancellation. Spill writes refuse an uncontained `_` symlink fallback; transcript and attachment dirs reuse a safe pre-sanitization folder when it still exists on disk. Attachment reads also reject symlinked attachment ids that resolve outside the workspace.
407
+
408
+ ## [core v3.0.2] - 2026-08-18
409
+
410
+ ### Fixed
411
+
412
+ - Compute-only OpenSandbox (`SANDBOX_SHARED_FILESYSTEM=false`) no longer rejects every `run_command` when the harness passes the default workspace-root cwd. Nested workspace cwd and workspace/skills path args are still refused.
413
+
414
+ ## [core v3.0.1] - 2026-08-18
415
+
416
+ ### Fixed
417
+
418
+ - Host `run_command` no longer fail-closes every command when filesystem isolation is unavailable and none of the memory hidden paths exist on disk (typical in nested Linux containers with memory off). Isolation is still required — and the command still refused — when at least one palace path is present.
419
+
420
+ ## [core v3.0.0] - 2026-08-17
421
+
422
+ ### Breaking
423
+
424
+ - Note-based memory (INDEX.md, curator, `search_memory` / `edit_memory` / `forget`) is replaced by per-agent MemPalace with a durable outbox on SQLite, Postgres, and Firestore. Capture can be turned off with `memory.enabled: false` or `MONKEYBOT_MEMORY_HOOK_ENABLED=0`. Object-store palace URIs (`gcs://`, `s3://`) are not supported; use `local://`. MemPalace itself is the optional `monkeybot[memory]` extra.
425
+ - `subagents:` as a bare list of personas is no longer supported; wrap personas under `subagents.personas` in `monkeybot.yaml`. `SUBAGENT_TIMEOUT_SEC`, `SUBAGENT_MAX_TURNS`, and `MONKEYBOT_SUBAGENT_AGENT_MD` environment variable overrides are removed — set `subagents.timeout_sec`, `subagents.max_turns`, and per-persona `agent_md` in `monkeybot.yaml` instead. Top-level `subagents.agent_md` is also removed.
426
+
427
+ ### Added
428
+
429
+ - MemPalace outbox now persists on Postgres and Firestore (same table/document shape as SQLite), with replica `palace_id` claim partitioning. Replicated deployments must share a lock-capable palace volume.
430
+ - Knowledge indexing follows document structure instead of fixed line windows: markdown headings, code definitions (tree-sitter via the optional `knowledge-ast` extra, brace/indent heuristic otherwise), and JSON/YAML/TOML top-level keys become chunk boundaries.
431
+ - Embeddings run on NVIDIA, OpenAI, any OpenAI-compatible endpoint, Voyage, or Gemini via `knowledge.embeddings.provider`. Misconfigured or unavailable providers degrade to keyword + graph search rather than failing the turn.
432
+ - PDF, DOCX, and image files are indexed with the `knowledge-media` extra. Images use `knowledge.captions` (`off` / `path` / `llm`); DOCX indexing covers tables as well as paragraphs.
433
+ - Subagents search the parent workspace index read-only, and a second gateway attempting to write the same index is refused.
434
+ - Soft spill and unified `read_file` char budgets derive from `model.context_window`: large tool results always land on disk with a large inline body when headroom allows; `read_file` returns `next_offset` and never lies about `end_line`.
435
+ - When memory is off, host `run_command` children cannot see palace files (Linux user+mount namespaces or macOS `sandbox-exec`). If isolation cannot be established, the command is refused. OpenSandbox does not mount the palace. `/tmp` and `/var/folders` are no longer implicitly allowlisted path prefixes.
436
+
437
+ ### Fixed
438
+
439
+ - Firestore scheduled-loop `defer_tick` and `release_stale_claims` now re-check claim ownership / lease freshness inside a transaction (matching SQL `WHERE` guards), so a stale worker cannot clear another worker's reclaimed tick and a renewed heartbeat cannot be wiped mid-release.
440
+ - Inline `task` subagent timeout/cancel kills the process group (not only the direct child), matching the worker-pool path so nested shell descendants do not keep running after Stop. The inline subagent is detached from the parent process group (`start_new_session`), so a parent SIGKILL/crash no longer tears it down automatically — cleanup relies on timeout/cancel paths. Inline `task` has no `subagent.pid` reap path (unlike the worker pool); orphans after a hard parent crash are accepted on that path.
441
+ - Stop during a tool confirmation now settles completed tool results into history (and synthesizes cancel envelopes for the rest) instead of escaping before abort settlement; the realtime confirm path does the same. Cancel after a finished provider stream also persists already-shown assistant text so follow-ups match what the user saw, and settles any finalized tool calls with cancel envelopes.
442
+ - SQLite `history.reset` (compaction / load-max truncate) runs delete+reinsert in one transaction, matching Postgres, so a crash mid-reset cannot wipe or partially rewrite a thread.
443
+ - Tool spill paths sanitize client `session_id` / `thread_id` components and refuse to write or delete outside `.monkeybot/spill`; `POST /sessions` rejects path-traversal session ids; session DELETE quiesces the active turn before removing spill dirs. The same path-component sanitizer also applies to transcript and attachment directories, so legacy ids containing glob metacharacters map to a sanitized on-disk folder (reads still find a pre-sanitization folder when it exists).
444
+ - Streamable HTTP MCP connects accept both 2-tuple and 3-tuple transport yields from the MCP Python SDK.
445
+ - Stop mid-reply now cancels the in-flight provider token stream (instead of waiting for the full LLM call) and persists any already-streamed assistant text to history so follow-up turns keep matching what the user saw.
446
+ - Chunking improvements now reach existing workspaces: a chunker version bump re-chunks indexed files even when their modification time never changed, so upgrades no longer require deleting `.monkeybot/knowledge/`.
447
+ - Vector search scores only vectors from the active embedding model. Switching provider or `dimensions` purges the incomparable rows at startup and re-embeds them, instead of blending two models into one similarity ranking.
448
+ - The knowledge index writer lock is claimed atomically, so two gateways starting at the same moment can no longer both believe they own the index.
449
+ - Embedding requests carry a per-request timeout, so one slow endpoint cannot stall an indexing pass; cached vector matrices are bounded by a memory budget with least-recently-used eviction.
450
+ - PDF extraction closes its file handle (previously leaked a descriptor per file on large scans), the code chunker no longer splits mid-function when a docstring contains an unbalanced brace, and `knowledge.chunk_overlap_ratio` is honored for markdown, code, and structured files.
451
+ - `read_file` no longer applies a post-hoc 32k char chop after line selection (which made `end_line` lie and caused the model to skip unread lines when paging).
452
+ - `read_file` reports `truncated: false` and omits `next_offset` when a read reaches the end of the file, instead of marking every complete read truncated and pointing past EOF. A line too long for the whole char budget is now marked inline where it was cut.
453
+ - Tool results too large to inline as-is are shaped into still-valid JSON (with `… (+N more items)` markers) rather than inlined as a raw, unparseable JSON prefix.
454
+ - Context summarization sizes its per-result cap from the active model's context window rather than a hardcoded 200k window.
455
+
456
+ ### Changed
457
+
458
+ - `mcp` is pinned to `>=1.0.0,<2` until Streamable HTTP can construct an `httpx2.AsyncClient` for MCP SDK 2.x (see #190).
459
+ - Subagent defaults and named personas are now configured under a single `subagents:` YAML mapping (`subagents.timeout_sec`, `subagents.max_turns`, `subagents.vertex_google_search`, `subagents.personas`), replacing the separate `subagent:` defaults block and bare-list `subagents:` personas. Persona prompts live only on `subagents.personas[].agent_md`; tasks without a `subagent_type` inherit the parent `paths.agent_md`.
460
+ - Spill sizing is window-derived (soft spill). `tools.spill_min_chars` / `tools.spill_read_max_lines` / `tools.read_default_lines` are retired (warned, ignored). `tools.read_max_lines` is YAML-only (env overrides removed). `read_file` defaults to 2000 lines when `limit` is omitted; pass `limit` to request more. Large ordinary reads can return more content than the old flat 32k cap.
461
+
462
+ ## [browser v0.3.0] - 2026-08-17
463
+
464
+ ### Added
465
+
466
+ - AWS Bedrock AgentCore Browser backend via the optional `agentcore` extra (`bedrock-agentcore`, Playwright).
467
+ - Prefer a Monkeyapp in-app CDP endpoint over desktop Chrome or a stale `BROWSER_CDP_*` env when the in-app CDP file is present.
468
+
469
+ ### Changed
470
+
471
+ - `mcp` is pinned to `>=1.0.0,<2` (same Streamable HTTP constraint as core; see #190).
472
+
473
+ ## [cli v0.5.0] - 2026-08-17
474
+
475
+ ### Added
476
+
477
+ - `monkeybot run` / `chat` / `talk` refuse to start when the agent interpreter lacks MonkeyBot 3.x (and MemPalace when memory is enabled). A failed probe may `uv sync` an existing lock; it never rewrites `pyproject.toml`. Config-only agents with memory on get a CLI-managed cache venv holding `monkeybot[memory]` pinned to the running core, reused offline. A local monkeybot checkout can provision that runtime from source; the cache invalidates when those sources change.
478
+ - `monkeybot chat` TUI gained Claude-Code-style interaction: `Esc` interrupts the active turn (double-tap while idle recalls your last message for editing), `Shift+Tab` cycles a client-side approval mode (`normal` / `auto-approve` / `deny-confirms` — auto-answers tool confirmation prompts only, elicitations still ask), `@` fuzzy-inserts a workspace file path, `!<command>` runs a local shell command shown in the transcript but never sent to the agent, and `?` opens a keyboard-shortcut overlay. New slash commands: `/clear` (alias of `/new`), `/model` (switches model by starting a fresh session), `/status`, `/config`.
479
+ - `monkeybot chat -c` / `--continue` resumes the most recent session for the current agent.
480
+
481
+ ### Changed
482
+
483
+ - `monkeybot new` no longer scaffolds capability skills into new agents.
484
+ - Declares `monkeybot[cli]>=3.0.0,<4` so a global CLI install pulls MonkeyBot 3.x.
485
+
486
+ ## [cli v0.3.1] - 2026-07-28
487
+
488
+ ### Changed
489
+
490
+ - Scaffold `monkeybot.example.yaml` documents harness-fixed `read_file` default (2000 lines), YAML-only `tools.read_max_lines`, and retired `read_default_lines` / spill knobs. `model.context_window` notes that it also drives soft-spill / read char budgets.
491
+
492
+ ## [core v2.2.0] - 2026-07-13
493
+
494
+ ### Added
495
+
496
+ - Canonical agent-root layout and a read-only virtual `skills/` root.
497
+
498
+ ### Changed
499
+
500
+ - Remote sandboxes require an explicit compute-only capability setting.
501
+
502
+ ### Breaking
503
+
504
+ - Workspace or skills symlinks that resolve outside their respective roots are now rejected. Move their targets inside the agent's `workspace/`, `data/`, or `skills/` layout.
505
+
506
+ ## [browser v0.2.0] - 2026-07-13
507
+
508
+ ### Added
509
+
510
+ - Browser MCP package release supporting the canonical agent layout.
511
+
512
+ ## [cli v0.3.0] - 2026-07-13
513
+
514
+ ### Added
515
+
516
+ - Agent scaffolds now include the canonical layout, Dockerfile, and disabled browser MCP configuration.
517
+
518
+ ### Fixed
519
+
520
+ - `monkeybot chat` no longer adopts a stale gateway on a busy port: it refuses to spawn when the port is already in use (suggesting `/bye`, stopping `monkeybot run`, or `--attach`), and `wait_for_health` rejects a `/health` 200 if the child process has already exited.
521
+
522
+ ## [0.2.1] - 2026-07-13
523
+
524
+ ### Added
525
+
526
+ - First PyPI release of **monkeybot-cli** (Trusted Publishing) — install with `uv tool install monkeybot-cli`.
527
+
528
+
529
+ ## [2.1.1] - 2026-07-13
530
+
531
+ ### Added
532
+
533
+ - Evals: `response_regex` and `response_not_contains` deterministic assertions; run files now persist per-turn prompt/response text, and `python -m evals.diff` pinpoints the exact turn behind a regression between two runs.
534
+ - Live eval smoke workflow now also runs on every push to `main` (report-only, scorecard on the run Summary page) and on manual dispatch, in addition to the existing PR gates.
535
+ - Live evals need only `NVIDIA_API_KEY`: the deepeval judge can now run on build.nvidia.com models (`JUDGE_PROVIDER=nvidia`) via NVIDIA's OpenAI-compatible endpoint, and CI pins agent (`meta/llama-3.3-70b-instruct`) and judge (`nvidia/llama-3.3-nemotron-super-49b-v1`) to two different free NVIDIA-hosted models. The workflow also now sets `MODEL_PROVIDER`/`MODEL_NAME` explicitly — previously it booted whatever `demo_agent`'s committed config said (ollama, which doesn't exist in CI).
536
+ - Repo-root `monkeybot_config_example/` — full-option human-readable config templates (`.example` filenames).
537
+ - `monkeybot new` also scaffolds `permissions.yaml`.
538
+ - `monkeybot new` writes an agent-project `pyproject.toml` with a PyPI `monkeybot[<provider>]>=2.1.0,<3` dependency (plain `uv sync` after scaffold).
539
+ - `monkeybot new` interactive menus (and `--with`) select additional providers/features into that same `monkeybot[…]` dep list.
540
+ - `scripts/smoke_global_cli.sh` — local-wheel stand-in for clean-machine PyPI smoke (`uv tool install` → `new` → `uv sync` → `validate`/`doctor`/`chat`).
541
+ - README / getting-started / onboarding skill lead with `uv tool install monkeybot-cli` (clone is contributor-only).
542
+ - **monkeybot-cli** declares published core bound `monkeybot[cli]>=2.1.0,<3` (local clones still use `[tool.uv.sources]`).
543
+
544
+ ### Removed
545
+
546
+ - Evals FastAPI service (`evals/main.py`, in-memory store, WebSocket fan-out, Dockerfile, `docker-compose.evals.yml`) — nothing consumed its HTTP/WS API; `python -m evals.report` is the single execution path. `google-genai` (Gemini judge dep) moved into the root `evals` extra.
547
+
548
+ ### Changed
549
+
550
+ - `monkeybot doctor` remediation for missing extras: add `monkeybot[<extra>]` to agent deps + `uv sync` (keeps `uv sync --extra` only when the agent defines project-level optionals).
551
+ - `fake` provider credentials treated as optional in `doctor` (smoke / no-API-key path).
552
+ - `publish-release.yml` Trusted-Publishes to PyPI (OIDC) packages tagged in that run only — core before cli; `scripts/release.py publish` emits `packages` via `GITHUB_OUTPUT`.
553
+ - Remove redundant CLI hatch `force-include` of `scaffold_defaults` (duplicated wheel paths and broke `uv build`).
554
+ - Scaffold templates and `run_new` moved into **monkeybot-cli** (`monkeybot_cli.scaffold` / `scaffold_defaults`). Harness `monkeybot.scaffold` is a compatibility shim; Docker installs the CLI to scaffold at image build.
555
+ - **monkeybot-cli** version bumped to **0.2.0**.
556
+
557
+ - README integrations tables aligned with v2.0.0 shipped scope (per CHANGELOG); removed speculative "Coming Soon" items to BACKLOG.md with a short near-term roadmap.
558
+ - Reframed public positioning: multi-cloud-capable harness with **GCP-first** docs (README, cloud deployment design, getting started, features, Pattern A guide). Clarifies this is not a universal integration catalog; documents AWS shipped paths alongside GCP examples.
559
+
560
+ ## [2.0.0] - 2026-07-05
561
+
562
+ Major v2 rewrite: FastAPI SSE gateway, owned agent loop, pluggable storage, multi-provider support, CLI, evals, and cloud-ready deployment artifacts.
563
+
564
+ ### Added
565
+
566
+ #### Gateway & runtime
567
+ - **2026-05-14** — FastAPI SSE gateway (`monkeybot.gateway.sse`): `POST /sessions`, `GET /sessions/{id}/events` (SSE with `Last-Event-ID` resume), `POST /sessions/{id}/reply`, `GET /health`. SQLite-backed session bus.
568
+ - **2026-05-14** — Owned agent loop (`monkeybot.core.runtime.loop`) with streaming provider integration, tool execution, history append, and inspector hooks. Per-turn usage recorded.
569
+ - **2026-05-14** — Harness fixed prompt (`monkeybot.core.prompts.harness_prompt`) — non-overridable system block describing tool names, paths, MCP naming, and skill usage, appended after the bot's `AGENT.md`.
570
+ - **2026-05-14** — Context-window safety: pre-call token counting against `MODEL_CONTEXT_WINDOW`, sync history summarization at threshold, and tool-result spill to `.monkeybot/spill/{thread_id}/{call_id}.txt` with capped in-history text + path hint.
571
+ - **2026-05-14** — Subagents (`subagent_proto.py`, `subagent_worker.py`) — parallel `task` tool that fans out work over `asyncio.gather`; results appended in stable `call_id` order.
572
+ - **2026-06-24** — Structured debug and error logging for the agent loop.
573
+ - **2026-06-23** — Auto-create session on first send and background final assistant write.
574
+ - **2026-06-26** — Tier 1–2 token optimization for context and tool output.
575
+ - **2026-06-28** — Repair broken tool turns in memory before provider replay.
576
+ - **2026-06-29** — Opt-in terse emission-style guidance in the harness prompt.
577
+ - **2026-07-01** — Opt-in session transcript capture for harness debugging (`GET` usage, SSE, usage DB).
578
+ - **2026-07-01** — Prompt-first scheduled loops: `start_loop` tool, scheduler worker, and Firestore-backed loop store.
579
+
580
+ #### Memory & context
581
+ - **2026-05-14** — Memory (`monkeybot.core.memory`): markdown files under `MEMORY_PATH` with optional `INDEX.md` snapshotted into context; `search_memory` for on-demand lookup; mid-turn refresh via `refresh_memory_index()`.
582
+ - **2026-05-14** — Memory organizer (`monkeybot.core.memory.organizer`) — async post-turn classifier that updates `INDEX.md` and routes new entries to the right markdown file.
583
+ - **2026-05-15** — Context curation configuration (`CONTEXT_CURATION_*` env vars) and optional secondary LLM curator pass.
584
+ - **2026-07-02** — Hybrid memory curation: append-only INDEX with archive cap, sliding `memory_window_lines`, structural coverage/confidence with `search_memory` nudge when truncated, optional LLM curator (`mode`: window/curator/hybrid), and index fingerprint cache to skip repeat curator calls.
585
+ - **2026-07-09** — Simplified context curation to a single path (recent window; curator only when token-heavy). Removed `CONTEXT_CURATION_MODE` / `window`/`curator`-only modes and dropped `memory_threshold`, `max_memory_lines`, and `search_max_hits` knobs (#67).
586
+ - **2026-07-02** — Skills discovered via `list_skills` instead of full prompt injection; skill names always injected from `ctx.skills`; `list_skills`/`read_file` remain the path for the skills root and full `SKILL.md` procedure.
587
+
588
+ #### Tools, skills & workspace
589
+ - **2026-05-14** — MCP (`mcp_client.py`, `ports_mcp.py`) — stdio + streamable HTTP MCP servers loaded from `MCP_CONFIG`; tools exposed as `server__tool`.
590
+ - **2026-05-16** — Web search integration and enhanced tool invocation.
591
+ - **2026-05-20** — MCP OAuth2 client credentials and password grant with strict validation.
592
+ - **2026-05-14** — Skills (`monkeybot.core.context._discover_skills`, `monkeybot.skills.{loader,executor}`) — folder-based skills under `SKILLS_PATH` with `SKILL.md` per skill.
593
+ - **2026-05-14** — Workspace tools (`workspace_tools.py`, `workspace_service.py`) — read/write/edit/find under a configurable workspace scope; paths under `.monkeybot` bypass `WORKSPACE_WRITE_SCOPE_REL`.
594
+ - **2026-06-24** — `render_image` tool, `ImageBlock` SSE events, and Gemini image-generation fixes.
595
+ - **2026-06-24** — Default `deny_patterns` block package installs via `run_command`.
596
+ - **2026-06-30** — Browser MCP integration (`integrations/browser-mcp/`) with tool result ingress guards.
597
+ - **2026-07-02** — YAML frontmatter `description` parsing for `list_skills`.
598
+
599
+ #### Providers
600
+ - **2026-05-14** — Provider adapters: Vertex / Gemini, OpenAI, Anthropic, Anthropic-on-Vertex. Resolved via `monkeybot.core.config.get_provider_config()`.
601
+ - **2026-05-18** — HuggingFace Inference API provider.
602
+ - **2026-05-18** — OpenTelemetry observability integration with runbook and configuration.
603
+ - **2026-06-22** — Provider prompt caching, cost telemetry, and playground model UI.
604
+ - **2026-06-30** — Ollama provider for local models.
605
+ - **2026-06-30** — Shared stream / `count_input_tokens` logic for OpenAI-compatible providers.
606
+ - **2026-07-01** — NVIDIA NIM provider (`monkeybot[nvidia]`).
607
+ - **2026-07-03** — Vertex `google_search` grounding for Gemini (agent turns only); CLI display for grounding metadata.
608
+
609
+ #### Storage & persistence
610
+ - **2026-05-17** — Storage abstraction layer (SQLite / Postgres, Step 1 + 1.5).
611
+ - **2026-05-17** — Pluggable memory storage (`WorkspaceStorage` + `MemorySubsystem`, Step 2).
612
+ - **2026-06-23** — Firestore backend, worker pool, and playground chat history.
613
+ - **2026-06-30** — Opt out of auto schema via `paths.auto_schema` in `monkeybot.yaml`.
614
+
615
+ #### CLI & developer experience
616
+ - **2026-06-24** — Standalone `monkeybot` CLI for agent setup and terminal chat (`monkeybot new`, `monkeybot chat`, `monkeybot run`).
617
+ - **2026-06-25** — Named subagent personas via `monkeybot.yaml` and `task(subagent_type)`.
618
+ - **2026-06-25** — `monkeybot` skill as a [skills.sh](https://skills.sh) entry point for onboarding.
619
+ - **2026-06-26** — Pinned session status bar in `monkeybot chat`.
620
+ - **2026-06-30** — Self-contained `demo_agent/` example (replaces playground) with its own `pyproject.toml` and editable path dependency.
621
+ - **2026-06-30** — `develop` → `main` release process and `scripts/release.py` helpers.
622
+ - **2026-07-01** — Chat UX polish and Ollama thinking-level control.
623
+
624
+ #### Evals & testing
625
+ - **2026-05-18** — Evals service, playground UI, and agent behavior tests.
626
+ - **2026-07-01** — Live eval PR scorecard: telemetry, requirement gates, smoke suite, and CI wiring.
627
+
628
+ #### Deployment & packaging
629
+ - **2026-05-17** — Public Docker artifacts (Step 3): `docker-compose.yml`, `docker/opensandbox.docker.toml`, `.env.example`, `docker/Dockerfile` with `HEALTHCHECK`.
630
+ - **2026-05-17** — Step 4 deployment guides (Pattern A, B, C).
631
+ - **2026-05-17** — Harness-as-library (Step 5) for embedding the runtime in other services.
632
+ - **2026-05-18** — OSS sanitization: gitignore `internal/`, GCP placeholders, public playground Docker.
633
+ - **2026-05-16** — Opt-in OpenSandbox execution backend.
634
+ - **2026-05-14** — Demo agent under `demo_agent/`, default skills under `.agents/skills/`.
635
+ - **2026-05-14** — Docs (v2): `docs/getting-started.md`, `docs/skills.md`; configuration reference in `.env.example`.
636
+ - **2026-05-14** — Test + bench infra: `tests/` (pytest + pytest-asyncio) and `testing/bench.py`.
637
+
638
+ #### Multimodal & UI
639
+ - **2026-06-22** — Multimodal attachments and refreshed playground chat UI.
640
+ - **2026-06-24** — Chat UI interleaves assistant prose with tool cards in the transcript.
641
+
642
+ ### Changed
643
+
644
+ - **2026-05-14** — Packaging: `pyproject.toml` authors set to `human-plus-machine`; repository URLs point at `https://github.com/human-plus-machine/monkeybot`. Build backend is `hatchling`; package layout is `src/monkeybot`.
645
+ - **2026-05-14** — Default `SKILLS_PATH` is `./.agents/skills` (matches `.env.example` and `docker/Dockerfile`).
646
+ - **2026-05-16** — Core module restructure and configuration cleanup; legacy files removed.
647
+ - **2026-06-24** — Improved tool failure recovery and progress visibility in prompts.
648
+ - **2026-06-25** — Harness context budgeting and unified provider sampling parameters.
649
+ - **2026-06-26** — Gateway spawned from the agent project's Python env instead of the CLI env.
650
+ - **2026-06-30** — Scaffold consolidated packaged defaults; unified on `monkeybot new`.
651
+ - **2026-06-30** — Provider and runtime paths deduplicated; observability gap logging improved.
652
+ - **2026-07-02** — Pre-flight prompt tokens: summarization threshold and `estimated_prompt_tokens` use each provider's tokenizer / count API (`Provider.count_input_tokens`). OpenAI installs should include the `openai` extra (adds `tiktoken`).
653
+ - **2026-07-02** — Configurable history summarization model via `CONTEXT_SUMMARIZATION_MODEL`, optional `model.summarization_model` in `monkeybot.yaml`, or `TurnContext.summarization_model`; main turn still uses `ctx.model`.
654
+
655
+ ### Fixed
656
+
657
+ - **2026-05-14** — Anthropic harness tool-call replay correctness.
658
+ - **2026-05-18** — Gateway resolves LLM providers via `get_provider_config`.
659
+ - **2026-06-23** — Task queue, worker claims, and session resume hardened.
660
+ - **2026-06-29** — Agent-root resolution, malformed tool args, and chat stream exit code.
661
+ - **2026-07-01** — OpenAI-compatible providers request stream usage metadata.
662
+ - **2026-07-03** — Skill names restored in prompt; session teardown on disconnect.