synapse-cli-agent 0.1.37__tar.gz → 0.1.39__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 (573) hide show
  1. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/.github/workflows/release.yml +1 -0
  2. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/AGENTS.md +16 -5
  3. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/CHANGELOG.md +44 -0
  4. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/PKG-INFO +1 -1
  5. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/README.zh-CN.md +0 -1
  6. synapse_cli_agent-0.1.39/approval-behavior.md +46 -0
  7. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/architecture-flow.md +1 -1
  8. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/config.md +0 -7
  9. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/design.md +3 -1
  10. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/skills.md +11 -11
  11. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/tool-output-transform.md +4 -2
  12. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/tutorial.md +12 -12
  13. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/pyproject.toml +1 -1
  14. synapse_cli_agent-0.1.39/release_body.md +21 -0
  15. synapse_cli_agent-0.1.39/rust/synapse-core-tool/Cargo.lock +2868 -0
  16. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-core-tool/Cargo.toml +8 -2
  17. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-core-tool/pyproject.toml +1 -1
  18. synapse_cli_agent-0.1.39/rust/synapse-core-tool/python/synapse_core_tool/__init__.py +11 -0
  19. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-core-tool/src/lib.rs +2 -0
  20. synapse_cli_agent-0.1.39/rust/synapse-core-tool/src/llm.rs +153 -0
  21. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/app/agent_assembly.py +16 -23
  22. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/commands/model.py +25 -11
  23. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/commands/slash_cmds.py +11 -4
  24. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/integrations/http_clients.py +5 -0
  25. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/models/registry.py +138 -1
  26. synapse_cli_agent-0.1.39/src/synapse/models/rust_openai.py +468 -0
  27. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/observability/debug_server.py +8 -1
  28. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/model_request_compression_middleware.py +39 -5
  29. synapse_cli_agent-0.1.39/src/synapse/runtime/session_header_middleware.py +52 -0
  30. synapse_cli_agent-0.1.39/src/synapse/runtime/session_headers.py +95 -0
  31. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/streaming/__init__.py +4 -0
  32. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/streaming/adapters.py +35 -0
  33. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/streaming/events.py +19 -1
  34. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/streaming/parser.py +1 -3
  35. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/subagent_specs.py +7 -0
  36. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/subagents.py +2 -24
  37. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/tool_output_middleware.py +4 -1
  38. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/sessions/__init__.py +2 -0
  39. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/sessions/store.py +72 -0
  40. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/settings/schema.py +1 -40
  41. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/tools/session_tools.py +9 -4
  42. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/agent_lifecycle.py +12 -0
  43. synapse_cli_agent-0.1.39/src/synapse/ui/approval.py +200 -0
  44. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/dialogs/controller.py +43 -4
  45. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/prompt_controller.py +3 -6
  46. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/rendering.py +74 -1
  47. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/selectable_static.py +59 -0
  48. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/textual_stream_sink.py +8 -0
  49. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/transcript/controller.py +25 -0
  50. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/transcript/factory.py +1 -0
  51. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/transcript/history.py +42 -7
  52. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/transcript/state.py +2 -0
  53. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/transcript_blocks.py +116 -8
  54. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/tui.py +34 -2
  55. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/turn/controller.py +9 -3
  56. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/turn/event_renderer.py +16 -0
  57. synapse_cli_agent-0.1.39/tests/test_approval.py +169 -0
  58. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_capabilities.py +174 -1
  59. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_config.py +1 -1
  60. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_context_window.py +9 -2
  61. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_dialogs.py +55 -1
  62. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_prompt_controller.py +51 -0
  63. synapse_cli_agent-0.1.39/tests/test_rust_openai_model.py +306 -0
  64. synapse_cli_agent-0.1.39/tests/test_session_headers.py +248 -0
  65. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_slash_effects.py +120 -1
  66. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_stream_semantic_fixtures.py +94 -0
  67. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_textual_stream_sink.py +21 -0
  68. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_transcript_controller.py +63 -0
  69. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_tui_selection.py +218 -0
  70. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_turn_controller.py +1 -1
  71. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_turn_event_renderer.py +64 -0
  72. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/uv.lock +2 -2
  73. synapse_cli_agent-0.1.37/release_body.md +0 -9
  74. synapse_cli_agent-0.1.37/rust/synapse-core-tool/Cargo.lock +0 -1229
  75. synapse_cli_agent-0.1.37/rust/synapse-core-tool/python/synapse_core_tool/__init__.py +0 -3
  76. synapse_cli_agent-0.1.37/src/synapse/runtime/tool_response_truncate_middleware.py +0 -236
  77. synapse_cli_agent-0.1.37/tests/test_tool_response_truncate_middleware.py +0 -206
  78. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/.dockerignore +0 -0
  79. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/.github/workflows/ci.yml +0 -0
  80. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/.github/workflows/docs.yml +0 -0
  81. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/.github/workflows/native-compression-wheels.yml +0 -0
  82. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/.github/workflows/native-core-tool-wheels.yml +0 -0
  83. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/.gitignore +0 -0
  84. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/.python-version +0 -0
  85. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/.readthedocs.yaml +0 -0
  86. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/.zed/settings.json +0 -0
  87. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/Dockerfile.web +0 -0
  88. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/LICENSE +0 -0
  89. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/README.md +0 -0
  90. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/agent_upstream.txt +0 -0
  91. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/assets/demo.gif +0 -0
  92. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/assets/synapse-logo.svg +0 -0
  93. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/assets/tui-preview.png +0 -0
  94. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/cli_upstream.txt +0 -0
  95. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/debug_compact.py +0 -0
  96. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/decode_screenshot.py +0 -0
  97. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/acp-adapter/capability-matrix.md +0 -0
  98. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/acp-adapter/decisions.md +0 -0
  99. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/acp-adapter/index.md +0 -0
  100. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/acp-adapter/phase-0-protocol-baseline.md +0 -0
  101. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/acp-adapter/phase-1-core-transport.md +0 -0
  102. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/acp-adapter/phase-2-prompt-semantics.md +0 -0
  103. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/acp-adapter/phase-3-permissions.md +0 -0
  104. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/acp-adapter/phase-4-session-lifecycle.md +0 -0
  105. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/acp-adapter/phase-5-session-mcp.md +0 -0
  106. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/acp-adapter/phase-6-client-services.md +0 -0
  107. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/acp-adapter/phase-7-advanced-capabilities.md +0 -0
  108. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/acp-adapter/phase-8-compliance.md +0 -0
  109. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/acp-adapter/progress.md +0 -0
  110. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/agent-development-guide.md +0 -0
  111. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/agent-runtime-decoupling/baseline-report.md +0 -0
  112. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/agent-runtime-decoupling/decisions.md +0 -0
  113. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/agent-runtime-decoupling/index.md +0 -0
  114. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/agent-runtime-decoupling/migration.md +0 -0
  115. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/agent-runtime-decoupling/phase-0-baseline.md +0 -0
  116. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/agent-runtime-decoupling/phase-1-streaming-core.md +0 -0
  117. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/agent-runtime-decoupling/phase-2-turn-runtime.md +0 -0
  118. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/agent-runtime-decoupling/phase-3-tui-cutover.md +0 -0
  119. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/agent-runtime-decoupling/phase-4-session-runtime.md +0 -0
  120. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/agent-runtime-decoupling/phase-5-multi-session.md +0 -0
  121. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/agent-runtime-decoupling/phase-6-project-runtime.md +0 -0
  122. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/agent-runtime-decoupling/phase-7-global-control-plane.md +0 -0
  123. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/agent-runtime-decoupling/phase-8-hardening.md +0 -0
  124. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/agent-runtime-decoupling/post-review-fix-plan.md +0 -0
  125. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/agent-runtime-decoupling/progress.md +0 -0
  126. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/architecture.md +0 -0
  127. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/cli.md +0 -0
  128. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/codex-session-discovery-phase-1.md +0 -0
  129. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/codex-session-import-phase-2.md +0 -0
  130. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/docker-web.md +0 -0
  131. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/index.md +0 -0
  132. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/install.md +0 -0
  133. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/math-formulas-test.md +0 -0
  134. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/mcp.md +0 -0
  135. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/models.md +0 -0
  136. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/native-compression-core.md +0 -0
  137. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/native-core-tool.md +0 -0
  138. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/permissions.md +0 -0
  139. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/quickstart.md +0 -0
  140. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/sessions.md +0 -0
  141. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/smith_output.md +0 -0
  142. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/subagents.md +0 -0
  143. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/tui-cursor-refactor.md +0 -0
  144. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/docs/x-agent-development-guide.md +0 -0
  145. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/examples/mcp.example.json +0 -0
  146. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/examples/models.example.json +0 -0
  147. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/examples/settings.example.json +0 -0
  148. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/middleware_upstream.txt +0 -0
  149. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/mkdocs.yml +0 -0
  150. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-core-tool/LICENSE +0 -0
  151. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-core-tool/NOTICE +0 -0
  152. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-core-tool/README.md +0 -0
  153. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-core-tool/src/file_access.rs +0 -0
  154. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-core-tool/src/file_tools.rs +0 -0
  155. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-core-tool/src/math_render.rs +0 -0
  156. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-core-tool/src/search.rs +0 -0
  157. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-core-tool/uv.lock +0 -0
  158. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/Cargo.lock +0 -0
  159. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/Cargo.toml +0 -0
  160. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/LICENSE +0 -0
  161. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/NOTICE +0 -0
  162. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/README.md +0 -0
  163. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/pyproject.toml +0 -0
  164. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/python/synapse_tool_compress_core/__init__.py +0 -0
  165. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/ccr.rs +0 -0
  166. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/ccr_in_memory.rs +0 -0
  167. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/mod.rs +0 -0
  168. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/relevance/base.rs +0 -0
  169. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/relevance/bm25.rs +0 -0
  170. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/signals/keyword_detector.rs +0 -0
  171. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/signals/line_importance.rs +0 -0
  172. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/adaptive_sizer.rs +0 -0
  173. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/anchor_selector.rs +0 -0
  174. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/code_compressor.rs +0 -0
  175. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/diff_compressor.rs +0 -0
  176. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/log_compressor.rs +0 -0
  177. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/search_compressor.rs +0 -0
  178. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/analyzer.rs +0 -0
  179. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/anchors.rs +0 -0
  180. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/builder.rs +0 -0
  181. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/classifier.rs +0 -0
  182. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/classifier.rs +0 -0
  183. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/compactor.rs +0 -0
  184. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/formatter.rs +0 -0
  185. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/ir.rs +0 -0
  186. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/mod.rs +0 -0
  187. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/walker.rs +0 -0
  188. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/config.rs +0 -0
  189. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/constraints.rs +0 -0
  190. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/crusher.rs +0 -0
  191. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/crushers.rs +0 -0
  192. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/error_keywords.rs +0 -0
  193. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/field_detect.rs +0 -0
  194. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/hashing.rs +0 -0
  195. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/mod.rs +0 -0
  196. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/observer.rs +0 -0
  197. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/orchestration.rs +0 -0
  198. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/outliers.rs +0 -0
  199. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/planning.rs +0 -0
  200. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/statistics.rs +0 -0
  201. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/stats_math.rs +0 -0
  202. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/traits.rs +0 -0
  203. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/types.rs +0 -0
  204. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/rust/synapse-tool-compress-core/src/lib.rs +0 -0
  205. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/scripts/install.ps1 +0 -0
  206. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/scripts/release.ps1 +0 -0
  207. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/scripts/serve_web.py +0 -0
  208. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/slash_cmds_upstream.txt +0 -0
  209. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/__init__.py +0 -0
  210. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/__main__.py +0 -0
  211. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/acp/__init__.py +0 -0
  212. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/acp/agent.py +0 -0
  213. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/acp/client_services.py +0 -0
  214. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/acp/content.py +0 -0
  215. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/acp/events.py +0 -0
  216. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/acp/lifecycle.py +0 -0
  217. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/acp/mcp.py +0 -0
  218. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/acp/permissions.py +0 -0
  219. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/acp/server.py +0 -0
  220. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/acp/sessions.py +0 -0
  221. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/acp/updates.py +0 -0
  222. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/app/__init__.py +0 -0
  223. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/app/agent.py +0 -0
  224. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/app/agent_md.py +0 -0
  225. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/cli.py +0 -0
  226. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/commands/__init__.py +0 -0
  227. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/commands/compression.py +0 -0
  228. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/commands/goal.py +0 -0
  229. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/commands/helpers.py +0 -0
  230. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/commands/mcp.py +0 -0
  231. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/commands/result.py +0 -0
  232. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/commands/sessions.py +0 -0
  233. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/commands/slash_complete.py +0 -0
  234. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/commands/theme.py +0 -0
  235. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/config.py +0 -0
  236. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/content/__init__.py +0 -0
  237. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/content/input_history.py +0 -0
  238. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/content/multimodal.py +0 -0
  239. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/content/prompts.py +0 -0
  240. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/content/skills_catalog.py +0 -0
  241. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/entry.py +0 -0
  242. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/goals/__init__.py +0 -0
  243. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/goals/middleware.py +0 -0
  244. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/goals/model.py +0 -0
  245. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/goals/runtime.py +0 -0
  246. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/goals/steering.py +0 -0
  247. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/goals/store.py +0 -0
  248. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/goals/tools.py +0 -0
  249. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/integrations/__init__.py +0 -0
  250. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/integrations/checkpoint_seed.py +0 -0
  251. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/integrations/codex_config.py +0 -0
  252. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/integrations/codex_history.py +0 -0
  253. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/integrations/codex_import.py +0 -0
  254. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/integrations/codex_sessions.py +0 -0
  255. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/integrations/describe_image.py +0 -0
  256. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/integrations/herdr.py +0 -0
  257. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/integrations/llm_openai_compat.py +0 -0
  258. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/integrations/llm_openai_websocket.py +0 -0
  259. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/integrations/mcp_client.py +0 -0
  260. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/integrations/openai_oauth.py +0 -0
  261. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/integrations/openai_oauth_middleware.py +0 -0
  262. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/integrations/openai_usage.py +0 -0
  263. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/integrations/turbo.py +0 -0
  264. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/integrations/vision_middleware.py +0 -0
  265. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/memory/__init__.py +0 -0
  266. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/memory/auto_recorder.py +0 -0
  267. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/memory/embedder.py +0 -0
  268. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/memory/long_term.py +0 -0
  269. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/models/__init__.py +0 -0
  270. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/models/config.py +0 -0
  271. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/models/helpers.py +0 -0
  272. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/models/persist.py +0 -0
  273. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/models/profile.py +0 -0
  274. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/models/providers.py +0 -0
  275. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/models_registry.py +0 -0
  276. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/observability/__init__.py +0 -0
  277. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/observability/debug_inspector.html +0 -0
  278. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/observability/exit_trace.py +0 -0
  279. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/observability/heap_dump.py +0 -0
  280. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/observability/llm_debug.py +0 -0
  281. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/observability/startup_trace.py +0 -0
  282. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/planner/__init__.py +0 -0
  283. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/planner/task_planner.py +0 -0
  284. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/projects/__init__.py +0 -0
  285. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/projects/catalog.py +0 -0
  286. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/rag/__init__.py +0 -0
  287. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/rag/knowledge_base.py +0 -0
  288. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/__init__.py +0 -0
  289. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/agent_loop/__init__.py +0 -0
  290. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/agent_loop/model.py +0 -0
  291. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/agent_loop/request.py +0 -0
  292. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/agent_loop/turn.py +0 -0
  293. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/async_runtime.py +0 -0
  294. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/backends.py +0 -0
  295. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/cancellation.py +0 -0
  296. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/context_compact.py +0 -0
  297. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/debug_capture_middleware.py +0 -0
  298. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/execute_capture.py +0 -0
  299. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/filesystem_tool_prompt_middleware.py +0 -0
  300. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/fs_permissions.py +0 -0
  301. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/harness.py +0 -0
  302. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/hitl.py +0 -0
  303. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/interaction_ledger.py +0 -0
  304. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/middleware.py +0 -0
  305. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/pathing.py +0 -0
  306. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/projects/__init__.py +0 -0
  307. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/projects/identity.py +0 -0
  308. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/projects/runtime.py +0 -0
  309. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/safety.py +0 -0
  310. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/session_prewarm.py +0 -0
  311. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/sessions/__init__.py +0 -0
  312. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/sessions/events.py +0 -0
  313. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/sessions/manager.py +0 -0
  314. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/sessions/persistence.py +0 -0
  315. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/sessions/ref.py +0 -0
  316. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/sessions/runtime.py +0 -0
  317. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/steer.py +0 -0
  318. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/streaming/accumulator.py +0 -0
  319. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/streaming/protocol.py +0 -0
  320. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/streaming/runtime.py +0 -0
  321. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/streaming/stream_events.py +0 -0
  322. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/streaming/tool_model.py +0 -0
  323. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/subagent_config_persist.py +0 -0
  324. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/timeline.py +0 -0
  325. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/token_rate.py +0 -0
  326. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/tool_ignore.py +0 -0
  327. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/tool_output_eval.py +0 -0
  328. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/runtime/tool_output_usage_middleware.py +0 -0
  329. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/sessions/cancel_repair.py +0 -0
  330. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/sessions/search_index.py +0 -0
  331. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/sessions/summary.py +0 -0
  332. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/sessions/transcript.py +0 -0
  333. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/sessions/transcript_migration.py +0 -0
  334. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/sessions/transcript_projection.py +0 -0
  335. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/settings/__init__.py +0 -0
  336. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/settings/config_paths.py +0 -0
  337. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/subagents.py +0 -0
  338. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/tool_output/__init__.py +0 -0
  339. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/tool_output/detection.py +0 -0
  340. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/tool_output/metrics.py +0 -0
  341. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/tool_output/models.py +0 -0
  342. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/tool_output/pipeline.py +0 -0
  343. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/tool_output/repository.py +0 -0
  344. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/tool_output/transformers.py +0 -0
  345. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/tools/__init__.py +0 -0
  346. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/tools/describe_image.py +0 -0
  347. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/tools/filesystem_patch.py +0 -0
  348. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/tools/filesystem_search.py +0 -0
  349. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/__init__.py +0 -0
  350. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/answer_divider.py +0 -0
  351. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/bottombar/__init__.py +0 -0
  352. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/bottombar/components/__init__.py +0 -0
  353. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/bottombar/components/codex_usage.py +0 -0
  354. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/bottombar/components/fast.py +0 -0
  355. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/bottombar/components/goal.py +0 -0
  356. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/bottombar/components/key_hints.py +0 -0
  357. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/bottombar/components/mcp.py +0 -0
  358. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/bottombar/components/mode.py +0 -0
  359. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/bottombar/components/model.py +0 -0
  360. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/bottombar/components/thread.py +0 -0
  361. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/bottombar/components/turbo.py +0 -0
  362. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/bottombar/components/turn_stats.py +0 -0
  363. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/bottombar/context.py +0 -0
  364. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/bottombar/core.py +0 -0
  365. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/chrome/__init__.py +0 -0
  366. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/chrome/controller.py +0 -0
  367. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/clipboard.py +0 -0
  368. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/dialogs/__init__.py +0 -0
  369. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/dialogs/active_session_switcher.py +0 -0
  370. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/dialogs/base.py +0 -0
  371. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/dialogs/codex_config_import.py +0 -0
  372. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/dialogs/codex_reset.py +0 -0
  373. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/dialogs/codex_session_list.py +0 -0
  374. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/dialogs/compression_diagnostics.py +0 -0
  375. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/dialogs/git_explore.py +0 -0
  376. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/dialogs/mcp_panel.py +0 -0
  377. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/dialogs/model_form.py +0 -0
  378. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/dialogs/model_manager.py +0 -0
  379. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/dialogs/model_picker.py +0 -0
  380. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/dialogs/provider_catalog.py +0 -0
  381. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/dialogs/safety_panel.py +0 -0
  382. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/dialogs/session_list.py +0 -0
  383. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/dialogs/subagent_config.py +0 -0
  384. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/dialogs/theme_designer.py +0 -0
  385. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/dialogs/theme_picker.py +0 -0
  386. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/drawer.py +0 -0
  387. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/formatters.py +0 -0
  388. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/git_explore/__init__.py +0 -0
  389. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/git_explore/engine.py +0 -0
  390. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/git_explore/provider.py +0 -0
  391. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/git_explore/unified.py +0 -0
  392. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/image_preview.py +0 -0
  393. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/image_render.py +0 -0
  394. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/image_viewer.py +0 -0
  395. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/math_image.py +0 -0
  396. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/mermaid_image.py +0 -0
  397. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/selectable_text.py +0 -0
  398. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/sink.py +0 -0
  399. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/status_controller.py +0 -0
  400. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/steer_controller.py +0 -0
  401. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/steer_widget.py +0 -0
  402. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/stream.py +0 -0
  403. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/stream_events.py +0 -0
  404. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/stream_runtime.py +0 -0
  405. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/textual_lifecycle.py +0 -0
  406. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/theme.py +0 -0
  407. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/theme_controller.py +0 -0
  408. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/timeline.py +0 -0
  409. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/tool_blocks.py +0 -0
  410. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/topbar/__init__.py +0 -0
  411. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/topbar/components/__init__.py +0 -0
  412. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/topbar/components/branch.py +0 -0
  413. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/topbar/components/title.py +0 -0
  414. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/topbar/components/tool_output.py +0 -0
  415. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/topbar/components/usage.py +0 -0
  416. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/topbar/components/workspace.py +0 -0
  417. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/topbar/context.py +0 -0
  418. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/topbar/core.py +0 -0
  419. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/topbar/git_changes_popover.py +0 -0
  420. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/topbar/git_chrome.py +0 -0
  421. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/topbar/tool_output_popover.py +0 -0
  422. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/topbar/widget.py +0 -0
  423. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/transcript/__init__.py +0 -0
  424. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/tui_launch.py +0 -0
  425. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/tui_styles.py +0 -0
  426. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/turn/__init__.py +0 -0
  427. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/turn/event_bridge.py +0 -0
  428. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/turn/persistence.py +0 -0
  429. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/turn/request.py +0 -0
  430. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/turn_rail.py +0 -0
  431. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/turn_rail_widgets.py +0 -0
  432. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/user_turn.py +0 -0
  433. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/user_turn_block.py +0 -0
  434. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/ui/welcome.py +0 -0
  435. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/src/synapse/web.py +0 -0
  436. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/synapse.cmd +0 -0
  437. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/__init__.py +0 -0
  438. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/fixtures/acp/initialize.jsonl +0 -0
  439. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/fixtures/agent_stream/core_scenarios.json +0 -0
  440. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/fixtures/codex_rollouts/duplicate_response_item.jsonl +0 -0
  441. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/fixtures/codex_rollouts/incomplete_and_aborted.jsonl +0 -0
  442. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/fixtures/codex_rollouts/legacy_compaction.jsonl +0 -0
  443. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/fixtures/codex_rollouts/normal_completed.jsonl +0 -0
  444. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/fixtures/codex_rollouts/replacement_history.jsonl +0 -0
  445. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/fixtures/codex_rollouts/rollback.jsonl +0 -0
  446. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/fixtures/codex_rollouts/unsupported_replacement.jsonl +0 -0
  447. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/fixtures/sample_repo/calculator.py +0 -0
  448. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/fixtures/sample_repo/test_calculator.py +0 -0
  449. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/fixtures/tool_output_eval.json +0 -0
  450. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test.py +0 -0
  451. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_acp_p0_baseline.py +0 -0
  452. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_acp_p1_core.py +0 -0
  453. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_acp_p1_transport.py +0 -0
  454. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_acp_p2_content.py +0 -0
  455. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_acp_p2_events.py +0 -0
  456. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_acp_p2_updates.py +0 -0
  457. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_acp_p3_agent.py +0 -0
  458. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_acp_p3_permissions.py +0 -0
  459. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_acp_p4_history.py +0 -0
  460. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_acp_p4_lifecycle.py +0 -0
  461. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_acp_p5_mcp.py +0 -0
  462. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_acp_p6_client_services.py +0 -0
  463. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_acp_p8_compliance.py +0 -0
  464. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_agent_factory.py +0 -0
  465. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_agent_lifecycle.py +0 -0
  466. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_agent_turn_runtime.py +0 -0
  467. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_async_checkpointer.py +0 -0
  468. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_backends.py +0 -0
  469. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_bottombar_registry.py +0 -0
  470. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_cancel_repair.py +0 -0
  471. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_checkpoint_seed.py +0 -0
  472. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_chrome_controller.py +0 -0
  473. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_cli.py +0 -0
  474. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_cli_codex_import.py +0 -0
  475. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_clipboard.py +0 -0
  476. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_codex_config.py +0 -0
  477. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_codex_history.py +0 -0
  478. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_codex_import.py +0 -0
  479. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_codex_sessions.py +0 -0
  480. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_codex_sessions_windows.py +0 -0
  481. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_compact_tool_descriptions.py +0 -0
  482. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_context_compact.py +0 -0
  483. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_debug_capture_middleware.py +0 -0
  484. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_debug_inspector.py +0 -0
  485. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_describe_image.py +0 -0
  486. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_entry.py +0 -0
  487. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_filesystem_patch_tool.py +0 -0
  488. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_filesystem_search_tools.py +0 -0
  489. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_git_changes_popover.py +0 -0
  490. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_git_chrome.py +0 -0
  491. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_git_explore.py +0 -0
  492. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_goal_live_tui.py +0 -0
  493. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_goals.py +0 -0
  494. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_heap_dump.py +0 -0
  495. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_herdr_integration.py +0 -0
  496. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_http_clients.py +0 -0
  497. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_image_render.py +0 -0
  498. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_image_viewer.py +0 -0
  499. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_input_history.py +0 -0
  500. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_iteration_abc.py +0 -0
  501. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_layered_config.py +0 -0
  502. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_math_image_render.py +0 -0
  503. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_mcp_schema.py +0 -0
  504. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_mermaid_image.py +0 -0
  505. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_mermaid_render.py +0 -0
  506. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_middleware_async.py +0 -0
  507. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_model_dialogs.py +0 -0
  508. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_model_providers.py +0 -0
  509. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_model_request_compression_middleware.py +0 -0
  510. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_model_retry.py +0 -0
  511. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_models_persist.py +0 -0
  512. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_multimodal.py +0 -0
  513. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_native_math_render.py +0 -0
  514. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_openai_compat_reasoning.py +0 -0
  515. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_openai_oauth.py +0 -0
  516. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_openai_oauth_middleware.py +0 -0
  517. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_openai_usage.py +0 -0
  518. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_openai_websocket.py +0 -0
  519. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_pathing.py +0 -0
  520. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_project_catalog.py +0 -0
  521. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_project_drawer.py +0 -0
  522. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_project_runtime.py +0 -0
  523. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_project_switch.py +0 -0
  524. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_prompts.py +0 -0
  525. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_runtime_hardening.py +0 -0
  526. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_runtime_manager.py +0 -0
  527. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_runtime_streaming.py +0 -0
  528. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_safety.py +0 -0
  529. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_search_index.py +0 -0
  530. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_session_prewarm.py +0 -0
  531. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_session_runtime.py +0 -0
  532. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_session_store.py +0 -0
  533. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_session_summary.py +0 -0
  534. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_slash_and_mcp.py +0 -0
  535. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_slash_complete.py +0 -0
  536. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_startup_defer.py +0 -0
  537. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_startup_trace.py +0 -0
  538. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_steer.py +0 -0
  539. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_steer_controller.py +0 -0
  540. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_stream_cancel.py +0 -0
  541. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_stream_tool_items.py +0 -0
  542. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_stream_ui.py +0 -0
  543. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_subagent_config_dialog.py +0 -0
  544. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_subagent_config_persist.py +0 -0
  545. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_subagent_status.py +0 -0
  546. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_subagents.py +0 -0
  547. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_theme.py +0 -0
  548. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_theme_controller.py +0 -0
  549. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_timeline.py +0 -0
  550. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_token_rate.py +0 -0
  551. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_tool_blocks.py +0 -0
  552. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_tool_ignore.py +0 -0
  553. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_tool_intent.py +0 -0
  554. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_tool_output.py +0 -0
  555. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_tool_output_eval.py +0 -0
  556. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_tool_output_slash.py +0 -0
  557. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_tool_output_usage_middleware.py +0 -0
  558. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_topbar_context_ratio.py +0 -0
  559. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_topbar_registry.py +0 -0
  560. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_transcript.py +0 -0
  561. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_transcript_history.py +0 -0
  562. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_transcript_history_controller.py +0 -0
  563. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_transcript_migration.py +0 -0
  564. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_transcript_projection.py +0 -0
  565. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_tui_active_session_switcher.py +0 -0
  566. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_tui_codex_import.py +0 -0
  567. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_tui_paste.py +0 -0
  568. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_turn_rail_minimap.py +0 -0
  569. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_turn_request.py +0 -0
  570. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_usage_restore.py +0 -0
  571. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_user_turn_style.py +0 -0
  572. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/test_welcome.py +0 -0
  573. {synapse_cli_agent-0.1.37 → synapse_cli_agent-0.1.39}/tests/tool_output_plugin_fixture.py +0 -0
