jaato-server 0.7.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 (1363) hide show
  1. jaato_server-0.7.0/PKG-INFO +1252 -0
  2. jaato_server-0.7.0/PKG_README.md +1166 -0
  3. jaato_server-0.7.0/README.md +5 -0
  4. jaato_server-0.7.0/jaato_embedded/__init__.py +15 -0
  5. jaato_server-0.7.0/jaato_embedded/client.py +1094 -0
  6. jaato_server-0.7.0/jaato_embedded/permission.py +118 -0
  7. jaato_server-0.7.0/jaato_server.egg-info/PKG-INFO +1252 -0
  8. jaato_server-0.7.0/jaato_server.egg-info/SOURCES.txt +1361 -0
  9. jaato_server-0.7.0/jaato_server.egg-info/dependency_links.txt +1 -0
  10. jaato_server-0.7.0/jaato_server.egg-info/entry_points.txt +32 -0
  11. jaato_server-0.7.0/jaato_server.egg-info/requires.txt +92 -0
  12. jaato_server-0.7.0/jaato_server.egg-info/top_level.txt +3 -0
  13. jaato_server-0.7.0/pyproject.toml +190 -0
  14. jaato_server-0.7.0/server/__init__.py +108 -0
  15. jaato_server-0.7.0/server/__main__.py +2043 -0
  16. jaato_server-0.7.0/server/apparmor.py +3057 -0
  17. jaato_server-0.7.0/server/cgroups.py +552 -0
  18. jaato_server-0.7.0/server/client_tools.py +164 -0
  19. jaato_server-0.7.0/server/command_router.py +2203 -0
  20. jaato_server-0.7.0/server/core.py +6991 -0
  21. jaato_server-0.7.0/server/egress_proxy/__init__.py +32 -0
  22. jaato_server-0.7.0/server/egress_proxy/config.py +145 -0
  23. jaato_server-0.7.0/server/egress_proxy/errors.py +20 -0
  24. jaato_server-0.7.0/server/egress_proxy/manager.py +86 -0
  25. jaato_server-0.7.0/server/egress_proxy/nft.py +212 -0
  26. jaato_server-0.7.0/server/egress_proxy/proxy.py +280 -0
  27. jaato_server-0.7.0/server/egress_proxy/tests/__init__.py +0 -0
  28. jaato_server-0.7.0/server/egress_proxy/tests/test_config.py +90 -0
  29. jaato_server-0.7.0/server/egress_proxy/tests/test_manager.py +76 -0
  30. jaato_server-0.7.0/server/egress_proxy/tests/test_nft.py +189 -0
  31. jaato_server-0.7.0/server/egress_proxy/tests/test_proxy.py +178 -0
  32. jaato_server-0.7.0/server/egress_proxy/tests/test_wireup.py +209 -0
  33. jaato_server-0.7.0/server/egress_proxy/wireup.py +194 -0
  34. jaato_server-0.7.0/server/env_report.py +70 -0
  35. jaato_server-0.7.0/server/event_sink.py +139 -0
  36. jaato_server-0.7.0/server/health_check.py +111 -0
  37. jaato_server-0.7.0/server/ipc.py +1219 -0
  38. jaato_server-0.7.0/server/loop_watchdog.py +347 -0
  39. jaato_server-0.7.0/server/revive_policy.py +253 -0
  40. jaato_server-0.7.0/server/runner/__init__.py +20 -0
  41. jaato_server-0.7.0/server/runner/__main__.py +627 -0
  42. jaato_server-0.7.0/server/runner/bootstrap.py +195 -0
  43. jaato_server-0.7.0/server/runner/cli_runner.py +208 -0
  44. jaato_server-0.7.0/server/runner/echo_tool.py +30 -0
  45. jaato_server-0.7.0/server/runner/envelope.py +437 -0
  46. jaato_server-0.7.0/server/runner/json_codec.py +127 -0
  47. jaato_server-0.7.0/server/runner/rpc.py +5723 -0
  48. jaato_server-0.7.0/server/runner/rpc_client.py +435 -0
  49. jaato_server-0.7.0/server/runner/sanitize.py +85 -0
  50. jaato_server-0.7.0/server/runner/session.py +1386 -0
  51. jaato_server-0.7.0/server/runner/slot_plugins.py +374 -0
  52. jaato_server-0.7.0/server/runner/tests/__init__.py +0 -0
  53. jaato_server-0.7.0/server/runner/tests/conftest.py +87 -0
  54. jaato_server-0.7.0/server/runner/tests/test_bidirectional_rpc.py +314 -0
  55. jaato_server-0.7.0/server/runner/tests/test_bootstrap.py +194 -0
  56. jaato_server-0.7.0/server/runner/tests/test_cli_runner.py +226 -0
  57. jaato_server-0.7.0/server/runner/tests/test_client_tools_injection.py +161 -0
  58. jaato_server-0.7.0/server/runner/tests/test_description_callback_bridge_phase_4_4.py +331 -0
  59. jaato_server-0.7.0/server/runner/tests/test_envelope.py +143 -0
  60. jaato_server-0.7.0/server/runner/tests/test_notification_frame_protocol.py +408 -0
  61. jaato_server-0.7.0/server/runner/tests/test_post_turn_forwarding_on_cancel.py +151 -0
  62. jaato_server-0.7.0/server/runner/tests/test_pre_step6_toolbar_coherence.py +299 -0
  63. jaato_server-0.7.0/server/runner/tests/test_rendered_system_instruction_rpc.py +138 -0
  64. jaato_server-0.7.0/server/runner/tests/test_rpc_client_spawn_isolated_runner.py +316 -0
  65. jaato_server-0.7.0/server/runner/tests/test_rpc_lane_classification.py +205 -0
  66. jaato_server-0.7.0/server/runner/tests/test_rpc_protocol.py +530 -0
  67. jaato_server-0.7.0/server/runner/tests/test_runner_configure_plugins_path_d.py +533 -0
  68. jaato_server-0.7.0/server/runner/tests/test_runner_rpc_bootstrap_main_thread.py +250 -0
  69. jaato_server-0.7.0/server/runner/tests/test_runner_rpc_client_wiring_step7_2.py +243 -0
  70. jaato_server-0.7.0/server/runner/tests/test_runner_runtime_connect_path_c.py +345 -0
  71. jaato_server-0.7.0/server/runner/tests/test_runner_session_apparmor_child_install.py +434 -0
  72. jaato_server-0.7.0/server/runner/tests/test_runner_session_host.py +345 -0
  73. jaato_server-0.7.0/server/runner/tests/test_runner_session_model_tiers.py +129 -0
  74. jaato_server-0.7.0/server/runner/tests/test_runner_session_self_confine_5a.py +238 -0
  75. jaato_server-0.7.0/server/runner/tests/test_runner_session_tools_empty.py +138 -0
  76. jaato_server-0.7.0/server/runner/tests/test_runner_session_workspace_env.py +260 -0
  77. jaato_server-0.7.0/server/runner/tests/test_runner_workspace_context.py +63 -0
  78. jaato_server-0.7.0/server/runner/tests/test_sanitize.py +201 -0
  79. jaato_server-0.7.0/server/runner/tests/test_session_append_history_message_rpc.py +358 -0
  80. jaato_server-0.7.0/server/runner/tests/test_session_bootstrap_rpc.py +301 -0
  81. jaato_server-0.7.0/server/runner/tests/test_session_config_rpc.py +253 -0
  82. jaato_server-0.7.0/server/runner/tests/test_session_dispatch_lifecycle_e2e.py +276 -0
  83. jaato_server-0.7.0/server/runner/tests/test_session_end_rpc.py +318 -0
  84. jaato_server-0.7.0/server/runner/tests/test_session_execute_user_command_rpc.py +519 -0
  85. jaato_server-0.7.0/server/runner/tests/test_session_executor_route.py +302 -0
  86. jaato_server-0.7.0/server/runner/tests/test_session_get_all_state_rpc.py +267 -0
  87. jaato_server-0.7.0/server/runner/tests/test_session_get_auth_info_rpc.py +370 -0
  88. jaato_server-0.7.0/server/runner/tests/test_session_get_context_limit_rpc.py +218 -0
  89. jaato_server-0.7.0/server/runner/tests/test_session_get_model_completions_rpc.py +407 -0
  90. jaato_server-0.7.0/server/runner/tests/test_session_get_tool_schemas_rpc.py +486 -0
  91. jaato_server-0.7.0/server/runner/tests/test_session_get_user_commands_rpc.py +393 -0
  92. jaato_server-0.7.0/server/runner/tests/test_session_health_check.py +222 -0
  93. jaato_server-0.7.0/server/runner/tests/test_session_history_rpc.py +373 -0
  94. jaato_server-0.7.0/server/runner/tests/test_session_inject_prompt_rpc.py +419 -0
  95. jaato_server-0.7.0/server/runner/tests/test_session_method_wrappers_e2e.py +329 -0
  96. jaato_server-0.7.0/server/runner/tests/test_session_presentation_context_rpc.py +196 -0
  97. jaato_server-0.7.0/server/runner/tests/test_session_replay_messages_rpc.py +404 -0
  98. jaato_server-0.7.0/server/runner/tests/test_session_reset_rpc.py +180 -0
  99. jaato_server-0.7.0/server/runner/tests/test_session_resolve_fork_point_rpc.py +465 -0
  100. jaato_server-0.7.0/server/runner/tests/test_session_restore_conversation_budget_rpc.py +410 -0
  101. jaato_server-0.7.0/server/runner/tests/test_session_restore_turn_accounting_rpc.py +384 -0
  102. jaato_server-0.7.0/server/runner/tests/test_session_send_message_notification_emit.py +716 -0
  103. jaato_server-0.7.0/server/runner/tests/test_session_send_message_rpc.py +640 -0
  104. jaato_server-0.7.0/server/runner/tests/test_session_set_initial_history_rpc.py +405 -0
  105. jaato_server-0.7.0/server/runner/tests/test_session_set_parallel_tools_override_rpc.py +305 -0
  106. jaato_server-0.7.0/server/runner/tests/test_session_set_reference_authorizer_rpc.py +325 -0
  107. jaato_server-0.7.0/server/runner/tests/test_session_shutdown_rpc.py +277 -0
  108. jaato_server-0.7.0/server/runner/tests/test_session_snapshot_conversation_budget_rpc.py +382 -0
  109. jaato_server-0.7.0/server/runner/tests/test_session_snapshot_instruction_budget_rpc.py +353 -0
  110. jaato_server-0.7.0/server/runner/tests/test_session_state_rpc.py +398 -0
  111. jaato_server-0.7.0/server/runner/tests/test_session_try_completion_nudge_rpc.py +451 -0
  112. jaato_server-0.7.0/server/runner/tests/test_session_try_drain_pending_user_rpc.py +362 -0
  113. jaato_server-0.7.0/server/runner/tests/test_session_turn_accounting_rpc.py +161 -0
  114. jaato_server-0.7.0/server/runner/tests/test_shim_agent_completed_forward.py +237 -0
  115. jaato_server-0.7.0/server/runner/tests/test_shim_remaining_hooks_forward.py +296 -0
  116. jaato_server-0.7.0/server/runner/tests/test_slot_scoped_plugin_carry.py +454 -0
  117. jaato_server-0.7.0/server/runner/tool_executor.py +85 -0
  118. jaato_server-0.7.0/server/runner_pool.py +1072 -0
  119. jaato_server-0.7.0/server/runner_rpc_client.py +2855 -0
  120. jaato_server-0.7.0/server/runner_rpc_handlers/__init__.py +18 -0
  121. jaato_server-0.7.0/server/runner_rpc_handlers/apparmor_fragment.py +176 -0
  122. jaato_server-0.7.0/server/runner_rpc_handlers/clarification_relay.py +210 -0
  123. jaato_server-0.7.0/server/runner_rpc_handlers/daemon_plugin_execute.py +248 -0
  124. jaato_server-0.7.0/server/runner_rpc_handlers/profile_payload_schema.py +399 -0
  125. jaato_server-0.7.0/server/runner_rpc_handlers/prompt_operator.py +282 -0
  126. jaato_server-0.7.0/server/runner_rpc_handlers/spawn_isolated_runner.py +454 -0
  127. jaato_server-0.7.0/server/runner_rpc_handlers/sub_profile_tightenings_schema.py +197 -0
  128. jaato_server-0.7.0/server/runner_rpc_handlers/tests/__init__.py +0 -0
  129. jaato_server-0.7.0/server/runner_rpc_handlers/tests/test_apparmor_fragment.py +341 -0
  130. jaato_server-0.7.0/server/runner_rpc_handlers/tests/test_clarification_relay.py +135 -0
  131. jaato_server-0.7.0/server/runner_rpc_handlers/tests/test_daemon_plugin_execute.py +308 -0
  132. jaato_server-0.7.0/server/runner_rpc_handlers/tests/test_permission_input_mode_emit_path_j.py +363 -0
  133. jaato_server-0.7.0/server/runner_rpc_handlers/tests/test_profile_payload_schema.py +466 -0
  134. jaato_server-0.7.0/server/runner_rpc_handlers/tests/test_prompt_operator.py +443 -0
  135. jaato_server-0.7.0/server/runner_rpc_handlers/tests/test_spawn_isolated_runner.py +588 -0
  136. jaato_server-0.7.0/server/runner_rpc_handlers/tests/test_sub_profile_tightenings_schema.py +368 -0
  137. jaato_server-0.7.0/server/runner_rpc_server.py +231 -0
  138. jaato_server-0.7.0/server/runner_spawn.py +1031 -0
  139. jaato_server-0.7.0/server/runner_spawner.py +389 -0
  140. jaato_server-0.7.0/server/runner_template.py +477 -0
  141. jaato_server-0.7.0/server/session_logging.py +353 -0
  142. jaato_server-0.7.0/server/session_manager.py +11730 -0
  143. jaato_server-0.7.0/server/session_workspace_index.py +173 -0
  144. jaato_server-0.7.0/server/subagent_id.py +75 -0
  145. jaato_server-0.7.0/server/test_client.py +371 -0
  146. jaato_server-0.7.0/server/test_client_disconnect_routing.py +47 -0
  147. jaato_server-0.7.0/server/test_health_check.py +136 -0
  148. jaato_server-0.7.0/server/test_outbound_event_transformers.py +151 -0
  149. jaato_server-0.7.0/server/test_pre_initialize_hooks.py +206 -0
  150. jaato_server-0.7.0/server/test_runner_rpc_client.py +287 -0
  151. jaato_server-0.7.0/server/test_sdk_parity_handlers.py +730 -0
  152. jaato_server-0.7.0/server/test_session_manager_routing.py +385 -0
  153. jaato_server-0.7.0/server/test_stage_files_request.py +369 -0
  154. jaato_server-0.7.0/server/test_staged_files.py +144 -0
  155. jaato_server-0.7.0/server/test_websocket_auth.py +188 -0
  156. jaato_server-0.7.0/server/test_workspace_command.py +256 -0
  157. jaato_server-0.7.0/server/test_workspace_monitor_sandbox.py +706 -0
  158. jaato_server-0.7.0/server/tests/__init__.py +0 -0
  159. jaato_server-0.7.0/server/tests/test_a_reused_slot_carries_nothing_over.py +169 -0
  160. jaato_server-0.7.0/server/tests/test_agent_created_bootstrap_path_i.py +452 -0
  161. jaato_server-0.7.0/server/tests/test_agent_error_event.py +303 -0
  162. jaato_server-0.7.0/server/tests/test_agent_params_passdown_phase4d.py +150 -0
  163. jaato_server-0.7.0/server/tests/test_always_spawn_runner.py +408 -0
  164. jaato_server-0.7.0/server/tests/test_an_attachment_is_content.py +265 -0
  165. jaato_server-0.7.0/server/tests/test_apparmor_session_hook_os_scope.py +62 -0
  166. jaato_server-0.7.0/server/tests/test_attach_index_fallback.py +91 -0
  167. jaato_server-0.7.0/server/tests/test_attach_unload_race_guard.py +56 -0
  168. jaato_server-0.7.0/server/tests/test_bootstrap_failure_emits_terminated.py +203 -0
  169. jaato_server-0.7.0/server/tests/test_bootstrap_helper.py +569 -0
  170. jaato_server-0.7.0/server/tests/test_bootstrap_partition.py +225 -0
  171. jaato_server-0.7.0/server/tests/test_budget_ceiling_survives_reload.py +122 -0
  172. jaato_server-0.7.0/server/tests/test_budget_refusal_terminal_event.py +156 -0
  173. jaato_server-0.7.0/server/tests/test_budget_restore_honours_runner.py +76 -0
  174. jaato_server-0.7.0/server/tests/test_budget_usage_persistence_wiring.py +187 -0
  175. jaato_server-0.7.0/server/tests/test_build_session_envelope.py +790 -0
  176. jaato_server-0.7.0/server/tests/test_build_session_envelope_profileless_fallback.py +219 -0
  177. jaato_server-0.7.0/server/tests/test_bus_event_payload_hoist.py +93 -0
  178. jaato_server-0.7.0/server/tests/test_cascade_as_client_phase1.py +1232 -0
  179. jaato_server-0.7.0/server/tests/test_cascade_as_client_phase2.py +305 -0
  180. jaato_server-0.7.0/server/tests/test_cascade_budget_registry.py +273 -0
  181. jaato_server-0.7.0/server/tests/test_cascade_budget_rpc.py +134 -0
  182. jaato_server-0.7.0/server/tests/test_cascade_cancel.py +330 -0
  183. jaato_server-0.7.0/server/tests/test_cascade_membership_survives_reload.py +141 -0
  184. jaato_server-0.7.0/server/tests/test_cascade_observer_dedup.py +149 -0
  185. jaato_server-0.7.0/server/tests/test_cascade_teardown_e2e.py +321 -0
  186. jaato_server-0.7.0/server/tests/test_cascade_teardown_isolated.py +327 -0
  187. jaato_server-0.7.0/server/tests/test_chat_replay_gate.py +55 -0
  188. jaato_server-0.7.0/server/tests/test_clarification_batch_answers_route.py +106 -0
  189. jaato_server-0.7.0/server/tests/test_client_tools_shared.py +104 -0
  190. jaato_server-0.7.0/server/tests/test_construct_and_initialize_server.py +377 -0
  191. jaato_server-0.7.0/server/tests/test_construction_refactor_645d.py +313 -0
  192. jaato_server-0.7.0/server/tests/test_create_headless_session_cascade.py +84 -0
  193. jaato_server-0.7.0/server/tests/test_create_registry_and_discover.py +108 -0
  194. jaato_server-0.7.0/server/tests/test_disk_restore_defer_and_flush.py +220 -0
  195. jaato_server-0.7.0/server/tests/test_dispatch_bootstrap_envelope.py +141 -0
  196. jaato_server-0.7.0/server/tests/test_egress_strict_denies_spawn.py +62 -0
  197. jaato_server-0.7.0/server/tests/test_env_report.py +37 -0
  198. jaato_server-0.7.0/server/tests/test_envelope_carries_budget_control.py +183 -0
  199. jaato_server-0.7.0/server/tests/test_envelope_session_env_non_leakage.py +254 -0
  200. jaato_server-0.7.0/server/tests/test_ephemeral_headless_shim.py +221 -0
  201. jaato_server-0.7.0/server/tests/test_existing_rpc_migration_645b.py +306 -0
  202. jaato_server-0.7.0/server/tests/test_fork_budget_params.py +165 -0
  203. jaato_server-0.7.0/server/tests/test_forward_subagent_event.py +132 -0
  204. jaato_server-0.7.0/server/tests/test_gc_lifecycle_events.py +177 -0
  205. jaato_server-0.7.0/server/tests/test_get_history_runner_fetch.py +97 -0
  206. jaato_server-0.7.0/server/tests/test_get_persisted_history.py +39 -0
  207. jaato_server-0.7.0/server/tests/test_get_runtime_migration_645a.py +138 -0
  208. jaato_server-0.7.0/server/tests/test_history_answers_or_errors.py +127 -0
  209. jaato_server-0.7.0/server/tests/test_ipc_apparmor_provision.py +733 -0
  210. jaato_server-0.7.0/server/tests/test_ipc_bootstrap_dispatch_path_b.py +228 -0
  211. jaato_server-0.7.0/server/tests/test_isolated_subagent_integration.py +330 -0
  212. jaato_server-0.7.0/server/tests/test_jaato_server_clear_history_forwards.py +124 -0
  213. jaato_server-0.7.0/server/tests/test_jaato_server_set_terminal_width_forwards.py +123 -0
  214. jaato_server-0.7.0/server/tests/test_jaato_server_shutdown_calls_session_shutdown.py +185 -0
  215. jaato_server-0.7.0/server/tests/test_jaato_server_stop_forwards.py +117 -0
  216. jaato_server-0.7.0/server/tests/test_loop_cannot_deadlock_on_itself.py +201 -0
  217. jaato_server-0.7.0/server/tests/test_loop_watchdog.py +452 -0
  218. jaato_server-0.7.0/server/tests/test_no_unresolved_global_names.py +97 -0
  219. jaato_server-0.7.0/server/tests/test_nudge_exhaust_terminal_events.py +186 -0
  220. jaato_server-0.7.0/server/tests/test_permission_resolved_event_identity_859.py +136 -0
  221. jaato_server-0.7.0/server/tests/test_phase3_apparmor_transitions.py +321 -0
  222. jaato_server-0.7.0/server/tests/test_plugin_configs_passdown_phase4c.py +343 -0
  223. jaato_server-0.7.0/server/tests/test_pool_cascade_sharing.py +634 -0
  224. jaato_server-0.7.0/server/tests/test_pool_telemetry_5d.py +209 -0
  225. jaato_server-0.7.0/server/tests/test_pool_watchdog_5b.py +281 -0
  226. jaato_server-0.7.0/server/tests/test_prompt_help_turn_completes.py +113 -0
  227. jaato_server-0.7.0/server/tests/test_prompt_operator_wiring_step7_1.py +278 -0
  228. jaato_server-0.7.0/server/tests/test_provider_binding_follows_the_tier.py +222 -0
  229. jaato_server-0.7.0/server/tests/test_reactor_daemon_wide_bus.py +58 -0
  230. jaato_server-0.7.0/server/tests/test_resolve_profile_env_overlay.py +351 -0
  231. jaato_server-0.7.0/server/tests/test_resolve_restore_config_root.py +29 -0
  232. jaato_server-0.7.0/server/tests/test_resolve_session_env_phase4.py +302 -0
  233. jaato_server-0.7.0/server/tests/test_respond_to_permission_routing_step7_3.py +354 -0
  234. jaato_server-0.7.0/server/tests/test_resume_session.py +40 -0
  235. jaato_server-0.7.0/server/tests/test_revive_restores_persisted_state.py +478 -0
  236. jaato_server-0.7.0/server/tests/test_rpc_bytes_wire_encoding.py +403 -0
  237. jaato_server-0.7.0/server/tests/test_rpc_client_slot_reuse.py +135 -0
  238. jaato_server-0.7.0/server/tests/test_runner_cgroup_attach_7d.py +292 -0
  239. jaato_server-0.7.0/server/tests/test_runner_ready_gate.py +124 -0
  240. jaato_server-0.7.0/server/tests/test_runner_session_tmpdir.py +151 -0
  241. jaato_server-0.7.0/server/tests/test_runner_spawn.py +679 -0
  242. jaato_server-0.7.0/server/tests/test_runner_template.py +525 -0
  243. jaato_server-0.7.0/server/tests/test_save_reentrancy_path_h.py +404 -0
  244. jaato_server-0.7.0/server/tests/test_save_serializes_per_session.py +142 -0
  245. jaato_server-0.7.0/server/tests/test_seat_flip_complete_645e.py +246 -0
  246. jaato_server-0.7.0/server/tests/test_send_message_active_turn_path_e.py +490 -0
  247. jaato_server-0.7.0/server/tests/test_send_message_seat_flip_643b.py +706 -0
  248. jaato_server-0.7.0/server/tests/test_send_message_to_session.py +38 -0
  249. jaato_server-0.7.0/server/tests/test_session_cascade_driver_id_stamp.py +75 -0
  250. jaato_server-0.7.0/server/tests/test_session_id_allocation_race.py +110 -0
  251. jaato_server-0.7.0/server/tests/test_session_terminated_bus_bridge.py +118 -0
  252. jaato_server-0.7.0/server/tests/test_session_wake.py +345 -0
  253. jaato_server-0.7.0/server/tests/test_session_workspace_index.py +128 -0
  254. jaato_server-0.7.0/server/tests/test_set_session_state_for_session.py +34 -0
  255. jaato_server-0.7.0/server/tests/test_sibling_name_addressing.py +140 -0
  256. jaato_server-0.7.0/server/tests/test_sibling_name_refusal_is_observable.py +94 -0
  257. jaato_server-0.7.0/server/tests/test_sibling_roster.py +215 -0
  258. jaato_server-0.7.0/server/tests/test_slot_settled_bus_bridge.py +154 -0
  259. jaato_server-0.7.0/server/tests/test_spawn_isolated_runner_helper.py +1250 -0
  260. jaato_server-0.7.0/server/tests/test_spawn_session_runner_always_bootstraps.py +178 -0
  261. jaato_server-0.7.0/server/tests/test_stash_does_not_overwrite.py +83 -0
  262. jaato_server-0.7.0/server/tests/test_stash_fix_is_observable.py +115 -0
  263. jaato_server-0.7.0/server/tests/test_step7_snapshot_regression_fix.py +279 -0
  264. jaato_server-0.7.0/server/tests/test_stop_orphan_runner_reaper.py +211 -0
  265. jaato_server-0.7.0/server/tests/test_stop_socket_fallback.py +44 -0
  266. jaato_server-0.7.0/server/tests/test_streaming_response_path_f.py +481 -0
  267. jaato_server-0.7.0/server/tests/test_subagent_id_validation.py +140 -0
  268. jaato_server-0.7.0/server/tests/test_template_ready_handshake_5c.py +216 -0
  269. jaato_server-0.7.0/server/tests/test_the_heal_path_says_what_it_did.py +327 -0
  270. jaato_server-0.7.0/server/tests/test_the_manager_lock_is_a_dict_guard.py +183 -0
  271. jaato_server-0.7.0/server/tests/test_tiers_only_every_producer.py +118 -0
  272. jaato_server-0.7.0/server/tests/test_tiers_only_profile_bootstraps.py +181 -0
  273. jaato_server-0.7.0/server/tests/test_timeout_says_which_layer.py +153 -0
  274. jaato_server-0.7.0/server/tests/test_tool_id_mappings_offloop_gate.py +42 -0
  275. jaato_server-0.7.0/server/tests/test_transport_timeout_does_not_kill_the_session.py +176 -0
  276. jaato_server-0.7.0/server/tests/test_wake_bind_commands.py +135 -0
  277. jaato_server-0.7.0/server/tests/test_wake_binding_registry.py +255 -0
  278. jaato_server-0.7.0/server/tests/test_wake_ingress.py +233 -0
  279. jaato_server-0.7.0/server/tests/test_wake_verify.py +133 -0
  280. jaato_server-0.7.0/server/tests/test_wiring_deletions_644.py +184 -0
  281. jaato_server-0.7.0/server/tests/test_ws_always_spawn_runner.py +379 -0
  282. jaato_server-0.7.0/server/tests/test_ws_require_apparmor.py +64 -0
  283. jaato_server-0.7.0/server/wake_binding_registry.py +349 -0
  284. jaato_server-0.7.0/server/wake_ingress.py +365 -0
  285. jaato_server-0.7.0/server/wake_verify.py +116 -0
  286. jaato_server-0.7.0/server/websocket.py +2808 -0
  287. jaato_server-0.7.0/server/workspace_command.py +243 -0
  288. jaato_server-0.7.0/server/workspace_manager.py +530 -0
  289. jaato_server-0.7.0/server/workspace_monitor.py +794 -0
  290. jaato_server-0.7.0/server/workspace_provisioner.py +418 -0
  291. jaato_server-0.7.0/setup.cfg +4 -0
  292. jaato_server-0.7.0/shared/__init__.py +117 -0
  293. jaato_server-0.7.0/shared/ai_tool_runner.py +1499 -0
  294. jaato_server-0.7.0/shared/app_identity.py +446 -0
  295. jaato_server-0.7.0/shared/atomic_write.py +140 -0
  296. jaato_server-0.7.0/shared/bootstrap_timing.py +233 -0
  297. jaato_server-0.7.0/shared/budget_control.py +989 -0
  298. jaato_server-0.7.0/shared/change_tools.py +59 -0
  299. jaato_server-0.7.0/shared/client_commands.py +302 -0
  300. jaato_server-0.7.0/shared/command_analysis.py +608 -0
  301. jaato_server-0.7.0/shared/completion_nudge.py +123 -0
  302. jaato_server-0.7.0/shared/completion_processors.py +769 -0
  303. jaato_server-0.7.0/shared/completion_schema_loader.py +186 -0
  304. jaato_server-0.7.0/shared/config_resolver.py +228 -0
  305. jaato_server-0.7.0/shared/console_encoding.py +66 -0
  306. jaato_server-0.7.0/shared/dynamic_instructions.py +403 -0
  307. jaato_server-0.7.0/shared/env_scope.py +924 -0
  308. jaato_server-0.7.0/shared/event_bus.py +376 -0
  309. jaato_server-0.7.0/shared/event_bus_tools.py +493 -0
  310. jaato_server-0.7.0/shared/framing.py +161 -0
  311. jaato_server-0.7.0/shared/gc_support.py +309 -0
  312. jaato_server-0.7.0/shared/http/__init__.py +76 -0
  313. jaato_server-0.7.0/shared/http/proxy.py +706 -0
  314. jaato_server-0.7.0/shared/instruction_budget.py +522 -0
  315. jaato_server-0.7.0/shared/instruction_budget_builder.py +367 -0
  316. jaato_server-0.7.0/shared/instruction_suppression.py +118 -0
  317. jaato_server-0.7.0/shared/instruction_token_cache.py +72 -0
  318. jaato_server-0.7.0/shared/jaato_client.py +1169 -0
  319. jaato_server-0.7.0/shared/jaato_runtime.py +1951 -0
  320. jaato_server-0.7.0/shared/jaato_session.py +12644 -0
  321. jaato_server-0.7.0/shared/lifecycle_tools.py +1849 -0
  322. jaato_server-0.7.0/shared/mcp_context_manager.py +496 -0
  323. jaato_server-0.7.0/shared/message_delivery.py +150 -0
  324. jaato_server-0.7.0/shared/message_queue.py +358 -0
  325. jaato_server-0.7.0/shared/model_tiers.py +1152 -0
  326. jaato_server-0.7.0/shared/path_utils.py +297 -0
  327. jaato_server-0.7.0/shared/plugins/__init__.py +58 -0
  328. jaato_server-0.7.0/shared/plugins/anthropic_auth/__init__.py +15 -0
  329. jaato_server-0.7.0/shared/plugins/anthropic_auth/plugin.py +425 -0
  330. jaato_server-0.7.0/shared/plugins/antigravity_auth/__init__.py +23 -0
  331. jaato_server-0.7.0/shared/plugins/antigravity_auth/plugin.py +496 -0
  332. jaato_server-0.7.0/shared/plugins/artifact_tracker/__init__.py +52 -0
  333. jaato_server-0.7.0/shared/plugins/artifact_tracker/models.py +285 -0
  334. jaato_server-0.7.0/shared/plugins/artifact_tracker/plugin.py +1514 -0
  335. jaato_server-0.7.0/shared/plugins/artifact_tracker/tests/__init__.py +0 -0
  336. jaato_server-0.7.0/shared/plugins/artifact_tracker/tests/test_plugin.py +934 -0
  337. jaato_server-0.7.0/shared/plugins/ast_search/__init__.py +36 -0
  338. jaato_server-0.7.0/shared/plugins/ast_search/plugin.py +1120 -0
  339. jaato_server-0.7.0/shared/plugins/ast_search/tests/__init__.py +1 -0
  340. jaato_server-0.7.0/shared/plugins/ast_search/tests/test_plugin.py +780 -0
  341. jaato_server-0.7.0/shared/plugins/ast_search/tests/test_symlink_containment.py +212 -0
  342. jaato_server-0.7.0/shared/plugins/background/__init__.py +59 -0
  343. jaato_server-0.7.0/shared/plugins/background/mixin.py +864 -0
  344. jaato_server-0.7.0/shared/plugins/background/plugin.py +623 -0
  345. jaato_server-0.7.0/shared/plugins/background/protocol.py +433 -0
  346. jaato_server-0.7.0/shared/plugins/background/tests/__init__.py +1 -0
  347. jaato_server-0.7.0/shared/plugins/background/tests/test_auto_background.py +569 -0
  348. jaato_server-0.7.0/shared/plugins/background/tests/test_mixin.py +641 -0
  349. jaato_server-0.7.0/shared/plugins/background/tests/test_plugin.py +719 -0
  350. jaato_server-0.7.0/shared/plugins/background/tests/test_protocol.py +176 -0
  351. jaato_server-0.7.0/shared/plugins/background/tests/test_registry_integration.py +181 -0
  352. jaato_server-0.7.0/shared/plugins/bundle/__init__.py +18 -0
  353. jaato_server-0.7.0/shared/plugins/bundle/plugin.py +1610 -0
  354. jaato_server-0.7.0/shared/plugins/bundle/tests/__init__.py +0 -0
  355. jaato_server-0.7.0/shared/plugins/bundle/tests/test_plugin.py +903 -0
  356. jaato_server-0.7.0/shared/plugins/bundle_common/__init__.py +28 -0
  357. jaato_server-0.7.0/shared/plugins/bundle_common/bundle.py +651 -0
  358. jaato_server-0.7.0/shared/plugins/bundle_common/handler.py +401 -0
  359. jaato_server-0.7.0/shared/plugins/bundle_common/pack.py +490 -0
  360. jaato_server-0.7.0/shared/plugins/bundle_common/tests/__init__.py +0 -0
  361. jaato_server-0.7.0/shared/plugins/bundle_common/tests/test_handler.py +198 -0
  362. jaato_server-0.7.0/shared/plugins/bundle_common/tests/test_pack_unpack.py +557 -0
  363. jaato_server-0.7.0/shared/plugins/bundle_common/unpack.py +511 -0
  364. jaato_server-0.7.0/shared/plugins/cache/__init__.py +136 -0
  365. jaato_server-0.7.0/shared/plugins/cache/base.py +146 -0
  366. jaato_server-0.7.0/shared/plugins/cache/tests/__init__.py +0 -0
  367. jaato_server-0.7.0/shared/plugins/cache/tests/test_protocol.py +37 -0
  368. jaato_server-0.7.0/shared/plugins/cache_anthropic/__init__.py +12 -0
  369. jaato_server-0.7.0/shared/plugins/cache_anthropic/plugin.py +602 -0
  370. jaato_server-0.7.0/shared/plugins/cache_anthropic/tests/__init__.py +0 -0
  371. jaato_server-0.7.0/shared/plugins/cache_anthropic/tests/test_plugin.py +428 -0
  372. jaato_server-0.7.0/shared/plugins/cache_google_genai/__init__.py +19 -0
  373. jaato_server-0.7.0/shared/plugins/cache_google_genai/plugin.py +561 -0
  374. jaato_server-0.7.0/shared/plugins/cache_google_genai/tests/__init__.py +0 -0
  375. jaato_server-0.7.0/shared/plugins/cache_google_genai/tests/test_plugin.py +772 -0
  376. jaato_server-0.7.0/shared/plugins/cache_zhipuai/__init__.py +13 -0
  377. jaato_server-0.7.0/shared/plugins/cache_zhipuai/plugin.py +228 -0
  378. jaato_server-0.7.0/shared/plugins/cache_zhipuai/tests/__init__.py +0 -0
  379. jaato_server-0.7.0/shared/plugins/cache_zhipuai/tests/test_plugin.py +189 -0
  380. jaato_server-0.7.0/shared/plugins/calculator/__init__.py +14 -0
  381. jaato_server-0.7.0/shared/plugins/calculator/plugin.py +424 -0
  382. jaato_server-0.7.0/shared/plugins/clarification/__init__.py +42 -0
  383. jaato_server-0.7.0/shared/plugins/clarification/channels.py +1020 -0
  384. jaato_server-0.7.0/shared/plugins/clarification/models.py +155 -0
  385. jaato_server-0.7.0/shared/plugins/clarification/plugin.py +667 -0
  386. jaato_server-0.7.0/shared/plugins/clarification/tests/__init__.py +1 -0
  387. jaato_server-0.7.0/shared/plugins/clarification/tests/test_channels.py +456 -0
  388. jaato_server-0.7.0/shared/plugins/clarification/tests/test_models.py +347 -0
  389. jaato_server-0.7.0/shared/plugins/clarification/tests/test_plugin.py +362 -0
  390. jaato_server-0.7.0/shared/plugins/clarification/tests/test_registry_integration.py +126 -0
  391. jaato_server-0.7.0/shared/plugins/clarification/tests/test_runner_rpc_channel.py +108 -0
  392. jaato_server-0.7.0/shared/plugins/cli/__init__.py +16 -0
  393. jaato_server-0.7.0/shared/plugins/cli/plugin.py +1601 -0
  394. jaato_server-0.7.0/shared/plugins/cli/tests/__init__.py +1 -0
  395. jaato_server-0.7.0/shared/plugins/cli/tests/test_plugin.py +1123 -0
  396. jaato_server-0.7.0/shared/plugins/cli/tests/test_registry_integration.py +277 -0
  397. jaato_server-0.7.0/shared/plugins/cli/tests/test_runner_stub.py +204 -0
  398. jaato_server-0.7.0/shared/plugins/cli/tests/test_secret_scrub_default.py +75 -0
  399. jaato_server-0.7.0/shared/plugins/code_block_formatter/__init__.py +6 -0
  400. jaato_server-0.7.0/shared/plugins/code_block_formatter/plugin.py +311 -0
  401. jaato_server-0.7.0/shared/plugins/code_block_formatter/tests/__init__.py +0 -0
  402. jaato_server-0.7.0/shared/plugins/code_block_formatter/tests/test_fence_detection.py +151 -0
  403. jaato_server-0.7.0/shared/plugins/code_block_formatter/tests/test_semantic_rendering.py +110 -0
  404. jaato_server-0.7.0/shared/plugins/code_validation_formatter/__init__.py +27 -0
  405. jaato_server-0.7.0/shared/plugins/code_validation_formatter/plugin.py +544 -0
  406. jaato_server-0.7.0/shared/plugins/code_validation_formatter/tests/__init__.py +0 -0
  407. jaato_server-0.7.0/shared/plugins/code_validation_formatter/tests/test_excerpt_detection.py +169 -0
  408. jaato_server-0.7.0/shared/plugins/code_validation_formatter/tests/test_feedback.py +90 -0
  409. jaato_server-0.7.0/shared/plugins/daemon_forwarding.py +267 -0
  410. jaato_server-0.7.0/shared/plugins/diff_formatter/__init__.py +49 -0
  411. jaato_server-0.7.0/shared/plugins/diff_formatter/box_drawing.py +321 -0
  412. jaato_server-0.7.0/shared/plugins/diff_formatter/parser.py +301 -0
  413. jaato_server-0.7.0/shared/plugins/diff_formatter/plugin.py +411 -0
  414. jaato_server-0.7.0/shared/plugins/diff_formatter/renderers/__init__.py +16 -0
  415. jaato_server-0.7.0/shared/plugins/diff_formatter/renderers/base.py +85 -0
  416. jaato_server-0.7.0/shared/plugins/diff_formatter/renderers/compact.py +382 -0
  417. jaato_server-0.7.0/shared/plugins/diff_formatter/renderers/side_by_side.py +582 -0
  418. jaato_server-0.7.0/shared/plugins/diff_formatter/renderers/unified.py +125 -0
  419. jaato_server-0.7.0/shared/plugins/diff_formatter/syntax_highlight.py +176 -0
  420. jaato_server-0.7.0/shared/plugins/diff_formatter/tests/__init__.py +2 -0
  421. jaato_server-0.7.0/shared/plugins/diff_formatter/tests/test_box_drawing.py +183 -0
  422. jaato_server-0.7.0/shared/plugins/diff_formatter/tests/test_parser.py +304 -0
  423. jaato_server-0.7.0/shared/plugins/diff_formatter/tests/test_plugin.py +403 -0
  424. jaato_server-0.7.0/shared/plugins/diff_formatter/tests/test_word_diff.py +152 -0
  425. jaato_server-0.7.0/shared/plugins/diff_formatter/word_diff.py +191 -0
  426. jaato_server-0.7.0/shared/plugins/enrichment_formatter.py +181 -0
  427. jaato_server-0.7.0/shared/plugins/entry_point_trust.py +385 -0
  428. jaato_server-0.7.0/shared/plugins/environment/__init__.py +18 -0
  429. jaato_server-0.7.0/shared/plugins/environment/plugin.py +752 -0
  430. jaato_server-0.7.0/shared/plugins/environment/tests/__init__.py +1 -0
  431. jaato_server-0.7.0/shared/plugins/environment/tests/conftest.py +21 -0
  432. jaato_server-0.7.0/shared/plugins/environment/tests/test_plugin.py +1017 -0
  433. jaato_server-0.7.0/shared/plugins/environment/tests/test_registry_integration.py +237 -0
  434. jaato_server-0.7.0/shared/plugins/file_edit/__init__.py +66 -0
  435. jaato_server-0.7.0/shared/plugins/file_edit/backup.py +888 -0
  436. jaato_server-0.7.0/shared/plugins/file_edit/diff_utils.py +261 -0
  437. jaato_server-0.7.0/shared/plugins/file_edit/edit_core.py +283 -0
  438. jaato_server-0.7.0/shared/plugins/file_edit/find_replace.py +408 -0
  439. jaato_server-0.7.0/shared/plugins/file_edit/git_eol.py +466 -0
  440. jaato_server-0.7.0/shared/plugins/file_edit/line_endings.py +203 -0
  441. jaato_server-0.7.0/shared/plugins/file_edit/multi_file.py +946 -0
  442. jaato_server-0.7.0/shared/plugins/file_edit/plugin.py +2437 -0
  443. jaato_server-0.7.0/shared/plugins/file_edit/tests/__init__.py +1 -0
  444. jaato_server-0.7.0/shared/plugins/file_edit/tests/test_backup.py +579 -0
  445. jaato_server-0.7.0/shared/plugins/file_edit/tests/test_diff_utils.py +276 -0
  446. jaato_server-0.7.0/shared/plugins/file_edit/tests/test_edit_core.py +296 -0
  447. jaato_server-0.7.0/shared/plugins/file_edit/tests/test_edit_span_cap.py +389 -0
  448. jaato_server-0.7.0/shared/plugins/file_edit/tests/test_ensure_gitignore.py +57 -0
  449. jaato_server-0.7.0/shared/plugins/file_edit/tests/test_line_endings.py +504 -0
  450. jaato_server-0.7.0/shared/plugins/file_edit/tests/test_multi_file.py +1061 -0
  451. jaato_server-0.7.0/shared/plugins/file_edit/tests/test_path_sandboxing.py +461 -0
  452. jaato_server-0.7.0/shared/plugins/file_edit/tests/test_plugin.py +1436 -0
  453. jaato_server-0.7.0/shared/plugins/file_edit/tests/test_registry_integration.py +392 -0
  454. jaato_server-0.7.0/shared/plugins/file_edit/tests/test_symlink_toctou.py +337 -0
  455. jaato_server-0.7.0/shared/plugins/filesystem_query/__init__.py +45 -0
  456. jaato_server-0.7.0/shared/plugins/filesystem_query/config_loader.py +443 -0
  457. jaato_server-0.7.0/shared/plugins/filesystem_query/plugin.py +1377 -0
  458. jaato_server-0.7.0/shared/plugins/filesystem_query/tests/__init__.py +1 -0
  459. jaato_server-0.7.0/shared/plugins/filesystem_query/tests/test_benchmarks.py +498 -0
  460. jaato_server-0.7.0/shared/plugins/filesystem_query/tests/test_config_loader.py +413 -0
  461. jaato_server-0.7.0/shared/plugins/filesystem_query/tests/test_plugin.py +954 -0
  462. jaato_server-0.7.0/shared/plugins/filesystem_query/tests/test_registry_integration.py +280 -0
  463. jaato_server-0.7.0/shared/plugins/filesystem_query/tests/test_symlink_containment.py +283 -0
  464. jaato_server-0.7.0/shared/plugins/formatter_pipeline/__init__.py +44 -0
  465. jaato_server-0.7.0/shared/plugins/formatter_pipeline/pipeline.py +282 -0
  466. jaato_server-0.7.0/shared/plugins/formatter_pipeline/protocol.py +205 -0
  467. jaato_server-0.7.0/shared/plugins/formatter_pipeline/registry.py +343 -0
  468. jaato_server-0.7.0/shared/plugins/formatter_pipeline/tests/__init__.py +1 -0
  469. jaato_server-0.7.0/shared/plugins/formatter_pipeline/tests/test_pipeline.py +233 -0
  470. jaato_server-0.7.0/shared/plugins/formatter_pipeline/tests/test_registry.py +321 -0
  471. jaato_server-0.7.0/shared/plugins/gc/__init__.py +329 -0
  472. jaato_server-0.7.0/shared/plugins/gc/base.py +326 -0
  473. jaato_server-0.7.0/shared/plugins/gc/tests/__init__.py +1 -0
  474. jaato_server-0.7.0/shared/plugins/gc/tests/test_dedup_tool_results.py +125 -0
  475. jaato_server-0.7.0/shared/plugins/gc/tests/test_hybrid.py +255 -0
  476. jaato_server-0.7.0/shared/plugins/gc/tests/test_summarize.py +188 -0
  477. jaato_server-0.7.0/shared/plugins/gc/tests/test_truncate.py +214 -0
  478. jaato_server-0.7.0/shared/plugins/gc/tests/test_utils.py +500 -0
  479. jaato_server-0.7.0/shared/plugins/gc/utils.py +842 -0
  480. jaato_server-0.7.0/shared/plugins/gc_budget/__init__.py +22 -0
  481. jaato_server-0.7.0/shared/plugins/gc_budget/plugin.py +936 -0
  482. jaato_server-0.7.0/shared/plugins/gc_budget/tests/__init__.py +0 -0
  483. jaato_server-0.7.0/shared/plugins/gc_budget/tests/test_budget_gc.py +1283 -0
  484. jaato_server-0.7.0/shared/plugins/gc_hybrid/__init__.py +29 -0
  485. jaato_server-0.7.0/shared/plugins/gc_hybrid/plugin.py +449 -0
  486. jaato_server-0.7.0/shared/plugins/gc_summarize/__init__.py +28 -0
  487. jaato_server-0.7.0/shared/plugins/gc_summarize/plugin.py +453 -0
  488. jaato_server-0.7.0/shared/plugins/gc_truncate/__init__.py +21 -0
  489. jaato_server-0.7.0/shared/plugins/gc_truncate/plugin.py +342 -0
  490. jaato_server-0.7.0/shared/plugins/github_auth/__init__.py +24 -0
  491. jaato_server-0.7.0/shared/plugins/github_auth/plugin.py +477 -0
  492. jaato_server-0.7.0/shared/plugins/hidden_content_filter/__init__.py +11 -0
  493. jaato_server-0.7.0/shared/plugins/hidden_content_filter/plugin.py +140 -0
  494. jaato_server-0.7.0/shared/plugins/inline_markdown_formatter/__init__.py +10 -0
  495. jaato_server-0.7.0/shared/plugins/inline_markdown_formatter/plugin.py +403 -0
  496. jaato_server-0.7.0/shared/plugins/inline_markdown_formatter/tests/__init__.py +0 -0
  497. jaato_server-0.7.0/shared/plugins/inline_markdown_formatter/tests/test_inline_markdown.py +349 -0
  498. jaato_server-0.7.0/shared/plugins/interactive_shell/__init__.py +32 -0
  499. jaato_server-0.7.0/shared/plugins/interactive_shell/ansi.py +54 -0
  500. jaato_server-0.7.0/shared/plugins/interactive_shell/plugin.py +1097 -0
  501. jaato_server-0.7.0/shared/plugins/interactive_shell/session.py +716 -0
  502. jaato_server-0.7.0/shared/plugins/interactive_shell/tests/__init__.py +0 -0
  503. jaato_server-0.7.0/shared/plugins/interactive_shell/tests/test_ansi.py +95 -0
  504. jaato_server-0.7.0/shared/plugins/interactive_shell/tests/test_plugin.py +395 -0
  505. jaato_server-0.7.0/shared/plugins/interactive_shell/tests/test_secret_scrub.py +91 -0
  506. jaato_server-0.7.0/shared/plugins/interactive_shell/tests/test_session.py +311 -0
  507. jaato_server-0.7.0/shared/plugins/introspection/__init__.py +36 -0
  508. jaato_server-0.7.0/shared/plugins/introspection/plugin.py +968 -0
  509. jaato_server-0.7.0/shared/plugins/introspection/tests/__init__.py +1 -0
  510. jaato_server-0.7.0/shared/plugins/introspection/tests/conftest.py +21 -0
  511. jaato_server-0.7.0/shared/plugins/introspection/tests/test_activation_is_described_where_it_happens.py +113 -0
  512. jaato_server-0.7.0/shared/plugins/introspection/tests/test_plugin.py +601 -0
  513. jaato_server-0.7.0/shared/plugins/introspection/tests/test_unknown_category_id_is_recoverable.py +136 -0
  514. jaato_server-0.7.0/shared/plugins/kimi_auth/__init__.py +16 -0
  515. jaato_server-0.7.0/shared/plugins/kimi_auth/plugin.py +378 -0
  516. jaato_server-0.7.0/shared/plugins/lsp/__init__.py +8 -0
  517. jaato_server-0.7.0/shared/plugins/lsp/lsp_client.py +1269 -0
  518. jaato_server-0.7.0/shared/plugins/lsp/plugin.py +4233 -0
  519. jaato_server-0.7.0/shared/plugins/lsp/tests/__init__.py +1 -0
  520. jaato_server-0.7.0/shared/plugins/lsp/tests/test_pdeathsig_spawn.py +62 -0
  521. jaato_server-0.7.0/shared/plugins/lsp/tests/test_phase4_cascade_lifecycle.py +243 -0
  522. jaato_server-0.7.0/shared/plugins/lsp/tests/test_plugin.py +3104 -0
  523. jaato_server-0.7.0/shared/plugins/lsp/tests/test_profile_declared_language_servers.py +288 -0
  524. jaato_server-0.7.0/shared/plugins/lsp/tests/test_slot_scoped_declaration.py +51 -0
  525. jaato_server-0.7.0/shared/plugins/lsp/tests/test_workspace_relative_paths.py +101 -0
  526. jaato_server-0.7.0/shared/plugins/mcp/__init__.py +16 -0
  527. jaato_server-0.7.0/shared/plugins/mcp/plugin.py +2117 -0
  528. jaato_server-0.7.0/shared/plugins/mcp/tests/__init__.py +1 -0
  529. jaato_server-0.7.0/shared/plugins/mcp/tests/test_plugin.py +832 -0
  530. jaato_server-0.7.0/shared/plugins/mcp/tests/test_registry_integration.py +227 -0
  531. jaato_server-0.7.0/shared/plugins/memory/__init__.py +25 -0
  532. jaato_server-0.7.0/shared/plugins/memory/indexer.py +338 -0
  533. jaato_server-0.7.0/shared/plugins/memory/models.py +140 -0
  534. jaato_server-0.7.0/shared/plugins/memory/plugin.py +1922 -0
  535. jaato_server-0.7.0/shared/plugins/memory/storage.py +502 -0
  536. jaato_server-0.7.0/shared/plugins/memory/test_standalone.py +135 -0
  537. jaato_server-0.7.0/shared/plugins/memory/tests/__init__.py +1 -0
  538. jaato_server-0.7.0/shared/plugins/memory/tests/test_allowed_scopes.py +62 -0
  539. jaato_server-0.7.0/shared/plugins/memory/tests/test_confined_init.py +46 -0
  540. jaato_server-0.7.0/shared/plugins/memory/tests/test_enrichment_surfaces.py +393 -0
  541. jaato_server-0.7.0/shared/plugins/memory/tests/test_list_tags_reports_the_raw_queue.py +122 -0
  542. jaato_server-0.7.0/shared/plugins/memory/tests/test_maturity_query_reaches_raw.py +124 -0
  543. jaato_server-0.7.0/shared/plugins/memory/tests/test_plugin.py +960 -0
  544. jaato_server-0.7.0/shared/plugins/memory/tests/test_reading_the_queue_does_not_empty_it.py +145 -0
  545. jaato_server-0.7.0/shared/plugins/memory/tests/test_stale_writeback_cannot_undo_decisions.py +160 -0
  546. jaato_server-0.7.0/shared/plugins/memory/tests/test_storage_layout.py +227 -0
  547. jaato_server-0.7.0/shared/plugins/mermaid_formatter/__init__.py +12 -0
  548. jaato_server-0.7.0/shared/plugins/mermaid_formatter/backends/__init__.py +85 -0
  549. jaato_server-0.7.0/shared/plugins/mermaid_formatter/backends/iterm.py +81 -0
  550. jaato_server-0.7.0/shared/plugins/mermaid_formatter/backends/kitty.py +94 -0
  551. jaato_server-0.7.0/shared/plugins/mermaid_formatter/backends/rich_pixels.py +106 -0
  552. jaato_server-0.7.0/shared/plugins/mermaid_formatter/backends/sixel.py +156 -0
  553. jaato_server-0.7.0/shared/plugins/mermaid_formatter/plugin.py +400 -0
  554. jaato_server-0.7.0/shared/plugins/mermaid_formatter/renderer.py +266 -0
  555. jaato_server-0.7.0/shared/plugins/mermaid_formatter/tests/__init__.py +0 -0
  556. jaato_server-0.7.0/shared/plugins/mermaid_formatter/tests/test_backends.py +191 -0
  557. jaato_server-0.7.0/shared/plugins/mermaid_formatter/tests/test_plugin.py +724 -0
  558. jaato_server-0.7.0/shared/plugins/mermaid_formatter/tests/test_renderer.py +384 -0
  559. jaato_server-0.7.0/shared/plugins/mimo_auth/__init__.py +16 -0
  560. jaato_server-0.7.0/shared/plugins/mimo_auth/plugin.py +377 -0
  561. jaato_server-0.7.0/shared/plugins/minimax_auth/__init__.py +16 -0
  562. jaato_server-0.7.0/shared/plugins/minimax_auth/plugin.py +378 -0
  563. jaato_server-0.7.0/shared/plugins/model_provider/__init__.py +289 -0
  564. jaato_server-0.7.0/shared/plugins/model_provider/_api_key_store.py +304 -0
  565. jaato_server-0.7.0/shared/plugins/model_provider/_attachments.py +503 -0
  566. jaato_server-0.7.0/shared/plugins/model_provider/_media_deltas.py +576 -0
  567. jaato_server-0.7.0/shared/plugins/model_provider/_openai_compat/__init__.py +16 -0
  568. jaato_server-0.7.0/shared/plugins/model_provider/_openai_compat/_lazy.py +47 -0
  569. jaato_server-0.7.0/shared/plugins/model_provider/_openai_compat/base.py +1210 -0
  570. jaato_server-0.7.0/shared/plugins/model_provider/_openai_compat/converters.py +648 -0
  571. jaato_server-0.7.0/shared/plugins/model_provider/_openai_compat/local_host.py +176 -0
  572. jaato_server-0.7.0/shared/plugins/model_provider/_prose_tools.py +370 -0
  573. jaato_server-0.7.0/shared/plugins/model_provider/anthropic/__init__.py +133 -0
  574. jaato_server-0.7.0/shared/plugins/model_provider/anthropic/converters.py +912 -0
  575. jaato_server-0.7.0/shared/plugins/model_provider/anthropic/env.py +96 -0
  576. jaato_server-0.7.0/shared/plugins/model_provider/anthropic/errors.py +182 -0
  577. jaato_server-0.7.0/shared/plugins/model_provider/anthropic/oauth.py +809 -0
  578. jaato_server-0.7.0/shared/plugins/model_provider/anthropic/provider.py +1766 -0
  579. jaato_server-0.7.0/shared/plugins/model_provider/anthropic/smoke/smoke_chat.py +117 -0
  580. jaato_server-0.7.0/shared/plugins/model_provider/anthropic/smoke/smoke_signal_completion.py +111 -0
  581. jaato_server-0.7.0/shared/plugins/model_provider/anthropic/smoke/smoke_tools.py +114 -0
  582. jaato_server-0.7.0/shared/plugins/model_provider/anthropic/tests/__init__.py +1 -0
  583. jaato_server-0.7.0/shared/plugins/model_provider/anthropic/tests/test_oauth_load.py +59 -0
  584. jaato_server-0.7.0/shared/plugins/model_provider/anthropic/tests/test_provider.py +1047 -0
  585. jaato_server-0.7.0/shared/plugins/model_provider/anthropic/tests/test_tool_choice_contract.py +39 -0
  586. jaato_server-0.7.0/shared/plugins/model_provider/antigravity/__init__.py +151 -0
  587. jaato_server-0.7.0/shared/plugins/model_provider/antigravity/constants.py +162 -0
  588. jaato_server-0.7.0/shared/plugins/model_provider/antigravity/converters.py +617 -0
  589. jaato_server-0.7.0/shared/plugins/model_provider/antigravity/env.py +136 -0
  590. jaato_server-0.7.0/shared/plugins/model_provider/antigravity/errors.py +146 -0
  591. jaato_server-0.7.0/shared/plugins/model_provider/antigravity/oauth.py +899 -0
  592. jaato_server-0.7.0/shared/plugins/model_provider/antigravity/provider.py +1104 -0
  593. jaato_server-0.7.0/shared/plugins/model_provider/antigravity/tests/__init__.py +1 -0
  594. jaato_server-0.7.0/shared/plugins/model_provider/antigravity/tests/test_provider.py +417 -0
  595. jaato_server-0.7.0/shared/plugins/model_provider/antigravity/tests/test_sampling_knobs.py +91 -0
  596. jaato_server-0.7.0/shared/plugins/model_provider/antigravity/tests/test_stream_cancel_close.py +74 -0
  597. jaato_server-0.7.0/shared/plugins/model_provider/azure_openai/__init__.py +132 -0
  598. jaato_server-0.7.0/shared/plugins/model_provider/azure_openai/auth.py +258 -0
  599. jaato_server-0.7.0/shared/plugins/model_provider/azure_openai/env.py +206 -0
  600. jaato_server-0.7.0/shared/plugins/model_provider/azure_openai/errors.py +205 -0
  601. jaato_server-0.7.0/shared/plugins/model_provider/azure_openai/provider.py +514 -0
  602. jaato_server-0.7.0/shared/plugins/model_provider/azure_openai/tests/__init__.py +0 -0
  603. jaato_server-0.7.0/shared/plugins/model_provider/azure_openai/tests/test_azure_openai_provider.py +383 -0
  604. jaato_server-0.7.0/shared/plugins/model_provider/base.py +1088 -0
  605. jaato_server-0.7.0/shared/plugins/model_provider/chrome_ai/__init__.py +164 -0
  606. jaato_server-0.7.0/shared/plugins/model_provider/chrome_ai/bridge.py +545 -0
  607. jaato_server-0.7.0/shared/plugins/model_provider/chrome_ai/cdp.py +315 -0
  608. jaato_server-0.7.0/shared/plugins/model_provider/chrome_ai/converters.py +100 -0
  609. jaato_server-0.7.0/shared/plugins/model_provider/chrome_ai/env.py +138 -0
  610. jaato_server-0.7.0/shared/plugins/model_provider/chrome_ai/errors.py +55 -0
  611. jaato_server-0.7.0/shared/plugins/model_provider/chrome_ai/provider.py +696 -0
  612. jaato_server-0.7.0/shared/plugins/model_provider/chrome_ai/smoke/smoke_chat.py +69 -0
  613. jaato_server-0.7.0/shared/plugins/model_provider/chrome_ai/tests/__init__.py +0 -0
  614. jaato_server-0.7.0/shared/plugins/model_provider/chrome_ai/tests/conftest.py +154 -0
  615. jaato_server-0.7.0/shared/plugins/model_provider/chrome_ai/tests/test_bridge.py +100 -0
  616. jaato_server-0.7.0/shared/plugins/model_provider/chrome_ai/tests/test_complete.py +236 -0
  617. jaato_server-0.7.0/shared/plugins/model_provider/chrome_ai/tests/test_converters.py +92 -0
  618. jaato_server-0.7.0/shared/plugins/model_provider/chrome_ai/tests/test_provider.py +278 -0
  619. jaato_server-0.7.0/shared/plugins/model_provider/chrome_ai/tooling.py +14 -0
  620. jaato_server-0.7.0/shared/plugins/model_provider/claude_cli/__init__.py +121 -0
  621. jaato_server-0.7.0/shared/plugins/model_provider/claude_cli/env.py +158 -0
  622. jaato_server-0.7.0/shared/plugins/model_provider/claude_cli/provider.py +1231 -0
  623. jaato_server-0.7.0/shared/plugins/model_provider/claude_cli/tests/__init__.py +0 -0
  624. jaato_server-0.7.0/shared/plugins/model_provider/claude_cli/tests/test_context_limit.py +21 -0
  625. jaato_server-0.7.0/shared/plugins/model_provider/claude_cli/types.py +626 -0
  626. jaato_server-0.7.0/shared/plugins/model_provider/conftest.py +162 -0
  627. jaato_server-0.7.0/shared/plugins/model_provider/doubleword/__init__.py +98 -0
  628. jaato_server-0.7.0/shared/plugins/model_provider/doubleword/auth.py +424 -0
  629. jaato_server-0.7.0/shared/plugins/model_provider/doubleword/env.py +205 -0
  630. jaato_server-0.7.0/shared/plugins/model_provider/doubleword/errors.py +234 -0
  631. jaato_server-0.7.0/shared/plugins/model_provider/doubleword/provider.py +496 -0
  632. jaato_server-0.7.0/shared/plugins/model_provider/doubleword/tests/__init__.py +0 -0
  633. jaato_server-0.7.0/shared/plugins/model_provider/doubleword/tests/test_auth.py +228 -0
  634. jaato_server-0.7.0/shared/plugins/model_provider/doubleword/tests/test_doubleword_provider.py +865 -0
  635. jaato_server-0.7.0/shared/plugins/model_provider/doubleword/tests/test_stream_cancel_close.py +104 -0
  636. jaato_server-0.7.0/shared/plugins/model_provider/doubleword/tests/test_tool_choice_mapping.py +43 -0
  637. jaato_server-0.7.0/shared/plugins/model_provider/echo/__init__.py +39 -0
  638. jaato_server-0.7.0/shared/plugins/model_provider/echo/provider.py +471 -0
  639. jaato_server-0.7.0/shared/plugins/model_provider/echo/tests/__init__.py +0 -0
  640. jaato_server-0.7.0/shared/plugins/model_provider/echo/tests/test_echo_provider.py +114 -0
  641. jaato_server-0.7.0/shared/plugins/model_provider/echo/tests/test_echo_reports_a_configured_spend.py +167 -0
  642. jaato_server-0.7.0/shared/plugins/model_provider/github_models/__init__.py +57 -0
  643. jaato_server-0.7.0/shared/plugins/model_provider/github_models/_lazy.py +98 -0
  644. jaato_server-0.7.0/shared/plugins/model_provider/github_models/converters.py +613 -0
  645. jaato_server-0.7.0/shared/plugins/model_provider/github_models/copilot_client.py +895 -0
  646. jaato_server-0.7.0/shared/plugins/model_provider/github_models/env.py +221 -0
  647. jaato_server-0.7.0/shared/plugins/model_provider/github_models/errors.py +444 -0
  648. jaato_server-0.7.0/shared/plugins/model_provider/github_models/oauth.py +965 -0
  649. jaato_server-0.7.0/shared/plugins/model_provider/github_models/provider.py +2228 -0
  650. jaato_server-0.7.0/shared/plugins/model_provider/github_models/smoke/smoke_chat.py +115 -0
  651. jaato_server-0.7.0/shared/plugins/model_provider/github_models/smoke/smoke_signal_completion.py +112 -0
  652. jaato_server-0.7.0/shared/plugins/model_provider/github_models/smoke/smoke_tools.py +114 -0
  653. jaato_server-0.7.0/shared/plugins/model_provider/github_models/tests/__init__.py +1 -0
  654. jaato_server-0.7.0/shared/plugins/model_provider/github_models/tests/test_converters.py +48 -0
  655. jaato_server-0.7.0/shared/plugins/model_provider/github_models/tests/test_oauth.py +213 -0
  656. jaato_server-0.7.0/shared/plugins/model_provider/github_models/tests/test_oauth_load.py +114 -0
  657. jaato_server-0.7.0/shared/plugins/model_provider/github_models/tests/test_provider.py +870 -0
  658. jaato_server-0.7.0/shared/plugins/model_provider/github_models/tests/test_sampling_knobs.py +93 -0
  659. jaato_server-0.7.0/shared/plugins/model_provider/github_models/tests/test_stream_cancel_close.py +107 -0
  660. jaato_server-0.7.0/shared/plugins/model_provider/google_genai/__init__.py +66 -0
  661. jaato_server-0.7.0/shared/plugins/model_provider/google_genai/_lazy.py +60 -0
  662. jaato_server-0.7.0/shared/plugins/model_provider/google_genai/converters.py +685 -0
  663. jaato_server-0.7.0/shared/plugins/model_provider/google_genai/env.py +264 -0
  664. jaato_server-0.7.0/shared/plugins/model_provider/google_genai/errors.py +307 -0
  665. jaato_server-0.7.0/shared/plugins/model_provider/google_genai/provider.py +1397 -0
  666. jaato_server-0.7.0/shared/plugins/model_provider/google_genai/tests/__init__.py +1 -0
  667. jaato_server-0.7.0/shared/plugins/model_provider/google_genai/tests/test_finish_reason_mapping.py +170 -0
  668. jaato_server-0.7.0/shared/plugins/model_provider/google_genai/tests/test_provider.py +991 -0
  669. jaato_server-0.7.0/shared/plugins/model_provider/google_genai/tests/test_sampling_knobs.py +106 -0
  670. jaato_server-0.7.0/shared/plugins/model_provider/kimi/__init__.py +110 -0
  671. jaato_server-0.7.0/shared/plugins/model_provider/kimi/auth.py +314 -0
  672. jaato_server-0.7.0/shared/plugins/model_provider/kimi/env.py +171 -0
  673. jaato_server-0.7.0/shared/plugins/model_provider/kimi/errors.py +199 -0
  674. jaato_server-0.7.0/shared/plugins/model_provider/kimi/provider.py +496 -0
  675. jaato_server-0.7.0/shared/plugins/model_provider/kimi/tests/__init__.py +0 -0
  676. jaato_server-0.7.0/shared/plugins/model_provider/kimi/tests/test_auth.py +140 -0
  677. jaato_server-0.7.0/shared/plugins/model_provider/kimi/tests/test_kimi_provider.py +345 -0
  678. jaato_server-0.7.0/shared/plugins/model_provider/kimi/tests/test_stream_cancel_close.py +55 -0
  679. jaato_server-0.7.0/shared/plugins/model_provider/lmstudio/__init__.py +95 -0
  680. jaato_server-0.7.0/shared/plugins/model_provider/lmstudio/env.py +63 -0
  681. jaato_server-0.7.0/shared/plugins/model_provider/lmstudio/errors.py +91 -0
  682. jaato_server-0.7.0/shared/plugins/model_provider/lmstudio/provider.py +285 -0
  683. jaato_server-0.7.0/shared/plugins/model_provider/lmstudio/smoke/smoke_chat.py +117 -0
  684. jaato_server-0.7.0/shared/plugins/model_provider/lmstudio/smoke/smoke_signal_completion.py +110 -0
  685. jaato_server-0.7.0/shared/plugins/model_provider/lmstudio/smoke/smoke_tools.py +114 -0
  686. jaato_server-0.7.0/shared/plugins/model_provider/lmstudio/tests/__init__.py +0 -0
  687. jaato_server-0.7.0/shared/plugins/model_provider/lmstudio/tests/test_provider.py +674 -0
  688. jaato_server-0.7.0/shared/plugins/model_provider/lmstudio/tests/test_stream_cancel_close.py +103 -0
  689. jaato_server-0.7.0/shared/plugins/model_provider/mimo/__init__.py +99 -0
  690. jaato_server-0.7.0/shared/plugins/model_provider/mimo/auth.py +314 -0
  691. jaato_server-0.7.0/shared/plugins/model_provider/mimo/env.py +171 -0
  692. jaato_server-0.7.0/shared/plugins/model_provider/mimo/errors.py +242 -0
  693. jaato_server-0.7.0/shared/plugins/model_provider/mimo/provider.py +430 -0
  694. jaato_server-0.7.0/shared/plugins/model_provider/mimo/tests/__init__.py +0 -0
  695. jaato_server-0.7.0/shared/plugins/model_provider/mimo/tests/test_auth.py +140 -0
  696. jaato_server-0.7.0/shared/plugins/model_provider/mimo/tests/test_mimo_provider.py +432 -0
  697. jaato_server-0.7.0/shared/plugins/model_provider/mimo/tests/test_stream_cancel_close.py +55 -0
  698. jaato_server-0.7.0/shared/plugins/model_provider/minimax/__init__.py +98 -0
  699. jaato_server-0.7.0/shared/plugins/model_provider/minimax/auth.py +314 -0
  700. jaato_server-0.7.0/shared/plugins/model_provider/minimax/env.py +171 -0
  701. jaato_server-0.7.0/shared/plugins/model_provider/minimax/errors.py +215 -0
  702. jaato_server-0.7.0/shared/plugins/model_provider/minimax/provider.py +495 -0
  703. jaato_server-0.7.0/shared/plugins/model_provider/minimax/tests/__init__.py +0 -0
  704. jaato_server-0.7.0/shared/plugins/model_provider/minimax/tests/test_auth.py +140 -0
  705. jaato_server-0.7.0/shared/plugins/model_provider/minimax/tests/test_minimax_provider.py +296 -0
  706. jaato_server-0.7.0/shared/plugins/model_provider/minimax/tests/test_stream_cancel_close.py +55 -0
  707. jaato_server-0.7.0/shared/plugins/model_provider/nebius/__init__.py +86 -0
  708. jaato_server-0.7.0/shared/plugins/model_provider/nebius/_lazy.py +47 -0
  709. jaato_server-0.7.0/shared/plugins/model_provider/nebius/auth.py +417 -0
  710. jaato_server-0.7.0/shared/plugins/model_provider/nebius/converters.py +570 -0
  711. jaato_server-0.7.0/shared/plugins/model_provider/nebius/env.py +196 -0
  712. jaato_server-0.7.0/shared/plugins/model_provider/nebius/errors.py +229 -0
  713. jaato_server-0.7.0/shared/plugins/model_provider/nebius/provider.py +390 -0
  714. jaato_server-0.7.0/shared/plugins/model_provider/nebius/tests/__init__.py +0 -0
  715. jaato_server-0.7.0/shared/plugins/model_provider/nebius/tests/test_auth.py +212 -0
  716. jaato_server-0.7.0/shared/plugins/model_provider/nebius/tests/test_caching.py +72 -0
  717. jaato_server-0.7.0/shared/plugins/model_provider/nebius/tests/test_nebius_provider.py +969 -0
  718. jaato_server-0.7.0/shared/plugins/model_provider/nebius/tests/test_stream_cancel_close.py +104 -0
  719. jaato_server-0.7.0/shared/plugins/model_provider/nebius/tests/test_tool_choice_mapping.py +43 -0
  720. jaato_server-0.7.0/shared/plugins/model_provider/nim/__init__.py +64 -0
  721. jaato_server-0.7.0/shared/plugins/model_provider/nim/auth.py +417 -0
  722. jaato_server-0.7.0/shared/plugins/model_provider/nim/env.py +167 -0
  723. jaato_server-0.7.0/shared/plugins/model_provider/nim/errors.py +229 -0
  724. jaato_server-0.7.0/shared/plugins/model_provider/nim/provider.py +240 -0
  725. jaato_server-0.7.0/shared/plugins/model_provider/nim/smoke/smoke_chat.py +117 -0
  726. jaato_server-0.7.0/shared/plugins/model_provider/nim/smoke/smoke_signal_completion.py +110 -0
  727. jaato_server-0.7.0/shared/plugins/model_provider/nim/smoke/smoke_tools.py +106 -0
  728. jaato_server-0.7.0/shared/plugins/model_provider/nim/tests/__init__.py +0 -0
  729. jaato_server-0.7.0/shared/plugins/model_provider/nim/tests/test_auth.py +212 -0
  730. jaato_server-0.7.0/shared/plugins/model_provider/nim/tests/test_nim_provider.py +688 -0
  731. jaato_server-0.7.0/shared/plugins/model_provider/nim/tests/test_stream_cancel_close.py +104 -0
  732. jaato_server-0.7.0/shared/plugins/model_provider/ollama/__init__.py +96 -0
  733. jaato_server-0.7.0/shared/plugins/model_provider/ollama/env.py +54 -0
  734. jaato_server-0.7.0/shared/plugins/model_provider/ollama/provider.py +455 -0
  735. jaato_server-0.7.0/shared/plugins/model_provider/ollama/smoke/smoke_chat.py +117 -0
  736. jaato_server-0.7.0/shared/plugins/model_provider/ollama/smoke/smoke_signal_completion.py +111 -0
  737. jaato_server-0.7.0/shared/plugins/model_provider/ollama/smoke/smoke_tools.py +106 -0
  738. jaato_server-0.7.0/shared/plugins/model_provider/ollama/tests/__init__.py +1 -0
  739. jaato_server-0.7.0/shared/plugins/model_provider/ollama/tests/test_env.py +58 -0
  740. jaato_server-0.7.0/shared/plugins/model_provider/ollama/tests/test_provider.py +387 -0
  741. jaato_server-0.7.0/shared/plugins/model_provider/ollama/tests/test_sampling_knobs.py +95 -0
  742. jaato_server-0.7.0/shared/plugins/model_provider/openai/__init__.py +151 -0
  743. jaato_server-0.7.0/shared/plugins/model_provider/openai/auth.py +235 -0
  744. jaato_server-0.7.0/shared/plugins/model_provider/openai/converters.py +96 -0
  745. jaato_server-0.7.0/shared/plugins/model_provider/openai/env.py +261 -0
  746. jaato_server-0.7.0/shared/plugins/model_provider/openai/errors.py +237 -0
  747. jaato_server-0.7.0/shared/plugins/model_provider/openai/provider.py +622 -0
  748. jaato_server-0.7.0/shared/plugins/model_provider/openai/responses.py +573 -0
  749. jaato_server-0.7.0/shared/plugins/model_provider/openai/responses_converters.py +410 -0
  750. jaato_server-0.7.0/shared/plugins/model_provider/openai/tests/__init__.py +0 -0
  751. jaato_server-0.7.0/shared/plugins/model_provider/openai/tests/test_openai_provider.py +394 -0
  752. jaato_server-0.7.0/shared/plugins/model_provider/openai/tests/test_responses_wire.py +606 -0
  753. jaato_server-0.7.0/shared/plugins/model_provider/openrouter/__init__.py +112 -0
  754. jaato_server-0.7.0/shared/plugins/model_provider/openrouter/_lazy.py +37 -0
  755. jaato_server-0.7.0/shared/plugins/model_provider/openrouter/auth.py +342 -0
  756. jaato_server-0.7.0/shared/plugins/model_provider/openrouter/cache.py +113 -0
  757. jaato_server-0.7.0/shared/plugins/model_provider/openrouter/converters.py +970 -0
  758. jaato_server-0.7.0/shared/plugins/model_provider/openrouter/env.py +291 -0
  759. jaato_server-0.7.0/shared/plugins/model_provider/openrouter/errors.py +316 -0
  760. jaato_server-0.7.0/shared/plugins/model_provider/openrouter/provider.py +2471 -0
  761. jaato_server-0.7.0/shared/plugins/model_provider/openrouter/smoke/smoke_chat.py +116 -0
  762. jaato_server-0.7.0/shared/plugins/model_provider/openrouter/smoke/smoke_prose_tool_calls.py +162 -0
  763. jaato_server-0.7.0/shared/plugins/model_provider/openrouter/smoke/smoke_signal_completion.py +111 -0
  764. jaato_server-0.7.0/shared/plugins/model_provider/openrouter/smoke/smoke_tools.py +106 -0
  765. jaato_server-0.7.0/shared/plugins/model_provider/openrouter/stall.py +146 -0
  766. jaato_server-0.7.0/shared/plugins/model_provider/openrouter/tests/__init__.py +0 -0
  767. jaato_server-0.7.0/shared/plugins/model_provider/openrouter/tests/test_auth.py +198 -0
  768. jaato_server-0.7.0/shared/plugins/model_provider/openrouter/tests/test_error_finish_native_reason.py +350 -0
  769. jaato_server-0.7.0/shared/plugins/model_provider/openrouter/tests/test_openrouter_provider.py +2364 -0
  770. jaato_server-0.7.0/shared/plugins/model_provider/openrouter/tests/test_prompt_caching.py +555 -0
  771. jaato_server-0.7.0/shared/plugins/model_provider/openrouter/tests/test_retry_after_from_body.py +111 -0
  772. jaato_server-0.7.0/shared/plugins/model_provider/openrouter/tests/test_session_id.py +125 -0
  773. jaato_server-0.7.0/shared/plugins/model_provider/openrouter/tests/test_stall_deadline.py +675 -0
  774. jaato_server-0.7.0/shared/plugins/model_provider/openrouter/tests/test_truncated_tool_call_finish.py +414 -0
  775. jaato_server-0.7.0/shared/plugins/model_provider/ovhcloud/__init__.py +95 -0
  776. jaato_server-0.7.0/shared/plugins/model_provider/ovhcloud/auth.py +420 -0
  777. jaato_server-0.7.0/shared/plugins/model_provider/ovhcloud/env.py +216 -0
  778. jaato_server-0.7.0/shared/plugins/model_provider/ovhcloud/errors.py +240 -0
  779. jaato_server-0.7.0/shared/plugins/model_provider/ovhcloud/provider.py +479 -0
  780. jaato_server-0.7.0/shared/plugins/model_provider/ovhcloud/tests/__init__.py +0 -0
  781. jaato_server-0.7.0/shared/plugins/model_provider/ovhcloud/tests/test_auth.py +225 -0
  782. jaato_server-0.7.0/shared/plugins/model_provider/ovhcloud/tests/test_ovhcloud_provider.py +834 -0
  783. jaato_server-0.7.0/shared/plugins/model_provider/ovhcloud/tests/test_stream_cancel_close.py +104 -0
  784. jaato_server-0.7.0/shared/plugins/model_provider/ovhcloud/tests/test_tool_choice_mapping.py +43 -0
  785. jaato_server-0.7.0/shared/plugins/model_provider/tensorrt_llm/__init__.py +96 -0
  786. jaato_server-0.7.0/shared/plugins/model_provider/tensorrt_llm/env.py +69 -0
  787. jaato_server-0.7.0/shared/plugins/model_provider/tensorrt_llm/errors.py +123 -0
  788. jaato_server-0.7.0/shared/plugins/model_provider/tensorrt_llm/provider.py +200 -0
  789. jaato_server-0.7.0/shared/plugins/model_provider/tensorrt_llm/smoke/smoke_chat.py +116 -0
  790. jaato_server-0.7.0/shared/plugins/model_provider/tensorrt_llm/smoke/smoke_signal_completion.py +111 -0
  791. jaato_server-0.7.0/shared/plugins/model_provider/tensorrt_llm/smoke/smoke_tools.py +106 -0
  792. jaato_server-0.7.0/shared/plugins/model_provider/tensorrt_llm/tests/__init__.py +0 -0
  793. jaato_server-0.7.0/shared/plugins/model_provider/tensorrt_llm/tests/test_provider.py +555 -0
  794. jaato_server-0.7.0/shared/plugins/model_provider/tensorrt_llm/tests/test_stream_cancel_close.py +105 -0
  795. jaato_server-0.7.0/shared/plugins/model_provider/tests/__init__.py +0 -0
  796. jaato_server-0.7.0/shared/plugins/model_provider/tests/test_attachment_mime_dispatch.py +463 -0
  797. jaato_server-0.7.0/shared/plugins/model_provider/tests/test_modalities.py +221 -0
  798. jaato_server-0.7.0/shared/plugins/model_provider/tests/test_profile_api_key_location.py +98 -0
  799. jaato_server-0.7.0/shared/plugins/model_provider/tests/test_prose_tool_calls_quirk.py +228 -0
  800. jaato_server-0.7.0/shared/plugins/model_provider/tests/test_prose_tools.py +260 -0
  801. jaato_server-0.7.0/shared/plugins/model_provider/tests/test_reasoning_replay.py +330 -0
  802. jaato_server-0.7.0/shared/plugins/model_provider/tests/test_trace_records_resolved_tool_name.py +250 -0
  803. jaato_server-0.7.0/shared/plugins/model_provider/triton/__init__.py +109 -0
  804. jaato_server-0.7.0/shared/plugins/model_provider/triton/env.py +125 -0
  805. jaato_server-0.7.0/shared/plugins/model_provider/triton/errors.py +156 -0
  806. jaato_server-0.7.0/shared/plugins/model_provider/triton/provider.py +292 -0
  807. jaato_server-0.7.0/shared/plugins/model_provider/triton/tests/__init__.py +0 -0
  808. jaato_server-0.7.0/shared/plugins/model_provider/triton/tests/test_provider.py +663 -0
  809. jaato_server-0.7.0/shared/plugins/model_provider/vllm/__init__.py +160 -0
  810. jaato_server-0.7.0/shared/plugins/model_provider/vllm/env.py +74 -0
  811. jaato_server-0.7.0/shared/plugins/model_provider/vllm/errors.py +118 -0
  812. jaato_server-0.7.0/shared/plugins/model_provider/vllm/provider.py +1152 -0
  813. jaato_server-0.7.0/shared/plugins/model_provider/vllm/smoke/smoke_chat.py +118 -0
  814. jaato_server-0.7.0/shared/plugins/model_provider/vllm/smoke/smoke_signal_completion.py +110 -0
  815. jaato_server-0.7.0/shared/plugins/model_provider/vllm/smoke/smoke_tools.py +113 -0
  816. jaato_server-0.7.0/shared/plugins/model_provider/vllm/tests/__init__.py +0 -0
  817. jaato_server-0.7.0/shared/plugins/model_provider/vllm/tests/test_coerce_typed_tool_args_quirk.py +336 -0
  818. jaato_server-0.7.0/shared/plugins/model_provider/vllm/tests/test_context_window_autodetect.py +192 -0
  819. jaato_server-0.7.0/shared/plugins/model_provider/vllm/tests/test_force_tool_choice_quirk.py +227 -0
  820. jaato_server-0.7.0/shared/plugins/model_provider/vllm/tests/test_parallel_tool_calls_knob.py +107 -0
  821. jaato_server-0.7.0/shared/plugins/model_provider/vllm/tests/test_provider.py +578 -0
  822. jaato_server-0.7.0/shared/plugins/model_provider/vllm/tests/test_sampling_knobs.py +80 -0
  823. jaato_server-0.7.0/shared/plugins/model_provider/vllm/tests/test_stream_cancel_close.py +139 -0
  824. jaato_server-0.7.0/shared/plugins/model_provider/zhipuai/__init__.py +155 -0
  825. jaato_server-0.7.0/shared/plugins/model_provider/zhipuai/auth.py +569 -0
  826. jaato_server-0.7.0/shared/plugins/model_provider/zhipuai/env.py +116 -0
  827. jaato_server-0.7.0/shared/plugins/model_provider/zhipuai/provider.py +725 -0
  828. jaato_server-0.7.0/shared/plugins/model_provider/zhipuai/tests/__init__.py +1 -0
  829. jaato_server-0.7.0/shared/plugins/model_provider/zhipuai/tests/test_auth.py +319 -0
  830. jaato_server-0.7.0/shared/plugins/model_provider/zhipuai/tests/test_env.py +129 -0
  831. jaato_server-0.7.0/shared/plugins/model_provider/zhipuai/tests/test_provider.py +770 -0
  832. jaato_server-0.7.0/shared/plugins/model_provider/zhipuai_openai/__init__.py +105 -0
  833. jaato_server-0.7.0/shared/plugins/model_provider/zhipuai_openai/env.py +160 -0
  834. jaato_server-0.7.0/shared/plugins/model_provider/zhipuai_openai/errors.py +194 -0
  835. jaato_server-0.7.0/shared/plugins/model_provider/zhipuai_openai/provider.py +209 -0
  836. jaato_server-0.7.0/shared/plugins/model_provider/zhipuai_openai/tests/__init__.py +0 -0
  837. jaato_server-0.7.0/shared/plugins/model_provider/zhipuai_openai/tests/test_stream_cancel_close.py +106 -0
  838. jaato_server-0.7.0/shared/plugins/multimodal/__init__.py +20 -0
  839. jaato_server-0.7.0/shared/plugins/multimodal/plugin.py +364 -0
  840. jaato_server-0.7.0/shared/plugins/multimodal/tests/__init__.py +1 -0
  841. jaato_server-0.7.0/shared/plugins/multimodal/tests/test_plugin.py +313 -0
  842. jaato_server-0.7.0/shared/plugins/nim_auth/__init__.py +16 -0
  843. jaato_server-0.7.0/shared/plugins/nim_auth/plugin.py +507 -0
  844. jaato_server-0.7.0/shared/plugins/notebook/__init__.py +22 -0
  845. jaato_server-0.7.0/shared/plugins/notebook/backends/__init__.py +24 -0
  846. jaato_server-0.7.0/shared/plugins/notebook/backends/base.py +173 -0
  847. jaato_server-0.7.0/shared/plugins/notebook/backends/kaggle.py +1044 -0
  848. jaato_server-0.7.0/shared/plugins/notebook/backends/local.py +506 -0
  849. jaato_server-0.7.0/shared/plugins/notebook/backends/subprocess_kernel.py +377 -0
  850. jaato_server-0.7.0/shared/plugins/notebook/cell_transform.py +129 -0
  851. jaato_server-0.7.0/shared/plugins/notebook/code_analyzer.py +802 -0
  852. jaato_server-0.7.0/shared/plugins/notebook/kernel_main.py +208 -0
  853. jaato_server-0.7.0/shared/plugins/notebook/kernel_protocol.py +76 -0
  854. jaato_server-0.7.0/shared/plugins/notebook/plugin.py +1401 -0
  855. jaato_server-0.7.0/shared/plugins/notebook/tests/__init__.py +1 -0
  856. jaato_server-0.7.0/shared/plugins/notebook/tests/test_cell_transform.py +101 -0
  857. jaato_server-0.7.0/shared/plugins/notebook/tests/test_code_analyzer.py +326 -0
  858. jaato_server-0.7.0/shared/plugins/notebook/tests/test_inprocess_gate.py +138 -0
  859. jaato_server-0.7.0/shared/plugins/notebook/tests/test_notebook.py +426 -0
  860. jaato_server-0.7.0/shared/plugins/notebook/tests/test_subprocess_kernel.py +236 -0
  861. jaato_server-0.7.0/shared/plugins/notebook/tests/test_tool_stubs.py +511 -0
  862. jaato_server-0.7.0/shared/plugins/notebook/tool_stubs.py +316 -0
  863. jaato_server-0.7.0/shared/plugins/notebook/types.py +196 -0
  864. jaato_server-0.7.0/shared/plugins/notebook_output_formatter/__init__.py +15 -0
  865. jaato_server-0.7.0/shared/plugins/notebook_output_formatter/plugin.py +255 -0
  866. jaato_server-0.7.0/shared/plugins/openrouter_auth/__init__.py +21 -0
  867. jaato_server-0.7.0/shared/plugins/openrouter_auth/plugin.py +550 -0
  868. jaato_server-0.7.0/shared/plugins/path_safety.py +641 -0
  869. jaato_server-0.7.0/shared/plugins/permission/__init__.py +61 -0
  870. jaato_server-0.7.0/shared/plugins/permission/channels.py +1499 -0
  871. jaato_server-0.7.0/shared/plugins/permission/config_loader.py +319 -0
  872. jaato_server-0.7.0/shared/plugins/permission/evaluator.py +275 -0
  873. jaato_server-0.7.0/shared/plugins/permission/plugin.py +2303 -0
  874. jaato_server-0.7.0/shared/plugins/permission/policy.py +557 -0
  875. jaato_server-0.7.0/shared/plugins/permission/runner_rpc_channel.py +290 -0
  876. jaato_server-0.7.0/shared/plugins/permission/sanitization.py +469 -0
  877. jaato_server-0.7.0/shared/plugins/permission/tests/__init__.py +1 -0
  878. jaato_server-0.7.0/shared/plugins/permission/tests/test_approver_identity_859.py +233 -0
  879. jaato_server-0.7.0/shared/plugins/permission/tests/test_ask_permission_scope.py +141 -0
  880. jaato_server-0.7.0/shared/plugins/permission/tests/test_call_id_propagation_phase_4_1.py +318 -0
  881. jaato_server-0.7.0/shared/plugins/permission/tests/test_channels.py +782 -0
  882. jaato_server-0.7.0/shared/plugins/permission/tests/test_config_loader.py +395 -0
  883. jaato_server-0.7.0/shared/plugins/permission/tests/test_core_tool_evaluator_exemption.py +197 -0
  884. jaato_server-0.7.0/shared/plugins/permission/tests/test_editable_metadata_propagation_phase_4_2.py +253 -0
  885. jaato_server-0.7.0/shared/plugins/permission/tests/test_evaluator.py +269 -0
  886. jaato_server-0.7.0/shared/plugins/permission/tests/test_plugin.py +1334 -0
  887. jaato_server-0.7.0/shared/plugins/permission/tests/test_plugin_runner_rpc_wiring.py +203 -0
  888. jaato_server-0.7.0/shared/plugins/permission/tests/test_policy.py +397 -0
  889. jaato_server-0.7.0/shared/plugins/permission/tests/test_policy_lock_ask_critical_section.py +293 -0
  890. jaato_server-0.7.0/shared/plugins/permission/tests/test_registry_integration.py +405 -0
  891. jaato_server-0.7.0/shared/plugins/permission/tests/test_reliability_escalation_gate.py +82 -0
  892. jaato_server-0.7.0/shared/plugins/permission/tests/test_runner_rpc_channel.py +436 -0
  893. jaato_server-0.7.0/shared/plugins/permission/tests/test_sanitization.py +441 -0
  894. jaato_server-0.7.0/shared/plugins/permission/tests/test_whitelist_shell_control.py +95 -0
  895. jaato_server-0.7.0/shared/plugins/permission/types.py +203 -0
  896. jaato_server-0.7.0/shared/plugins/prompt_library/__init__.py +19 -0
  897. jaato_server-0.7.0/shared/plugins/prompt_library/plugin.py +2822 -0
  898. jaato_server-0.7.0/shared/plugins/prompt_library/tests/__init__.py +1 -0
  899. jaato_server-0.7.0/shared/plugins/prompt_library/tests/test_discover_cache.py +81 -0
  900. jaato_server-0.7.0/shared/plugins/prompt_library/tests/test_plugin.py +1847 -0
  901. jaato_server-0.7.0/shared/plugins/prompt_library/tests/test_validation.py +307 -0
  902. jaato_server-0.7.0/shared/plugins/prompt_library/validation.py +216 -0
  903. jaato_server-0.7.0/shared/plugins/references/__init__.py +90 -0
  904. jaato_server-0.7.0/shared/plugins/references/bundle.py +197 -0
  905. jaato_server-0.7.0/shared/plugins/references/channels.py +634 -0
  906. jaato_server-0.7.0/shared/plugins/references/config_loader.py +748 -0
  907. jaato_server-0.7.0/shared/plugins/references/embedding_types.py +418 -0
  908. jaato_server-0.7.0/shared/plugins/references/entry_handler.py +485 -0
  909. jaato_server-0.7.0/shared/plugins/references/merge.py +675 -0
  910. jaato_server-0.7.0/shared/plugins/references/models.py +369 -0
  911. jaato_server-0.7.0/shared/plugins/references/plugin.py +5473 -0
  912. jaato_server-0.7.0/shared/plugins/references/reconcile.py +438 -0
  913. jaato_server-0.7.0/shared/plugins/references/tests/__init__.py +1 -0
  914. jaato_server-0.7.0/shared/plugins/references/tests/test_bundle.py +585 -0
  915. jaato_server-0.7.0/shared/plugins/references/tests/test_bundle_crud.py +463 -0
  916. jaato_server-0.7.0/shared/plugins/references/tests/test_bundle_wiring.py +401 -0
  917. jaato_server-0.7.0/shared/plugins/references/tests/test_confined_catalog_load.py +41 -0
  918. jaato_server-0.7.0/shared/plugins/references/tests/test_embedding.py +200 -0
  919. jaato_server-0.7.0/shared/plugins/references/tests/test_embedding_config.py +282 -0
  920. jaato_server-0.7.0/shared/plugins/references/tests/test_entry_handler.py +191 -0
  921. jaato_server-0.7.0/shared/plugins/references/tests/test_merge.py +618 -0
  922. jaato_server-0.7.0/shared/plugins/references/tests/test_preselected_detection.py +161 -0
  923. jaato_server-0.7.0/shared/plugins/references/tests/test_reconcile.py +239 -0
  924. jaato_server-0.7.0/shared/plugins/references/tests/test_reference_contents.py +432 -0
  925. jaato_server-0.7.0/shared/plugins/references/tests/test_registry_integration.py +572 -0
  926. jaato_server-0.7.0/shared/plugins/references/tests/test_reload.py +256 -0
  927. jaato_server-0.7.0/shared/plugins/references/tests/test_transitive.py +2300 -0
  928. jaato_server-0.7.0/shared/plugins/references/tests/test_validate_reference.py +387 -0
  929. jaato_server-0.7.0/shared/plugins/registry.py +3174 -0
  930. jaato_server-0.7.0/shared/plugins/reliability/__init__.py +114 -0
  931. jaato_server-0.7.0/shared/plugins/reliability/nudge.py +577 -0
  932. jaato_server-0.7.0/shared/plugins/reliability/patterns.py +650 -0
  933. jaato_server-0.7.0/shared/plugins/reliability/persistence.py +431 -0
  934. jaato_server-0.7.0/shared/plugins/reliability/plugin.py +3331 -0
  935. jaato_server-0.7.0/shared/plugins/reliability/policy_config.py +508 -0
  936. jaato_server-0.7.0/shared/plugins/reliability/tests/__init__.py +1 -0
  937. jaato_server-0.7.0/shared/plugins/reliability/tests/test_plugin_persistence.py +167 -0
  938. jaato_server-0.7.0/shared/plugins/reliability/tests/test_policy_config.py +1214 -0
  939. jaato_server-0.7.0/shared/plugins/reliability/tests/test_reliability.py +3124 -0
  940. jaato_server-0.7.0/shared/plugins/reliability/tests/test_subagent_termination.py +99 -0
  941. jaato_server-0.7.0/shared/plugins/reliability/types.py +1236 -0
  942. jaato_server-0.7.0/shared/plugins/result_grep/__init__.py +50 -0
  943. jaato_server-0.7.0/shared/plugins/result_grep/plugin.py +527 -0
  944. jaato_server-0.7.0/shared/plugins/result_grep/tests/__init__.py +0 -0
  945. jaato_server-0.7.0/shared/plugins/result_grep/tests/test_plugin.py +259 -0
  946. jaato_server-0.7.0/shared/plugins/runner_forwarding.py +264 -0
  947. jaato_server-0.7.0/shared/plugins/sandbox_manager/__init__.py +31 -0
  948. jaato_server-0.7.0/shared/plugins/sandbox_manager/plugin.py +1153 -0
  949. jaato_server-0.7.0/shared/plugins/sandbox_manager/tests/__init__.py +1 -0
  950. jaato_server-0.7.0/shared/plugins/sandbox_manager/tests/test_plugin.py +1486 -0
  951. jaato_server-0.7.0/shared/plugins/sandbox_utils.py +532 -0
  952. jaato_server-0.7.0/shared/plugins/service_connector/__init__.py +19 -0
  953. jaato_server-0.7.0/shared/plugins/service_connector/auth.py +690 -0
  954. jaato_server-0.7.0/shared/plugins/service_connector/bruno_import.py +487 -0
  955. jaato_server-0.7.0/shared/plugins/service_connector/http_client.py +526 -0
  956. jaato_server-0.7.0/shared/plugins/service_connector/openapi_parser.py +968 -0
  957. jaato_server-0.7.0/shared/plugins/service_connector/plugin.py +2352 -0
  958. jaato_server-0.7.0/shared/plugins/service_connector/schema_store.py +608 -0
  959. jaato_server-0.7.0/shared/plugins/service_connector/tests/__init__.py +1 -0
  960. jaato_server-0.7.0/shared/plugins/service_connector/tests/test_auth_secret_resolution.py +547 -0
  961. jaato_server-0.7.0/shared/plugins/service_connector/tests/test_endpoint_by_name.py +189 -0
  962. jaato_server-0.7.0/shared/plugins/service_connector/tests/test_openapi_parser.py +742 -0
  963. jaato_server-0.7.0/shared/plugins/service_connector/tests/test_persistence.py +133 -0
  964. jaato_server-0.7.0/shared/plugins/service_connector/tests/test_schema_store_tiering.py +246 -0
  965. jaato_server-0.7.0/shared/plugins/service_connector/tests/test_types.py +367 -0
  966. jaato_server-0.7.0/shared/plugins/service_connector/tests/test_user_commands.py +511 -0
  967. jaato_server-0.7.0/shared/plugins/service_connector/tests/test_validation.py +313 -0
  968. jaato_server-0.7.0/shared/plugins/service_connector/types.py +581 -0
  969. jaato_server-0.7.0/shared/plugins/service_connector/validation.py +344 -0
  970. jaato_server-0.7.0/shared/plugins/session/__init__.py +70 -0
  971. jaato_server-0.7.0/shared/plugins/session/base.py +614 -0
  972. jaato_server-0.7.0/shared/plugins/session/config_loader.py +148 -0
  973. jaato_server-0.7.0/shared/plugins/session/file_session.py +968 -0
  974. jaato_server-0.7.0/shared/plugins/session/serializer.py +413 -0
  975. jaato_server-0.7.0/shared/plugins/session/tests/__init__.py +1 -0
  976. jaato_server-0.7.0/shared/plugins/session/tests/test_file_session.py +497 -0
  977. jaato_server-0.7.0/shared/plugins/session/tests/test_serializer.py +584 -0
  978. jaato_server-0.7.0/shared/plugins/streaming/__init__.py +37 -0
  979. jaato_server-0.7.0/shared/plugins/streaming/manager.py +540 -0
  980. jaato_server-0.7.0/shared/plugins/streaming/protocol.py +380 -0
  981. jaato_server-0.7.0/shared/plugins/subagent/__init__.py +62 -0
  982. jaato_server-0.7.0/shared/plugins/subagent/config.py +4601 -0
  983. jaato_server-0.7.0/shared/plugins/subagent/entry_handler.py +242 -0
  984. jaato_server-0.7.0/shared/plugins/subagent/plugin.py +4021 -0
  985. jaato_server-0.7.0/shared/plugins/subagent/serializer.py +263 -0
  986. jaato_server-0.7.0/shared/plugins/subagent/tests/__init__.py +1 -0
  987. jaato_server-0.7.0/shared/plugins/subagent/tests/test_config.py +423 -0
  988. jaato_server-0.7.0/shared/plugins/subagent/tests/test_confined_profile_discovery.py +32 -0
  989. jaato_server-0.7.0/shared/plugins/subagent/tests/test_entry_handler.py +243 -0
  990. jaato_server-0.7.0/shared/plugins/subagent/tests/test_inline_profile.py +243 -0
  991. jaato_server-0.7.0/shared/plugins/subagent/tests/test_isolated_optin_routing.py +247 -0
  992. jaato_server-0.7.0/shared/plugins/subagent/tests/test_isolated_subagent_optin_stub.py +219 -0
  993. jaato_server-0.7.0/shared/plugins/subagent/tests/test_merge_model_tiers.py +41 -0
  994. jaato_server-0.7.0/shared/plugins/subagent/tests/test_plugins_key_required.py +182 -0
  995. jaato_server-0.7.0/shared/plugins/subagent/tests/test_profile_discovery.py +740 -0
  996. jaato_server-0.7.0/shared/plugins/subagent/tests/test_profile_inheritance.py +1181 -0
  997. jaato_server-0.7.0/shared/plugins/subagent/tests/test_profile_quirks.py +194 -0
  998. jaato_server-0.7.0/shared/plugins/subagent/tests/test_profile_scrub_secret_env.py +168 -0
  999. jaato_server-0.7.0/shared/plugins/subagent/tests/test_profile_snapshot.py +169 -0
  1000. jaato_server-0.7.0/shared/plugins/subagent/tests/test_receive_forwarded_event.py +137 -0
  1001. jaato_server-0.7.0/shared/plugins/subagent/tests/test_registry_integration.py +310 -0
  1002. jaato_server-0.7.0/shared/plugins/subagent/tests/test_remote_spawn_forward.py +116 -0
  1003. jaato_server-0.7.0/shared/plugins/subagent/tests/test_secret_resolver.py +556 -0
  1004. jaato_server-0.7.0/shared/plugins/subagent/tests/test_serializer.py +479 -0
  1005. jaato_server-0.7.0/shared/plugins/subagent/tests/test_session_isolation.py +423 -0
  1006. jaato_server-0.7.0/shared/plugins/subagent/tests/test_subagent_budget_control.py +80 -0
  1007. jaato_server-0.7.0/shared/plugins/subagent/tests/test_termination_hook.py +306 -0
  1008. jaato_server-0.7.0/shared/plugins/subagent/tests/test_validate_profile.py +313 -0
  1009. jaato_server-0.7.0/shared/plugins/subagent/ui_hooks.py +463 -0
  1010. jaato_server-0.7.0/shared/plugins/table_formatter/__init__.py +10 -0
  1011. jaato_server-0.7.0/shared/plugins/table_formatter/plugin.py +479 -0
  1012. jaato_server-0.7.0/shared/plugins/table_formatter/tests/__init__.py +1 -0
  1013. jaato_server-0.7.0/shared/plugins/table_formatter/tests/test_plugin.py +213 -0
  1014. jaato_server-0.7.0/shared/plugins/telemetry/__init__.py +139 -0
  1015. jaato_server-0.7.0/shared/plugins/telemetry/langfuse_plugin.py +132 -0
  1016. jaato_server-0.7.0/shared/plugins/telemetry/null_plugin.py +178 -0
  1017. jaato_server-0.7.0/shared/plugins/telemetry/otel_plugin.py +1149 -0
  1018. jaato_server-0.7.0/shared/plugins/telemetry/plugin.py +421 -0
  1019. jaato_server-0.7.0/shared/plugins/telemetry/tests/__init__.py +1 -0
  1020. jaato_server-0.7.0/shared/plugins/telemetry/tests/test_attribute_redactors.py +164 -0
  1021. jaato_server-0.7.0/shared/plugins/telemetry/tests/test_langfuse_plugin.py +147 -0
  1022. jaato_server-0.7.0/shared/plugins/telemetry/tests/test_plugin.py +1109 -0
  1023. jaato_server-0.7.0/shared/plugins/telepathy/__init__.py +55 -0
  1024. jaato_server-0.7.0/shared/plugins/telepathy/plugin.py +365 -0
  1025. jaato_server-0.7.0/shared/plugins/telepathy/tests/__init__.py +0 -0
  1026. jaato_server-0.7.0/shared/plugins/telepathy/tests/test_plugin.py +279 -0
  1027. jaato_server-0.7.0/shared/plugins/template/__init__.py +16 -0
  1028. jaato_server-0.7.0/shared/plugins/template/indexer.py +179 -0
  1029. jaato_server-0.7.0/shared/plugins/template/plugin.py +5707 -0
  1030. jaato_server-0.7.0/shared/plugins/template/tests/__init__.py +0 -0
  1031. jaato_server-0.7.0/shared/plugins/template/tests/test_indexer_and_enrichment.py +406 -0
  1032. jaato_server-0.7.0/shared/plugins/template/tests/test_template_index.py +6274 -0
  1033. jaato_server-0.7.0/shared/plugins/template/tests/test_validate_template_index.py +244 -0
  1034. jaato_server-0.7.0/shared/plugins/tests/__init__.py +0 -0
  1035. jaato_server-0.7.0/shared/plugins/tests/test_daemon_forwarding.py +297 -0
  1036. jaato_server-0.7.0/shared/plugins/tests/test_daemon_forwarding_precondition.py +84 -0
  1037. jaato_server-0.7.0/shared/plugins/tests/test_entry_point_trust.py +560 -0
  1038. jaato_server-0.7.0/shared/plugins/tests/test_error_results_are_visible.py +85 -0
  1039. jaato_server-0.7.0/shared/plugins/tests/test_path_safety.py +405 -0
  1040. jaato_server-0.7.0/shared/plugins/tests/test_registry_authorized_paths.py +336 -0
  1041. jaato_server-0.7.0/shared/plugins/tests/test_registry_denied_paths.py +383 -0
  1042. jaato_server-0.7.0/shared/plugins/tests/test_registry_entry_point_protocol_warning.py +330 -0
  1043. jaato_server-0.7.0/shared/plugins/tests/test_registry_framework_injection.py +199 -0
  1044. jaato_server-0.7.0/shared/plugins/tests/test_registry_missing_dependency_warning.py +123 -0
  1045. jaato_server-0.7.0/shared/plugins/tests/test_registry_workspace_path.py +123 -0
  1046. jaato_server-0.7.0/shared/plugins/tests/test_runner_forwarding.py +407 -0
  1047. jaato_server-0.7.0/shared/plugins/tests/test_sandbox_utils.py +1183 -0
  1048. jaato_server-0.7.0/shared/plugins/tests/test_tool_schema_tier_filter.py +49 -0
  1049. jaato_server-0.7.0/shared/plugins/thinking/__init__.py +66 -0
  1050. jaato_server-0.7.0/shared/plugins/thinking/config.py +153 -0
  1051. jaato_server-0.7.0/shared/plugins/thinking/plugin.py +472 -0
  1052. jaato_server-0.7.0/shared/plugins/todo/__init__.py +118 -0
  1053. jaato_server-0.7.0/shared/plugins/todo/channels.py +628 -0
  1054. jaato_server-0.7.0/shared/plugins/todo/config_loader.py +243 -0
  1055. jaato_server-0.7.0/shared/plugins/todo/event_bus.py +232 -0
  1056. jaato_server-0.7.0/shared/plugins/todo/plugin.py +1901 -0
  1057. jaato_server-0.7.0/shared/plugins/todo/storage.py +327 -0
  1058. jaato_server-0.7.0/shared/plugins/todo/tests/__init__.py +1 -0
  1059. jaato_server-0.7.0/shared/plugins/todo/tests/conftest.py +25 -0
  1060. jaato_server-0.7.0/shared/plugins/todo/tests/test_channels.py +335 -0
  1061. jaato_server-0.7.0/shared/plugins/todo/tests/test_event_bus.py +751 -0
  1062. jaato_server-0.7.0/shared/plugins/todo/tests/test_models.py +606 -0
  1063. jaato_server-0.7.0/shared/plugins/todo/tests/test_plan_locking.py +666 -0
  1064. jaato_server-0.7.0/shared/plugins/todo/tests/test_plan_required_visibility.py +169 -0
  1065. jaato_server-0.7.0/shared/plugins/todo/tests/test_plugin.py +818 -0
  1066. jaato_server-0.7.0/shared/plugins/todo/tests/test_registry_integration.py +362 -0
  1067. jaato_server-0.7.0/shared/plugins/todo/tests/test_slot_scoped_declaration.py +16 -0
  1068. jaato_server-0.7.0/shared/plugins/todo/tests/test_storage.py +312 -0
  1069. jaato_server-0.7.0/shared/plugins/todo/tests/test_validation_enforcement.py +413 -0
  1070. jaato_server-0.7.0/shared/plugins/vision_capture/__init__.py +63 -0
  1071. jaato_server-0.7.0/shared/plugins/vision_capture/capture.py +268 -0
  1072. jaato_server-0.7.0/shared/plugins/vision_capture/formatter.py +178 -0
  1073. jaato_server-0.7.0/shared/plugins/vision_capture/protocol.py +109 -0
  1074. jaato_server-0.7.0/shared/plugins/waypoint/__init__.py +33 -0
  1075. jaato_server-0.7.0/shared/plugins/waypoint/manager.py +627 -0
  1076. jaato_server-0.7.0/shared/plugins/waypoint/models.py +136 -0
  1077. jaato_server-0.7.0/shared/plugins/waypoint/plugin.py +1129 -0
  1078. jaato_server-0.7.0/shared/plugins/waypoint/tests/__init__.py +1 -0
  1079. jaato_server-0.7.0/shared/plugins/waypoint/tests/test_manager.py +675 -0
  1080. jaato_server-0.7.0/shared/plugins/waypoint/tests/test_plugin.py +521 -0
  1081. jaato_server-0.7.0/shared/plugins/waypoint/tests/test_session_state_snapshot.py +149 -0
  1082. jaato_server-0.7.0/shared/plugins/web_fetch/__init__.py +16 -0
  1083. jaato_server-0.7.0/shared/plugins/web_fetch/plugin.py +1621 -0
  1084. jaato_server-0.7.0/shared/plugins/web_fetch/security.py +276 -0
  1085. jaato_server-0.7.0/shared/plugins/web_fetch/tests/__init__.py +1 -0
  1086. jaato_server-0.7.0/shared/plugins/web_fetch/tests/test_execute_guards.py +216 -0
  1087. jaato_server-0.7.0/shared/plugins/web_fetch/tests/test_plugin.py +883 -0
  1088. jaato_server-0.7.0/shared/plugins/web_fetch/tests/test_security.py +205 -0
  1089. jaato_server-0.7.0/shared/plugins/web_search/__init__.py +16 -0
  1090. jaato_server-0.7.0/shared/plugins/web_search/plugin.py +307 -0
  1091. jaato_server-0.7.0/shared/plugins/web_search/tests/__init__.py +1 -0
  1092. jaato_server-0.7.0/shared/plugins/web_search/tests/test_registry_integration.py +326 -0
  1093. jaato_server-0.7.0/shared/plugins/webhook/__init__.py +19 -0
  1094. jaato_server-0.7.0/shared/plugins/webhook/config.py +398 -0
  1095. jaato_server-0.7.0/shared/plugins/webhook/http_server.py +423 -0
  1096. jaato_server-0.7.0/shared/plugins/webhook/plugin.py +557 -0
  1097. jaato_server-0.7.0/shared/plugins/webhook/routes.py +190 -0
  1098. jaato_server-0.7.0/shared/plugins/webhook/tests/__init__.py +0 -0
  1099. jaato_server-0.7.0/shared/plugins/webhook/tests/test_config.py +393 -0
  1100. jaato_server-0.7.0/shared/plugins/webhook/tests/test_http_server.py +333 -0
  1101. jaato_server-0.7.0/shared/plugins/webhook/tests/test_plugin.py +455 -0
  1102. jaato_server-0.7.0/shared/plugins/webhook/tests/test_routes.py +264 -0
  1103. jaato_server-0.7.0/shared/plugins/workspace_venv.py +384 -0
  1104. jaato_server-0.7.0/shared/plugins/zhipuai_auth/__init__.py +16 -0
  1105. jaato_server-0.7.0/shared/plugins/zhipuai_auth/plugin.py +511 -0
  1106. jaato_server-0.7.0/shared/pricing.py +182 -0
  1107. jaato_server-0.7.0/shared/retry_utils.py +602 -0
  1108. jaato_server-0.7.0/shared/rewind.py +174 -0
  1109. jaato_server-0.7.0/shared/runtime_limits.py +360 -0
  1110. jaato_server-0.7.0/shared/safe_pool.py +139 -0
  1111. jaato_server-0.7.0/shared/scaffold/__init__.py +0 -0
  1112. jaato_server-0.7.0/shared/scaffold/__main__.py +378 -0
  1113. jaato_server-0.7.0/shared/scaffold/_client_templates.py +667 -0
  1114. jaato_server-0.7.0/shared/scaffold/_gate_templates.py +403 -0
  1115. jaato_server-0.7.0/shared/scaffold/_processor_template.py +298 -0
  1116. jaato_server-0.7.0/shared/scaffold/api.py +137 -0
  1117. jaato_server-0.7.0/shared/scaffold/archetypes.py +766 -0
  1118. jaato_server-0.7.0/shared/scaffold/build.py +1554 -0
  1119. jaato_server-0.7.0/shared/scaffold/explain.py +2100 -0
  1120. jaato_server-0.7.0/shared/scaffold/introspect.py +1152 -0
  1121. jaato_server-0.7.0/shared/scaffold/tests/test_binding_is_optional_where_unowned.py +157 -0
  1122. jaato_server-0.7.0/shared/scaffold/tests/test_client_template_completion_wait.py +263 -0
  1123. jaato_server-0.7.0/shared/scaffold/tests/test_client_transport_recovery.py +140 -0
  1124. jaato_server-0.7.0/shared/scaffold/tests/test_env_descriptions.py +41 -0
  1125. jaato_server-0.7.0/shared/scaffold/tests/test_explain_commands.py +85 -0
  1126. jaato_server-0.7.0/shared/scaffold/tests/test_explain_paths.py +43 -0
  1127. jaato_server-0.7.0/shared/scaffold/tests/test_explain_prefetch.py +23 -0
  1128. jaato_server-0.7.0/shared/scaffold/tests/test_explain_profile_inheritance.py +49 -0
  1129. jaato_server-0.7.0/shared/scaffold/tests/test_extension_verbs.py +135 -0
  1130. jaato_server-0.7.0/shared/scaffold/tests/test_observer_filter_names.py +105 -0
  1131. jaato_server-0.7.0/shared/scaffold/tests/test_sweep_archetype.py +440 -0
  1132. jaato_server-0.7.0/shared/scaffold/tests/test_templates_track_the_sdk_contract.py +222 -0
  1133. jaato_server-0.7.0/shared/scaffold/tests/test_validate_harness_traps.py +123 -0
  1134. jaato_server-0.7.0/shared/scaffold/tests/test_validate_knobs.py +40 -0
  1135. jaato_server-0.7.0/shared/scaffold/tests/test_validate_model_tiers.py +44 -0
  1136. jaato_server-0.7.0/shared/scaffold/tests/test_validate_plugin_knobs.py +85 -0
  1137. jaato_server-0.7.0/shared/scaffold/tests/test_validate_prefetch.py +75 -0
  1138. jaato_server-0.7.0/shared/scaffold/tests/test_validate_secret_scrub.py +87 -0
  1139. jaato_server-0.7.0/shared/scaffold/tests/test_validate_single_file.py +65 -0
  1140. jaato_server-0.7.0/shared/scaffold/tests/test_validate_template_routing.py +109 -0
  1141. jaato_server-0.7.0/shared/scaffold/tests/test_validate_tier_tag.py +32 -0
  1142. jaato_server-0.7.0/shared/scaffold/validate.py +1228 -0
  1143. jaato_server-0.7.0/shared/script_loader.py +368 -0
  1144. jaato_server-0.7.0/shared/secret_repr.py +159 -0
  1145. jaato_server-0.7.0/shared/secret_scrub.py +281 -0
  1146. jaato_server-0.7.0/shared/session_context.py +290 -0
  1147. jaato_server-0.7.0/shared/session_envelope.py +669 -0
  1148. jaato_server-0.7.0/shared/session_history.py +269 -0
  1149. jaato_server-0.7.0/shared/session_id.py +60 -0
  1150. jaato_server-0.7.0/shared/session_persistence.py +227 -0
  1151. jaato_server-0.7.0/shared/session_telemetry.py +171 -0
  1152. jaato_server-0.7.0/shared/spawn_schema_loader.py +178 -0
  1153. jaato_server-0.7.0/shared/ssl_helper.py +89 -0
  1154. jaato_server-0.7.0/shared/subprocess_runner.py +314 -0
  1155. jaato_server-0.7.0/shared/tag_coherence.py +152 -0
  1156. jaato_server-0.7.0/shared/terminal_caps.py +191 -0
  1157. jaato_server-0.7.0/shared/test_safe_pool.py +147 -0
  1158. jaato_server-0.7.0/shared/tests/__init__.py +1 -0
  1159. jaato_server-0.7.0/shared/tests/offer_double.py +59 -0
  1160. jaato_server-0.7.0/shared/tests/test_a_cache_is_published_only_when_complete.py +179 -0
  1161. jaato_server-0.7.0/shared/tests/test_a_completed_session_keeps_a_valid_history.py +273 -0
  1162. jaato_server-0.7.0/shared/tests/test_a_dead_stream_is_not_a_finished_turn.py +665 -0
  1163. jaato_server-0.7.0/shared/tests/test_a_dict_result_is_not_exempt_from_enrichment.py +344 -0
  1164. jaato_server-0.7.0/shared/tests/test_a_missing_completion_is_not_silent.py +186 -0
  1165. jaato_server-0.7.0/shared/tests/test_a_reported_cost_reaches_the_event.py +156 -0
  1166. jaato_server-0.7.0/shared/tests/test_a_terminal_event_is_last.py +166 -0
  1167. jaato_server-0.7.0/shared/tests/test_a_truncated_turn_is_continued_not_lost.py +631 -0
  1168. jaato_server-0.7.0/shared/tests/test_abnormal_finish_surfacing.py +166 -0
  1169. jaato_server-0.7.0/shared/tests/test_agent_profiles.py +633 -0
  1170. jaato_server-0.7.0/shared/tests/test_all_plugins_satisfy_protocol.py +221 -0
  1171. jaato_server-0.7.0/shared/tests/test_an_abandoned_tool_call_is_still_answered.py +536 -0
  1172. jaato_server-0.7.0/shared/tests/test_an_attachment_does_not_silence_the_model.py +318 -0
  1173. jaato_server-0.7.0/shared/tests/test_app_identity.py +361 -0
  1174. jaato_server-0.7.0/shared/tests/test_apparmor.py +2799 -0
  1175. jaato_server-0.7.0/shared/tests/test_apparmor_sub_profile.py +638 -0
  1176. jaato_server-0.7.0/shared/tests/test_atomic_write.py +261 -0
  1177. jaato_server-0.7.0/shared/tests/test_binary_media_chunks.py +794 -0
  1178. jaato_server-0.7.0/shared/tests/test_budget_control.py +225 -0
  1179. jaato_server-0.7.0/shared/tests/test_budget_latch_survives_reload.py +123 -0
  1180. jaato_server-0.7.0/shared/tests/test_budget_runtime.py +346 -0
  1181. jaato_server-0.7.0/shared/tests/test_budget_signal_and_persistence.py +141 -0
  1182. jaato_server-0.7.0/shared/tests/test_budget_usage_round_trip.py +107 -0
  1183. jaato_server-0.7.0/shared/tests/test_cache_hit_percent_against_invoice.py +441 -0
  1184. jaato_server-0.7.0/shared/tests/test_cache_plugin_follows_tier_switch.py +338 -0
  1185. jaato_server-0.7.0/shared/tests/test_cache_plugin_profile_knobs.py +353 -0
  1186. jaato_server-0.7.0/shared/tests/test_cache_profile_field.py +185 -0
  1187. jaato_server-0.7.0/shared/tests/test_cache_spend_survives_a_tier_switch.py +631 -0
  1188. jaato_server-0.7.0/shared/tests/test_cancellation.py +321 -0
  1189. jaato_server-0.7.0/shared/tests/test_cascade_budget_pool.py +254 -0
  1190. jaato_server-0.7.0/shared/tests/test_cascade_event_attribution.py +331 -0
  1191. jaato_server-0.7.0/shared/tests/test_cascade_midflight_push.py +258 -0
  1192. jaato_server-0.7.0/shared/tests/test_cascade_refusal_reaches_observers.py +164 -0
  1193. jaato_server-0.7.0/shared/tests/test_cgroups.py +580 -0
  1194. jaato_server-0.7.0/shared/tests/test_clarification_reaches_the_client.py +237 -0
  1195. jaato_server-0.7.0/shared/tests/test_cold_sibling_is_not_absent.py +157 -0
  1196. jaato_server-0.7.0/shared/tests/test_command_analysis.py +198 -0
  1197. jaato_server-0.7.0/shared/tests/test_completion_nudge_budget.py +363 -0
  1198. jaato_server-0.7.0/shared/tests/test_completion_processor_refusal_budget.py +342 -0
  1199. jaato_server-0.7.0/shared/tests/test_completion_processors.py +904 -0
  1200. jaato_server-0.7.0/shared/tests/test_completion_schema_loader.py +124 -0
  1201. jaato_server-0.7.0/shared/tests/test_config_resolver.py +281 -0
  1202. jaato_server-0.7.0/shared/tests/test_confinement_guard.py +53 -0
  1203. jaato_server-0.7.0/shared/tests/test_connection_error_rebuilds_client.py +122 -0
  1204. jaato_server-0.7.0/shared/tests/test_context_limit_lazy_provider.py +139 -0
  1205. jaato_server-0.7.0/shared/tests/test_credential_hygiene.py +382 -0
  1206. jaato_server-0.7.0/shared/tests/test_cross_provider_tiers.py +106 -0
  1207. jaato_server-0.7.0/shared/tests/test_cyclomatic_complexity_audit.py +828 -0
  1208. jaato_server-0.7.0/shared/tests/test_dedup_history_for_gc.py +109 -0
  1209. jaato_server-0.7.0/shared/tests/test_deferred_plugin_instructions.py +439 -0
  1210. jaato_server-0.7.0/shared/tests/test_discover_bundles_eacces.py +37 -0
  1211. jaato_server-0.7.0/shared/tests/test_docs_do_not_contradict_the_tree.py +312 -0
  1212. jaato_server-0.7.0/shared/tests/test_drain_with_prompt_callback.py +101 -0
  1213. jaato_server-0.7.0/shared/tests/test_dynamic_instructions.py +330 -0
  1214. jaato_server-0.7.0/shared/tests/test_enrichment_plugin.py +384 -0
  1215. jaato_server-0.7.0/shared/tests/test_env_scope_catalog.py +427 -0
  1216. jaato_server-0.7.0/shared/tests/test_event_bus_tools.py +356 -0
  1217. jaato_server-0.7.0/shared/tests/test_event_payloads.py +71 -0
  1218. jaato_server-0.7.0/shared/tests/test_every_guard_detects_its_own_reversion.py +329 -0
  1219. jaato_server-0.7.0/shared/tests/test_exc_message.py +42 -0
  1220. jaato_server-0.7.0/shared/tests/test_executor_return_conventions.py +148 -0
  1221. jaato_server-0.7.0/shared/tests/test_explain_profile_cost.py +161 -0
  1222. jaato_server-0.7.0/shared/tests/test_explain_publishes_tool_parameters.py +96 -0
  1223. jaato_server-0.7.0/shared/tests/test_forwarded_caller_identity.py +116 -0
  1224. jaato_server-0.7.0/shared/tests/test_forwarded_executor_contract.py +170 -0
  1225. jaato_server-0.7.0/shared/tests/test_framing.py +264 -0
  1226. jaato_server-0.7.0/shared/tests/test_gc_config.py +403 -0
  1227. jaato_server-0.7.0/shared/tests/test_gc_runs_through_one_path.py +172 -0
  1228. jaato_server-0.7.0/shared/tests/test_gc_support.py +191 -0
  1229. jaato_server-0.7.0/shared/tests/test_generic_plugin_persistence.py +244 -0
  1230. jaato_server-0.7.0/shared/tests/test_get_tools_for_provider_visibility_filter.py +221 -0
  1231. jaato_server-0.7.0/shared/tests/test_heard_audio_does_not_accumulate.py +515 -0
  1232. jaato_server-0.7.0/shared/tests/test_history_modality_gate.py +325 -0
  1233. jaato_server-0.7.0/shared/tests/test_history_pairs_calls_to_responses.py +137 -0
  1234. jaato_server-0.7.0/shared/tests/test_history_render_function_response.py +77 -0
  1235. jaato_server-0.7.0/shared/tests/test_in_process_facade.py +1102 -0
  1236. jaato_server-0.7.0/shared/tests/test_in_process_open_event_stream.py +100 -0
  1237. jaato_server-0.7.0/shared/tests/test_in_process_permission.py +109 -0
  1238. jaato_server-0.7.0/shared/tests/test_inject_drives_and_session_save.py +189 -0
  1239. jaato_server-0.7.0/shared/tests/test_instruction_budget.py +654 -0
  1240. jaato_server-0.7.0/shared/tests/test_instruction_budget_builder.py +165 -0
  1241. jaato_server-0.7.0/shared/tests/test_instruction_suppression.py +205 -0
  1242. jaato_server-0.7.0/shared/tests/test_instruction_token_cache.py +90 -0
  1243. jaato_server-0.7.0/shared/tests/test_introspection_gate.py +99 -0
  1244. jaato_server-0.7.0/shared/tests/test_isolated_default_runtime_limits.py +181 -0
  1245. jaato_server-0.7.0/shared/tests/test_jaato_client.py +241 -0
  1246. jaato_server-0.7.0/shared/tests/test_jaato_runtime.py +576 -0
  1247. jaato_server-0.7.0/shared/tests/test_jaato_runtime_api_key_promotion.py +147 -0
  1248. jaato_server-0.7.0/shared/tests/test_jaato_session.py +1950 -0
  1249. jaato_server-0.7.0/shared/tests/test_ledger_user_attribution_859.py +90 -0
  1250. jaato_server-0.7.0/shared/tests/test_lifecycle_tools.py +1274 -0
  1251. jaato_server-0.7.0/shared/tests/test_max_parallel_tools.py +329 -0
  1252. jaato_server-0.7.0/shared/tests/test_mcp_secret_scrub.py +141 -0
  1253. jaato_server-0.7.0/shared/tests/test_media_output_contract.py +948 -0
  1254. jaato_server-0.7.0/shared/tests/test_message_delivery_is_shared.py +248 -0
  1255. jaato_server-0.7.0/shared/tests/test_modality_content_gate.py +405 -0
  1256. jaato_server-0.7.0/shared/tests/test_model_loop_frames_survive.py +107 -0
  1257. jaato_server-0.7.0/shared/tests/test_model_suffix_ledger.py +74 -0
  1258. jaato_server-0.7.0/shared/tests/test_model_tiers.py +563 -0
  1259. jaato_server-0.7.0/shared/tests/test_offer_message_is_atomic.py +185 -0
  1260. jaato_server-0.7.0/shared/tests/test_output_callback.py +207 -0
  1261. jaato_server-0.7.0/shared/tests/test_parent_authority_is_source_gated.py +200 -0
  1262. jaato_server-0.7.0/shared/tests/test_path_utils.py +417 -0
  1263. jaato_server-0.7.0/shared/tests/test_pending_tool_choice_lifecycle.py +204 -0
  1264. jaato_server-0.7.0/shared/tests/test_per_turn_completion_latches.py +161 -0
  1265. jaato_server-0.7.0/shared/tests/test_plugin_registry_gated_init.py +251 -0
  1266. jaato_server-0.7.0/shared/tests/test_plugin_session_safety.py +112 -0
  1267. jaato_server-0.7.0/shared/tests/test_plugin_tier_partition.py +416 -0
  1268. jaato_server-0.7.0/shared/tests/test_prefetch_confinement.py +162 -0
  1269. jaato_server-0.7.0/shared/tests/test_prepare_completion_free_shape.py +66 -0
  1270. jaato_server-0.7.0/shared/tests/test_pricing.py +148 -0
  1271. jaato_server-0.7.0/shared/tests/test_processor_wiring_survives_the_runner_boundary.py +281 -0
  1272. jaato_server-0.7.0/shared/tests/test_profile_block_fields_have_one_parser.py +114 -0
  1273. jaato_server-0.7.0/shared/tests/test_provider_capabilities.py +168 -0
  1274. jaato_server-0.7.0/shared/tests/test_provider_capability_conformance.py +535 -0
  1275. jaato_server-0.7.0/shared/tests/test_provider_knobs.py +199 -0
  1276. jaato_server-0.7.0/shared/tests/test_provider_trace_routing.py +176 -0
  1277. jaato_server-0.7.0/shared/tests/test_proxy.py +479 -0
  1278. jaato_server-0.7.0/shared/tests/test_refusal_names_the_real_reason.py +144 -0
  1279. jaato_server-0.7.0/shared/tests/test_registry_workspace_broadcast.py +45 -0
  1280. jaato_server-0.7.0/shared/tests/test_relative_paths_do_not_cross_the_daemon_boundary.py +418 -0
  1281. jaato_server-0.7.0/shared/tests/test_reliability_model_follows_the_tier.py +145 -0
  1282. jaato_server-0.7.0/shared/tests/test_render_context_session_id.py +133 -0
  1283. jaato_server-0.7.0/shared/tests/test_rendered_system_instruction_snapshot.py +146 -0
  1284. jaato_server-0.7.0/shared/tests/test_reset_for_next_session.py +449 -0
  1285. jaato_server-0.7.0/shared/tests/test_resume_verbs_carry_attachments.py +392 -0
  1286. jaato_server-0.7.0/shared/tests/test_retry_utils.py +313 -0
  1287. jaato_server-0.7.0/shared/tests/test_rewind.py +212 -0
  1288. jaato_server-0.7.0/shared/tests/test_rewind_integration.py +192 -0
  1289. jaato_server-0.7.0/shared/tests/test_runner_traceback_reaches_consumer.py +112 -0
  1290. jaato_server-0.7.0/shared/tests/test_runtime_limits_e2e.py +939 -0
  1291. jaato_server-0.7.0/shared/tests/test_runtime_limits_wiring.py +559 -0
  1292. jaato_server-0.7.0/shared/tests/test_scaffold_archetype_docs.py +334 -0
  1293. jaato_server-0.7.0/shared/tests/test_scaffold_budget_control.py +135 -0
  1294. jaato_server-0.7.0/shared/tests/test_scaffold_completion_contract.py +323 -0
  1295. jaato_server-0.7.0/shared/tests/test_scaffold_discovery_gated.py +62 -0
  1296. jaato_server-0.7.0/shared/tests/test_scaffold_explain_descriptions.py +75 -0
  1297. jaato_server-0.7.0/shared/tests/test_scaffold_explain_events.py +104 -0
  1298. jaato_server-0.7.0/shared/tests/test_scaffold_new_blames_only_itself.py +79 -0
  1299. jaato_server-0.7.0/shared/tests/test_scaffold_profile_env_block.py +541 -0
  1300. jaato_server-0.7.0/shared/tests/test_scaffold_secrets.py +151 -0
  1301. jaato_server-0.7.0/shared/tests/test_scaffold_smoke.py +215 -0
  1302. jaato_server-0.7.0/shared/tests/test_scaffold_sweep_gate_contract.py +575 -0
  1303. jaato_server-0.7.0/shared/tests/test_scaffold_tiers.py +259 -0
  1304. jaato_server-0.7.0/shared/tests/test_script_loader.py +470 -0
  1305. jaato_server-0.7.0/shared/tests/test_secret_scrub.py +220 -0
  1306. jaato_server-0.7.0/shared/tests/test_send_to_sibling.py +320 -0
  1307. jaato_server-0.7.0/shared/tests/test_server_version.py +142 -0
  1308. jaato_server-0.7.0/shared/tests/test_session_attached_state.py +242 -0
  1309. jaato_server-0.7.0/shared/tests/test_session_cost_telemetry.py +173 -0
  1310. jaato_server-0.7.0/shared/tests/test_session_env_audit.py +218 -0
  1311. jaato_server-0.7.0/shared/tests/test_session_envelope.py +656 -0
  1312. jaato_server-0.7.0/shared/tests/test_session_envelope_client_tools.py +36 -0
  1313. jaato_server-0.7.0/shared/tests/test_session_history.py +606 -0
  1314. jaato_server-0.7.0/shared/tests/test_session_id_validation.py +68 -0
  1315. jaato_server-0.7.0/shared/tests/test_session_manager_wiring_on_every_route.py +138 -0
  1316. jaato_server-0.7.0/shared/tests/test_session_new_instruction_override.py +209 -0
  1317. jaato_server-0.7.0/shared/tests/test_session_persistence_is_declared.py +159 -0
  1318. jaato_server-0.7.0/shared/tests/test_session_send_command.py +155 -0
  1319. jaato_server-0.7.0/shared/tests/test_session_telemetry.py +136 -0
  1320. jaato_server-0.7.0/shared/tests/test_session_tool_scopes.py +173 -0
  1321. jaato_server-0.7.0/shared/tests/test_sibling_accepted_means_a_turn.py +180 -0
  1322. jaato_server-0.7.0/shared/tests/test_sibling_source_is_idle_only.py +101 -0
  1323. jaato_server-0.7.0/shared/tests/test_signal_completion_schema_gate.py +192 -0
  1324. jaato_server-0.7.0/shared/tests/test_signal_completion_terminates_turn.py +294 -0
  1325. jaato_server-0.7.0/shared/tests/test_source_type_not_re_enumerated.py +93 -0
  1326. jaato_server-0.7.0/shared/tests/test_symmetric_loop_does_not_strand.py +127 -0
  1327. jaato_server-0.7.0/shared/tests/test_system_instruction_override_budget.py +292 -0
  1328. jaato_server-0.7.0/shared/tests/test_tag_coherence.py +135 -0
  1329. jaato_server-0.7.0/shared/tests/test_terminal_caps.py +241 -0
  1330. jaato_server-0.7.0/shared/tests/test_the_refusal_ceiling_bounds_the_session_loop.py +394 -0
  1331. jaato_server-0.7.0/shared/tests/test_tier_descriptions.py +221 -0
  1332. jaato_server-0.7.0/shared/tests/test_tier_exit_on_completion.py +133 -0
  1333. jaato_server-0.7.0/shared/tests/test_tier_modalities.py +485 -0
  1334. jaato_server-0.7.0/shared/tests/test_tier_names.py +426 -0
  1335. jaato_server-0.7.0/shared/tests/test_tool_executor_transformers.py +223 -0
  1336. jaato_server-0.7.0/shared/tests/test_tool_id_map.py +191 -0
  1337. jaato_server-0.7.0/shared/tests/test_tool_id_scrub.py +54 -0
  1338. jaato_server-0.7.0/shared/tests/test_tool_id_wire_conformance.py +147 -0
  1339. jaato_server-0.7.0/shared/tests/test_tool_narration_reaches_the_wire.py +110 -0
  1340. jaato_server-0.7.0/shared/tests/test_tool_result_builder.py +107 -0
  1341. jaato_server-0.7.0/shared/tests/test_tool_result_truncation.py +102 -0
  1342. jaato_server-0.7.0/shared/tests/test_trace_profile_block.py +255 -0
  1343. jaato_server-0.7.0/shared/tests/test_truncation_is_not_reported_as_tool_use.py +310 -0
  1344. jaato_server-0.7.0/shared/tests/test_two_phase_budget.py +351 -0
  1345. jaato_server-0.7.0/shared/tests/test_ui_utils.py +317 -0
  1346. jaato_server-0.7.0/shared/tests/test_unreachable_says_which_kind.py +317 -0
  1347. jaato_server-0.7.0/shared/tests/test_unreadable_tool_args_are_not_executed.py +433 -0
  1348. jaato_server-0.7.0/shared/tests/test_untrusted_content_boundary.py +123 -0
  1349. jaato_server-0.7.0/shared/tests/test_untrusted_mark_survives_rebuilds.py +131 -0
  1350. jaato_server-0.7.0/shared/tests/test_user_message_multimodal.py +84 -0
  1351. jaato_server-0.7.0/shared/tests/test_wire_tool_schema_budget.py +160 -0
  1352. jaato_server-0.7.0/shared/tests/test_workspace_provisioner.py +195 -0
  1353. jaato_server-0.7.0/shared/tests/test_workspace_root_isolation.py +154 -0
  1354. jaato_server-0.7.0/shared/tests/test_workspace_venv.py +281 -0
  1355. jaato_server-0.7.0/shared/token_accounting.py +214 -0
  1356. jaato_server-0.7.0/shared/tool_id_map.py +197 -0
  1357. jaato_server-0.7.0/shared/tool_result_builder.py +355 -0
  1358. jaato_server-0.7.0/shared/tool_result_truncation.py +301 -0
  1359. jaato_server-0.7.0/shared/trace.py +20 -0
  1360. jaato_server-0.7.0/shared/ui_utils.py +838 -0
  1361. jaato_server-0.7.0/shared/utils/__init__.py +1 -0
  1362. jaato_server-0.7.0/shared/utils/errors.py +44 -0
  1363. jaato_server-0.7.0/shared/utils/gitignore.py +159 -0
