synapse-cli-agent 0.1.39__tar.gz → 0.1.41__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 (575) hide show
  1. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/CHANGELOG.md +34 -0
  2. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/PKG-INFO +1 -1
  3. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/skills.md +5 -2
  4. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/pyproject.toml +1 -1
  5. synapse_cli_agent-0.1.41/release_body.md +7 -0
  6. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/Cargo.lock +147 -69
  7. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/Cargo.toml +4 -3
  8. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/pyproject.toml +1 -1
  9. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/src/file_tools.rs +61 -1
  10. synapse_cli_agent-0.1.41/rust/synapse-core-tool/src/llm.rs +640 -0
  11. synapse_cli_agent-0.1.41/scripts/build_check_rust_openai.py +76 -0
  12. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/app/agent.py +17 -2
  13. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/mcp_client.py +39 -5
  14. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/models/registry.py +155 -99
  15. synapse_cli_agent-0.1.41/src/synapse/models/rust_openai.py +1213 -0
  16. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/backends.py +10 -6
  17. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/projects/runtime.py +41 -17
  18. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/sessions/persistence.py +39 -5
  19. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/sessions/runtime.py +27 -9
  20. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/streaming/parser.py +6 -3
  21. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/token_rate.py +74 -16
  22. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/sessions/transcript.py +43 -0
  23. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/sessions/transcript_migration.py +57 -6
  24. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/sessions/transcript_projection.py +277 -55
  25. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/transcript/history.py +21 -1
  26. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/fixtures/agent_stream/core_scenarios.json +1 -1
  27. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_agent_factory.py +27 -6
  28. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_backends.py +19 -0
  29. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_capabilities.py +95 -0
  30. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_context_window.py +64 -2
  31. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_project_runtime.py +31 -0
  32. synapse_cli_agent-0.1.41/tests/test_rust_openai_model.py +945 -0
  33. synapse_cli_agent-0.1.41/tests/test_session_persistence.py +143 -0
  34. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_session_runtime.py +45 -0
  35. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_slash_and_mcp.py +67 -1
  36. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_startup_trace.py +2 -1
  37. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_stream_tool_items.py +77 -0
  38. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_token_rate.py +54 -0
  39. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_transcript.py +69 -0
  40. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_transcript_migration.py +102 -1
  41. synapse_cli_agent-0.1.41/tests/test_transcript_projection.py +323 -0
  42. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/uv.lock +2 -2
  43. synapse_cli_agent-0.1.39/release_body.md +0 -21
  44. synapse_cli_agent-0.1.39/rust/synapse-core-tool/src/llm.rs +0 -153
  45. synapse_cli_agent-0.1.39/src/synapse/models/rust_openai.py +0 -468
  46. synapse_cli_agent-0.1.39/tests/test_rust_openai_model.py +0 -306
  47. synapse_cli_agent-0.1.39/tests/test_transcript_projection.py +0 -151
  48. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/.dockerignore +0 -0
  49. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/.github/workflows/ci.yml +0 -0
  50. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/.github/workflows/docs.yml +0 -0
  51. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/.github/workflows/native-compression-wheels.yml +0 -0
  52. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/.github/workflows/native-core-tool-wheels.yml +0 -0
  53. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/.github/workflows/release.yml +0 -0
  54. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/.gitignore +0 -0
  55. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/.python-version +0 -0
  56. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/.readthedocs.yaml +0 -0
  57. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/.zed/settings.json +0 -0
  58. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/AGENTS.md +0 -0
  59. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/Dockerfile.web +0 -0
  60. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/LICENSE +0 -0
  61. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/README.md +0 -0
  62. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/README.zh-CN.md +0 -0
  63. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/agent_upstream.txt +0 -0
  64. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/approval-behavior.md +0 -0
  65. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/assets/demo.gif +0 -0
  66. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/assets/synapse-logo.svg +0 -0
  67. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/assets/tui-preview.png +0 -0
  68. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/cli_upstream.txt +0 -0
  69. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/debug_compact.py +0 -0
  70. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/decode_screenshot.py +0 -0
  71. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/acp-adapter/capability-matrix.md +0 -0
  72. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/acp-adapter/decisions.md +0 -0
  73. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/acp-adapter/index.md +0 -0
  74. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/acp-adapter/phase-0-protocol-baseline.md +0 -0
  75. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/acp-adapter/phase-1-core-transport.md +0 -0
  76. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/acp-adapter/phase-2-prompt-semantics.md +0 -0
  77. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/acp-adapter/phase-3-permissions.md +0 -0
  78. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/acp-adapter/phase-4-session-lifecycle.md +0 -0
  79. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/acp-adapter/phase-5-session-mcp.md +0 -0
  80. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/acp-adapter/phase-6-client-services.md +0 -0
  81. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/acp-adapter/phase-7-advanced-capabilities.md +0 -0
  82. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/acp-adapter/phase-8-compliance.md +0 -0
  83. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/acp-adapter/progress.md +0 -0
  84. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-development-guide.md +0 -0
  85. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/baseline-report.md +0 -0
  86. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/decisions.md +0 -0
  87. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/index.md +0 -0
  88. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/migration.md +0 -0
  89. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/phase-0-baseline.md +0 -0
  90. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/phase-1-streaming-core.md +0 -0
  91. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/phase-2-turn-runtime.md +0 -0
  92. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/phase-3-tui-cutover.md +0 -0
  93. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/phase-4-session-runtime.md +0 -0
  94. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/phase-5-multi-session.md +0 -0
  95. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/phase-6-project-runtime.md +0 -0
  96. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/phase-7-global-control-plane.md +0 -0
  97. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/phase-8-hardening.md +0 -0
  98. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/post-review-fix-plan.md +0 -0
  99. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/agent-runtime-decoupling/progress.md +0 -0
  100. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/architecture-flow.md +0 -0
  101. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/architecture.md +0 -0
  102. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/cli.md +0 -0
  103. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/codex-session-discovery-phase-1.md +0 -0
  104. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/codex-session-import-phase-2.md +0 -0
  105. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/config.md +0 -0
  106. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/design.md +0 -0
  107. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/docker-web.md +0 -0
  108. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/index.md +0 -0
  109. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/install.md +0 -0
  110. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/math-formulas-test.md +0 -0
  111. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/mcp.md +0 -0
  112. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/models.md +0 -0
  113. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/native-compression-core.md +0 -0
  114. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/native-core-tool.md +0 -0
  115. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/permissions.md +0 -0
  116. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/quickstart.md +0 -0
  117. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/sessions.md +0 -0
  118. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/smith_output.md +0 -0
  119. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/subagents.md +0 -0
  120. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/tool-output-transform.md +0 -0
  121. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/tui-cursor-refactor.md +0 -0
  122. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/tutorial.md +0 -0
  123. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/docs/x-agent-development-guide.md +0 -0
  124. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/examples/mcp.example.json +0 -0
  125. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/examples/models.example.json +0 -0
  126. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/examples/settings.example.json +0 -0
  127. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/middleware_upstream.txt +0 -0
  128. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/mkdocs.yml +0 -0
  129. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/LICENSE +0 -0
  130. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/NOTICE +0 -0
  131. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/README.md +0 -0
  132. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/python/synapse_core_tool/__init__.py +0 -0
  133. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/src/file_access.rs +0 -0
  134. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/src/lib.rs +0 -0
  135. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/src/math_render.rs +0 -0
  136. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/src/search.rs +0 -0
  137. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-core-tool/uv.lock +0 -0
  138. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/Cargo.lock +0 -0
  139. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/Cargo.toml +0 -0
  140. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/LICENSE +0 -0
  141. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/NOTICE +0 -0
  142. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/README.md +0 -0
  143. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/pyproject.toml +0 -0
  144. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/python/synapse_tool_compress_core/__init__.py +0 -0
  145. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/ccr.rs +0 -0
  146. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/ccr_in_memory.rs +0 -0
  147. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/mod.rs +0 -0
  148. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/relevance/base.rs +0 -0
  149. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/relevance/bm25.rs +0 -0
  150. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/signals/keyword_detector.rs +0 -0
  151. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/signals/line_importance.rs +0 -0
  152. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/adaptive_sizer.rs +0 -0
  153. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/anchor_selector.rs +0 -0
  154. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/code_compressor.rs +0 -0
  155. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/diff_compressor.rs +0 -0
  156. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/log_compressor.rs +0 -0
  157. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/search_compressor.rs +0 -0
  158. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/analyzer.rs +0 -0
  159. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/anchors.rs +0 -0
  160. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/builder.rs +0 -0
  161. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/classifier.rs +0 -0
  162. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/classifier.rs +0 -0
  163. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/compactor.rs +0 -0
  164. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/formatter.rs +0 -0
  165. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/ir.rs +0 -0
  166. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/mod.rs +0 -0
  167. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/compaction/walker.rs +0 -0
  168. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/config.rs +0 -0
  169. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/constraints.rs +0 -0
  170. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/crusher.rs +0 -0
  171. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/crushers.rs +0 -0
  172. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/error_keywords.rs +0 -0
  173. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/field_detect.rs +0 -0
  174. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/hashing.rs +0 -0
  175. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/mod.rs +0 -0
  176. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/observer.rs +0 -0
  177. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/orchestration.rs +0 -0
  178. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/outliers.rs +0 -0
  179. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/planning.rs +0 -0
  180. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/statistics.rs +0 -0
  181. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/stats_math.rs +0 -0
  182. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/traits.rs +0 -0
  183. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/headroom_port/transforms/smart_crusher/types.rs +0 -0
  184. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/rust/synapse-tool-compress-core/src/lib.rs +0 -0
  185. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/scripts/install.ps1 +0 -0
  186. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/scripts/release.ps1 +0 -0
  187. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/scripts/serve_web.py +0 -0
  188. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/slash_cmds_upstream.txt +0 -0
  189. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/__init__.py +0 -0
  190. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/__main__.py +0 -0
  191. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/acp/__init__.py +0 -0
  192. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/acp/agent.py +0 -0
  193. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/acp/client_services.py +0 -0
  194. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/acp/content.py +0 -0
  195. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/acp/events.py +0 -0
  196. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/acp/lifecycle.py +0 -0
  197. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/acp/mcp.py +0 -0
  198. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/acp/permissions.py +0 -0
  199. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/acp/server.py +0 -0
  200. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/acp/sessions.py +0 -0
  201. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/acp/updates.py +0 -0
  202. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/app/__init__.py +0 -0
  203. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/app/agent_assembly.py +0 -0
  204. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/app/agent_md.py +0 -0
  205. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/cli.py +0 -0
  206. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/commands/__init__.py +0 -0
  207. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/commands/compression.py +0 -0
  208. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/commands/goal.py +0 -0
  209. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/commands/helpers.py +0 -0
  210. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/commands/mcp.py +0 -0
  211. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/commands/model.py +0 -0
  212. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/commands/result.py +0 -0
  213. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/commands/sessions.py +0 -0
  214. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/commands/slash_cmds.py +0 -0
  215. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/commands/slash_complete.py +0 -0
  216. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/commands/theme.py +0 -0
  217. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/config.py +0 -0
  218. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/content/__init__.py +0 -0
  219. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/content/input_history.py +0 -0
  220. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/content/multimodal.py +0 -0
  221. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/content/prompts.py +0 -0
  222. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/content/skills_catalog.py +0 -0
  223. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/entry.py +0 -0
  224. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/goals/__init__.py +0 -0
  225. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/goals/middleware.py +0 -0
  226. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/goals/model.py +0 -0
  227. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/goals/runtime.py +0 -0
  228. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/goals/steering.py +0 -0
  229. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/goals/store.py +0 -0
  230. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/goals/tools.py +0 -0
  231. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/__init__.py +0 -0
  232. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/checkpoint_seed.py +0 -0
  233. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/codex_config.py +0 -0
  234. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/codex_history.py +0 -0
  235. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/codex_import.py +0 -0
  236. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/codex_sessions.py +0 -0
  237. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/describe_image.py +0 -0
  238. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/herdr.py +0 -0
  239. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/http_clients.py +0 -0
  240. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/llm_openai_compat.py +0 -0
  241. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/llm_openai_websocket.py +0 -0
  242. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/openai_oauth.py +0 -0
  243. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/openai_oauth_middleware.py +0 -0
  244. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/openai_usage.py +0 -0
  245. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/turbo.py +0 -0
  246. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/integrations/vision_middleware.py +0 -0
  247. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/memory/__init__.py +0 -0
  248. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/memory/auto_recorder.py +0 -0
  249. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/memory/embedder.py +0 -0
  250. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/memory/long_term.py +0 -0
  251. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/models/__init__.py +0 -0
  252. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/models/config.py +0 -0
  253. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/models/helpers.py +0 -0
  254. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/models/persist.py +0 -0
  255. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/models/profile.py +0 -0
  256. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/models/providers.py +0 -0
  257. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/models_registry.py +0 -0
  258. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/observability/__init__.py +0 -0
  259. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/observability/debug_inspector.html +0 -0
  260. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/observability/debug_server.py +0 -0
  261. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/observability/exit_trace.py +0 -0
  262. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/observability/heap_dump.py +0 -0
  263. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/observability/llm_debug.py +0 -0
  264. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/observability/startup_trace.py +0 -0
  265. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/planner/__init__.py +0 -0
  266. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/planner/task_planner.py +0 -0
  267. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/projects/__init__.py +0 -0
  268. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/projects/catalog.py +0 -0
  269. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/rag/__init__.py +0 -0
  270. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/rag/knowledge_base.py +0 -0
  271. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/__init__.py +0 -0
  272. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/agent_loop/__init__.py +0 -0
  273. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/agent_loop/model.py +0 -0
  274. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/agent_loop/request.py +0 -0
  275. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/agent_loop/turn.py +0 -0
  276. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/async_runtime.py +0 -0
  277. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/cancellation.py +0 -0
  278. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/context_compact.py +0 -0
  279. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/debug_capture_middleware.py +0 -0
  280. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/execute_capture.py +0 -0
  281. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/filesystem_tool_prompt_middleware.py +0 -0
  282. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/fs_permissions.py +0 -0
  283. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/harness.py +0 -0
  284. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/hitl.py +0 -0
  285. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/interaction_ledger.py +0 -0
  286. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/middleware.py +0 -0
  287. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/model_request_compression_middleware.py +0 -0
  288. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/pathing.py +0 -0
  289. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/projects/__init__.py +0 -0
  290. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/projects/identity.py +0 -0
  291. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/safety.py +0 -0
  292. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/session_header_middleware.py +0 -0
  293. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/session_headers.py +0 -0
  294. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/session_prewarm.py +0 -0
  295. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/sessions/__init__.py +0 -0
  296. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/sessions/events.py +0 -0
  297. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/sessions/manager.py +0 -0
  298. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/sessions/ref.py +0 -0
  299. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/steer.py +0 -0
  300. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/streaming/__init__.py +0 -0
  301. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/streaming/accumulator.py +0 -0
  302. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/streaming/adapters.py +0 -0
  303. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/streaming/events.py +0 -0
  304. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/streaming/protocol.py +0 -0
  305. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/streaming/runtime.py +0 -0
  306. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/streaming/stream_events.py +0 -0
  307. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/streaming/tool_model.py +0 -0
  308. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/subagent_config_persist.py +0 -0
  309. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/subagent_specs.py +0 -0
  310. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/subagents.py +0 -0
  311. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/timeline.py +0 -0
  312. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/tool_ignore.py +0 -0
  313. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/tool_output_eval.py +0 -0
  314. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/tool_output_middleware.py +0 -0
  315. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/runtime/tool_output_usage_middleware.py +0 -0
  316. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/sessions/__init__.py +0 -0
  317. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/sessions/cancel_repair.py +0 -0
  318. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/sessions/search_index.py +0 -0
  319. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/sessions/store.py +0 -0
  320. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/sessions/summary.py +0 -0
  321. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/settings/__init__.py +0 -0
  322. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/settings/config_paths.py +0 -0
  323. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/settings/schema.py +0 -0
  324. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/subagents.py +0 -0
  325. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/tool_output/__init__.py +0 -0
  326. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/tool_output/detection.py +0 -0
  327. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/tool_output/metrics.py +0 -0
  328. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/tool_output/models.py +0 -0
  329. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/tool_output/pipeline.py +0 -0
  330. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/tool_output/repository.py +0 -0
  331. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/tool_output/transformers.py +0 -0
  332. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/tools/__init__.py +0 -0
  333. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/tools/describe_image.py +0 -0
  334. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/tools/filesystem_patch.py +0 -0
  335. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/tools/filesystem_search.py +0 -0
  336. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/tools/session_tools.py +0 -0
  337. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/__init__.py +0 -0
  338. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/agent_lifecycle.py +0 -0
  339. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/answer_divider.py +0 -0
  340. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/approval.py +0 -0
  341. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/__init__.py +0 -0
  342. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/components/__init__.py +0 -0
  343. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/components/codex_usage.py +0 -0
  344. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/components/fast.py +0 -0
  345. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/components/goal.py +0 -0
  346. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/components/key_hints.py +0 -0
  347. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/components/mcp.py +0 -0
  348. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/components/mode.py +0 -0
  349. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/components/model.py +0 -0
  350. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/components/thread.py +0 -0
  351. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/components/turbo.py +0 -0
  352. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/components/turn_stats.py +0 -0
  353. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/context.py +0 -0
  354. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/bottombar/core.py +0 -0
  355. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/chrome/__init__.py +0 -0
  356. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/chrome/controller.py +0 -0
  357. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/clipboard.py +0 -0
  358. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/__init__.py +0 -0
  359. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/active_session_switcher.py +0 -0
  360. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/base.py +0 -0
  361. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/codex_config_import.py +0 -0
  362. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/codex_reset.py +0 -0
  363. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/codex_session_list.py +0 -0
  364. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/compression_diagnostics.py +0 -0
  365. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/controller.py +0 -0
  366. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/git_explore.py +0 -0
  367. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/mcp_panel.py +0 -0
  368. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/model_form.py +0 -0
  369. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/model_manager.py +0 -0
  370. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/model_picker.py +0 -0
  371. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/provider_catalog.py +0 -0
  372. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/safety_panel.py +0 -0
  373. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/session_list.py +0 -0
  374. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/subagent_config.py +0 -0
  375. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/theme_designer.py +0 -0
  376. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/dialogs/theme_picker.py +0 -0
  377. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/drawer.py +0 -0
  378. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/formatters.py +0 -0
  379. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/git_explore/__init__.py +0 -0
  380. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/git_explore/engine.py +0 -0
  381. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/git_explore/provider.py +0 -0
  382. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/git_explore/unified.py +0 -0
  383. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/image_preview.py +0 -0
  384. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/image_render.py +0 -0
  385. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/image_viewer.py +0 -0
  386. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/math_image.py +0 -0
  387. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/mermaid_image.py +0 -0
  388. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/prompt_controller.py +0 -0
  389. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/rendering.py +0 -0
  390. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/selectable_static.py +0 -0
  391. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/selectable_text.py +0 -0
  392. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/sink.py +0 -0
  393. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/status_controller.py +0 -0
  394. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/steer_controller.py +0 -0
  395. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/steer_widget.py +0 -0
  396. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/stream.py +0 -0
  397. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/stream_events.py +0 -0
  398. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/stream_runtime.py +0 -0
  399. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/textual_lifecycle.py +0 -0
  400. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/textual_stream_sink.py +0 -0
  401. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/theme.py +0 -0
  402. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/theme_controller.py +0 -0
  403. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/timeline.py +0 -0
  404. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/tool_blocks.py +0 -0
  405. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/topbar/__init__.py +0 -0
  406. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/topbar/components/__init__.py +0 -0
  407. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/topbar/components/branch.py +0 -0
  408. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/topbar/components/title.py +0 -0
  409. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/topbar/components/tool_output.py +0 -0
  410. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/topbar/components/usage.py +0 -0
  411. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/topbar/components/workspace.py +0 -0
  412. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/topbar/context.py +0 -0
  413. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/topbar/core.py +0 -0
  414. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/topbar/git_changes_popover.py +0 -0
  415. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/topbar/git_chrome.py +0 -0
  416. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/topbar/tool_output_popover.py +0 -0
  417. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/topbar/widget.py +0 -0
  418. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/transcript/__init__.py +0 -0
  419. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/transcript/controller.py +0 -0
  420. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/transcript/factory.py +0 -0
  421. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/transcript/state.py +0 -0
  422. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/transcript_blocks.py +0 -0
  423. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/tui.py +0 -0
  424. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/tui_launch.py +0 -0
  425. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/tui_styles.py +0 -0
  426. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/turn/__init__.py +0 -0
  427. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/turn/controller.py +0 -0
  428. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/turn/event_bridge.py +0 -0
  429. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/turn/event_renderer.py +0 -0
  430. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/turn/persistence.py +0 -0
  431. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/turn/request.py +0 -0
  432. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/turn_rail.py +0 -0
  433. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/turn_rail_widgets.py +0 -0
  434. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/user_turn.py +0 -0
  435. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/user_turn_block.py +0 -0
  436. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/ui/welcome.py +0 -0
  437. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/src/synapse/web.py +0 -0
  438. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/synapse.cmd +0 -0
  439. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/__init__.py +0 -0
  440. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/fixtures/acp/initialize.jsonl +0 -0
  441. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/fixtures/codex_rollouts/duplicate_response_item.jsonl +0 -0
  442. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/fixtures/codex_rollouts/incomplete_and_aborted.jsonl +0 -0
  443. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/fixtures/codex_rollouts/legacy_compaction.jsonl +0 -0
  444. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/fixtures/codex_rollouts/normal_completed.jsonl +0 -0
  445. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/fixtures/codex_rollouts/replacement_history.jsonl +0 -0
  446. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/fixtures/codex_rollouts/rollback.jsonl +0 -0
  447. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/fixtures/codex_rollouts/unsupported_replacement.jsonl +0 -0
  448. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/fixtures/sample_repo/calculator.py +0 -0
  449. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/fixtures/sample_repo/test_calculator.py +0 -0
  450. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/fixtures/tool_output_eval.json +0 -0
  451. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test.py +0 -0
  452. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_acp_p0_baseline.py +0 -0
  453. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_acp_p1_core.py +0 -0
  454. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_acp_p1_transport.py +0 -0
  455. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_acp_p2_content.py +0 -0
  456. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_acp_p2_events.py +0 -0
  457. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_acp_p2_updates.py +0 -0
  458. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_acp_p3_agent.py +0 -0
  459. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_acp_p3_permissions.py +0 -0
  460. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_acp_p4_history.py +0 -0
  461. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_acp_p4_lifecycle.py +0 -0
  462. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_acp_p5_mcp.py +0 -0
  463. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_acp_p6_client_services.py +0 -0
  464. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_acp_p8_compliance.py +0 -0
  465. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_agent_lifecycle.py +0 -0
  466. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_agent_turn_runtime.py +0 -0
  467. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_approval.py +0 -0
  468. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_async_checkpointer.py +0 -0
  469. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_bottombar_registry.py +0 -0
  470. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_cancel_repair.py +0 -0
  471. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_checkpoint_seed.py +0 -0
  472. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_chrome_controller.py +0 -0
  473. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_cli.py +0 -0
  474. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_cli_codex_import.py +0 -0
  475. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_clipboard.py +0 -0
  476. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_codex_config.py +0 -0
  477. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_codex_history.py +0 -0
  478. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_codex_import.py +0 -0
  479. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_codex_sessions.py +0 -0
  480. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_codex_sessions_windows.py +0 -0
  481. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_compact_tool_descriptions.py +0 -0
  482. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_config.py +0 -0
  483. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_context_compact.py +0 -0
  484. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_debug_capture_middleware.py +0 -0
  485. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_debug_inspector.py +0 -0
  486. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_describe_image.py +0 -0
  487. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_dialogs.py +0 -0
  488. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_entry.py +0 -0
  489. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_filesystem_patch_tool.py +0 -0
  490. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_filesystem_search_tools.py +0 -0
  491. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_git_changes_popover.py +0 -0
  492. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_git_chrome.py +0 -0
  493. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_git_explore.py +0 -0
  494. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_goal_live_tui.py +0 -0
  495. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_goals.py +0 -0
  496. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_heap_dump.py +0 -0
  497. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_herdr_integration.py +0 -0
  498. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_http_clients.py +0 -0
  499. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_image_render.py +0 -0
  500. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_image_viewer.py +0 -0
  501. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_input_history.py +0 -0
  502. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_iteration_abc.py +0 -0
  503. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_layered_config.py +0 -0
  504. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_math_image_render.py +0 -0
  505. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_mcp_schema.py +0 -0
  506. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_mermaid_image.py +0 -0
  507. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_mermaid_render.py +0 -0
  508. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_middleware_async.py +0 -0
  509. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_model_dialogs.py +0 -0
  510. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_model_providers.py +0 -0
  511. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_model_request_compression_middleware.py +0 -0
  512. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_model_retry.py +0 -0
  513. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_models_persist.py +0 -0
  514. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_multimodal.py +0 -0
  515. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_native_math_render.py +0 -0
  516. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_openai_compat_reasoning.py +0 -0
  517. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_openai_oauth.py +0 -0
  518. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_openai_oauth_middleware.py +0 -0
  519. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_openai_usage.py +0 -0
  520. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_openai_websocket.py +0 -0
  521. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_pathing.py +0 -0
  522. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_project_catalog.py +0 -0
  523. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_project_drawer.py +0 -0
  524. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_project_switch.py +0 -0
  525. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_prompt_controller.py +0 -0
  526. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_prompts.py +0 -0
  527. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_runtime_hardening.py +0 -0
  528. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_runtime_manager.py +0 -0
  529. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_runtime_streaming.py +0 -0
  530. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_safety.py +0 -0
  531. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_search_index.py +0 -0
  532. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_session_headers.py +0 -0
  533. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_session_prewarm.py +0 -0
  534. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_session_store.py +0 -0
  535. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_session_summary.py +0 -0
  536. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_slash_complete.py +0 -0
  537. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_slash_effects.py +0 -0
  538. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_startup_defer.py +0 -0
  539. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_steer.py +0 -0
  540. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_steer_controller.py +0 -0
  541. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_stream_cancel.py +0 -0
  542. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_stream_semantic_fixtures.py +0 -0
  543. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_stream_ui.py +0 -0
  544. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_subagent_config_dialog.py +0 -0
  545. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_subagent_config_persist.py +0 -0
  546. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_subagent_status.py +0 -0
  547. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_subagents.py +0 -0
  548. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_textual_stream_sink.py +0 -0
  549. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_theme.py +0 -0
  550. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_theme_controller.py +0 -0
  551. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_timeline.py +0 -0
  552. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_tool_blocks.py +0 -0
  553. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_tool_ignore.py +0 -0
  554. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_tool_intent.py +0 -0
  555. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_tool_output.py +0 -0
  556. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_tool_output_eval.py +0 -0
  557. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_tool_output_slash.py +0 -0
  558. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_tool_output_usage_middleware.py +0 -0
  559. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_topbar_context_ratio.py +0 -0
  560. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_topbar_registry.py +0 -0
  561. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_transcript_controller.py +0 -0
  562. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_transcript_history.py +0 -0
  563. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_transcript_history_controller.py +0 -0
  564. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_tui_active_session_switcher.py +0 -0
  565. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_tui_codex_import.py +0 -0
  566. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_tui_paste.py +0 -0
  567. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_tui_selection.py +0 -0
  568. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_turn_controller.py +0 -0
  569. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_turn_event_renderer.py +0 -0
  570. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_turn_rail_minimap.py +0 -0
  571. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_turn_request.py +0 -0
  572. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_usage_restore.py +0 -0
  573. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_user_turn_style.py +0 -0
  574. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/test_welcome.py +0 -0
  575. {synapse_cli_agent-0.1.39 → synapse_cli_agent-0.1.41}/tests/tool_output_plugin_fixture.py +0 -0