@@ -102,6 +102,7 @@ jobs:
102
102
  --collect-all termaid `
103
103
  --collect-all texicode `
104
104
  --collect-all synapse_tool_compress_core `
105
+ --collect-data synapse `
105
106
  src/synapse/entry.py
106
107
 
107
108
  - name: Rename executable for artifact
@@ -4,7 +4,8 @@
4
4
 
5
5
  | Path | Responsibility |
6
6
  | --- | --- |
7
- | `src/synapse/app/` | Agent assembly and `AGENTS.md` injection |
7
+ | `src/synapse/app/` | Agent assembly (composition root in `agent.py`, contracts in `agent_assembly.py`) and `AGENTS.md` injection |
8
+ | `src/synapse/acp/` | Official Agent Client Protocol (ACP) adapter: run Synapse as an ACP agent over stdio; session registry, permission coordinator, event bridge |
8
9
  | `src/synapse/commands/` | Slash command parsing, completion, and results |
9
10
  | `src/synapse/content/` | Prompts, skills, input history, multimodal content |
10
11
  | `src/synapse/goals/` | Goal accounting, steering, and persistence |
@@ -29,7 +30,7 @@
29
30
 
30
31
  ## Architecture & compatibility
31
32
 
32
- - `src/synapse/app/agent.py` is the assembly layer; keep domain algorithms in their own packages.
33
+ - `src/synapse/app/agent.py` is the assembly composition root; the reusable assembly contracts (middleware build, typed resource wiring) live in `src/synapse/app/agent_assembly.py`. Keep domain algorithms in their own packages.
33
34
  - New features belong in the matching domain package; cross-domain wiring goes in `app/` or an explicit runtime middleware.