@@ -0,0 +1,1252 @@
1
+ Metadata-Version: 2.4
2
+ Name: jaato-server
3
+ Version: 0.7.0
4
+ Summary: Jaato Server - LLM tool orchestration runtime and daemon
5
+ Author: apanoia
6
+ License-Expression: BUSL-1.1
7
+ Project-URL: Repository, https://github.com/Jaato-framework-and-examples/jaato
8
+ Project-URL: Issues, https://github.com/Jaato-framework-and-examples/jaato/issues
9
+ Keywords: llm,ai,tools,orchestration,vertex-ai,gemini
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Requires-Python: >=3.10
17
+ Description-Content-Type: text/markdown
18
+ Requires-Dist: jaato-sdk
19
+ Requires-Dist: requests
20
+ Requires-Dist: mcp[cli]
21
+ Requires-Dist: google-api-core
22
+ Requires-Dist: certifi
23
+ Requires-Dist: python-dotenv
24
+ Requires-Dist: pyreadline3; sys_platform == "win32"
25
+ Requires-Dist: pyyaml
26
+ Requires-Dist: websockets>=12.0
27
+ Requires-Dist: anthropic>=0.40.0
28
+ Requires-Dist: httpx>=0.27.0
29
+ Requires-Dist: psutil>=5.0.0
30
+ Requires-Dist: watchdog>=4.0.0
31
+ Requires-Dist: rich>=13.0.0
32
+ Requires-Dist: wcwidth
33
+ Requires-Dist: jsonschema>=4.0.0
34
+ Provides-Extra: dev
35
+ Requires-Dist: pytest; extra == "dev"
36
+ Requires-Dist: pytest-asyncio; extra == "dev"
37
+ Requires-Dist: radon; extra == "dev"
38
+ Provides-Extra: google
39
+ Requires-Dist: google-genai; extra == "google"
40
+ Requires-Dist: google-auth; extra == "google"
41
+ Provides-Extra: github-models
42
+ Requires-Dist: azure-ai-inference>=1.0.0b7; extra == "github-models"
43
+ Provides-Extra: nim
44
+ Requires-Dist: openai>=1.0; extra == "nim"
45
+ Provides-Extra: openai
46
+ Requires-Dist: openai>=1.66; extra == "openai"
47
+ Provides-Extra: azure-openai
48
+ Requires-Dist: openai>=1.66; extra == "azure-openai"
49
+ Requires-Dist: azure-identity>=1.15.0; extra == "azure-openai"
50
+ Provides-Extra: openrouter
51
+ Requires-Dist: openai>=1.0; extra == "openrouter"
52
+ Provides-Extra: ovhcloud
53
+ Requires-Dist: openai>=1.0; extra == "ovhcloud"
54
+ Provides-Extra: web
55
+ Requires-Dist: trafilatura>=1.6.0; extra == "web"
56
+ Requires-Dist: html2text>=2024.2.26; extra == "web"
57
+ Requires-Dist: beautifulsoup4>=4.12.0; extra == "web"
58
+ Requires-Dist: lxml>=5.0.0; extra == "web"
59
+ Requires-Dist: pymupdf4llm>=0.2.0; extra == "web"
60
+ Requires-Dist: ddgs>=7.0.0; extra == "web"
61
+ Provides-Extra: interactive
62
+ Requires-Dist: pexpect>=4.8.0; sys_platform != "win32" and extra == "interactive"
63
+ Requires-Dist: wexpect>=4.0.0; sys_platform == "win32" and extra == "interactive"
64
+ Requires-Dist: pywin32>=220; sys_platform == "win32" and extra == "interactive"
65
+ Requires-Dist: setuptools; sys_platform == "win32" and extra == "interactive"
66
+ Provides-Extra: ast
67
+ Requires-Dist: ast-grep-py>=0.30.0; extra == "ast"
68
+ Provides-Extra: notebook
69
+ Requires-Dist: ipython-pygments-lexers>=1.0.0; extra == "notebook"
70
+ Provides-Extra: diagrams
71
+ Requires-Dist: Pillow>=10.0.0; extra == "diagrams"
72
+ Provides-Extra: templates
73
+ Requires-Dist: pybars3>=0.9.7; extra == "templates"
74
+ Requires-Dist: Jinja2>=3.1.0; extra == "templates"
75
+ Provides-Extra: kaggle
76
+ Requires-Dist: kaggle>=1.5.0; extra == "kaggle"
77
+ Provides-Extra: kerberos
78
+ Requires-Dist: pyspnego[kerberos]>=0.10.0; extra == "kerberos"
79
+ Provides-Extra: telemetry
80
+ Requires-Dist: opentelemetry-api>=1.20.0; extra == "telemetry"
81
+ Requires-Dist: opentelemetry-sdk>=1.20.0; extra == "telemetry"
82
+ Requires-Dist: opentelemetry-exporter-otlp-proto-grpc>=1.20.0; extra == "telemetry"
83
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.20.0; extra == "telemetry"
84
+ Provides-Extra: all
85
+ Requires-Dist: jaato-server[ast,azure-openai,dev,diagrams,github-models,google,interactive,kaggle,kerberos,nim,notebook,openai,openrouter,ovhcloud,telemetry,templates,web]; extra == "all"
86
+
87
+ # Changelog
88
+
89
+ ## 0.7.0 (2026-09-09)
90
+
91
+ - feat(profiles): max_completion_nudges — the nudge budget is the deployment's (#919) (#927)
92
+ - fix(enrichment): every dict tool result reaches the enrichment chain (#922) (#924)
93
+ - fix(runner-rpc): serialise bytes as base64, not as a Python repr (#920) (#921)
94
+ - fix(session): record signal_completion's tool result so a completed session stays revivable (#913) (#915)
95
+ - feat(resume): both resume verbs carry an attachment (#845) (#914)
96
+ - feat(providers): native OpenAI (Chat Completions + Responses API) and Azure OpenAI (#907)
97
+ - feat(providers): MiniMax, Kimi and MiMo providers, and the reasoning-replay seam they need (#875)
98
+ - template: make output-path routing a profile knob (#900) (#903)
99
+ - runner pool: a reservation is not capacity (#898) (#901)
100
+ - explain paths: state that config_root is framework-owned (#896) (#897)
101
+ - fix(apparmor,template): deny writes to .jaato/templates/ under confinement (#893) (#894)
102
+ - feat(runtime_limits): expose tool concurrency as max_parallel_tools (#862)
103
+ - feat(web): replace the web-client PoC with jaato-web, a browser client on @jaato/sdk
104
+ - fix(sdk,scaffold,lsp): four defects found building a cascade harness on the SDK (#879)
105
+ - fix(runner): carry slot-scoped plugin instances across cascade sessions (#890) (#891)
106
+ - fix(service_connector): mark call_service results untrusted (#857) (#878)
107
+ - feat(permission): the resolved event, the ledger and the session record name who decided (#859) (#876)
108
+ - fix(trace): record the resolved tool name beside the hashed wire id (#873) (#874)
109
+ - feat(security): scrub secret env vars from model-driven subprocesses by default (#863) (#872)
110
+ - fix(media): the spoken transcript rides the final media chunk to the client (#869) (#871)
111
+ - docs: AppArmor is not premium, the licence is not MIT, image input is not 4 of 13 providers (#866) (#870)
112
+ - fix(gc): evict consumed inbound media, and let GC see media at all (#850) (#853)
113
+ - feat(scaffold): the sweep gate as one set, and make its ceiling actually work (#768 #769 #770 #772) (#849)
114
+ - fix(session): history replay is gated by what the ACTIVE model can consume (#847) (#848)
115
+ - fix(scaffold): the templates take their turn from the SDK facade (#820 #821 #825 #826 #827 #822)
116
+ - fix(web_search): file the tool under `web`, the category that advertises it (#843) (#844)
117
+ - fix(daemon): an attachment is content, so a message carrying one is not empty (#838) (#841)
118
+ - fix(session): an attachment in the message no longer means "do not stream" (#837) (#840)
119
+ - feat(tiers): let a deployment NAME its own tiers (#831) (#839)
120
+ - feat(providers): give the framework ears — audio input reaches a model (#830) (#835)
121
+ - fix(providers): dispatch inbound attachments on mime instead of assuming image (#829) (#833)
122
+ - feat(tiers): a tier that exits on completion, and a final flag that comes from the wire (#828)
123
+ - feat(media): deliver binary media chunks, and know when a spoken turn ended (#824)
124
+ - feat(tiers): per-tier description + direction-qualified modality roles (#818)
125
+ - fix(tests): stop credential tests reading the developer's machine, and printing the key (#721, #734) (#817)
126
+ - fix(introspection): make an unknown category_id recoverable in one round-trip (#754) (#816)
127
+ - fix(file_edit): name the failure, not just the remedy, on edit errors (#813, #814) (#815)
128
+ - fix(sandbox): allow POSIX pseudo-devices, so 2>/dev/null works (#784) (#811)
129
+ - fix(background): don't issue a task_id no tool in the session can read (#810)
130
+ - fix(file_edit): preserve line endings, honouring the repo's setting (#805) (#809)
131
+ - feat(app-identity): let an application name itself, not report as jaato (#808)
132
+ - chore: normalise line endings to LF, once, in one commit (#794) (#807)
133
+ - feat(events): carry the billed prompt/output split on the wire (#802) (#803)
134
+ - fix(tui,permission): make a permission prompt readable, and answerable only as chosen (#796)
135
+ - feat(session): a revive wakes from persisted state, not from disk (#787) (#795)
136
+ - feat(env): tag every env var with its scope and promote the trace paths (#775) (#793)
137
+ - fix(profiles): a child can decline one inherited completion processor (#791) (#792)
138
+ - fix(file_edit): reject updateFile with no content instead of truncating (#782) (#788)
139
+ - fix(providers): a stream that dies mid-response is not a finished turn (#687) (#786)
140
+ - feat(scaffold): explain the user-facing command surface (#715) (#785)
141
+ - fix(tui,clarification): answer a batched clarification instead of hanging (#704) (#783)
142
+ - fix(openrouter): a bare finish_reason="error" names its cause and retries (#766) (#780)
143
+ - fix(plugins): reserve built-in plugin names against entry-point shadowing (#684) (#779)
144
+ - fix(egress): loopback is reachable only at the proxy's address:port (#696) (#778)
145
+ - fix(sdk,session): a turn boundary is not the session's terminus (#767) (#774)
146
+ - fix(providers): one prompt-token convention, converted at the seam (#758) (#763)
147
+ - fix(session): a turn cut off at the output cap must be continued, not lost (#749) (#759)
148
+ - docs(scaffold): name the profile env: block where authors look (#752) (#760)
149
+ - fix(session): a call the severed turn never ran must still be answered (#751) (#757)
150
+ - fix(providers): unreadable tool-call arguments must not become a call (#750) (#753)
151
+ - fix(providers): a truncated turn must not report as a tool-use turn (#745) (#747)
152
+ - fix(security): close the symlink escapes in file tools and search (#669) (#746)
153
+ - fix(daemon): refuse a relative path at the process boundary (#742) (#744)
154
+ - fix(openrouter): bound a single request with an idle deadline (#732) (#743)
155
+ - perf(ci): memoize the whole-tree env scan and fan the suites out (~11min -> ~4min) (#740)
156
+ - fix(cache): model tiers × prompt caching — the knobs never arrived, and the cost was invisible (#737)
157
+ - fix(cli): segment compound commands in the permission analyzer (#668) (#739)
158
+ - docs(scaffold): document what `new` produces (#738)
159
+ - feat(openrouter): put the session id on the wire so a conversation groups (#733)
160
+ - fix(openrouter): read the Retry-After hint OpenRouter puts in the body (#720)
161
+ - feat(prompt): narrate tool calls as they happen, and give batching a decision rule (#711)
162
+ - fix(providers): rebuild the HTTP client after a connection error (#709)
163
+ - feat(plugins): declare the session-persistence contract, and use it for permissions (#708)
164
+ - fix(session): a profile-less session got no tools, and the enabling tool was documented as a lookup (#703)
165
+ - fix(pool): the pre-warm pool had a floor and no ceiling (#667)
166
+ - fix(events): the 64-call-site emit path now says which session it is about (#666)
167
+ - test(guards): a guard that cannot detect its own reversion now fails the build (#665)
168
+ - fix(memory): list_memory_tags reported an empty store while holding a raw queue (#664)
169
+ - fix(scaffold): a sweep job that could not do its work is not a result (#662)
170
+ - docs(subagent): the prefetch README documented the behaviour that caused fabrication
171
+ - feat(daemon): separate the threads that are blocked from the one that is blocking (#659)
172
+ - fix(ci): the complexity ratchet measured build artifacts, so it was green only on CI (#658)
173
+ - fix(daemon): the manager lock was held across a round-trip to the loop (#657)
174
+ - ci: cyclomatic-complexity ratchet, fixed so it cannot silently skip (#656)
175
+ - feat(daemon): a stalled loop now names the thread that HELD it, not just the one that waited (#655)
176
+ - feat(events): a stage that was asked twice to signal completion, and never did, says so (#654)
177
+ - test(guards): a lazily-discovered cache must never be observable half-built (#653)
178
+ - fix(secrets): the resolver registry was published EMPTY before it was filled (#652)
179
+ - fix(scaffold): every template now tracks the SDK contract it was written for (#650)
180
+ - feat(scaffold): a `sweep` archetype for N independent arms (#649)
181
+ - fix(runner): a reused pool slot no longer carries the previous session's env (#647)
182
+ - fix(history): a history request is answered or refused, never met with silence (#645)
183
+ - fix(usage): a provider-reported cost now reaches TurnCompletedEvent (#644)
184
+ - fix(session): a terminal event is now the last thing a session emits (#643)
185
+ - fix(cascade): an exhausted pool no longer hands back a working-looking handle (#642)
186
+ - feat(echo): a provider that costs nothing can still REPORT a spend (#641)
187
+ - feat(sdk): one pairing rule, in the layer consumers can import (#640)
188
+ - fix(history): the call side carried no identifier, so nothing could be paired (#639)
189
+ - fix(daemon): the last silent cache writer, and a property that lied (#638)
190
+ - fix(daemon): the context-limit heal path now says what it did (#637)
191
+ - fix(delivery): unreachable was five outcomes wearing one word (#634)
192
+ - fix(daemon): the loop can no longer deadlock on itself (#633)
193
+ - fix(memory): a usage write-back can no longer undo a curator's decision (#632)
194
+ - feat(daemon): a stalled event loop now names what it was doing (#631)
195
+ - fix(memory): reading the raw queue no longer empties it (#630)
196
+ - fix(lifecycle): the transport branch now actually exits — #628 fell through (#629)
197
+ - fix: three things that told a caller something false (#628)
198
+ - fix(observability): make two shipped fixes readable — #623's witness, and what the outer timeout means (#627)
199
+ - fix(session): saves of one session serialize; unrelated sessions do not (#626)
200
+ - fix(rpc): a stacked timeout now says WHICH of the two fired (#625)
201
+ - feat(runner): give the control plane its own lane (#624)
202
+ - fix(delivery): the wind-down stash was a slot, not a queue — #620 regression (#623)
203
+ - fix(delivery): make `unreachable` say why — and not render a timeout blank (#622)
204
+ - docs(delivery): retire the queued caveat that #620 fixed (#621)
205
+ - fix(delivery): the session decides whether a turn will drain your message (#620)
206
+ - fix(inject): an inject into an idle session was a black hole, and said "ok" (#619)
207
+ - diag(sibling): log the busy decision — stale flag and mid-turn look identical (#618)
208
+ - fix(cascade): a message queued to a busy peer that went idle was stranded (#617)
209
+ - feat: cascade refusals reach observers; explain reports inherited instruction cost (#611)
210
+ - feat(scaffold): explain plugin publishes tool PARAMETERS (#615)
211
+ - fix(session): an orphaned fragment crashed EVERY drain that had a callback (#616)
212
+ - fix(diagnostics): model-loop frames were discarded before an ErrorPayload existed (#614)
213
+ - fix(diagnostics): runner-side tracebacks never reached any consumer (#613)
214
+ - refactor(delivery): one queue-or-drive decision for every message sender (#612)
215
+ - fix(sibling): a cold sibling reported no_such_sibling, not sibling_cold (#610)
216
+ - fix(session): attach lost a session its daemon-side plugin wiring (#609)
217
+ - fix(executor): two 2-tuple conventions shared one representation (#608)
218
+ - feat(session): session.send — nudge a NAMED session without the model (#607)
219
+ - feat(subagent): send_to_sibling — cascade messaging with a receipt (#606)
220
+ - fix(history): request_history sent tool results as a Python repr, not data (#605)
221
+ - fix(security): the untrusted-content mark must survive every ToolResult rebuild (#604)
222
+ - feat(protocol): every event says which session it is about (#603)
223
+ - fix(rpc): a forwarded executor's (ok, payload) contract must survive the wire (#602)
224
+ - fix(plugins): migrate status-error results to the key the checker reads (#601)
225
+ - fix(subagent): list_siblings never forwarded — the registry hook was missing (#600)
226
+ - feat(subagent): list_siblings — the cascade roster (#599)
227
+ - feat(protocol): correlate session.new with the event that answers it (#598)
228
+ - fix(session): a sibling-name refusal must reach the client (#596)
229
+ - docs(scaffold): there is no jaato.premium_reactors entry-point group (#595)
230
+ - fix(session): cascade membership must survive a reload (#594)
231
+ - fix(sdk): sibling_name reaches the facade — and peer→sibling for the coordination surface (#593)
232
+ - feat(session): peer_name — a cascade-scoped address validated at session.new (#592)
233
+ - fix(scaffold): `new` must not blame itself for USER-tier profile errors (#591)
234
+ - feat(queue): SourceType.PEER, idle-only, and tier membership declared once (#590)
235
+ - fix(permission): gate parent-authority answers on the stamped sender, not content (#589)
236
+ - feat(budget): create-time budget_control + budget_usage params (#588)
237
+ - feat(gc): typed GC lifecycle events on the bus (#587)
238
+ - refactor(gc): route every GC pass through one instrumented path (#586)
239
+ - fix(budget): surface a ceiling refusal as a terminal, typed event (#584)
240
+ - fix(budget): carry the CEILING across a reload, and stop destroying the snapshot (#583)
241
+ - A ceiling that fired before a suspend still refuses after the resume
242
+ - budget_usage never reached disk: the serializer writes a fixed key list
243
+ - Wire budget usage through save/restore so the ceiling actually survives
244
+ - Drop a wall-clock floor that measured the runner, not the handshake
245
+ - budget_control: usage survives a reload, and an abort has a typed signal
246
+ - HOTFIX: bound_model_for_profile was not bound at module scope (#576 broke all profile sessions)
247
+ - Tiers-only profiles: fix the remaining producers; make completion latches per-turn
248
+ - One definition of "the model a profile binds" (fixes two #574 follow-ons)
249
+ - A tiers-only profile can bootstrap a session
250
+ - feat(telemetry): include the system prompt in OpenInference input spans
251
+ - notebook analyzer: report bare dangerous attributes, anchor relative paths (closes the last 2 xfails)
252
+ - disable_colors() now suppresses syntax highlighting too (closes 2 xfails)
253
+ - Surface a backgrounded tool's return value on the poll (closes 4 xfails)
254
+ - Declare Jinja2 in the `templates` extra (CI could not run the template tests)
255
+ - Repair the final shared/plugins failures (0 failing, 8 recorded gaps)
256
+ - Repair todo/memory/lsp tests; record the disable_colors gap
257
+ - Repair shared/plugins/tests (was 4 failing)
258
+ - Repair model_provider tests + stop them reading real credentials
259
+ - Fix the webhook -> EventBus bridge: capture the bus at subscribe time
260
+ - Record: the webhook -> EventBus bridge never publishes
261
+ - Repair references merge tests (375 passing; was 5 failing)
262
+ - Fix UnboundLocalError that broke inline mermaid rendering
263
+ - Repair filesystem_query tests (was 9 failing)
264
+ - Repair subagent tests (373 passing; was 13 failing)
265
+ - Fix privilege escalation: askPermission granted the whole tool, not the call
266
+ - Repair permission tests + record a privilege-escalation defect
267
+ - Repair background tests + record a real capability gap (89 pass, 4 xfail)
268
+ - Repair file_edit tests (292 passing; was 8 failed + 20 errors)
269
+ - Repair 59 stale test doubles in server/tests (0 failing, was 59)
270
+ - Make the truthy-but-empty exception mistake hard to write
271
+ - Fix the empty () in the push-timeout log; record that the bound is conservative
272
+ - cascade.budget.get states its scope in the payload
273
+ - Degrade steps apply at most once and in order, per ladder not per tracker
274
+ - Budget origin labels now name the MECHANISM, not whose ladder
275
+ - Separate budgets: a child that declared one is not clamped by the parent
276
+ - Isolated subagent spawns dropped the profile's declared budget
277
+ - Subagents never received their own declared budget
278
+ - A profileless cascade child inherits the cascade's degrade ladder
279
+ - A push timeout means DELAYED, not lost — and the log said otherwise
280
+ - scaffold: add --secrets flag; default profiles to env-var credentials
281
+ - Cascade degrade notices must be emitted by the daemon, not the session
282
+ - Fix: the degrade-push dispatch read a field that does not exist
283
+ - Fix: the cascade degrade push blocked the whole SessionManager
284
+ - Fix: concurrent create_session issued DUPLICATE session ids
285
+ - Slice 3: push a crossed cascade rung to already-running children
286
+ - test: pin the cascade observer/attached-client dedup
287
+ - Cascade refusal must reach the client, not just the daemon log
288
+ - Cascade pool: reconcile against the session tracker, not the event stream
289
+ - Fix: a CANCELLED turn's spend reached no TurnCompletedEvent
290
+ - IPC verbs for cascade budgets: set / get / clear
291
+ - Slice 2: cascade budgets wired — declare, accumulate, clamp at spawn
292
+ - Thread spend_total_tokens to the client (UsageBreakdown)
293
+ - Fix: spend_* was accumulating on the streaming path only
294
+ - Separate per-turn SPEND from end-of-turn context size
295
+ - CascadeExhaustedError carries framework-generated evidence
296
+ - Add CascadeBudgetPool: the aggregate cascade ceiling (design note §8/b)
297
+ - Budget: a refused turn must not emit TurnCompletedEvent
298
+ - Budget: enforce the ceiling past the first abort; surface to the client
299
+ - Fix: envelope producer never populated budget_control (feature was dead)
300
+ - Implement budget_control runtime layer: tracker + brownout degradation
301
+ - Implement budget_control config + scaffold discoverability
302
+ - telemetry: set_llm_span_attributes hook (prompt→trace linking) + fix flaky budget-gate tests
303
+ - feat(session): pre-flight refuse-send gate (PayloadExceedsContextError)
304
+ - telemetry: emit user.id for Langfuse User Tracking
305
+ - test(apparmor): teach Reg stub the all_plugins() contract
306
+ - telemetry: emit trace-level input/output on the turn (AGENT) span
307
+ - docs(apparmor): de-brittle plugin-count in composer self-filter comment
308
+ - fix(telemetry): POST Langfuse spans to the /v1/traces signal path
309
+ - telemetry: propagate session.id to child spans for Langfuse best practices
310
+ - test: allowlist JAATO_TELEMETRY_BACKEND in session-env audit
311
+ - telemetry: pricing-table cost on spans + dedicated Langfuse backend
312
+ - telemetry: stamp provider cost on LLM spans + OTLP protocol selection for Langfuse
313
+ - fix(session): close the turn lifecycle on solely-%name--help messages
314
+ - fix(apparmor): make .jaato/prompts runner-writable so save/deletePrompt work
315
+ - test(apparmor): pin that rendered profiles actually COMPILE, not just render
316
+ - Revert "Merge pull request #547 from Jaato-framework-and-examples/claude/deleteprompt-apparmor-delete-grant"
317
+ - fix(plugins): repoint environment/calculator off the bare jaato facade import
318
+ - fix(prompt_library): grant AppArmor delete on writable prompt/skill tiers
319
+ - fix(introspection): guardrail against fabricated tool ids leaking to users
320
+ - fix(prompt_library): document the placeholder grammar at both authoring surfaces
321
+ - feat(session): surface abnormal finish reasons to clients
322
+ - docs(doubleword): correct the catalog auto-detect claim (verified live)
323
+ - Add Doubleword provider plugin and service_tier knob
324
+ - feat(instructions): granular suppress_base_instructions (disk/constants/security)
325
+ - fix(context): return 0 (honest unknown), not hardcoded 1M, when provider unmaterialized
326
+ - core: read conversation history from the runner (fix empty transcript on cold WS reattach)
327
+ - inline profiles: honor the spec's own name (stop dropping it for "<inline>")
328
+ - session restore: re-apply the profile's suppress_base_instructions
329
+ - test: update session serializer version assertion 2.6 -> 2.7
330
+ - session restore: reconstruct inline-profile sessions from a persisted spec
331
+ - session_manager: resume WS workspace-pinless sessions via the session-workspace index
332
+ - tool_id_map: scrub markdown-escaped tool ids (t\_xxxxxxxx)
333
+ - prose_tools: drop the example tool id from the injected preamble
334
+ - chrome_ai: add reuse_page to anchor onto an existing tab
335
+ - chrome_ai: warm the on-device model at connect() to absorb cold-start
336
+ - Add direct-provider smoke for the prose_tool_calls quirk
337
+ - Add prose_tool_calls quirk: prose-emulated tool calling for tool-less models
338
+ - Add chrome_ai model provider: Chrome built-in AI (Gemini Nano) via CDP
339
+ - refactor(facade): ship the `jaato` convenience facade in jaato-sdk (sdk-only client) (#527)
340
+ - feat(providers): OVHcloud AI Endpoints model provider plugin (#526)
341
+ - feat(sdk): public open_event_stream() — synchronous-subscribe event iterator (#524)
342
+ - fix(wake): release wake bindings + index entry on session DELETE (orphan fix) (#523)
343
+ - feat(scaffold): `explain events` / `explain event <NAME>` — the event protocol (#522)
344
+ - fix(wake): headless client-tool dispatch — whitelist sync + drive-after-wiring (#521)
345
+ - feat(server): durable deferred-turn wake (Option 2 — cold-revive-and-act) (#520)
346
+ - feat(server): surface daemon wake endpoint on bind_wake (production routing) (#519)
347
+ - feat(server): mode-B wake verify shim — daemon-tier HTTP ingress (PR 2b) (#518)
348
+ - feat(server): wake binding registry + bind_wake/unbind_wake (PR 2a, mode-B foundation) (#517)
349
+ - feat(server): session.wake — client-agnostic daemon wake primitive (PR 1 core) (#516)
350
+ - fix(security): validate session_id to close path-traversal / profile-injection (#502)
351
+ - fix(permission): trusted bridge suppresses the prompt, not the hard deny-layers (#501)
352
+ - feat(mcp): scrub declared secrets from MCP server subprocess env (#10, MCP half) (#500)
353
+ - style(webhook): restore CRLF line endings on 3 test files (#499)
354
+ - fix(webhook): fail-closed auth — unsigned routes refused unless explicitly opted in (#498)
355
+ - fix(web_fetch): code-gate insecure/no_proxy behind operator opt-in (was prose-only) (#497)
356
+ - fix(permission): whitelist glob can't auto-allow unauthorized shell operators (#496)
357
+ - security: untrusted-content trust boundary for web_fetch/web_search/MCP (#495)
358
+ - docs(env): document env vars via # env: comments (#494)
359
+ - ops: env-var discoverability — live overrides at startup/--status + explain-env descriptions (#493)
360
+ - Security hardening + per-session egress confinement (proxy + cgroup-nft) (#492)
361
+ - fix(cascade): dedup post-bootstrap events for an owner==observer (single IPC connection) (#491)
362
+ - fix(tool-results): keep result STRUCTURED; move model-facing steering to ToolResult.model_suffix (#490)
363
+ - fix(host-tools): decode client-tool results to native dicts (flat), symmetric with in-process tools (#489)
364
+ - fix(permission): exempt framework-reserved tools (incl. signal_completion) from the default evaluator — corrects #487 (#488)
365
+ - fix(permission): framework core tools are exempt from a catch-all "default" evaluator (#487)
366
+ - fix(secret-uri): fail loud on the single-colon `pass:` typo (was leaking as a bearer token) (#486)
367
+ - fix(providers): surface the profile api_key knob in APIKeyNotFoundError checked-locations (#485)
368
+ - fix(providers): verify_auth reads the `config` param, not self._config (in-process crash) (#484)
369
+ - fix(scaffold): library exception states the fact, not a caller-convention hint (#483)
370
+ - fix(plugins): concise WARNING for missing-dependency plugin skip during discovery (#482)
371
+ - chore(release): bump jaato-server 0.6.194 → 0.6.195 (scaffold extension seam) (#481)
372
+ - feat(scaffold): verb-extension point for external (premium) verbs (#480)
373
+ - fix(tools): pip shim + venv-bin exec grant so bare `pip`/`!pip` works confined (supersedes #478 ensurepip) (#479)
374
+ - fix(tools): materialize pip in workspace_venv so bare `pip`/`!pip` targets the tool-venv (#478)
375
+ - feat(notebook): IPython-style per-line !shell escapes (make the tool's own advice work) (#477)
376
+ - feat(permission): give evaluator scripts the session's prior-decision journal (EvalContext.execution_log) (#476)
377
+ - feat(scaffold): surface + validate non-provider plugin config knobs (permission.evaluators, cli.workspace_venv, …) (#475)
378
+ - fix(tools): scope the workspace_venv runner-import bridge to jaato srcs (no base-venv over-share) (#474)
379
+ - fix(tools): confined pip for workspace_venv — plugin-scoped distro reads + cli foreground venv activation (#473)
380
+ - fix(tools): bridge runner imports into workspace_venv so the notebook kernel can import shared.* (#472)
381
+ - feat(tools): workspace_venv knob on cli/interactive_shell/notebook for dynamic tool deps (#471)
382
+ - chore(deps): declare wcwidth as a core dependency (#470)
383
+ - fix(daemon): orphan-revive recipe loss — persist+restore sandbox_mode (apparmor) AND agent_name (persona/vision) (#469)
384
+ - feat(memory): allowed_scopes write-side gate (deployment scope policy) (#468)
385
+ - feat(scaffold): reproducible provenance line + `new --transport in_process` (#464)
386
+ - feat(scaffold): --ca for --transport ws — scoped wss:// CA (completes #462 alignment) (#463)
387
+ - feat(scaffold): support --transport ws --recoverable -> WSRecoveryClient (#461)
388
+ - feat(facade): expose recovery as a facade mode — session(mode=…, recovery=True) (#460)
389
+ - fix(introspection): keep discovery tools when real tools exist, drop only for empty wire (ex08 lead hang) (#458)
390
+ - fix(introspection): gate discovery GUIDANCE with the tools (ex08 0-tool subagent loop) (#457)
391
+ - fix(in-process): completion-nudge gate keys on terminal injects, not is_running (ex08 #5C premature-completion) (#456)
392
+ - fix(in-process): drive lead completion nudge + emit SESSION_TERMINATED (ex08 gap #5C/#5D) (#455)
393
+ - feat(in-process): auto-continue the lead when a subagent injects (ex08 gap #5B) (#454)
394
+ - fix(in-process): bridge subagent events to the facade loop (set subagent ui_hooks) (#453)
395
+ - fix(subagent): UnboundLocalError in spawn_subagent (conditional get_workspace_root import) (#452)
396
+ - fix(in-process): populate session-context workspace_root/config_root for spawn (#451)
397
+ - fix(in-process): parse plugin-entry modifiers ((preload)/tool-scopes) like the daemon (#450)
398
+ - feat(in-process): forward client_tools (host tools) through the facade (#449)
399
+ - fix(session): gate plugin instructions by plugins, not the dead tools alias (+ in-process None/[] IPC parity) (#448)
400
+ - fix(in-process): pin config_root on the embedded runtime (~/.jaato isolation leak) (#447)
401
+ - docs+scaffold: multi-transport (in-process / IPC / WebSocket) (#445)
402
+ - feat(sdk): WSClient — WebSocket transport for the facade (remote daemon) (#444)
403
+ - test(in-process): stream() + multi-turn continuity (PR4) (#443)
404
+ - feat(in-process): plugin parity — init full runner-tier ONCE at connect (#442)
405
+ - fix(daemon): agent without --profile no longer goes bare (persona dropped) (#441)
406
+ - feat(in-process): thread suppress_base_instructions (the base-composition knob) (#440)
407
+ - feat(in-process): agent-persona resolution (ex03) + lift resolve_agent to shared (#439)
408
+ - feat(in-process): AGENT_COMPLETED emission — completion payload reaches the facade (ex04) (#438)
409
+ - feat(in-process): profile resolution + system_instructions/completion schema (PR3) (#437)
410
+ - fix(in-process): pass the loaded permission plugin so the session gates (ex07) (#436)
411
+ - feat(in-process): plugin-loading + permission-channel wiring (InProcessClient) (#435)
412
+ - feat(in-process): InProcessChannel permission bridge (PR2 mechanism) (#433)
413
+ - fix(in-process): env_file is a both-modes kwarg, not IPC-only (#431)
414
+ - feat(in-process): transport-agnostic jaato.session(mode=...) entry (#430)
415
+ - feat(in-process): minimal real ex01 path — cred resolve + verify_auth + configure_tools (PR1.5) (#429)
416
+ - feat(in-process): InProcessClient adapter — facade tracer-bullet (PR1) (#428)
417
+ - feat(config): public resolve_secret_uri entry point (#427)
418
+ - feat(mcp): model-callable mcp_reload tool, gated on .mcp.json existing
419
+ - fix(provider): fail loud on an unresolved secret-URI api_key (cascade-of-bugs sibling)
420
+ - fix(bus): hoist typed signal_completion payload onto the bus event (cascade handoff)
421
+ - fix(runner): drain a USER send that races the turn wind-down (multi-turn deadlock)
422
+ - fix(clarification): runner→daemon relay so runner-tier sessions can deliver clarifications
423
+ - docs(continuity): memory enrichment is curated-only → curator is REQUIRED
424
+ - fix(scaffold): send-and-wait client templates no longer hang on a plain turn
425
+ - feat(scaffold): validate tags each finding with its source tier (workspace vs user)
426
+ - fix(scaffold): validate — model_tiers satisfies the model requirement (no false missing_model)
427
+ - feat(daemon): SessionManager.resume_session — public same-id reload + presentation restore (reliability T2)
428
+ - feat(daemon): daemon-wide reactor EventBus — per-session buses sink into one bus reactors subscribe to
429
+ - feat(daemon): SessionManager.get_persisted_history — read a persisted session's history without loading it
430
+ - fix(bundle_common): discover_bundles DEBUG-skips an EACCES-denied tier root (confined user tier)
431
+ - feat(daemon): SessionManager.send_message_to_session — drive a turn on a loaded session (same id)
432
+ - feat(scaffold): validate prefetch directives — the validate counterpart to explain prefetch
433
+ - docs(scaffold): add `explain prefetch` — surface the prefetch-script capability
434
+ - fix(re-attach): gate session_get_tool_schemas RPC off-loop (re-entrancy regression)
435
+ - fix(re-attach): daemon walk ALWAYS excludes runner-tier + off-loop runner-ready re-emit
436
+ - fix(lifecycle): prepare_completion accepts dot-notation into free-shape objects + minProperties floor
437
+ - fix(re-attach): tool-id emit skips runner-tier plugins on the loop (re-attach stall)
438
+ - fix(prompt_library): mtime-gate _discover_prompts (re-attach loop-stall root cause)
439
+ - diag(runner): + daemon-side [RPC_DIAG] _in_flight SET + read_loop RESPONSE (id/in_flight_had/client) to pin the reused-transport reply-match miss
440
+ - diag(runner): [RPC_DIAG] trace serve-recv / worker ENTER+EXIT to localize the re-attach register stall (THROWAWAY diag branch, not for merge)
441
+ - docs(scaffold): document profile inheritance semantics in `explain profile`
442
+ - fix(providers): thread api_params sampling knobs in google_genai/antigravity/github_models/ollama (audit follow-up)
443
+ - fix(vllm): thread api_params sampling knobs (temperature/top_p/seed/…) into the request
444
+ - fix(runner): gate mid-session client-tool push + send on bootstrap-complete, not rpc-handle-live
445
+ - feat(events): bridge gate.released onto the reactor event bus
446
+ - fix(restore): resolve config_root on disk-restore so a config_root=None session can't hang the runner
447
+ - feat(scaffold): explain paths — the daemon-global vs per-session isolation model
448
+ - feat(session): SessionManager.set_session_state_for_session — cross-session state write
449
+ - feat(permission): reliability T3 foundation — approved-overrides-escalated
450
+ - feat(permission): reliability T1 — deny escalated tools on headless clients
451
+ - fix(core): skip conversation replay on attach for chat-type clients
452
+ - fix(session): thread attaching client_id into restore-spawn so re-attach re-spawns the runner (#370 follow-up)
453
+ - fix(session): close the attach-vs-unload race — the real (a) for the re-attach bug
454
+ - fix(core): await runner readiness on send instead of derefing None _runner_rpc (attach race)
455
+ - feat(permission): reliability Phase-2 interactive escalation gate (public read-hook)
456
+ - fix(scaffold,vllm): stop two validator false positives (api_key credential knob + vllm api_params layer)
457
+ - fix(file_edit): _ensure_gitignore must not fight a deliberate .gitignore setup
458
+ - fix(provider): scrub tool-hash-ids out of user-facing model narration
459
+ - fix(notebook): make kernel preexec_fn fork-safe (hoist ctypes/CDLL out of the fork window)
460
+ - fix(notebook): actually use the subprocess kernel (cutover was bypassed) + propagate ContextVar to streaming thread
461
+ - fix(notebook): kernel chdir to SESSION workspace via ContextVar; broadcast workspace to all plugins
462
+ - feat(notebook): subprocess kernel — PR 3 (lifecycle + cutover to default)
463
+ - feat(notebook): subprocess kernel — PR 2 (cross-process tools bridge + permission)
464
+ - feat(notebook): subprocess kernel backend — PR 1 (kernel + transport + cwd=workspace)
465
+ - fix(client-tools): client/host tools default to 'core' (eager), honor discoverability
466
+ - feat(client-tools): mid-session host-tool registration — glue schema to live runner
467
+ - fix(model-tiers): cross-provider tier provider got no plugin_configs (no api_key)
468
+ - fix(profiles): _merge_profiles dropped model_tiers (inherits/set tiers lost)
469
+ - feat(scaffold): explain `tiers` topic + model_tiers vision example (V2 tooling)
470
+ - test(model-tiers): seed _provider_cache/_active_provider_name in the __new__ helper
471
+ - feat(model-tiers): V2 cross-provider tiers — swap providers on tier switch
472
+ - feat(multimodal): ferry user-message attachments to the runner-tier model
473
+ - fix(client-tools): call daemon_plugin_execute with keyword args (execution)
474
+ - feat(client-tools): IPC transport support + SDK register_client_tools + host-tools scaffold
475
+ - fix(client-tools): seed client_tool_schemas before the runner spawn (#349 race)
476
+ - feat(client-tools): inject client-provided tools into the runner-tier model
477
+ - feat(tooling): runtime-entity debugging — explain runtime + doctor --session
478
+ - fix(runner): seed workspace ContextVar + env so path plugins resolve the session
479
+ - feat(scaffold): surface the recoverable client (IPCRecoveryClient)
480
+ - feat(session): gate introspection on the presence of something to discover
481
+ - feat(scaffold): surface discovery-gated (deferred-unless-preloaded) tools
482
+ - feat(tooling): WebSocket awareness in doctor, scaffold, and the client skill
483
+ - fix(plugins): memory/references/subagent must not self-disable under confinement
484
+ - fix(tests): _verify_connectivity stubs must accept the probe_url arg
485
+ - refactor(providers): migrate vllm onto OpenAICompatLocalHostProvider (PR7, final)
486
+ - refactor(providers): migrate zhipuai_openai onto OpenAICompatProvider (PR6)
487
+ - refactor(providers): migrate lmstudio onto OpenAICompatLocalHostProvider (PR5)
488
+ - refactor(providers): migrate triton onto OpenAICompatLocalHostProvider (PR4)
489
+ - refactor(providers): OpenAICompatLocalHostProvider base + migrate tensorrt_llm (PR3)
490
+ - feat(scaffold): explain surfaces config + profile descriptions (self-contained)
491
+ - refactor(providers): migrate nebius onto OpenAICompatProvider + lift api_params (PR2)
492
+ - refactor(providers): add OpenAICompatProvider base + migrate nim to it (PR1b)
493
+ - refactor(providers): relocate shared OpenAI-compat converters + _lazy to _openai_compat
494
+ - test(providers): guard that no unhashed tool name reaches the LLM + Anthropic tool_choice shape
495
+ - fix(providers): map name-bearing tool_choice through name_to_id (wire id)
496
+ - fix(server): --stop/--status find client-autostarted daemons via the socket
497
+ - feat(nebius): cached_tokens measurement + extra_body passthrough (vLLM caching)
498
+ - fix(server): raw docstring for check_pipe_exists (silence \p invalid-escape warning)
499
+ - feat(sdk): doctor daemon-env report drives off the introspected read-set
500
+ - feat(sdk): explain provider resolution order + credential-chain contract
501
+ - feat(sdk): client doctor + jaato-scaffold tool + provider knob/quirk contract
502
+ - feat(providers): PDF input for Anthropic + Google (fast-follows on the contract rails)
503
+ - feat(providers): PDF input support (producer + pdf_input capability + OpenRouter marshalling)
504
+ - fix(providers): close remaining capability gaps (google tool-result vision, ollama/zhipuai modality)
505
+ - fix(providers): Phase 3 — close high-severity capability gaps (NIM-fleet vision, claude_cli honesty)
506
+ - feat(providers): model-provider capability contract + CI conformance guard
507
+ - fix(multimodal): make the agentic tool-result image path work for OpenAI-compat
508
+ - fix(openrouter): marshal user-message image parts in the wire converter
509
+ - fix(providers): marshal image parts in the OpenAI-compat converter
510
+ - feat(reliability): compute is_error_result on tool.call_completed
511
+ - feat(echo): add deterministic creds-free echo model provider
512
+ - fix(ephemeral): terminate single-shot ephemeral on turn.completed
513
+ - fix(ephemeral): set config_root on scratch/inline spawn so core plugins expose
514
+ - fix(ephemeral): decouple inline display-name from agent resolution + provision scratch workspace
515
+ - fix(websocket): drop shadowing local import os in _apparmor_session_hook
516
+ - feat(subagent): bridge remote-spawn runner->daemon (restore server= under seat-flip)
517
+ - fix(telemetry): implement reset_for_next_session + guard the protocol class
518
+ - fix: stamp daemon session_id per-session so memory reads it, not shared registry
519
+ - fix(plugins): resolve session per-execution in telepathy/memory (no self leak)
520
+ - test(env-audit): sync ALLOWLIST — drop 22 migrated entries, add 4 daemon-tier
521
+ - test(session-state): expect serializer schema version 2.4
522
+ - test(runtime-limits): add required plugins key + opt-in gate cgroup e2e
523
+ - test(signal-completion): seed _accumulated_payload + _provider on stubs
524
+ - test(deferred-instructions): set _tool_scopes on the __new__-built session
525
+ - test(budget): set _tier_config on the __new__-built session stub
526
+ - test(visibility-filter): add _apply_tool_scopes to session stub
527
+ - test(server-version): pass now-required client_type to IPC client ctors
528
+ - test(dynamic-instructions): drop tests for the removed render_completion_artifacts API
529
+ - test(enrichment): add reset_for_next_session to stale protocol fixtures
530
+ - fix(telepathy): implement ToolPlugin protocol methods so the plugin loads
531
+ - fix(apparmor): grant for the loaded runner-tier plugin set, not profile.plugins
532
+ - spike: ephemeral remote-spawn via create_headless_session (§7c repair)
533
+ - fix(nebius): forward api_params (tool_choice/temperature/...) to chat.completions
534
+ - fix(nim): verify_auth must honor the profile-supplied api_key
535
+ - fix(nebius): verify_auth must honor the profile-supplied api_key
536
+ - feat(providers): Nebius Token Factory provider (serverless, catalog bootstrap)
537
+ - feat: config-time vision-tier validation (multimodal PR 4)
538
+ - feat: vision tier + content-boundary gate (multimodal PR 3)
539
+ - feat(providers): honest vision capability for anthropic/google/antigravity (multimodal PR 2)
540
+ - feat(providers): input-modality capability primitive (multimodal PR 1)
541
+ - refactor(events): single error-termination chokepoint — structural AgentErrorEvent-before-reason=error invariant
542
+ - feat(events): SlotSettledEvent.terminal_reason — fixes slot.settled-vs-recovery double-advance
543
+ - refactor(providers): standardize zhipuai context-window resolution (8/8)
544
+ - refactor(providers): standardize claude_cli context-window resolution
545
+ - refactor(providers): standardize github_models context-window resolution
546
+ - refactor(providers): standardize antigravity context-window resolution
547
+ - refactor(providers): standardize anthropic + google_genai context-window resolution
548
+ - refactor(providers): standardize nim + tensorrt_llm context-window resolution
549
+ - feat(events): AgentErrorEvent + on_agent_error recovery contract
550
+ - feat(file_edit): correct updateFile anchoring model in the tool contract
551
+ - feat(file_edit): allow_full_replace gate + conditional cap-rejection wording
552
+ - feat(file_edit): per-profile max_edit_span_chars targeted-edit span cap
553
+ - docs: fix three stale framework docstrings (#294/#295/#296)
554
+ - refactor(api): rename create_session/configure tools= param to plugins= (deprecated tools= alias)
555
+ - fix(result_grep): always emit valid JSON envelope so the full-dict path can't discard filtering
556
+ - feat(result_grep): model-directed tool-result grep filtering + greppable_content trait
557
+ - fix(providers): emit ALL parallel tool results on the OpenAI-compat wire
558
+ - fix(session): gate force_tool_choice stamp on provider honoring the quirk
559
+ - fix(cascade): γ'-guard gap pinned discovery slot for minutes (one-slot reuse)
560
+ - feat(events): SlotSettledEvent — universal per-cascade-stage handoff signal (replaces SlotReusableEvent)
561
+ - feat(events): add agent_id (stage name) to SlotReusableEvent payload
562
+ - feat(events): SlotReusableEvent — emit when a pool slot is reusable (cascade warm-reuse)
563
+ - fix(lsp): never host a language server in the daemon process (#284 OOM)
564
+ - fix(lsp): suppress LSP lifecycle on daemon-side forwarding stub (#284 OOM root cause)
565
+ - fix(lsp): kill slot's process-group subtree on teardown (#284 OOM)
566
+ - fix(lsp): reap jdtls on slot teardown (atexit + shutdown sentinel)
567
+ - fix(lsp): reap orphaned jdtls on connect timeout + raise timeout to 180s
568
+ - fix(notebook): strip NUL in apparmor profile parse; clarify gate scope
569
+ - security(notebook): fail closed on in-process cell execution
570
+ - revert: TEMP instrumentation quadruple (PR-218 / PR-219 / PR-220 / PR-221)
571
+ - refactor(session): extract pure tool-result building helpers
572
+ - refactor(session): extract tool-result truncation/capping transforms
573
+ - refactor(session): extract GC support helpers (span attrs + budget sync)
574
+ - refactor(session): extract instruction-budget builder helpers
575
+ - fix(gc): also run dedup Phase-0 in the before-send GC path
576
+ - refactor(session): extract SessionPersistence collaborator
577
+ - feat(gc): wire identical tool-result dedup as session-level GC Phase 0
578
+ - refactor(session): extract pure telemetry helpers; drop dead code
579
+ - feat(gc): identical tool-result dedup helper (core, tested)
580
+ - security(apparmor): loud structured warning + require-confinement gate
581
+ - security(cli): fail closed when shlex can't parse a command for sandbox
582
+ - security(ipc): default IPC socket mode to 0o660 (owner+group)
583
+ - feat(openrouter): flip context-window resolution to auto-detect PRIMARY
584
+ - feat(lmstudio): flip context-window resolution to auto-detect PRIMARY
585
+ - feat(ollama): tier-1 context-window auto-detect via /api/show
586
+ - feat(provider): tier-1 context-window auto-detect from /v1/models (vLLM)
587
+ - fix(gc): resolve budget context_limit when lazy provider materializes (#278)
588
+ - fix(lsp): spawn language servers with PR_SET_PDEATHSIG=SIGKILL (#280)
589
+ - fix(anthropic): accept-and-ignore tool_choice kwarg (provider contract parity)
590
+ - feat(gc): GC_DENOM diagnostic — make the budget-GC denominator inspectable
591
+ - fix(budget): count the initial wire tool-schema array in the GC denominator
592
+ - feat(lifecycle): processor-gated is_complete + server-side auto-finalize
593
+ - feat(profile): per-plugin tool allow-list via plugins(...) modifier
594
+ - feat(lifecycle): enriched pending-field descriptors for B1 viability
595
+ - fix(lifecycle): resolve $ref in prepare_completion validator + pending walker
596
+ - fix(lifecycle): adopt Daniel's path-syntax examples in field_path description
597
+ - feat(lifecycle): iterate prepare_completion to A2 shape (field_path, value)
598
+ - feat(vllm): VLLM_TOOLS_WIRE_DUMP probe — per-tool wire byte sizes
599
+ - feat(lifecycle): prepare/query_completion + arg-less signal_completion synthesis
600
+ - feat(session): GC_NO_ITEMS_COLLECTED diagnostic with locked-vs-eligible breakdown
601
+ - fix(vllm): add force_narration_between_tools to _KNOWN_QUIRKS allow-list
602
+ - fix(session): reshape force_narration_between_tools from env var to profile.quirks
603
+ - feat(session): JAATO_FORCE_NARRATION_BETWEEN_TOOLS env var + synthetic prompt injection (Probe B)
604
+ - feat(providers): parallel_tool_calls profile knob (vllm flat, openrouter api_params)
605
+ - feat(gc_budget): preserve narration on orphan-pair removal (Shape D)
606
+ - fix(providers): close openai client httpx pool on cancel (Shape B)
607
+ - probe(vllm+session): bump cancel-leak traces from self._trace to logger.info
608
+ - probe(vllm+session): cancel-leak prod-vs-isolation instrumentation
609
+ - feat(providers): explicit response_stream.close() so cancel aborts upstream HTTP
610
+ - probe(session+vllm): extend MAYBE_STAMP probe set with consume + complete entry (PR-256)
611
+ - probe(session): MAYBE_STAMP_SCAN logger.info at stamp helper entry (PR-255)
612
+ - revert: PR-253 post-completion send_message guard (misdiagnosed)
613
+ - fix(session): hard-refuse send_message after signal_completion (PR-253)
614
+ - fix(stop): reap orphan runners surviving --stop's registry walk
615
+ - fix(vllm): hash-translate tool_choice name to match wire tools array
616
+ - feat(session+vllm): force_tool_choice_for_lifecycle quirk (Path 1)
617
+ - feat(profile+vllm): SubagentProfile.quirks + coerce_typed_tool_args quirk
618
+ - feat(smokes): restructure nim/ollama/openrouter/tensorrt_llm to 3-test pattern
619
+ - feat(anthropic+github_models+lmstudio/smoke): restructure to 3-test pattern (chat / signal_completion / tools)
620
+ - fix(runner): fire post-turn AgentUIHooks for root IPC sessions (Path G)
621
+ - feat(vllm/smoke): restructure to 3-test pattern (chat / signal_completion / tools)
622
+ - fix(lifecycle): gate signal_completion on completion_payload_schema
623
+ - fix(session): terminate turn loop on successful signal_completion
624
+ - refactor(plugins): extract share_context to non-core telepathy plugin
625
+ - fix(runner): drop falsy ``or None`` coercion on tools list at bootstrap
626
+ - feat(profile): require explicit plugins: key + fix tools=None expansion bug
627
+ - feat(session+todo): gate plan-required todo tools by visibility filter
628
+ - refactor(provider): drop hardcoded env defaults across vllm/trtllm/triton
629
+ - refactor(provider): generic mid-stream error messages across vllm/trtllm/triton
630
+ - feat(provider): add vLLM provider plugin (mirror of tensorrt_llm)
631
+ - fix(server): _resolve_profile honors qualified set/name paths
632
+ - feat(provider): surface trtllm/triton mid-stream connection drops with engine-config diagnostic
633
+ - refactor(provider): github_models smoke — YAML profiles + signal_completion persona + suppress_base
634
+ - refactor(provider): ollama smoke — YAML profiles + signal_completion persona + suppress_base
635
+ - refactor(provider): anthropic smoke — YAML profiles + signal_completion persona + suppress_base
636
+ - refactor(provider): nim smoke — YAML profiles + signal_completion persona + suppress_base
637
+ - refactor(provider): lmstudio smoke — YAML profiles + signal_completion persona + suppress_base
638
+ - fix(provider): wire max_tokens knob in tensorrt_llm
639
+ - refactor(provider): canonical tensorrt_llm smoke — YAML profiles + signal_completion persona + suppress_base
640
+ - docs(openrouter): fix stale .json references in README — tree diagram + manual path
641
+ - fix(provider): openrouter smoke — YAML profiles, signal_completion persona, max_tokens cap, suppress_base
642
+ - fix(runner): propagate suppress_base_instructions + system_instruction_override over the wire
643
+ - fix(provider): wire api_params.max_tokens in openrouter
644
+ - feat(provider): github_models smoke harness mirroring tensorrt_llm pattern
645
+ - feat(provider): anthropic — smoke harness mirroring tensorrt_llm pattern
646
+ - feat(provider): nim smoke harness (mirrors tensorrt_llm pattern)
647
+ - feat(provider): lmstudio smoke harness (mirrors tensorrt_llm pattern)
648
+ - feat(provider): smoke harness for openrouter (mirror of tensorrt_llm)
649
+ - feat(provider): ollama smoke harness (mirrors tensorrt_llm pattern)
650
+ - refactor(provider): smoke — model in profile, host via workspace .env
651
+ - feat(provider): bootstrap.sh — optional --run chat|tools
652
+ - refactor(provider): bootstrap.sh — bootstrap-only, no run step
653
+ - feat(provider): run_smoke.sh — one-shot bootstrap + run for smoke harness
654
+ - fix(provider): smoke harness — ErrorEvent.error + optional --workspace
655
+ - fix(provider): drop redundant "permission" entry from tools-smoke profile
656
+ - feat(provider): tensorrt_llm tools smoke alongside chat smoke
657
+ - feat(provider): tensorrt_llm smoke harness + workspace templates
658
+ - feat(lsp): bounded-poll convergence wait for jdtls multi-stage publishDiagnostics
659
+ - feat(sdk+core): expose ToolResult.enrichment_metadata on the tool-call ledger
660
+ - probe(lsp): TEMP — narrow get_diagnostics await + publishDiagnostics path
661
+ - probe(lsp): TEMP instrumentation inside LSPToolPlugin.enrich_tool_result
662
+ - probe(core): TEMP instrumentation — narrow enrich subscriber dispatch (B-i/ii/iii/iv)
663
+ - probe(core): TEMP instrumentation — narrow enrich_tool_result dispatch gap
664
+ - feat(core): Family IV — jdtls state sibling-of-workspace + ${jdtlsStateRoot} template var
665
+ - fix(core): replay_messages must call _ensure_provider (lazy-INIT refactor missed)
666
+ - cleanup(core): remove SessionManager.ensure_session_loaded — wrong abstraction
667
+ - fix(core): SessionState.config_root + RuntimeSessionInfo listing reference
668
+ - feat(core): SessionState.profile_name; retire Google-coupled project/location/model
669
+ - feat(core): SessionManager.ensure_session_loaded — programmatic rehydration without attach
670
+ - feat(core): cascade.cancel(cid) IPC verb + reactor-suppression predicate
671
+ - fix(core): promote entry-point Protocol-check trace to WARNING with named missing methods
672
+ - feat(core): DaemonForwardingMixin + PLUGIN_TIER="daemon_callable" cross-tier pattern
673
+ - fix(core): dedup compares delivery_target_id (raw connection id), not namespaced registration id (#208)
674
+ - fix(core): dedup bootstrap-time event delivery when client is both direct-attached and cascade observer (#207)
675
+ - fix(core): dedup AgentCreatedEvent on main-agent bootstrap (#206)
676
+ - feat(sdk): add session_id field to AgentCreatedEvent (#205)
677
+ - feat(template): reject None-valued kind=scalar (close third empty-equivalent state) (#204)
678
+ - feat(template): dual-engine (Mustache + Jinja2) required-scalar enforcement at renderTemplateToFile boundary (#203)
679
+ - Revert "feat(template): top-level required-scalar enforcement + Spring sentinel parser-protection (#202)"
680
+ - feat(template): top-level required-scalar enforcement + Spring sentinel parser-protection (#202)
681
+ - feat(render-context): expose session_id with parent-walk resolution (#201)
682
+ - feat(template): recursive item_keys traversal at renderTemplateToFile boundary (#200)
683
+ - feat(template): helper-exclusivity validation at renderTemplateToFile boundary (A2) (#199)
684
+ - fix(bootstrap): emit SessionTerminatedEvent on bootstrap failure (visibility-gap close) (#198)
685
+ - fix(memory): source_session wired via config + live registry (PR-196 follow-up) (#197)
686
+ - fix(memory): wire set_session(session) so source_session is populated (#196)
687
+ - feat(provider): TensorRT-LLM via trtllm-serve (OpenAI-compatible) (#195)
688
+ - fix(cascade): bootstrap-time events route to cascade observers (centralized helper) (#194)
689
+ - fix(cascade): auto-detach IPC clients from cascade-stamped sessions on terminal events (γ') (#193)
690
+ - fix(cascade): stamp cascade_driver_id on Session dataclass (Bug B real root cause) (#192)
691
+ - chore(script_loader): probe-symbol-missing → DEBUG, not WARNING (#190)
692
+ - fix(bus): bridge SessionTerminatedEvent to EventBus (Bug C) (#189)
693
+ - fix(cascade): GC sweep mid-cascade reap (Bug B) (#188)
694
+ - feat(processor): ProcessorResult TypedDict + jaato_sdk.cascade_authoring umbrella (#187)
695
+ - feat(events): carry error context onto SessionTerminatedEvent (Q2) (#186)
696
+ - fix(cascade): default policy unloads on all terminal reasons, not just error (#183)
697
+ - hotfix(cascade-as-client): Phase 1.1 — register_in_process_client idempotent on duplicate client_id (#182)
698
+ - feat(cascade-as-client): Phase 2 — SDK IPC RPC verbs + disconnect cleanup (#180)
699
+ - hotfix(core): emit terminal events on completion-nudge exhaustion (Finding D) (#179)
700
+ - feat(cascade-as-client): Phase 1 — daemon-side registry + dispatch + default lifecycle policy (#178)
701
+ - hotfix(anthropic): re-raise SDK network-layer exceptions instead of swallowing into TurnResult (#177)
702
+ - hotfix(retry): classify anthropic SDK APIConnectionError + APITimeoutError as transient (#175)
703
+ - hotfix(runner): session.end clears _session_host + fires close_session hook (#174)
704
+ - hotfix(rpc): RunnerRPCClient lives on PoolSlot, reused across cascade sessions (#173)
705
+ - hotfix(session_manager): add cascade_driver_id kwarg to create_headless_session (#172)
706
+ - hotfix(plugins): inject NO-OP reset_for_next_session into 39 plugins (P0 cascade-sharing regression) (#171)
707
+ - feat(cascade-sharing): Phase 4 — LSP plugin lifecycle pin tests (#169)
708
+ - feat(cascade-sharing): Phase 3 — per-session apparmor with cross-session transitions (#168)
709
+ - feat(cascade-sharing): Phase 2 PR-B — end-to-end IPC + teardown wiring (#167)
710
+ - feat(cascade-sharing): Phase 2 PR-A — pool-side slot reuse + session.end RPC (#163)
711
+ - feat(cascade-sharing): Phase 1b — reset_for_next_session for 5 review-required plugins (#161)
712
+ - feat(cascade-sharing): Phase 1a — reset_for_next_session protocol + 8-plugin audit (#160)
713
+ - fix(lsp): add plugin_configs.lsp.apparmor_extra_rules operator knob (profile YAML) (#158)
714
+ - fix(lsp): symmetric workspace_path resolution at connect_server (PR-156 follow-up) (#157)
715
+ - fix(lsp): auto-inject TMPDIR from -data path to sidestep jdtls eager-tempdir bug (#156)
716
+ - fix(lsp): auto-emit apparmor grants for -data / --data-dir paths in .lsp.json args (#155)
717
+ - fix(lsp): get_apparmor_rules emits ix grants for configured LSP server binaries (#154)
718
+ - fix(lsp): debug_log_path knob + apparmor fragment closes silent-config-cache-reset (#153)
719
+ - fix(lsp): port validate_snippet to await_diagnostics (PR-3 follow-up) (#152)
720
+ - fix(lsp): bounded-poll for publishDiagnostics via asyncio.Event (#151)
721
+ - fix(lsp): expose plugin_configs.lsp.connect_timeout_seconds for heavy-init servers (#150)
722
+ - fix(runtime): promote plugin_configs.<provider>.api_key to ProviderConfig.api_key (#149)
723
+ - fix(apparmor): split registry creation so composer can query plugins (#148)
724
+ - fix(file_edit): complete apparmor fragment + drop workspace fallback (#147)
725
+ - refactor(registry): pre-init framework-key injection layer fix (#146)
726
+ - fix(file_edit): export get_apparmor_rules + thread workspace/config_root through plugin_configs (#145)
727
+ - fix(file_edit): anchor backups on config_root (corrects PR-143 misdirection) (#144)
728
+ - fix(file_edit): anchor backup path on workspace_root, not daemon CWD (#143)
729
+ - refactor(completion): unify completion_artifacts + completion_validators into completion_processors (#142)
730
+ - fix(profile): env_file overlay in _resolve_profile so JAATO_PROFILE_SET reads (#141)
731
+ - fix(provider): expand plugin_configs daemon-side + JAATO_ZHIPUAI_API_KEY env var (#140)
732
+ - fix(completion): wire completion_validators (+ artifacts) through runner envelope (#139)
733
+ - feat(completion): kb-authored semantic validators for signal_completion (#138)
734
+ - feat(tui): render human template names in tool tree (post-#136 follow-up) (#137)
735
+ - feat(template): hash template identifiers at LLM boundary (mirror of tool-name hashing)
736
+ - feat(openrouter): expose strict_tools profile knob (Approach A)
737
+ - docs(signal_completion): correct strict-mode claim + warn about model support
738
+ - feat(apparmor): plugin-contribution refactor Phase 5 (helper + contract test)
739
+ - feat(apparmor): plugin-contribution refactor Phase 4 (agents + profiles + isolated-subprofile gap)
740
+ - feat(signal_completion): expose completion_payload_schema as flat tool args (Option G)
741
+ - feat(apparmor): plugin-contribution refactor Phase 3b (gc.json)
742
+ - feat(apparmor): plugin-contribution refactor Phase 3 (service_connector + references catalog)
743
+ - feat(apparmor): plugin-contribution refactor Phase 2 (memory + prompt_library)
744
+ - perf(references): skip embedding provider load when no bundles (Fix A)
745
+ - fix(cli): bind module-level logger (PR #124 regression)
746
+ - fix(apparmor): propagate JAATO_APPARMOR_COMPLAIN to tool_hat + //child sub-profiles (template v22)
747
+ - diag(cli): CLI_SUBPROCESS_ENV log line at Popen call sites
748
+ - feat(apparmor): references plugin migration + WS-side wiring (Phase 1, template v21)
749
+ - feat(apparmor): plugin-contribution hook (Phase 0, template v20)
750
+ - diag(runner_spawn): surface error_type + error on bootstrap-failure WARNING
751
+ - diag(apparmor): env-gated complain mode toggle (JAATO_APPARMOR_COMPLAIN)
752
+ - diag(model_thread): MODEL_THREAD_TERMINAL_ERROR INFO log at ErrorEvent emit
753
+ - fix(provider+model_thread): vendor-correct error text + session-terminal on provider errors
754
+ - diag(anthropic-provider): emit PROVIDER_RESPONSE_DUMP on the exception path too
755
+ - diag(anthropic-provider): fix response dump attribute name
756
+ - diag(anthropic-provider): dump request + response when JAATO_DUMP_PROVIDER_REQUEST set
757
+ - fix(runner): disable PR-112 plugin-init gate at the call site (#114)
758
+ - fix(introspection): reframe explore-tools guidance from "ALWAYS" to "WHEN REQUIRED" (#113)
759
+ - perf(registry): gate plugin initialize() on session-requested set (option C) (#112)
760
+ - fix(apparmor): //child fragment-only exec — strip broad ix grants (template v18) (#111)
761
+ - fix(subagent): _scan_profiles_dir summary log lists per-pass names only (#110)
762
+ - fix(apparmor): grant change_profile -> //child in parent body (template v17) (#109)
763
+ - feat(perf): instrument runner-side plugin configure with BootstrapTimer (#108)
764
+ - feat(apparmor): per-profile fragment scoping (Piece 1 task-64) (#107)
765
+ - fix(apparmor): unify config_root/env_file threading via envelope (closes headless cascade crash) (#106)
766
+ - feat(apparmor): profile field + caller-kwarg surface (PR-A back-compat) (#105)
767
+ - fix(runner): propagate profile.model_tiers via envelope (enter_tier regression) (#104)
768
+ - fix(server): defer session unload to background thread (asyncio-deadlock fix) (#103)
769
+ - fix(runner): //child install reads envelope.profile_name (closes pool-slot apparmor escape)
770
+ - fix(runner): profile-less envelope falls back to session env (no hardcoded anthropic)
771
+ - feat(runner): flip JAATO_RUNNER_POOL_ENABLED default to true + docs (pool PR 5e)
772
+ - feat(runner): pool telemetry counters via get_telemetry (pool PR 5d)
773
+ - feat(runner): template-ready handshake replaces 2s sleep (pool PR 5c)
774
+ - feat(runner): subreaper + template watchdog auto-respawn (pool PR 5b)
775
+ - fix(runner): dispatch session.bootstrap on main thread (PR 5a fix)
776
+ - feat(runner): per-slot AppArmor self-confine via envelope.profile_name (pool PR 5a)
777
+ - fix(runner): daemon-resolved session_env via envelope (fixes PR #91 AppArmor regression)
778
+ - feat(runner): relocate workspace .env reading to runner-side bootstrap_session (Shape 3 PR 1)
779
+ - feat(runner): route session bootstrap through pre-warm pool + replenishment (pool PR 4)
780
+ - feat(runner): pool slot manager + fork-slot RPC (pool PR 3)
781
+ - feat(runner): pre-warm template subprocess (pool PR 2)
782
+ - fix(session): defer provider INIT to first model use (pre-warm pool PR 1)
783
+ - fix(runner-rpc): wire remaining 6 runner-side ServerAgentHooks methods
784
+ - fix(runner-rpc): wire on_agent_completed + on_session_quiescent across §7c
785
+ - fix(runner): thread agent_id from envelope through create_session
786
+ - fix(runner_spawn): build_session_envelope agent_id + completion_payload_schema
787
+ - fix(apparmor): write-deny <workspace>/.jaato/apparmor-fragments/**
788
+ - feat(apparmor): workspace-tier fragment discovery
789
+ - fix(apparmor): v16 template grants mmap-exec on venv C-extensions
790
+ - feat(apparmor): Phase 5 §5.9 — supervisor-declared sub-profile tightening flags
791
+ - feat(openrouter): emit X-OpenRouter-Categories for app rankings
792
+ - feat(openrouter): cross-model fallbacks, beta headers, routing docs
793
+ - feat(openrouter): align streaming with OpenRouter spec
794
+ - fix(file_edit): microsecond-resolution backup timestamps + collision counter
795
+ - feat(runner-rpc): Phase 5 §5.8 — profile_payload typed validator
796
+ - feat(runner): Phase 5 §5.10e — skip //child install for sub-runners
797
+ - feat(interactive_shell): Phase 5 §5.10d — PTY spawn transitions into //child
798
+ - server: pre-set TMPDIR=/tmp/jaato-<session> for confined runner subprocess
799
+ - server: Phase 5 §X — fix runner self-confine read-rule (template v15)
800
+ - server: JAATO_CGROUPS_ROOT env var for non-default cgroup parent
801
+ - fix(runner): Phase 5 §5.10c peer-review — audible failure on install gap
802
+ - feat(cli): Phase 5 §5.10c — cli plugin transitions subprocesses into //child
803
+ - feat(apparmor): Phase 5 §5.10a/b — //child sub-profile + transition callback
804
+ - feat(cgroups): Phase 5 §5.3 — orphan sub-cgroup reaper at cascade teardown
805
+ - feat(session_manager): Phase 5 §5.2 — nesting-visibility instrumentation
806
+ - feat(runner): Phase 5 §5.1b — forward RuntimeLimits app fields to mainline runner
807
+ - feat(subagent): Phase 5 §5.1 — apply default RuntimeLimits on isolated spawn
808
+ - fix(subagent): Phase 4 §4.3 peer-review — remove silent isolation downgrade + test typo + envelope v2
809
+ - test: Phase 4 §4.3.8 — isolated-subagent integration test
810
+ - feat(subagent): Phase 4 §4.3.7 — SubagentPlugin opt-in routes to isolated spawn
811
+ - feat(forward): Phase 4 §4.3.6d — parent-cascade teardown for isolated subagents
812
+ - feat(forward): Phase 4 §4.3.6c — session.bootstrap + first-turn prompt dispatch
813
+ - feat(forward): Phase 4 §4.3.6b — cross-runner output forwarding scaffolding
814
+ - feat(spawn): Phase 4 §4.3.6a — sub-runner subprocess spawn + handle bookkeeping
815
+ - feat(cgroups): Phase 4 §4.3.5 — sub-cgroup provisioning + AppArmor rollback
816
+ - feat(apparmor): Phase 4 §4.3.4 — sub-AppArmor profile generation
817
+ - feat(spawn): Phase 4 §4.3.3 — SessionManager._spawn_isolated_runner helper + handler bridge
818
+ - feat(rpc): Phase 4 §4.3.2 — spawn_isolated_runner RPC primitive (stub)
819
+ - feat(subagent): Phase 4 §4.3.1 — isolated-subagent opt-in detection (stub)
820
+ - permission+prompt_operator: Phase 4 §4.2 — editable_metadata propagation (J.B closure)
821
+ - session+runner+core: Phase 4 §4.4 — description-callback bridge (Finding 2 closure)
822
+ - permission+prompt_operator: Phase 4 §4.1 — call_id propagation (J.A closure)
823
+ - tests: Phase 4 §D regression pins + bump server to 0.6.75
824
+ - server: Phase 4 §D — agent_params propagation to runner via BootstrapEnvelope
825
+ - tests: Phase 4 §C regression pins — plugin_configs envelope v2 + permission propagation
826
+ - server: Phase 4 §C — profile.plugin_configs propagation to runner (envelope v2)
827
+ - openrouter: leverage OpenRouter prompt caching
828
+ - server: bump version to 0.6.73 for Phase 4 §B env-propagation fix
829
+ - tests: Phase 4 §B regression pins — pre-spawn env resolution contract
830
+ - server: Phase 4 §B — resolve workspace .env pre-spawn so runner inherits
831
+ - core+runner+session_manager: strip Path G cycle 8-10 probes (post-cycle-13 cleanup)
832
+ - prompt_operator: Path J fix — emit PermissionInputModeEvent companion alongside PermissionRequestedEvent
833
+ - core: Path I fix — emit AgentCreatedEvent daemon-side at bootstrap
834
+ - session_manager: Path H fix — defer incremental save off the _emit_to_session critical path
835
+ - core+session_manager: Path G+ probes — diagnosis was wrong, gap is downstream of server.emit
836
+ - core+runner: Path G instrumentation — 6 DEBUG probes to localize streaming silent failure
837
+ - core+runner: Path F fix — bridge runner→daemon AgentUIHooks gap
838
+ - core+runner+serializer: Path E fix — close send_message active-turn chain
839
+ - runner: Path D fix — mirror daemon _run_load_plugins runner-side
840
+ - shared+runner: Path C fix — runner-side runtime.connect() in bootstrap_session
841
+ - session_manager: Path B fix — IPC sessions now dispatch session.bootstrap synchronously
842
+ - core: post-Step-7 regression fix — defensive snapshot wrap (Path A)
843
+ - core: §7c Step 7.3 — respond_to_permission dual-path routing
844
+ - runner: §7c Step 7.2 — wire runner-internal RunnerRPCClient onto registry
845
+ - core: §7c Step 7.1 — wire PromptOperatorHandler in set_runner_rpc
846
+ - core+runner: §7d — runner-subprocess cgroup attach (peer-review v2 obs #2 realized)
847
+ - core: §7c step 6.6.4.5e — atomic _jaato field removal (seat-flip moment)
848
+ - core: §7c step 6.6.4.5d — daemon-direct JaatoRuntime construction (Path A transitional)
849
+ - runner+core: §7c step 6.6.4.5c.5 — session.get_tool_schemas RPC (Path D finale)
850
+ - runner+core+command_router: §7c step 6.6.4.5c.4 — session.get_model_completions RPC (2 callsites, scope expanded)
851
+ - runner+core: §7c step 6.6.4.5c.3 — session.execute_user_command RPC (Path A per-type reconstruction)
852
+ - runner+core: §7c step 6.6.4.5c.2 — session.get_user_commands RPC (dict-shape wire format)
853
+ - runner+core+shared: §7c step 6.6.4.5c.1 — session.get_auth_info RPC + JaatoSession public method
854
+ - core+session_manager: §7c step 6.6.4.5b — migrate 15 daemon-side reads to existing runner-RPCs
855
+ - session_manager+websocket: §7c step 6.6.4.5a — migrate _jaato.get_runtime() reads to direct _runtime
856
+ - core: §7c step 6.6.4.4 — narrow WIRING deletions (3 safe-only sites)
857
+ - core+runner: §7c step 6.6.4.3b — atomic seat-flip (send_message → runner-RPC + 9-callback collapse + 7-wiring delete + handler install)
858
+ - runner+core+shared: §7c step 6.6.4.3a — session.try_completion_nudge RPC + JaatoSession public method
859
+ - runner: §7c step 6.6.4.2 — runner-side session-callback notification-emission machinery
860
+ - runner+core: §7c step 6.6.4.1 — notification-frame protocol on session.send_message stream channel
861
+ - session_manager+core+websocket: §7c step 6.6.3.6 — migrate 17 external get_session() callers + drop public method
862
+ - runner+core: §7c step 6.6.3.5 — session.resolve_fork_point RPC
863
+ - runner+core: §7c step 6.6.3.4 — session.replay_messages RPC
864
+ - runner+core+shared: §7c step 6.6.3.3 — session.set_parallel_tools_override RPC + JaatoSession public method
865
+ - runner+core+shared: §7c step 6.6.3.2 — session.snapshot_conversation_budget RPC + JaatoSession public method
866
+ - runner+core+shared: §7c step 6.6.3.1 — session.append_history_message RPC + JaatoSession public method
867
+ - runner+core: §7c step 6.6.1.3 — session.restore_conversation_budget RPC handler + wrapper
868
+ - runner+core: §7c step 6.6.1.2 — session.restore_turn_accounting RPC handler + wrapper
869
+ - runner+core: §7c step 6.6.1.1 — session.set_initial_history RPC handler + wrapper
870
+ - shared+server: §7c step 6.6.1.0 — add JaatoSession.restore_turn_accounting + restore_conversation_budget; migrate session_manager
871
+ - core: §7c step 6.5 — migrate 4 CLEAN introspection sites to self._runtime
872
+ - core: §7c step 6.3 — drop 6 of 7 write-both daemon-side legs (set_reference_authorizer split out)
873
+ - core: §7c step 6.2 — migrate 6 straightforward get_session() readers
874
+ - runner+core: §7c step 6.1 (3/3) — session.inject_prompt RPC handler + wrapper
875
+ - runner+core: §7c step 6.1 (2/3) — session.snapshot_instruction_budget RPC handler + wrapper
876
+ - runner+core: §7c step 6.1 (1/3) — session.set_reference_authorizer RPC handler + wrapper
877
+ - runner: pre-step-6 toolbar-coherence test + step 5 fold-into-step-6 doc revision
878
+ - core: §7c step 4 first pass — daemon-side self._runtime field + 5 get_runtime() migrations
879
+ - core: §7c step 3b — public get_tool_schemas accessor replaces private session._tools read
880
+ - core: §7c step 3a — public JaatoClient.set_agent_identity replaces private-attr reaches
881
+ - core: §7c step 2 — WS-side bootstrap parity; extract shared dispatch_bootstrap_envelope helper
882
+ - core: §7c step 1 — IPC always bootstraps runner-side session; remove JAATO_RUNNER_HOSTS_SESSION flag
883
+ - runner+runner_rpc_client: session.send_message handler + wrapper (Phase 3 §7b.2 — the big one)
884
+ - core: post-init terminal_width sync forwards to runner (Phase 3 §7b.1 lifecycle straggler)
885
+ - runner: add session.get_context_limit RPC handler + wrapper (Phase 3 §7b.1 precursor)
886
+ - docs+core: §7b.1 audit appendix — per-site bucket classification
887
+ - core: JaatoServer.stop forwards cancellation to runner-side session (Phase 3 §7b.1)
888
+ - core: JaatoServer.clear_history forwards reset to runner-side session (Phase 3 §7b.1 — first stateless migration)
889
+ - websocket: always-spawn runner for WS-provisioned sessions (Phase 3 §7a WS counterpart)
890
+ - session_manager+runner_spawn: always-spawn the runner (Phase 3 §7a — first seat-flip-proper commit)
891
+ - docs+session_manager: address peer-review C1+C2+M1-M4+Mn1 on §3.3c surface
892
+ - runner: add session.get_turn_accounting RPC handler + wrapper (Phase 3 §3.3c precursor)
893
+ - runner: add session.reset RPC handler + wrapper (Phase 3 §3.3c precursor)
894
+ - runner: end-to-end integration test for the §3.3c dispatch surface lifecycle
895
+ - runner + core: session.set_presentation_context handler + JaatoServer migration (Phase 3 §3.3c)
896
+ - core: JaatoServer.terminal_width setter forwards to runner-side session (Phase 3 §3.3c migration)
897
+ - runner: add session.get_all_session_state bulk-snapshot RPC handler (Phase 3 §3.3c precursor)
898
+ - runner: add session.set_terminal_width + session.set_streaming_enabled RPC handlers (Phase 3 §3.3c precursors)
899
+ - core: JaatoServer.shutdown calls runner-side session.shutdown before transport close (Phase 3 §3.3c migration)
900
+ - runner: add session.shutdown RPC handler + wrapper (Phase 3 §3.3c precursor)
901
+ - runner/rpc: serialize real Message dataclasses in session.get_history (Phase 3 §3.3c precursor fix)
902
+ - runner_rpc_client: expose session-method named-method wrappers (Phase 3 §3.3c precursors)
903
+ - runner: add session.get_history + session.get_context_usage RPC handlers (Phase 3 §3.3c precursors)
904
+ - runner: add session-state + lifecycle RPC handler batch (Phase 3 §3.3c precursors)
905
+ - runner: add session.health_check RPC handler (Phase 3 §3.3c precursor)
906
+ - session_manager: defer-and-flush foundation for disk-restored sessions (Phase 3 §3.12 + peer-review M5/N1)
907
+ - session_manager: route ephemeral path through unified bootstrap sub-helper (Phase 3 §3.12 ephemeral)
908
+ - session_manager: route _load_session_impl through unified bootstrap sub-helper (Phase 3 §3.12 disk-restore)
909
+ - session_manager: relocate IPC apparmor hook inline + remove _planned_sandbox_mode (Phase 3 §3.13)
910
+ - websocket: convert apparmor pre-init hook to 4-arg + wire runner spawn (Phase 3 §3.12 WS path)
911
+ - session_manager: add BootstrapEnvelope + unified _bootstrap_session helper (Phase 3 §3.12.0)
912
+ - subagent: add session-termination hook for plugin state cleanup (Phase 3 §3.11 + peer-review M4)
913
+ - shared: add atomic_write helper + migrate framework persistence sites (Phase 3 §3.14)
914
+ - runner: lift _telemetry off result dict onto envelope.telemetry (Phase 3 §3.15)
915
+ - permission: hold _policy_lock across ASK rule-recheck + channel-wait (Phase 3 §3.7 + peer-review M3)
916
+ - permission: wire _get_channel() to select RunnerRPCChannel when runner-side (Phase 3 §3.7 deeper)
917
+ - permission: add RunnerRPCChannel ASK relay (Phase 3 §3.7 deeper)
918
+ - plugins: migrate stateful plugins (permission, references, memory) to RunnerForwardingMixin (Phase 3 §3.7 §3.8 §3.9)
919
+ - cli: collapse Phase 2 _execute_via_runner onto RunnerForwardingMixin
920
+ - plugins: migrate wave 2 (4 subprocess-spawning plugins) to RunnerForwardingMixin (Phase 3 task 3.5)
921
+ - plugins: migrate wave 1 straggler + waves 3 + 4 (12 plugins) to RunnerForwardingMixin (Phase 3 §3.4 §3.6 §3.10)
922
+ - plugins: migrate wave 1 (8 pure-FS plugins) to RunnerForwardingMixin (Phase 3 task 3.4)
923
+ - shared: RunnerForwardingMixin for runner-tier plugin stubs (Phase 3 §3.4 prerequisite)
924
+ - runner: route tool.execute through session host's executor (Phase 3 task 3.3c part 3a)
925
+ - server: build + auto-send session envelope from spawn site (Phase 3 task 3.3c part 2)
926
+ - runner: session.bootstrap RPC end-to-end (Phase 3 task 3.3c part 1)
927
+ - plugins: PLUGIN_TIER annotation + tier-filtered discovery (Phase 3 task 3.3.5)
928
+ - runner: runner-side session host scaffolding (Phase 3 task 3.3b)
929
+ - shared: SessionInitEnvelope schema + round-trip tests (Phase 3 task 3.3a)
930
+ - runner: apparmor.add_reference_fragment RPC primitive (Phase 3 task 3.2.2)
931
+ - runner: client.prompt_operator RPC primitive (Phase 3 task 3.2.1)
932
+ - runner: bidirectional RPC — runner-side outgoing + daemon-side incoming dispatch (Phase 3 task 3.2)
933
+ - server: rename runner_rpc.py → runner_rpc_client.py (Phase 3 task 3.2 prelude)
934
+ - runner: tool-result path-redaction sanitize (Phase 3 task 3.1)
935
+ - server 0.6.72: clear os.environ workspace keys in run_in_fresh_session_context
936
+ - server: move IPC apparmor hook to pre-init + spawn runner inside _create_session_impl (Phase 2 task 2.3 review fix)
937
+ - tests: Phase 2 integration + sister tests (Phase 2 task 2.6)
938
+ - cli: route _execute through the runner when one is attached (Phase 2 task 2.5)
939
+ - server: wire RunnerSpawner + RunnerRPCClient into IPC sessions (Phase 2 task 2.3)
940
+ - server: add server/runner/ package skeleton (Phase 2 task 2.2)
941
+ - shared: factor framing into shared/framing.py (Phase 2 task 2.4)
942
+ - server: remove daemon-thread per-session AppArmor confinement (Phase 2 task 2.1)
943
+ - server 0.6.71: fresh contextvars.Context per session-bootstrap (closes long-lived-daemon ContextVar inheritance leak)
944
+ - server 0.6.70: O(1) helper-mtime check via name index (closes cascade dispatch lag)
945
+ - server 0.6.69: snapshot sys.modules.values() in _module_with_file
946
+ - server 0.6.68 fixup: bundle.py inline-import get_config_root
947
+ - server: restore mixed line endings in 0.6.68 migrated files
948
+ - server 0.6.68: per-task workspace_root / config_root via ContextVar
949
+ - server 0.6.67: .env secret URIs + streaming suffix + catalog gate + headless API default
950
+ - server 0.6.63: re-apply signal_completion filter in set_presentation_context
951
+ - server 0.6.62: gate completion-nudge + executor on signal_completion exposure
952
+ - server 0.6.61: hide signal_completion in interactive root sessions
953
+ - docs(script_loader): document lock-scope + partial-import corner case
954
+ - server 0.6.60: script_loader sys.modules cache invalidation
955
+ - server 0.6.59: artifact_tracker + waypoint consume set_workspace_path
956
+ - sdk 0.11.0: relocate classify_template_evaluation_kind to SDK boundary
957
+ - server 0.6.58: public classify_template_evaluation_kind helper
958
+ - server 0.6.57: secret-URI sane on http/https/${VAR} + call_service endpoint-by-name
959
+ - server 0.6.56: TemplateIndexEntry.skip_when_flags — config-flag-driven render skip
960
+ - server 0.6.55: profile template v13 — narrow per-subpath denies + tool_hat sub-profile
961
+ - server 0.6.54: inotify pressure soft-warn for long-lived daemons
962
+ - server 0.6.53: framework-subtree carve-outs in .jaato deny rule
963
+ - server 0.6.52: profile template v11 — deny .jaato/** writes from confined sessions
964
+ - server 0.6.51: surface DynamicInstructionsError + empty headless session_id at log level
965
+ - server 0.6.50: confine prefetch — wrap dynamic-instructions in apparmor_confine
966
+ - server 0.6.49: pre-initialize hook API; AppArmor profile loads before configure()
967
+ - server 0.6.48: dynamic_instructions abort on prefetch failure + ?-modifier opt-in
968
+ - server 0.6.47: SafeThreadPoolExecutor with pre-task hooks closes apparmor stuck-worker EACCES gap
969
+ - server 0.6.46: nested-iteration item_keys + inherited_from_outer_scope flag
970
+ - server 0.6.45: transport-agnostic client-disconnect helper closes IPC inotify leak
971
+ - docs/design: payload-schema-conventions — unify spawn + completion
972
+ - server 0.6.44: template_evaluation_kind + helper_siblings on parser surface
973
+ - server 0.6.43: per-item item_keys coverage validation + source taxonomy
974
+ - server 0.6.42: TemplateIndexEntry carries variant_key + variant axis fields
975
+ - server 0.6.41: strip Output-directive line from rendered content (companion to 0.6.35 polyglot)
976
+ - server 0.6.40: declarative path-routing rules from .jaato/template_routing.yaml
977
+ - server 0.6.39: listTemplateVariables honors index entry's output_path_template (index-authoritative)
978
+ - server 0.6.38: Mustache parser recognises Handlebars helpers + filters iteration metadata
979
+ - server 0.6.37: empty-segment validation for auto-derived output_path
980
+ - server 0.6.36: listTemplateVariables merges body + Output-directive variables
981
+ - server 0.6.35: polyglot Output-directive extraction + README documents the convention
982
+ - server 0.6.34: renderTemplateToFile auto-derives output_path from template directive
983
+ - server 0.6.33: serialise pybars3 calls; thread-local stripped-comment-lines
984
+ - server 0.6.32: shape validator allows list-of-scalars when item_keys is empty
985
+ - server 0.6.31: renderTemplateToFile shape validation (Mustache-only)
986
+ - server 0.6.30: listTemplateVariables strips // host-language comment lines
987
+ - server 0.6.29: listTemplateVariables — three parser bugfixes (triple-brace + inverted-branch + nested-section attribution)
988
+ - server 0.6.28: listTemplateVariables returns structural info (kind + item_keys)
989
+ - docs+lifecycle_tools: completion_payload_schema authoring conventions
990
+ - server 0.6.27 + sdk 0.10.0: SessionTerminatedEvent + cancellation-aware end_session
991
+ - server 0.6.26: template plugin honors config_root (mirror references plugin)
992
+ - server 0.6.25: apparmor_confine — defensive unconfined-reset on entry
993
+ - server 0.6.24: anthropic + zhipuai profile config namespacing + sampling params wired
994
+ - server 0.6.23: openrouter profile config namespacing (api_params/routing/framework_overrides)
995
+ - server 0.6.22: profile-level suppress_base_instructions field
996
+ - server 0.6.21: openrouter history shape repair for strict upstreams
997
+ - server 0.6.20: openrouter provider — strict-upstream tool-def sanitizer + profile-driven sampling params
998
+ - server 0.6.17: profile-set selector + audit guard for session-tied env vars
999
+ - server 0.6.16: profile-set overlay nests under profiles/<set>/
1000
+ - server 0.6.15: preserve preloaded tools through initialize-time core-tool merge
1001
+ - server 0.6.14: subagent plugin threads completion_payload_schema + completion_artifacts to runtime.create_session
1002
+ - server 0.6.13: list_tools soft-nudge for preloaded tools
1003
+ - server 0.6.12: completion_artifacts gain optional output + description
1004
+ - server 0.6.11: schema-loaders drop auto-prefix — match script_loader convention
1005
+ - server 0.6.10: extend spawn_payload_schema validation to headless/IPC sessions
1006
+ - server 0.6.9: typed spawn_subagent — symmetric to typed signal_completion
1007
+ - server 0.6.8: subagent profile-set overlay via JAATO_PROFILE_SET env var
1008
+ - apparmor: correct misleading escape-vector comment + denylist /proc/**/attr/**
1009
+ - server 0.6.7: subagent spawn passes config_root to _resolve_agent
1010
+ - server 0.6.6: silent skip for sibling-registry modules in directory discovery
1011
+ - server 0.6.5: register bundle plugin entry-point
1012
+ - server 0.6.4: completion-artifacts — output-side body-wired rendering (#52)
1013
+ - server 0.6.3: fix NameError in subagent agent_params threading
1014
+ - server 0.6.2: dynamic-instructions step 2 — {{!py:script.py}} with full session wiring (#51)
1015
+ - test: thread config_root through test_connect_creates_runtime_with_provider
1016
+ - test: untie test_template_version from a hardcoded number
1017
+ - server 0.6.1: AppArmor dispatch + subagent profile resolution + completion-nudge guard (#49)
1018
+ - openrouter_auth README: add profile examples for thinking knobs
1019
+ - openrouter: support enable_thinking / thinking_budget / thinking_level knobs
1020
+ - openrouter: support provider-routing dict in profile config
1021
+ - openrouter: add provider + auth plugin
1022
+ - openrouter: scaffold provider package (env, errors, converters, auth)
1023
+ - tests: e2e for runtime_limits profile loading → cgroup wiring
1024
+ - sdks: align bridged payloads + tests with gap 1-5 wire shapes
1025
+ - release: coordinated bump for gap 1-5 SDK release
1026
+ - sdks: protocol-version compat (gap 5)
1027
+ - sdks: subscribe API, profile picker, inline session spec, cost/usage refactor
1028
+ - fix: propagate --agent <name> to session._agent_id
1029
+ - gc: resolve gc.json against workspace, add ~/.jaato fallback
1030
+ - subagent: register ProfilesEntryHandler — second domain validates the architecture
1031
+ - bundle: document why 'merge' stays references-specific
1032
+ - bundle: lift create / delete / reconcile to the top-level command
1033
+ - bundle: lift pack / unpack to the top-level bundle command
1034
+ - bundle: introduce top-level 'bundle' command for multi-kind ops
1035
+ - bundle_common: lift pack/unpack into shared module + v2 multi-kind format
1036
+ - bundle_common: define BundleEntryHandler protocol + registry
1037
+ - bundle_common: extract domain-agnostic bundle infra into a shared module
1038
+ - references: nest 'bundle' as a subcommand of references (not a standalone)
1039
+ - references: split into 'references' (refs) and 'bundle' (bundles) commands
1040
+ - references: pack / unpack subcommands for bundle distribution
1041
+ - references: scope:name bundle ref syntax + cross-tier merge / reconcile
1042
+ - references: two-tier bundle discovery (workspace + user) with shadow precedence
1043
+ - Fix AgentCompletedEvent.token_usage shape regression from Phase 0
1044
+ - Add hide / show-hidden / gitignore-toggle bindings to the workspace panel
1045
+ - Show .jaato/ in the workspace panel by default
1046
+ - Phase 1: SDK feature parity — typed WS verbs + JaatoClient methods
1047
+ - Phase 0: Migrate jaato-sdk events.py from @dataclass to pydantic
1048
+ - Apply .gitignore filtering to sandbox path tracking
1049
+ - Surface cgroup OOM-kill events as OTel attributes on tool spans
1050
+ - Add cgroup.events reader for kernel-killed attribution
1051
+ - Apply runtime_limits at the interactive_shell spawn layer
1052
+ - Apply runtime_limits at the subprocess layer (CLI plugin)
1053
+ - Wire runtime_limits profile field through to per-session cgroups
1054
+ - Rename SandboxConfig to RuntimeLimits, drop network field
1055
+ - Add per-session cgroup v2 runtime for resource limits
1056
+ - SDK file staging: binary-framed StageFilesRequest for WS clients
1057
+ - references: AppArmor reference fragments for confined WS sessions
1058
+ - Intercept %<name> --help before model dispatch
1059
+ - WS auth: default to ~/.jaato/ws.token, auto-create on first run
1060
+ - Support --help flag for %prompt and /prompt commands
1061
+ - Update WS transport client reference: add auth mechanism docs
1062
+ - WS bearer-token auth (Option A): close the open-port default
1063
+ - notebook: richer SyntaxError diagnostics + quote hint
1064
+ - permission hook: don't clobber pending-prompt id from parallel auto-decisions
1065
+ - services check_credentials: route through _resolve_credential too
1066
+ - services auth: resolve pass://, vault://, etc. alongside env var names
1067
+ - ParameterLocation: add body, formData, cookie for full OpenAPI coverage
1068
+ - services: tiered lookup (workspace → user home), mirroring the rest of jaato
1069
+ - AppArmor: skip for IPC sessions; fix thread restore-to-unconfined
1070
+ - Rewind-with-hint: recover from max_tokens-truncated tool calls
1071
+ - Render <j-code>/<j-table> in the TUI; drop per-client branching on the server
1072
+ - References: references merge subcommand for knowledge-bundle consolidation
1073
+ - References: knowledge bundles with per-bundle sidecars + reconcile
1074
+ - References: move sidecar row ordering to embedding_config.json
1075
+ - Surface masked credential-load errors in NIM, Anthropic OAuth, GitHub Models
1076
+ - Zhipu AI auth: surface masked provider errors instead of "no credentials"
1077
+ - Enrichment plugins: dedup per-session hints across tool calls
1078
+ - Table formatter: wrap oversized rows to fit console width
1079
+ - Cache hit rate: divide by total input, not just new (uncached) input
1080
+ - Notebook bridge: inherit outer tool approval, no inner permission prompts
1081
+ - TUI rendering: pass ClientType.value to formatters, not str(enum)
1082
+ - signal_completion: typed payloads from profile-declared schema
1083
+ - template: rename writeFileFromTemplate → renderTemplateToFile
1084
+ - WS session.new: materialise inline staged_files into provisioned workspace
1085
+ - session.new --no-instructions: partial base suppression (not full override)
1086
+ - session.new: --instructions override, honest budget, lazy base instructions
1087
+ - LM Studio: reuse loaded instance + discover live context length
1088
+ - verify_auth: thread profile plugin_configs into providers; LM Studio drops reachability probe
1089
+ - Template plugin: tag-coherent prompt/tool-result enrichment
1090
+ - LM Studio provider + profile→provider config wiring
1091
+ - AppArmor: allow memories/ folder layout, bump template version for cache invalidation
1092
+ - Memory storage: split raw queue (folder) from curated store (single file)
1093
+ - Memory: fetch by IDs + restructure hint to suggest a single call
1094
+ - Extract tag-coherence matching into shared utility, apply to references
1095
+ - Memory enrichment hint: show triggering tags only
1096
+ - Memory indexer: sentence-scoped segments + size cap
1097
+ - Memory indexer: paragraph-coherence matching for compound tags
1098
+ - Memory: enrich tool results + index compound tags by sub-tokens
1099
+ - Code block formatter: emit semantic <j-code> markup for web clients
1100
+ - Fix: propagate client_type to lazily-created agent pipelines
1101
+ - Rename table tags from nb- to j- prefix
1102
+ - Table formatter: emit semantic <nb-table> markup for non-terminal clients
1103
+ - Add agent_name parameter to create_headless_session
1104
+ - AppArmor: allow read access to premium package directory
1105
+ - Fix: register signal_completion on session directly, not as core tool
1106
+ - Fix: don't unload session while model thread is still active
1107
+ - Move signal_completion from plugin to core tool
1108
+ - Fix: add missing ToolPlugin protocol methods to lifecycle plugin
1109
+ - Add lifecycle plugin with signal_completion tool
1110
+ - Fix: WS disconnect crash — _session_manager not on JaatoWSServer
1111
+ - Extract shared subprocess runner from CLI plugin
1112
+ - Add {{!command}} command substitution to prompt templates
1113
+ - Fix: session env race condition between concurrent sessions
1114
+ - Fix: make tool ID map suffix-transparent for :stream variants
1115
+ - Permission timeout configurable per-client via ClientConfigRequest
1116
+ - Bundle tool_id_mappings in SessionInfoEvent for guaranteed delivery
1117
+ - Remove ID format examples from introspection parameter descriptions
1118
+ - Fix: re-emit ToolIdRegistry after WS client registers tools
1119
+ - Introspection: restore name alongside id, strengthen id-only params
1120
+ - Fix: emit ToolIdRegistry during init AND on reconnect
1121
+ - Fix: build ToolIdRegistry eagerly from tool schemas, not _reverse
1122
+ - Fix: emit ToolIdRegistryEvent in emit_current_state only
1123
+ - Introspection output: remove name field, model sees only IDs
1124
+ - ToolIdRegistryEvent: server pushes ID→name mapping to clients
1125
+ - Introspection output: include human-readable names alongside hash IDs
1126
+ - Replace tool name strings with hash-derived IDs at provider boundary
1127
+ - Memory plugin: configurable global storage path; auth: bearer debug logging
1128
+ - SessionManager: add create_headless_session for daemon extensions
1129
+ - Extract shared script loader from permission evaluator
1130
+ - Memory indexer: exact-match only + min 2-tag overlap for enrichment
1131
+ - Global memory tier: cross-session knowledge with quality curation
1132
+ - Fix: strip auth headers on cross-domain redirects (httpx path)
1133
+ - snapshot_workspace: remove unnecessary session pause
1134
+ - AppArmor: actively unconfine thread before framework-level tools
1135
+ - list_tools: drop category string parameter, index-only
1136
+ - list_tools: add category_index parameter as integer alternative
1137
+ - list_tools: build category enum dynamically from registry
1138
+ - list_tools: show all tools in a category regardless of session profile
1139
+ - list_tools: name missing plugins in category availability hints
1140
+ - list_tools: show per-category availability based on session plugins
1141
+ - list_tools: show registered categories even when no tools are loaded
1142
+ - Fix UnboundLocalError in list_tools category validation
1143
+ - list_tools: report unknown categories instead of returning empty list
1144
+ - WS: read category descriptions from tools.register_client message
1145
+ - Dynamic tool category descriptions via PluginRegistry
1146
+ - Fork-replay primitives: 5 general-purpose capabilities for session manipulation
1147
+ - Expose session fork primitives + registry protocol-mismatch warning
1148
+ - Reliability: honor plugin_configs.reliability from profile
1149
+ - Resilience hardening: Tier 3 (external service resilience)
1150
+ - Resilience hardening: Tier 1 (storage) + Tier 2 (plugin lifecycle)
1151
+ - Normalize None defaults and Python booleans in prompt substitution
1152
+ - Apply frontmatter param defaults during prompt substitution
1153
+ - Pass user-supplied args through %prompt-name expansion
1154
+ - Fix per-turn placeholder leak in agent system instructions
1155
+ - Dedup and default-aware missing parameters in prompt_library
1156
+ - Add telemetry for the GC ↔ cache plugin coordination
1157
+ - Disable code_block_formatter line truncation by default
1158
+ - Allow ML model caches (~/.cache/huggingface, ~/.cache/torch) in AppArmor profile
1159
+ - Allow Claude Code skills and commands dirs in AppArmor profile
1160
+ - Fix AppArmor confinement leak; harden prompt_library against unreadable sources
1161
+ - Confine tool execution by default; opt out via TRAIT_FRAMEWORK_LEVEL
1162
+ - Allow user-global jaato config in AppArmor profile; fix subagent truncation inheritance
1163
+ - Disable line truncation in code_block_formatter for non-terminal clients
1164
+ - Allow read access to jaato source tree in AppArmor profile
1165
+ - Fix sandbox false-positive on WS-provisioned workspaces under ~/.jaato/
1166
+ - Remove dead aa-exec wrapping path; thread-level confinement is canonical
1167
+ - Skip aa-exec wrapping when thread-level AppArmor confinement is active
1168
+ - Allow both /tmp/jaato-<sid>-* and /tmp/jaato-<sid>/* in AppArmor profile
1169
+ - Fix AppArmor profile blocking agent's own workspace
1170
+ - Add thread-level AppArmor confinement for in-process file I/O tools
1171
+ - Add fork_ask, proactive tool result cap, server-side % dispatch, and structured auth errors
1172
+ - Fix: run GC check between tool calls in agentic mode
1173
+ - Add diagnostic logging to GC pre-send check
1174
+ - Fix: read cumulative input_tokens from message_delta per Anthropic spec
1175
+ - Fix: save_to downloads binary data correctly (raw bytes)
1176
+ - Fix: enable HTTP redirect following in call_service
1177
+ - Add save_to parameter to call_service for file downloads
1178
+ - Include comment in PermissionResolvedEvent for WS clients
1179
+ - Add ALLOW_COMMENT to permission channels (yc: prefix)
1180
+ - Add ALLOW_WITH_COMMENT to permission evaluator contract
1181
+ - Fix: set daemon_session_id before set_agent_context
1182
+ - Fix: inject session_id into permission context for evaluators
1183
+ - Fix: store workspace_path in permission plugin for evaluator context
1184
+ - Fix: use session manager session_id for AppArmor profiles
1185
+ - Fix: don't create .jaato/sessions at daemon startup from cwd
1186
+ - Remove debug logging for daemon plugin workspace injection
1187
+ - Add debug logging for daemon plugin workspace injection
1188
+ - Fix: inject client workspace into daemon plugins at command execution
1189
+ - Fix: initialize _workspace_path in __init__ for all auth plugins
1190
+ - Fix: pass workspace_path to all auth plugins for credential storage
1191
+ - Add typed ZhipuAIRateLimitError and retry classification
1192
+ - Fix Z.AI context limits: add glm-5-turbo, update default to 200K
1193
+ - Fix: inject workspace_path into permission plugin init config
1194
+ - Fix unreachable code in memory plugin get_config_schema()
1195
+ - Remove channel_type/channel_config from plugin config schemas
1196
+ - Migrate plugin config schemas from PluginSetting to JSON Schema
1197
+ - Add turn_index and model_preamble to evaluator context
1198
+ - Run evaluators even for pre-approved tools
1199
+ - Extend permission evaluators with full scoped decisions
1200
+ - Add runtime-injectable permission evaluators
1201
+ - Implement profile inheritance with inherits field
1202
+ - Fix Z.AI model discovery URL and add cross-provider list_provider_models()
1203
+ - Fix AppArmor profile name mismatch in daemon session hook
1204
+ - Remove dead auto_approved field from SubagentProfile
1205
+ - Flush pending client tools after session.attach (not just session.new)
1206
+ - Propagate daemon session ID into all OTel spans as jaato.session_id
1207
+ - Add config introspection to GC plugins and expose them on daemon context
1208
+ - Expose plugin_registry on daemon extension context
1209
+ - Document get_config_schema() in plugin implementation guide
1210
+ - Add introspectable plugin settings via PluginSetting and get_config_schema()
1211
+ - Expose available_plugins on daemon extension context
1212
+ - Cache entry point lookup in embedding subsystem discovery
1213
+ - Fix AppArmor session hook: check self._apparmor at execution time
1214
+ - Fix sandbox_mode: use session hook and run hooks after Session creation
1215
+ - Add debug logging for sandbox_mode session lookup
1216
+ - Fix sandbox_mode not appearing in session.info event
1217
+ - Include sandbox_mode in session.info event
1218
+ - Fix AppArmor profile loading: use sudo for apparmor_parser
1219
+ - Fix AppArmor cache permission error and align docs with implementation
1220
+ - Add TUI installer and restructure dependencies into optional extras
1221
+ - Extract embedding subsystem behind jaato.embedding entry point protocol
1222
+ - Complete agent/profile split: SDK, TUI, and deprecation warning
1223
+ - Split agent (prompt) from profile (runtime config)
1224
+ - Remove icon and icon_name from profiles
1225
+ - Add anti-hallucinated-constraints rule to framework instructions
1226
+ - Preserve running subagents during plugin shutdown/re-init
1227
+ - Fix client tool execution during WS disconnection
1228
+ - Stop PARENT messages from interrupting subagent streaming
1229
+ - Expose EventBus from JaatoServer for daemon extensions
1230
+ - Pass client_id to WS message handler callbacks
1231
+ - Add user identity tracking for sessions and WS message handlers
1232
+ - Include session_id in session hook callback
1233
+ - Add extensible WS message handler registration
1234
+ - Emit events.subscribed notification for external event subscriptions
1235
+ - Add event.external WS handler for client-to-agent event injection
1236
+ - Include cancellation reason in [Generation cancelled] messages
1237
+ - Fix session span parenting: all agents share one root session span
1238
+ - Add session and agent spans for full trace tree hierarchy
1239
+ - Allow env var references in command sanitizer
1240
+ - Load template index from disk independently of references plugin
1241
+ - Use custom_name from spawn_subagent as agent display name
1242
+ - Add TLS support to WebSocket server
1243
+ - Fix core executor lookup in all 3 ai_tool_runner code paths
1244
+ - Fix: look up core tool executors in ai_tool_runner fallback
1245
+
1246
+ ---
1247
+
1248
+ # jaato-server
1249
+
1250
+ Jaato Server — LLM tool orchestration runtime and daemon.
1251
+
1252
+ See the [project README](../README.md) for full documentation.