@@ -8,6 +8,40 @@ All entries are written in English.
8
8
 
9
9
  ---
10
10
 
11
+ ## v0.1.41
12
+
13
+ ### New Features
14
+
15
+ - MCP clients now declare the project workspace as an MCP workspace root, so file-writing tools (e.g. CDP screenshots) can write inside the project workspace instead of being restricted to the OS temp directory when no roots are configured.
16
+
17
+ ---
18
+
19
+ ## v0.1.40
20
+
21
+ ### New Features
22
+
23
+ - Native file tools read images, video, audio, and PDF files as base64 (10 MB cap); Python adapters convert framework image blocks to Chat Completions and Responses `input_image` blocks (including data URLs and detail).
24
+ - Native Rust OpenAI client supports proxy routing (HTTP/HTTPS/SOCKS4/SOCKS5) by building a proxied reqwest client when a proxy URL is configured; OAuth (Codex) profiles can use the native Responses transport; reqwest error source chains are flattened so connect/TLS/DNS causes are visible.
25
+ - Added an OpenAI Codex Responses OAuth transport.
26
+ - Added a `project-session-reader` skill for listing, searching, and reading a project's `.synapse` session database.
27
+ - Added a `stream_usage` control for Responses usage metadata.
28
+
29
+ ### Bug Fixes
30
+
31
+ - Reused native websocket connections across requests instead of opening new ones.
32
+ - Handled Codex websocket extension events.
33
+ - Reconciled transcript projection against the checkpoint watermark so projected history stays consistent with persisted state.
34
+ - Corrected Responses usage metadata.
35
+ - Prevented inflated tool-call token rates by excluding tool-call framing from rate accounting.
36
+
37
+ ### Engineering
38
+
39
+ - Switched the `async-openai` dependency to a local git fork for the Responses-over-WebSocket feature.
40
+ - Added a Rust OpenAI build check script.
41
+ - Stabilized agent startup coverage tests.
42
+
43
+ ---
44
+
11
45
  ## v0.1.39