34
35
  - `src/synapse/config.py` is a compatibility re-export layer. Import from `synapse.settings` in new code; keep legacy import paths working.
35
36
  - `__init__.py` exports are public API. Keep necessary re-exports when moving implementations.
@@ -83,11 +84,21 @@ uv build # after packaging/entry-point changes
83
84
 
84
85
  ## Rust/PyO3 native crates
85
86
 
86
- One optional crate; the Python app must work without its wheel and must keep `ImportError`/`OSError` fallbacks.
87
+ The Python app must work without the optional wheels and must keep `ImportError`/`OSError` fallbacks.
87
88
 
88
- - `rust/synapse-core-tool` (`synapse-core-tool` on PyPI): native filesystem tools (read/edit/patch/search) and math rendering. Release with tag `synapse-core-tool-v*`; `native-core-tool-wheels.yml` builds wheels and publishes to GitHub Release + PyPI. Keep the `pyproject.toml` version in sync with `Cargo.toml` — maturin names wheels from `pyproject.toml`.
89
+ - `rust/synapse-core-tool` (`synapse-core-tool` on PyPI): native filesystem tools (read/edit/patch/search), math rendering, and the native OpenAI-compatible chat client (`RustOpenAIClient`, backed by `async-openai` byot). Release with tag `synapse-core-tool-v*`; `native-core-tool-wheels.yml` builds wheels and publishes to GitHub Release + PyPI. Keep the `pyproject.toml` version in sync with `Cargo.toml` — maturin names wheels from `pyproject.toml`.
89
90
  - `rust/synapse-tool-compress-core` (`synapse-tool-compress-core` on PyPI): native tool-output compression core. **Required dependency** of `synapse-cli-agent`. Release with tag `synapse-tool-compress-core-v*`; `native-compression-wheels.yml` builds wheels and publishes to GitHub Release + PyPI. Keep the `pyproject.toml` version in sync with `Cargo.toml`. Because the main package hard-depends on it, publish the compress-core wheels to PyPI before tagging the main `v*` release.