12
46
 
13
47
  ### New Features
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: synapse-cli-agent
3
- Version: 0.1.39
3
+ Version: 0.1.41
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
@@ -8,7 +8,9 @@ Skills 是 Synapse 的可扩展插件系统,位于项目 `skills/` 目录下
8
8
  skills/
9
9
  ├── session-cache-analysis/
10
10
  │ └── SKILL.md
11
- └── session-crash-repair/
11
+ ├── session-crash-repair/
12
+ │ └── SKILL.md
13
+ └── project-session-reader/
12
14
  └── SKILL.md
13
15
  ```
14
16
 
@@ -43,12 +45,13 @@ allowed_tools: execute, read_file, write_file, search_files, find_files, search_
43
45
 
44
46
  ## 内置 Skills
45
47
 
46
- Synapse 自带两个 Skills:
48
+ Synapse 自带三个 Skills:
47
49
 
48
50
  | Skill | 说明 |
49
51
  |---|---|
50
52
  | `session-crash-repair` | 检测并修复异常退出后 checkpoint 不一致的会话(悬挂工具调用、挂起图任务、过期转录投影) |
51
53
  | `session-cache-analysis` | 分析会话的 prompt 缓存命中率,区分增量 miss 与全量逐出并定位根因 |
54
+ | `project-session-reader` | 读取或搜索指定项目(workspace 目录)`.synapse/` 下的会话:列出、全文搜索、按 thread_id 读取并分页 |
52
55
 
53
56
  ## 如何编写自定义 Skill
54
57
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "synapse-cli-agent"
3
- version = "0.1.39"
3
+ version = "0.1.41"
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,7 @@
1
+ ## v0.1.41
2
+
3
+ ### New Features
4
+
5
+ - MCP clients now declare the project workspace as an MCP workspace root, so file-writing tools (e.g. CDP screenshots) can write inside the project workspace instead of being restricted to the OS temp directory when no roots are configured.
6
+
7
+ ---
@@ -48,8 +48,7 @@ checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56"
48
48
  [[package]]
49
49
  name = "async-openai"
50
50
  version = "0.41.3"
51
- source = "registry+https://github.com/rust-lang/crates.io-index"
52
- checksum = "d72db2750faea2ca5edbf6d0c50277a89dc8f75f5e6ddd695ef30f75e335019b"
51
+ source = "git+https://github.com/alex8224/async-openai.git?rev=c56301b#c56301bd68dfe4381cc965ebb40a26fb8d9aefc1"
53
52
  dependencies = [
54
53
  "async-openai-macros",
55
54
  "base64",
@@ -59,14 +58,16 @@ dependencies = [
59
58
  "futures",
60
59
  "getrandom 0.3.4",
61
60
  "rand 0.9.5",
62
- "reqwest 0.13.4",
61
+ "reqwest",
63
62
  "secrecy",
64
63
  "serde",
65
64
  "serde_json",
66
65
  "serde_urlencoded",
67
66
  "thiserror 2.0.20",
68
67
  "tokio",
68
+ "tokio-socks",
69
69
  "tokio-stream",
70
+ "tokio-tungstenite",
70
71
  "tokio-util",
71
72
  "tower",
72
73
  "tracing",
@@ -76,8 +77,7 @@ dependencies = [
76
77
  [[package]]
77
78
  name = "async-openai-macros"
78
79
  version = "0.3.0"
79
- source = "registry+https://github.com/rust-lang/crates.io-index"
80
- checksum = "492a944774207eed3acf425214eadbd6ce84a2b89331164ff1c11bae92b26302"
80
+ source = "git+https://github.com/alex8224/async-openai.git?rev=c56301b#c56301bd68dfe4381cc965ebb40a26fb8d9aefc1"
81
81
  dependencies = [
82
82
  "proc-macro2",
83
83
  "quote",
@@ -152,6 +152,15 @@ version = "2.13.1"
152
152
  source = "registry+https://github.com/rust-lang/crates.io-index"
153
153
  checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da"
154
154
 
155
+ [[package]]
156
+ name = "block-buffer"
157
+ version = "0.10.4"
158
+ source = "registry+https://github.com/rust-lang/crates.io-index"
159
+ checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
160
+ dependencies = [
161
+ "generic-array",
162
+ ]
163
+
155
164
  [[package]]
156
165
  name = "block-buffer"
157
166
  version = "0.12.1"
@@ -221,7 +230,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
221
230
  checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81"
222
231
  dependencies = [
223
232
  "cfg-if",
224
- "cpufeatures",
233
+ "cpufeatures 0.3.0",
225
234
  "rand_core 0.10.1",
226
235
  ]
227
236
 
@@ -286,6 +295,15 @@ dependencies = [
286
295
  "libm",
287
296
  ]
288
297
 
298
+ [[package]]
299
+ name = "cpufeatures"
300
+ version = "0.2.17"
301
+ source = "registry+https://github.com/rust-lang/crates.io-index"
302
+ checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
303
+ dependencies = [
304
+ "libc",
305
+ ]
306
+
289
307
  [[package]]
290
308
  name = "cpufeatures"
291
309
  version = "0.3.0"
@@ -329,6 +347,16 @@ version = "0.8.22"
329
347
  source = "registry+https://github.com/rust-lang/crates.io-index"
330
348
  checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17"
331
349
 
350
+ [[package]]
351
+ name = "crypto-common"
352
+ version = "0.1.7"
353
+ source = "registry+https://github.com/rust-lang/crates.io-index"
354
+ checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
355
+ dependencies = [
356
+ "generic-array",
357
+ "typenum",
358
+ ]
359
+
332
360
  [[package]]
333
361
  name = "crypto-common"
334
362
  version = "0.2.2"
@@ -373,6 +401,12 @@ dependencies = [
373
401
  "syn 2.0.119",
374
402
  ]
375
403
 
404
+ [[package]]
405
+ name = "data-encoding"
406
+ version = "2.11.1"
407
+ source = "registry+https://github.com/rust-lang/crates.io-index"
408
+ checksum = "4583a4551df46e2792f82ceeac45e850d2e2d5debba0b91f102385cda5b11f06"
409
+
376
410
  [[package]]
377
411
  name = "derive_builder"
378
412
  version = "0.20.2"
@@ -404,15 +438,25 @@ dependencies = [
404
438
  "syn 2.0.119",
405
439
  ]
406
440
 
441
+ [[package]]
442
+ name = "digest"
443
+ version = "0.10.7"
444
+ source = "registry+https://github.com/rust-lang/crates.io-index"
445
+ checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
446
+ dependencies = [
447
+ "block-buffer 0.10.4",
448
+ "crypto-common 0.1.7",
449
+ ]
450
+
407
451
  [[package]]
408
452
  name = "digest"
409
453
  version = "0.11.3"
410
454
  source = "registry+https://github.com/rust-lang/crates.io-index"
411
455
  checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2"
412
456
  dependencies = [
413
- "block-buffer",
457
+ "block-buffer 0.12.1",
414
458
  "const-oid",
415
- "crypto-common",
459
+ "crypto-common 0.2.2",
416
460
  ]
417
461
 
418
462
  [[package]]
@@ -432,6 +476,12 @@ version = "1.0.5"
432
476
  source = "registry+https://github.com/rust-lang/crates.io-index"
433
477
  checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
434
478
 
479
+ [[package]]
480
+ name = "either"
481
+ version = "1.18.0"
482
+ source = "registry+https://github.com/rust-lang/crates.io-index"
483
+ checksum = "252afb9ae5eaa683babdc6a068b3f5726eb19e05070c731f9b2a23a7c3e8ed34"
484
+
435
485
  [[package]]
436
486
  name = "encoding_rs"
437
487
  version = "0.8.35"
@@ -629,6 +679,16 @@ dependencies = [
629
679
  "slab",
630
680
  ]
631
681
 
682
+ [[package]]
683
+ name = "generic-array"
684
+ version = "0.14.7"
685
+ source = "registry+https://github.com/rust-lang/crates.io-index"
686
+ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
687
+ dependencies = [
688
+ "typenum",
689
+ "version_check",
690
+ ]
691
+
632
692
  [[package]]
633
693
  name = "getrandom"
634
694
  version = "0.2.17"
@@ -807,7 +867,6 @@ dependencies = [
807
867
  "tokio",
808
868
  "tokio-rustls",
809
869
  "tower-service",
810
- "webpki-roots",
811
870
  ]
812
871
 
813
872
  [[package]]
@@ -1643,47 +1702,6 @@ version = "0.8.11"
1643
1702
  source = "registry+https://github.com/rust-lang/crates.io-index"
1644
1703
  checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
1645
1704
 
1646
- [[package]]
1647
- name = "reqwest"
1648
- version = "0.12.28"
1649
- source = "registry+https://github.com/rust-lang/crates.io-index"
1650
- checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147"
1651
- dependencies = [
1652
- "base64",
1653
- "bytes",
1654
- "futures-core",
1655
- "futures-util",
1656
- "http",
1657
- "http-body",
1658
- "http-body-util",
1659
- "hyper",
1660
- "hyper-rustls",
1661
- "hyper-util",
1662
- "js-sys",
1663
- "log",
1664
- "percent-encoding",
1665
- "pin-project-lite",
1666
- "quinn",
1667
- "rustls",
1668
- "rustls-pki-types",
1669
- "serde",
1670
- "serde_json",
1671
- "serde_urlencoded",
1672
- "sync_wrapper",
1673
- "tokio",
1674
- "tokio-rustls",
1675
- "tokio-util",
1676
- "tower",
1677
- "tower-http",
1678
- "tower-service",
1679
- "url",
1680
- "wasm-bindgen",
1681
- "wasm-bindgen-futures",
1682
- "wasm-streams 0.4.2",
1683
- "web-sys",
1684
- "webpki-roots",
1685
- ]
1686
-
1687
1705
  [[package]]
1688
1706
  name = "reqwest"
1689
1707
  version = "0.13.4"
@@ -1722,7 +1740,7 @@ dependencies = [
1722
1740
  "url",
1723
1741
  "wasm-bindgen",
1724
1742
  "wasm-bindgen-futures",
1725
- "wasm-streams 0.5.0",
1743
+ "wasm-streams",
1726
1744
  "web-sys",
1727
1745
  ]
1728
1746
 
@@ -1804,7 +1822,6 @@ checksum = "0283386ce02abc0151e1761d08802dfe86c173b0b494af5cbc086574e453da06"
1804
1822
  dependencies = [
1805
1823
  "aws-lc-rs",
1806
1824
  "once_cell",
1807
- "ring",
1808
1825
  "rustls-pki-types",
1809
1826
  "rustls-webpki",
1810
1827
  "subtle",
@@ -1996,6 +2013,17 @@ dependencies = [
1996
2013
  "serde",
1997
2014
  ]
1998
2015
 
2016
+ [[package]]
2017
+ name = "sha1"
2018
+ version = "0.10.7"
2019
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2020
+ checksum = "a978451301f4db1d02937a4ab3ccce137717b81826e79b7d49ffe3244a13c3b8"
2021
+ dependencies = [
2022
+ "cfg-if",
2023
+ "cpufeatures 0.2.17",
2024
+ "digest 0.10.7",
2025
+ ]
2026
+
1999
2027
  [[package]]
2000
2028
  name = "sha2"
2001
2029
  version = "0.11.0"
@@ -2003,8 +2031,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
2003
2031
  checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4"
2004
2032
  dependencies = [
2005
2033
  "cfg-if",
2006
- "cpufeatures",
2007
- "digest",
2034
+ "cpufeatures 0.3.0",
2035
+ "digest 0.11.3",
2008
2036
  ]
2009
2037
 
2010
2038
  [[package]]
@@ -2120,9 +2148,10 @@ dependencies = [
2120
2148
 
2121
2149
  [[package]]
2122
2150
  name = "synapse-core-tool"
2123
- version = "0.1.4"
2151
+ version = "0.1.5"
2124
2152
  dependencies = [
2125
2153
  "async-openai",
2154
+ "base64",
2126
2155
  "chardetng",
2127
2156
  "encoding_rs",
2128
2157
  "futures-util",
@@ -2135,7 +2164,7 @@ dependencies = [
2135
2164
  "ratex-parser",
2136
2165
  "ratex-render",
2137
2166
  "ratex-types",
2138
- "reqwest 0.12.28",
2167
+ "reqwest",
2139
2168
  "serde",
2140
2169
  "serde_json",
2141
2170
  "thiserror 2.0.20",
@@ -2315,6 +2344,18 @@ dependencies = [
2315
2344
  "tokio",
2316
2345
  ]
2317
2346
 
2347
+ [[package]]
2348
+ name = "tokio-socks"
2349
+ version = "0.5.3"
2350
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2351
+ checksum = "a7e2948f60dbe26b35f2c7fb74ac2854c1fddded0fe9d7548fcc674a246f7615"
2352
+ dependencies = [
2353
+ "either",
2354
+ "futures-util",
2355
+ "thiserror 1.0.69",
2356
+ "tokio",
2357
+ ]
2358
+
2318
2359
  [[package]]
2319
2360
  name = "tokio-stream"
2320
2361
  version = "0.1.19"
@@ -2326,6 +2367,22 @@ dependencies = [
2326
2367
  "tokio",
2327
2368
  ]
2328
2369
 
2370
+ [[package]]
2371
+ name = "tokio-tungstenite"
2372
+ version = "0.28.0"
2373
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2374
+ checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857"
2375
+ dependencies = [
2376
+ "futures-util",
2377
+ "log",
2378
+ "rustls",
2379
+ "rustls-pki-types",
2380
+ "tokio",
2381
+ "tokio-rustls",
2382
+ "tungstenite",
2383
+ "webpki-roots 0.26.11",
2384
+ ]
2385
+
2329
2386
  [[package]]
2330
2387
  name = "tokio-util"
2331
2388
  version = "0.7.19"
@@ -2433,6 +2490,25 @@ dependencies = [
2433
2490
  "core_maths",
2434
2491
  ]
2435
2492
 
2493
+ [[package]]
2494
+ name = "tungstenite"
2495
+ version = "0.28.0"
2496
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2497
+ checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442"
2498
+ dependencies = [
2499
+ "bytes",
2500
+ "data-encoding",
2501
+ "http",
2502
+ "httparse",
2503
+ "log",
2504
+ "rand 0.9.5",
2505
+ "rustls",
2506
+ "rustls-pki-types",
2507
+ "sha1",
2508
+ "thiserror 2.0.20",
2509
+ "utf-8",
2510
+ ]
2511
+
2436
2512
  [[package]]
2437
2513
  name = "typenum"
2438
2514
  version = "1.20.1"
@@ -2484,6 +2560,12 @@ dependencies = [
2484
2560
  "serde",
2485
2561
  ]
2486
2562
 
2563
+ [[package]]
2564
+ name = "utf-8"
2565
+ version = "0.7.6"
2566
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2567
+ checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
2568
+
2487
2569
  [[package]]
2488
2570
  name = "utf8_iter"
2489
2571
  version = "1.0.4"
@@ -2585,19 +2667,6 @@ dependencies = [
2585
2667
  "unicode-ident",
2586
2668
  ]
2587
2669
 
2588
- [[package]]
2589
- name = "wasm-streams"
2590
- version = "0.4.2"
2591
- source = "registry+https://github.com/rust-lang/crates.io-index"
2592
- checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65"
2593
- dependencies = [
2594
- "futures-util",
2595
- "js-sys",
2596
- "wasm-bindgen",
2597
- "wasm-bindgen-futures",
2598
- "web-sys",
2599
- ]
2600
-
2601
2670
  [[package]]
2602
2671
  name = "wasm-streams"
2603
2672
  version = "0.5.0"
@@ -2640,6 +2709,15 @@ dependencies = [
2640
2709
  "rustls-pki-types",
2641
2710
  ]
2642
2711
 
2712
+ [[package]]
2713
+ name = "webpki-roots"
2714
+ version = "0.26.11"
2715
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2716
+ checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9"
2717
+ dependencies = [
2718
+ "webpki-roots 1.0.9",
2719
+ ]
2720
+
2643
2721
  [[package]]
2644
2722
  name = "webpki-roots"
2645
2723
  version = "1.0.9"
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "synapse-core-tool"
3
- version = "0.1.4"
3
+ version = "0.1.5"
4
4
  edition = "2021"
5
5
  rust-version = "1.80"
6
6
  license = "Apache-2.0"
@@ -12,7 +12,8 @@ name = "synapse_core_tool"
12
12
  crate-type = ["cdylib", "rlib"]
13
13
 
14
14
  [dependencies]
15
- async-openai = { version = "0.41", features = ["chat-completion", "byot"] }
15
+ async-openai = { git = "https://github.com/alex8224/async-openai.git", rev = "c56301b", features = ["chat-completion", "responses", "byot", "responses-ws"] }
16
+ base64 = "0.22"
16
17
  chardetng = "0.1"
17
18
  encoding_rs = "0.8"
18
19
  futures-util = "0.3"
@@ -25,7 +26,7 @@ ratex-layout = "=0.1.14"
25
26
  ratex-parser = "=0.1.14"
26
27
  ratex-render = { version = "=0.1.14", features = ["embed-fonts"] }
27
28
  ratex-types = "=0.1.14"
28
- reqwest = { version = "0.12", default-features = false, features = ["json", "stream", "rustls-tls"] }
29
+ reqwest = { version = "0.13", default-features = false, features = ["json", "stream", "rustls", "socks"] }
29
30
  serde = { version = "1", features = ["derive"] }
30
31
  serde_json = "1"
31
32
  thiserror = "2.0"
@@ -4,7 +4,7 @@ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "synapse-core-tool"
7
- version = "0.1.4"
7
+ version = "0.1.5"
8
8
  description = "Native filesystem tools for Synapse"
9
9
  requires-python = ">=3.12"
10
10
  license = { text = "Apache-2.0" }
@@ -1,6 +1,8 @@
1
- use std::fs;
1
+ use std::fs::{self, File};
2
+ use std::io::Read;
2
3
  use std::path::{Path, PathBuf};
3
4
 
5
+ use base64::Engine;
4
6
  use pyo3::exceptions::{PyOSError, PyValueError};
5
7
  use pyo3::prelude::*;
6
8
  use pyo3::types::PyDict;
@@ -10,6 +12,17 @@ use crate::file_access::{read_text_detect, write_text_as};
10
12
  const MAX_READ_LIMIT: usize = 10_000;
11
13
  const MAX_READ_LINE_CHARS: usize = 1_200;
12
14
  const MAX_READ_OUTPUT_CHARS: usize = 12_000;
15
+ const MAX_BINARY_READ_BYTES: u64 = 10 * 1024 * 1024;
16
+
17
+ fn binary_file_type(path: &Path) -> Option<&'static str> {
18
+ match path.extension()?.to_str()?.to_ascii_lowercase().as_str() {
19
+ "png" | "jpeg" | "jpg" | "webp" | "gif" | "heic" | "heif" => Some("image"),
20
+ "mp4" | "mpeg" | "mov" | "avi" | "flv" | "mpg" | "webm" | "wmv" | "3gpp" => Some("video"),
21
+ "wav" | "mp3" | "aiff" | "aac" | "ogg" | "flac" => Some("audio"),
22
+ "pdf" | "ppt" | "pptx" => Some("file"),
23
+ _ => None,
24
+ }
25
+ }
13
26
 
14
27
  #[derive(Debug, thiserror::Error)]
15
28
  enum ExactEditError {
@@ -124,6 +137,44 @@ pub(crate) fn read(
124
137
  return Ok(result.unbind());
125
138
  }
126
139
 
140
+ if let Some(file_type) = binary_file_type(&path) {
141
+ let mut file = File::open(&path).map_err(|error| io_error("open file", &path, error))?;
142
+ let size = file
143
+ .metadata()
144
+ .map_err(|error| io_error("inspect file", &path, error))?
145
+ .len();
146
+ if size > MAX_BINARY_READ_BYTES {
147
+ return Err(PyValueError::new_err(format!(
148
+ "binary file exceeds the {} byte read limit: {}",
149
+ MAX_BINARY_READ_BYTES,
150
+ path.display()
151
+ )));
152
+ }
153
+ let mut bytes = Vec::new();
154
+ file.by_ref()
155
+ .take(MAX_BINARY_READ_BYTES + 1)
156
+ .read_to_end(&mut bytes)
157
+ .map_err(|error| io_error("read file", &path, error))?;
158
+ if bytes.len() as u64 > MAX_BINARY_READ_BYTES {
159
+ return Err(PyValueError::new_err(format!(
160
+ "binary file grew beyond the {} byte read limit: {}",
161
+ MAX_BINARY_READ_BYTES,
162
+ path.display()
163
+ )));
164
+ }
165
+ let content = base64::engine::general_purpose::STANDARD.encode(bytes);
166
+ result.set_item("kind", file_type)?;
167
+ result.set_item("output", py.None())?;
168
+ result.set_item("content", content)?;
169
+ result.set_item("encoding", "base64")?;
170
+ result.set_item("truncated", false)?;
171
+ result.set_item("start_line", py.None())?;
172
+ result.set_item("end_line", py.None())?;
173
+ result.set_item("total_lines", py.None())?;
174
+ result.set_item("total_entries", py.None())?;
175
+ return Ok(result.unbind());
176
+ }
177
+
127
178
  let (content, _) =
128
179
  read_text_detect(&path).map_err(|error| io_error("read file", &path, error))?;
129
180
  let lines = content.split_inclusive('\n').collect::<Vec<_>>();
@@ -147,6 +198,7 @@ pub(crate) fn read(
147
198
  result.set_item("kind", "file")?;
148
199
  result.set_item("output", output)?;
149
200
  result.set_item("content", selected)?;
201
+ result.set_item("encoding", "utf-8")?;
150
202
  result.set_item(
151
203
  "truncated",
152
204
  end < total_lines || output_truncated || line_truncated,
@@ -354,6 +406,14 @@ pub(crate) fn patch(py: Python<'_>, file_path: &str, patch: &str) -> PyResult<Py
354
406
  mod tests {
355
407
  use super::*;
356
408
 
409
+ #[test]
410
+ fn binary_file_type_is_case_insensitive() {
411
+ assert_eq!(binary_file_type(Path::new("shot.PNG")), Some("image"));
412
+ assert_eq!(binary_file_type(Path::new("clip.MP4")), Some("video"));
413
+ assert_eq!(binary_file_type(Path::new("notes.txt")), None);
414
+ assert_eq!(MAX_BINARY_READ_BYTES, 10 * 1024 * 1024);
415
+ }
416
+
357
417
  #[test]
358
418
  fn exact_edit_accepts_crlf_candidates() {
359
419
  let (edited, count) =