90
91
 
92
+ ### Building and installing a native crate locally
93
+
94
+ `uv` builds the path dependencies declared in `[tool.uv.sources]` (`rust/synapse-core-tool` and `rust/synapse-tool-compress-core`). After changing Rust code, rebuild + reinstall the affected crate with:
95
+
96
+ ```powershell
97
+ uv sync --reinstall-package synapse-core-tool
98
+ ```
99
+
100
+ This runs maturin under the hood and installs the freshly built wheel into the venv. Do **not** rely on `maturin develop` — a plain `uv sync` afterwards re-copies the cached (stale) wheel over the develop install. To avoid that surprise, either always rebuild via `uv sync --reinstall-package ...`, or run every command with `uv run --no-sync` after a manual `maturin develop`.
101
+
91
102
  When changing either crate, at least run:
92
103
 
93
104
  ```powershell
@@ -95,7 +106,7 @@ cargo test --manifest-path rust/<crate>/Cargo.toml
95
106
  cargo fmt --manifest-path rust/<crate>/Cargo.toml --check
96
107
  ```
97
108
 
98
- If Python bindings/APIs change, build or install the local extension and run the related Python tests.
109
+ If Python bindings/APIs change, rebuild via `uv sync --reinstall-package <crate>` and run the related Python tests.
99
110
 
100
111
  Keep the Apache-2.0 SPDX headers, attribution, `LICENSE`, and `NOTICE` under `rust/synapse-tool-compress-core/src/headroom_port/`; do not introduce excluded network calls or model downloads.
101
112
 
@@ -8,6 +8,50 @@ All entries are written in English.
8
8
 
9
9
  ---
10
10
 
11
+ ## v0.1.39
12
+
13
+ ### New Features
14
+
15
+ - Stamped session-affinity headers on model requests in both the Python runtime and the native Rust OpenAI client, for consistent session binding at upstream gateways.
16
+ - Added a `session-cache-analysis` skill for computing per-session prompt cache hit rates and diagnosing cache eviction.
17
+
18
+ ### Bug Fixes
19
+
20
+ - Hashed tools by their OpenAI wire form instead of the raw `StructuredTool` dump, keeping `tools_hash`/`schema_hash` stable across agent rebuilds (previously embedded the function object's memory address).
21
+ - Inserted pasted text at the cursor position in the TUI prompt instead of appending.
22
+ - Persisted the model binding before agent rebuild and on exit.
23
+ - Loaded the debug inspector HTML via `importlib.resources` for frozen (PyInstaller) builds.
24
+
25
+ ### Engineering
26
+
27
+ - Removed the tool-response truncation middleware and its settings.
28
+ - Deprecated the reversible compression middleware and reader.
29
+ - Kept the AGENTS.md repository-layout table in sync with the current tree.
30
+
31
+ ---
32
+
33
+ ## v0.1.38
34
+
35
+ ### New Features
36
+
37
+ - Added a native Rust OpenAI chat transport (`RustOpenAIClient`) backed by `synapse-core-tool`, used as an OpenAI-compatible model backend.
38
+ - Added an interactive HITL approval block: turn events emit `APPROVAL_REQUIRED`, the transcript mounts an `ApprovalBlock`, and decisions route through `resume_hitl` without treating `WAITING_APPROVAL` as a blocking busy state.
39
+ - Added a `session-crash-repair` skill for recovering crashed sessions.
40
+
41
+ ### Bug Fixes
42
+
43
+ - Fixed `usage_metadata` mapping in the OpenAI model: `prompt_tokens_details`/`completion_tokens_details` now map to `input_token_details`/`output_token_details` (cache_read and reasoning were always 0), `prompt_cache_hit_tokens` is preferred for cache reads on DeepSeek-compatible gateways, and the async run manager is passed through `_astream` so `on_llm_new_token` fires and TTFT/token rates update live.
44
+ - Fixed the TUI thought block collapsing when clicking the expanded reasoning body; the toggle is now restricted to the header row(s) and clicks that finish a text selection are ignored.
45
+
46
+ ### Engineering
47
+
48
+ - Reused the OpenAI HTTP client across requests in the native Rust transport (`synapse-core-tool` v0.1.4).
49
+ - Deferred markdown parsing of long restored transcript bodies to a worker (bounded plain-text preview first) and mounted restored blocks in chunks of 12 to avoid one giant layout pass.
50
+ - Cached syntax highlighting across renders (`lru_cache`, cap 16k chars) so repeated redraws of code fences skip re-tokenizing.
51
+ - Cached `SelectableStatic` renders so selection drags skip markdown re-rendering.
52
+
53
+ ---
54
+
11
55
  ## v0.1.37
12
56
 
13
57
  ### Engineering
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: synapse-cli-agent
3
- Version: 0.1.37
3
+ Version: 0.1.39
4
4
  Summary: Local coding agent built on LangChain Deep Agents (LocalShell, no sandbox)
5
5
  Project-URL: Homepage, https://github.com/alex8224/synapse-agent
6
6
  Project-URL: Repository, https://github.com/alex8224/synapse-agent
@@ -415,7 +415,6 @@ uv run synapse run "修复 calculator.sub 的 bug,使 tests 全部通过" -w t
415
415
  | `AGENT_MCP_CONFIG` | - | MCP servers JSON |
416
416
  | `CHECKPOINT_BACKEND` | `sqlite` | `sqlite` 或 `memory` |
417
417
  | `AGENT_SESSION_PREWARM_ENABLED` | `false` | 恢复大上下文会话后在后台预热 provider 缓存(首次请求仍按输入 token 计费;详见 `docs/config.md`) |
418
- | `AGENT_ENABLE_TOOL_RESPONSE_TRUNCATE` | `false` | 启用工具响应折叠(keep 窗口外的大工具输出压成摘要+引用,大上下文会话可省 20-30%;详见 `docs/config.md`) |
419
418
  | `INHERIT_ENV` | `true` | shell 继承主机环境 |
420
419
  | `VIRTUAL_MODE` | `true` | 文件路径虚拟根 |
421
420
  | `AGENT_SHOW_REASONING_PLACEHOLDERS` | `true` | 是否显示网关未暴露推理文本时的占位思考节点;Codex 加密推理可设为 `false` 隐藏 |
@@ -0,0 +1,46 @@
1
+ # 审批(Approval)行为说明
2
+
3
+ 结论:打开审批后,agent 在执行**写操作类工具前会暂停等待用户决定**,而不是直接拒绝或跳过。
4
+
5
+ 依据代码:`src/synapse/runtime/safety.py`、`src/synapse/runtime/hitl.py`、`src/synapse/app/agent.py`、`src/synapse/ui/turn/controller.py`、`src/synapse/commands/slash_cmds.py`。
6
+
7
+ ## 如何正确打开审批
8
+
9
+ | 方式 | 说明 |
10
+ | --- | --- |
11
+ | 环境变量 `AGENT_SAFETY_PROFILE=dev-approve` | 推荐方式(可在 `.env` 或系统环境变量中设置) |
12
+ | TUI 内 `/safety dev-approve` | 切换后重建 agent |
13
+ | 档位别名 | `approve` / `hitl` / `dev_approve` 均映射到 `dev-approve` |
14
+
15
+ > 注意:仅设 `AGENT_REQUIRE_APPROVAL=true` 或 CLI `--require-approval` **不会生效**。
16
+ > agent 构建时 `apply_safety_to_settings` 会按 `safety_profile`(默认 `dev-autopass`)把 `require_approval` 强制改回 `false`。
17
+ > 必须切换到 `dev-approve` 档。
18
+
19
+ ## 打开后的行为
20
+
21
+ | 阶段 | 表现 |
22
+ | --- | --- |
23
+ | 需要审批的工具 | 仅 `execute`、`write_file`、`edit_file`、`patch` 四类(`build_interrupt_on` 返回);`read_file`、`search_files` 等只读工具照常执行,不拦截 |
24
+ | 触发时机 | agent 一旦尝试调用上述工具,LangGraph 在**执行前**中断(interrupt),回合状态变为 `WAITING_APPROVAL` |
25
+ | TUI 界面 | 顶部活动区显示 `waiting / approval`;转录区打印待批清单:工具名、参数预览、描述,末尾提示 `decide: /approve | /reject [reason]` |
26
+ | 用户操作 | `/approve` 放行;`/reject [reason]` 拒绝(可附理由) |
27
+
28
+ ## 审批决策的两种结果
29
+
30
+ | 决策 | 行为 |
31
+ | --- | --- |
32
+ | `/approve` | 恢复图执行,工具真正运行,agent 继续后续步骤 |
33
+ | `/reject [reason]` | 工具不执行,拒绝信息(默认 `Rejected by user via /reject` 或自定义 reason)作为反馈回传给模型,agent 会据此调整方案或换工具重试 |
34
+
35
+ ## 其他要点
36
+
37
+ | 项 | 说明 |
38
+ | --- | --- |
39
+ | 多个工具同时待批 | `build_decisions` 会按待批数量生成等量决策;一次 `/approve` 放行全部 |
40
+ | 无待批时 | `/approve` 或 `/reject` 会提示 `no pending approval`,不做事 |
41
+ | 黑名单 | `dev-approve` 档 `enable_command_blacklist=True`,但 `check_command` 目前仅定义、未接入运行时;`rm -rf` 等危险命令不会自动拦截,仍走人工审批 |
42
+ | ACP 客户端 | 通过 `_request_permission_decisions` 请求权限,超过 `_max_permission_turns` 时报 `maximum permission resume turns exceeded` |
43
+
44
+ ## 一句话总结
45
+
46
+ 开启审批(`dev-approve`)后,agent 每次写文件或执行命令前都会停下等待用户 `/approve` 或 `/reject`,只读操作不受影响。
@@ -467,7 +467,7 @@ load_settings(**overrides):
467
467
  | 工作区 | workspace, shell_timeout(120s), max_output_bytes(100KB) | Path.cwd() |
468
468
  | 安全 | require_approval(False), safety_profile("dev-autopass") | -- |
469
469
  | 检查点 | checkpoint_backend("sqlite") | project/.synapse/ |
470
- | 工具输出 | enable_tool_output_transform(True), threshold_bytes(512) | -- |
470
+ | 工具输出 | enable_tool_output_transform(False), threshold_bytes(512) | -- |
471
471
  | 子代理 | enable_subagents(True) | -- |
472
472
  | MCP | enable_mcp(True), mcp_eager(False) | -- |
473
473
  | UI | theme("cursor-dark"), history_tail_turns(20) | -- |
@@ -77,13 +77,6 @@ Synapse 使用 **Pydantic Settings** 实现分层配置系统。
77
77
  | `SESSION_SUMMARY_MAX_CHARS` | `600` | 本地会话摘要的最大字符数(含多轮条目,超出时从最旧条目开始裁剪) |
78
78
  | `AGENT_HISTORY_TAIL_TURNS` | `20` | TUI 从轻量 transcript 投影初始读取/渲染的最近可见会话轮数;滚动到顶部后按 turn 游标加载更早历史,最多挂载 5 页 |
79
79
  | `AGENT_SESSION_PREWARM_ENABLED` | `false` | 恢复大上下文会话后,在后台对该会话历史发起一次最小模型请求,让 provider 预填充并缓存历史前缀,用户第一条消息可命中缓存、大幅缩短首 token 等待。注意:预热本身会按输入 token 计费一次,仅在需要时开启 |
80
- | `AGENT_ENABLE_TOOL_RESPONSE_TRUNCATE` | `false` | 启用工具响应裁剪:keep 窗口(默认最近 40K tokens)外的 `execute`/`read_file`/`search_files` 输出折叠为摘要,减小每轮请求体积(大上下文会话可省 20-30%)。请求层变换,不修改历史 |
81
- | `AGENT_TOOL_RESPONSE_TRUNCATE_KEEP_TOKENS` | `40000` | 工具响应裁剪的 keep 窗口(token),窗口内消息不裁剪 |
82
- | `AGENT_TOOL_RESPONSE_TRUNCATE_MAX_HEAD_CHARS` | `2000` | 关闭 fold 模式时,超长输出保留的头部字符数 |
83
- | `AGENT_TOOL_RESPONSE_TRUNCATE_MAX_TAIL_CHARS` | `0` | 关闭 fold 模式时,超长输出额外保留的尾部字符数(>0 表示 head+tail) |
84
- | `AGENT_TOOL_RESPONSE_TRUNCATE_FOLD_ENABLED` | `true` | fold 模式:窗口外输出一律折叠(有 `tool-output://` 引用的可经 `read_tool_result` 找回原文,无引用的保留头部锚点) |
85
- | `AGENT_TOOL_RESPONSE_TRUNCATE_FOLD_HEAD_CHARS` | `300` | fold 模式下无引用输出保留的头部锚点字符数 |
86
- | `AGENT_TOOL_RESPONSE_TRUNCATE_TOOLS` | `["execute","read_file","search_files"]` | 参与折叠/裁剪的工具名单(JSON 数组) |
87
80
 
88
81
  ### 长程目标(Goals)
89
82
 
@@ -250,7 +250,9 @@ py-agent/
250
250
  │ └── design.md # 本方案
251
251
  ├── AGENTS.md # 项目级记忆/约定(给 agent 读)
252
252
  ├── skills/ # 可选 skills(渐进披露)
253
- │ └── python-testing/
253
+ │ ├── session-crash-repair/
254
+ │ │ └── SKILL.md
255
+ │ └── session-cache-analysis/
254
256
  │ └── SKILL.md
255
257
  ├── src/
256
258
  │ └── coding_agent/
@@ -6,9 +6,9 @@ Skills 是 Synapse 的可扩展插件系统,位于项目 `skills/` 目录下
6
6
 
7
7
  ```
8
8
  skills/
9
- ├── python-testing/
9
+ ├── session-cache-analysis/
10
10
  │ └── SKILL.md
11
- └── python-memory-diagnostics/
11
+ └── session-crash-repair/
12
12
  └── SKILL.md
13
13
  ```
14
14
 
@@ -18,16 +18,16 @@ skills/
18
18
 
19
19
  ```markdown
20
20
  ---
21
- name: python-testing
22
- description: How to run and write Python tests in this project with uv and pytest.
23
- license: MIT
24
- compatibility: Requires uv and pytest in a Python 3.12+ project.
25
- allowed_tools: execute, run_tests, read_file, write_file, edit_file
21
+ name: session-cache-analysis
22
+ description: Analyze the prompt cache hit rate of a Synapse session (thread).
23
+ license: Apache-2.0
24
+ compatibility: Requires a synapse source checkout with uv and Python 3.12+.
25
+ allowed_tools: execute, read_file, write_file, search_files, find_files, search_session, read_session
26
26
  ---
27
27
 
28
- # Python Testing Skill
28
+ # Session Cache Hit-Rate Analysis
29
29
 
30
- ## Running Tests
30
+ ## 数据来源
31
31
  ...
32
32
  ```
33
33
 
@@ -47,8 +47,8 @@ Synapse 自带两个 Skills:
47
47
 
48
48
  | Skill | 说明 |
49
49
  |---|---|
50
- | `python-testing` | 使用 uv + pytest 运行和编写测试 |
51
- | `python-memory-diagnostics` | 诊断 Python 进程内存问题 |
50
+ | `session-crash-repair` | 检测并修复异常退出后 checkpoint 不一致的会话(悬挂工具调用、挂起图任务、过期转录投影) |
51
+ | `session-cache-analysis` | 分析会话的 prompt 缓存命中率,区分增量 miss 与全量逐出并定位根因 |
52
52
 
53
53
  ## 如何编写自定义 Skill
54
54
 
@@ -18,7 +18,7 @@ All transforms are deterministic. Synapse uses a low-cost `512` byte prefilter,
18
18
 
19
19
  ```json
20
20
  {
21
- "enable_tool_output_transform": true,
21
+ "enable_tool_output_transform": false,
22
22
  "tool_output_transform_threshold_bytes": 512,
23
23
  "tool_output_disabled_types": ["code"],
24
24
  "tool_output_transform_plugins": ["my_package.transforms:my_transformer"],
@@ -26,10 +26,12 @@ All transforms are deterministic. Synapse uses a low-cost `512` byte prefilter,
26
26
  }
27
27
  ```
28
28
 
29
+ Tool-output transformation is **off by default** (`enable_tool_output_transform: false`); set it to `true` to enable.
30
+
29
31
  Environment equivalents:
30
32
 
31
33
  ```text
32
- AGENT_ENABLE_TOOL_OUTPUT_TRANSFORM=true
34
+ AGENT_ENABLE_TOOL_OUTPUT_TRANSFORM=false
33
35
  AGENT_TOOL_OUTPUT_TRANSFORM_THRESHOLD_BYTES=512
34
36
  AGENT_TOOL_OUTPUT_DISABLED_TYPES=["code"]
35
37
  AGENT_TOOL_OUTPUT_TRANSFORM_PLUGINS=["my_package.transforms:my_transformer"]
@@ -328,9 +328,9 @@ synapse-agent/ # 项目根目录
328
328
  │ └── fixtures/ # 测试 fixtures
329
329
  │
330
330
  ├── skills/ # Agent Skills
331
- │ ├── python-testing/ # Python 测试技能
331
+ │ ├── session-crash-repair/ # 会话崩溃修复技能
332
332
  │ │ └── SKILL.md # 技能定义文件
333
- │ └── python-memory-diagnostics/ # 内存诊断技能
333
+ │ └── session-cache-analysis/ # 会话缓存命中率分析技能
334
334
  │ └── SKILL.md
335
335
  │
336
336
  ├── docs/ # 文档
@@ -1073,20 +1073,20 @@ Skills 是给 Agent 的可加载"专业说明手册"。
1073
1073
  ### 10.1 Skill 文件格式
1074
1074
 
1075
1075
  ```markdown
1076
- <!-- skills/python-testing/SKILL.md -->
1076
+ <!-- skills/session-cache-analysis/SKILL.md -->
1077
1077
 
1078
1078
  ---
1079
- name: python-testing
1080
- description: How to run and write Python tests in this project with uv and pytest.
1081
- license: MIT
1082
- allowed-tools: execute run_tests read_file write_file edit_file
1079
+ name: session-cache-analysis
1080
+ description: Analyze the prompt cache hit rate of a Synapse session (thread).
1081
+ license: Apache-2.0
1082
+ allowed-tools: execute read_file write_file search_files find_files
1083
1083
  ---
1084
1084
 
1085
- # Python testing skill
1085
+ # Session cache hit-rate analysis
1086
1086
 
1087
- ## Run tests
1087
+ ## Data source
1088
1088
  Prefer:
1089
- `uv run pytest`
1089
+ `load_messages_from_sqlite_file(checkpoints.sqlite, thread_id)`
1090
1090
 
1091
1091
  ...
1092
1092
  ```
@@ -1114,8 +1114,8 @@ Agent 启动时会扫描 `skills/` 目录,将所有 Skill 的描述注入系
1114
1114
 
1115
1115
  ### 10.3 现有 Skills
1116
1116
 
1117
- - **python-testing**: 告诉 Agent 如何正确地运行和编写 Python 测试
1118
- - **python-memory-diagnostics**: 告诉 Agent 如何诊断 Python 进程的内存问题
1117
+ - **session-crash-repair**: 告诉 Agent 如何检测并修复异常退出后 checkpoint 不一致的会话
1118
+ - **session-cache-analysis**: 告诉 Agent 如何分析会话的 prompt 缓存命中率并定位逐出根因
1119
1119
 
1120
1120
  ### 10.4 如何创建新 Skill
1121
1121
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "synapse-cli-agent"
3
- version = "0.1.37"
3
+ version = "0.1.39"
4
4
  description = "Local coding agent built on LangChain Deep Agents (LocalShell, no sandbox)"
5
5
  readme = "README.md"
6
6
  license = { file = "LICENSE" }
@@ -0,0 +1,21 @@
1
+ ## v0.1.39
2
+
3
+ ### New Features
4
+
5
+ - Stamped session-affinity headers on model requests in both the Python runtime and the native Rust OpenAI client, for consistent session binding at upstream gateways.
6
+ - Added a `session-cache-analysis` skill for computing per-session prompt cache hit rates and diagnosing cache eviction.
7
+
8
+ ### Bug Fixes
9
+
10
+ - Hashed tools by their OpenAI wire form instead of the raw `StructuredTool` dump, keeping `tools_hash`/`schema_hash` stable across agent rebuilds (previously embedded the function object's memory address).
11
+ - Inserted pasted text at the cursor position in the TUI prompt instead of appending.
12
+ - Persisted the model binding before agent rebuild and on exit.
13
+ - Loaded the debug inspector HTML via `importlib.resources` for frozen (PyInstaller) builds.
14
+
15
+ ### Engineering
16
+
17
+ - Removed the tool-response truncation middleware and its settings.
18
+ - Deprecated the reversible compression middleware and reader.
19
+ - Kept the AGENTS.md repository-layout table in sync with the current tree.
20
+
21
+ ---